From df44348bb03711ec8acd6ff0d814399a4fd8ad50 Mon Sep 17 00:00:00 2001 From: Ethan Lin Date: Thu, 29 Aug 2024 20:38:53 +1000 Subject: [PATCH 01/38] added test cases --- src/ae_nullptr_deref_tests/access_nullptr.c | 5 +++++ .../array_access_nullptr.c | 9 +++++++++ .../branch_access_nullptr.c | 16 ++++++++++++++++ .../branch_access_nullptr_2.c | 16 ++++++++++++++++ .../func_return_nullptr.c | 15 +++++++++++++++ .../loop_access_nullptr.c | 19 +++++++++++++++++++ .../loop_branch_access_nullptr(failed).c | 19 +++++++++++++++++++ src/ae_nullptr_deref_tests/memcpy_nullptr.c | 13 +++++++++++++ src/ae_nullptr_deref_tests/nullptr_func.c | 8 ++++++++ .../pass_nullptr_to_func.c | 13 +++++++++++++ src/ae_nullptr_deref_tests/ptr_arithmetic.c | 13 +++++++++++++ src/ae_nullptr_deref_tests/struct_nullptr.c | 14 ++++++++++++++ .../uninitialized_ptr.c | 5 +++++ 13 files changed, 165 insertions(+) create mode 100644 src/ae_nullptr_deref_tests/access_nullptr.c create mode 100644 src/ae_nullptr_deref_tests/array_access_nullptr.c create mode 100644 src/ae_nullptr_deref_tests/branch_access_nullptr.c create mode 100644 src/ae_nullptr_deref_tests/branch_access_nullptr_2.c create mode 100644 src/ae_nullptr_deref_tests/func_return_nullptr.c create mode 100644 src/ae_nullptr_deref_tests/loop_access_nullptr.c create mode 100644 src/ae_nullptr_deref_tests/loop_branch_access_nullptr(failed).c create mode 100644 src/ae_nullptr_deref_tests/memcpy_nullptr.c create mode 100644 src/ae_nullptr_deref_tests/nullptr_func.c create mode 100644 src/ae_nullptr_deref_tests/pass_nullptr_to_func.c create mode 100644 src/ae_nullptr_deref_tests/ptr_arithmetic.c create mode 100644 src/ae_nullptr_deref_tests/struct_nullptr.c create mode 100644 src/ae_nullptr_deref_tests/uninitialized_ptr.c diff --git a/src/ae_nullptr_deref_tests/access_nullptr.c b/src/ae_nullptr_deref_tests/access_nullptr.c new file mode 100644 index 00000000..6717d83d --- /dev/null +++ b/src/ae_nullptr_deref_tests/access_nullptr.c @@ -0,0 +1,5 @@ +#include +int main() { + int* p = NULL; + int a = *p; +} diff --git a/src/ae_nullptr_deref_tests/array_access_nullptr.c b/src/ae_nullptr_deref_tests/array_access_nullptr.c new file mode 100644 index 00000000..4d3454c0 --- /dev/null +++ b/src/ae_nullptr_deref_tests/array_access_nullptr.c @@ -0,0 +1,9 @@ +#include + +int main() { + int *ptr = NULL; + + int value = ptr[5]; // Attempting to access an array element via NULL pointer + + return 0; +} diff --git a/src/ae_nullptr_deref_tests/branch_access_nullptr.c b/src/ae_nullptr_deref_tests/branch_access_nullptr.c new file mode 100644 index 00000000..48ec1297 --- /dev/null +++ b/src/ae_nullptr_deref_tests/branch_access_nullptr.c @@ -0,0 +1,16 @@ +#include +#include + +int main() { + int *ptr = (int *)malloc(sizeof(int)); // Allocate memory + + int a = 0; + + if (a >= 0) { + ptr = NULL; + } + + int b = *ptr; + + return 0; +} diff --git a/src/ae_nullptr_deref_tests/branch_access_nullptr_2.c b/src/ae_nullptr_deref_tests/branch_access_nullptr_2.c new file mode 100644 index 00000000..55ba7da0 --- /dev/null +++ b/src/ae_nullptr_deref_tests/branch_access_nullptr_2.c @@ -0,0 +1,16 @@ +#include +#include + +int main() { + int *ptr = (int *)malloc(sizeof(int)); // Allocate memory + + int a = 0; + + if (a < 0) { + ptr = NULL; // this is not feasible but is still a potential null pointer dereference + } + + int b = *ptr; + + return 0; +} diff --git a/src/ae_nullptr_deref_tests/func_return_nullptr.c b/src/ae_nullptr_deref_tests/func_return_nullptr.c new file mode 100644 index 00000000..9f000c58 --- /dev/null +++ b/src/ae_nullptr_deref_tests/func_return_nullptr.c @@ -0,0 +1,15 @@ +#include + +int* getNullPointer() { + return NULL; // Function returns a NULL pointer +} + +int main() { + int *ptr = getNullPointer(); + + int value = *ptr; // Dereferencing the NULL pointer + + printf("Value: %d\n", value); // This line may cause a crash + + return 0; +} diff --git a/src/ae_nullptr_deref_tests/loop_access_nullptr.c b/src/ae_nullptr_deref_tests/loop_access_nullptr.c new file mode 100644 index 00000000..665b840b --- /dev/null +++ b/src/ae_nullptr_deref_tests/loop_access_nullptr.c @@ -0,0 +1,19 @@ +#include +#include + +int main() { + int *arr[5]; + arr[0] = malloc(sizeof(int)); + arr[1] = malloc(sizeof(int)); + arr[2] = malloc(sizeof(int)); + arr[3] = malloc(sizeof(int)); + + arr[4] = NULL; + + for (int i = 0; i < 5; i++) + { + *arr[i] = i; + } + + return 0; +} diff --git a/src/ae_nullptr_deref_tests/loop_branch_access_nullptr(failed).c b/src/ae_nullptr_deref_tests/loop_branch_access_nullptr(failed).c new file mode 100644 index 00000000..c3551ea4 --- /dev/null +++ b/src/ae_nullptr_deref_tests/loop_branch_access_nullptr(failed).c @@ -0,0 +1,19 @@ +#include +#include + +int main() { + int *p; + int i = 0; + while (i < 100) { + if (i == 50) { + p = NULL; // <⊥, ⊥> + } + else { + p = malloc(sizeof(int)); // <⊥, [0x7f...]> + } + *p = 42; // <⊥, ⊥> join with <⊥, [0x7f...]> => <⊥, [0x7f...]> NOT NUll + i++; + } + + return 0; +} diff --git a/src/ae_nullptr_deref_tests/memcpy_nullptr.c b/src/ae_nullptr_deref_tests/memcpy_nullptr.c new file mode 100644 index 00000000..0b764006 --- /dev/null +++ b/src/ae_nullptr_deref_tests/memcpy_nullptr.c @@ -0,0 +1,13 @@ +#include +#include + +int main() { + char *src = NULL; + char dest[20]; + + memcpy(dest, src, 10); // Attempt to copy memory from a NULL source + + printf("Destination: %s\n", dest); // This line may cause a crash + + return 0; +} diff --git a/src/ae_nullptr_deref_tests/nullptr_func.c b/src/ae_nullptr_deref_tests/nullptr_func.c new file mode 100644 index 00000000..4356bd7d --- /dev/null +++ b/src/ae_nullptr_deref_tests/nullptr_func.c @@ -0,0 +1,8 @@ +#include +int main() { + void (*funcPtr)() = NULL; + + funcPtr(); // Attempting to call a function via a NULL function pointer + + return 0; +} \ No newline at end of file diff --git a/src/ae_nullptr_deref_tests/pass_nullptr_to_func.c b/src/ae_nullptr_deref_tests/pass_nullptr_to_func.c new file mode 100644 index 00000000..5ac40cd6 --- /dev/null +++ b/src/ae_nullptr_deref_tests/pass_nullptr_to_func.c @@ -0,0 +1,13 @@ +#include + +void printValue(int *ptr) { + printf("Value: %d\n", *ptr); // Dereferencing the NULL pointer +} + +int main() { + int *ptr = NULL; + + printValue(ptr); // Passing a NULL pointer to the function + + return 0; +} diff --git a/src/ae_nullptr_deref_tests/ptr_arithmetic.c b/src/ae_nullptr_deref_tests/ptr_arithmetic.c new file mode 100644 index 00000000..1eb32453 --- /dev/null +++ b/src/ae_nullptr_deref_tests/ptr_arithmetic.c @@ -0,0 +1,13 @@ +#include + +int main() { + int *ptr = NULL; + + int *newPtr = ptr + 5; // Perform pointer arithmetic on NULL pointer + + int value = *newPtr; // Dereference the result + + printf("Value: %d\n", value); // This line may cause a crash + + return 0; +} diff --git a/src/ae_nullptr_deref_tests/struct_nullptr.c b/src/ae_nullptr_deref_tests/struct_nullptr.c new file mode 100644 index 00000000..b51edc33 --- /dev/null +++ b/src/ae_nullptr_deref_tests/struct_nullptr.c @@ -0,0 +1,14 @@ +#include + +struct Data { + int number; + char character; +}; + +int main() { + struct Data *dataPtr = NULL; + + int num = dataPtr->number; // Accessing a member of the structure via NULL pointer + + return 0; +} diff --git a/src/ae_nullptr_deref_tests/uninitialized_ptr.c b/src/ae_nullptr_deref_tests/uninitialized_ptr.c new file mode 100644 index 00000000..0710cd2c --- /dev/null +++ b/src/ae_nullptr_deref_tests/uninitialized_ptr.c @@ -0,0 +1,5 @@ + +int main() { + int* p; + int a = *p; +} From 50b7d0ac5f229bb5d9186f98f36eca1983de9f69 Mon Sep 17 00:00:00 2001 From: Ethan Lin Date: Sun, 1 Sep 2024 13:14:54 +1000 Subject: [PATCH 02/38] rename tests --- ...failed).c => loop_branch_access_nullptr.c} | 0 .../ae_assert_tests/BASIC_array_2d_0-0.c.bc | 119 - .../ae_assert_tests/BASIC_array_func_0-0.c.bc | 101 - .../ae_assert_tests/BASIC_array_func_1-0.c.bc | 109 - .../ae_assert_tests/BASIC_array_func_2-0.c.bc | 131 - .../ae_assert_tests/BASIC_array_func_3-0.c.bc | 109 - .../ae_assert_tests/BASIC_array_func_4-0.c.bc | 101 - .../ae_assert_tests/BASIC_array_func_6-0.c.bc | 109 - .../ae_assert_tests/BASIC_array_int_0-0.c.bc | 78 - .../BASIC_array_struct_0-0.c.bc | 98 - .../BASIC_array_varIdx_1-0.c.bc | 76 - .../ae_assert_tests/BASIC_arraycopy1-0.c.bc | 79 - .../ae_assert_tests/BASIC_arraycopy2-0.c.bc | 74 - .../ae_assert_tests/BASIC_arraycopy3-0.c.bc | 54 - .../ae_assert_tests/BASIC_assign_0-0.c.bc | 62 - .../ae_assert_tests/BASIC_assign_1-0.c.bc | 61 - .../ae_assert_tests/BASIC_assign_2-0.c.bc | 63 - .../ae_assert_tests/BASIC_assign_3-0.c.bc | 63 - .../ae_assert_tests/BASIC_bi_add_0-0.c.bc | 58 - .../ae_assert_tests/BASIC_bi_add_1-0.c.bc | 67 - .../ae_assert_tests/BASIC_bi_add_2-0.c.bc | 76 - .../ae_assert_tests/BASIC_bi_div_0-0.c.bc | 94 - .../ae_assert_tests/BASIC_bi_mix_0-0.c.bc | 84 - .../ae_assert_tests/BASIC_bi_mul_0-0.c.bc | 70 - .../ae_assert_tests/BASIC_bi_sub_0-0.c.bc | 76 - .../ae_assert_tests/BASIC_br_false_0-0.c.bc | 55 - .../ae_assert_tests/BASIC_br_nd_0-0.c.bc | 109 - .../ae_assert_tests/BASIC_br_nd_1-0.c.bc | 119 - .../ae_assert_tests/BASIC_br_nd_2-0.c.bc | 86 - .../ae_assert_tests/BASIC_br_nd_malloc-0.c.bc | 93 - .../ae_assert_tests/BASIC_br_true_0-0.c.bc | 73 - .../BASIC_extapi_strcat_0.c.bc | 93 - .../BASIC_funcall_ref_0-0.c.bc | 74 - .../BASIC_funcall_ref_1-0.c.bc | 103 - .../BASIC_funcall_ref_2-0.c.bc | 75 - .../BASIC_nullptr_def_0-0.c.bc | 100 - .../ae_assert_tests/BASIC_ptr_assign_0-0.c.bc | 63 - .../ae_assert_tests/BASIC_ptr_call1-0.c.bc | 128 - .../ae_assert_tests/BASIC_ptr_call2-0.c.bc | 80 - .../ae_assert_tests/BASIC_ptr_func_0-0.c.bc | 117 - .../ae_assert_tests/BASIC_ptr_func_1-0.c.bc | 134 - .../ae_assert_tests/BASIC_ptr_func_4-0.c.bc | 135 - .../ae_assert_tests/BASIC_ptr_func_6-0.c.bc | 106 - .../ae_assert_tests/BASIC_ptr_s32_2-0.c.bc | 66 - .../BASIC_struct_array_0-0.c.bc | 92 - .../BASIC_struct_assign_0-0.c.bc | 74 - .../ae_assert_tests/BASIC_switch-0.c.bc | 122 - .../ae_assert_tests/BASIC_switch01-0.c.bc | 122 - .../ae_assert_tests/BASIC_switch02-0.c.bc | 121 - .../ae_assert_tests/BASIC_switch03-0.c.bc | 122 - .../ae_assert_tests/BASIC_switch04-0.c.bc | 128 - .../ae_assert_tests/BASIC_switch05-0.c.bc | 122 - .../ae_assert_tests/BASIC_switch06-0.c.bc | 121 - .../ae_assert_tests/BASIC_switch07-0.c.bc | 122 - .../ae_assert_tests/BASIC_switch08-0.c.bc | 128 - .../ae_assert_tests/BASIC_switch09-0.c.bc | 122 - .../ae_assert_tests/BASIC_switch10-0.c.bc | 121 - .../ae_assert_tests/BASIC_test_11-0.c.bc | 66 - .../BUF_OVERFLOW_test_47-0.c.bc | 144 - .../ae_assert_tests/CAST_fptosi.c.bc | 64 - .../ae_assert_tests/CAST_fptoui.c.bc | 81 - .../ae_assert_tests/CAST_fptrunc.c.bc | 66 - test_cases_bc/ae_assert_tests/CAST_sext.c.bc | 61 - .../ae_assert_tests/CAST_sitofp.c.bc | 65 - test_cases_bc/ae_assert_tests/CAST_trunc.c.bc | 73 - .../ae_assert_tests/CAST_uitofp.c.bc | 66 - test_cases_bc/ae_assert_tests/CAST_zext.c.bc | 63 - .../ae_assert_tests/CVE-2019-19847-0.c.bc | 103 - .../ae_assert_tests/CVE-2020-13598-0.c.bc | 116 - .../ae_assert_tests/CVE-2020-29203-0.c.bc | 356 -- .../ae_assert_tests/CVE-2021-39602-0.c.bc | 210 -- .../ae_assert_tests/CVE-2021-44975-0.c.bc | 527 --- .../ae_assert_tests/CVE-2021-45341-0.c.bc | 179 - .../ae_assert_tests/CVE-2022-23850-0.c.bc | 116 - .../ae_assert_tests/CVE-2022-26129-0.c.bc | 181 - .../ae_assert_tests/CVE-2022-27239-0.c.bc | 456 --- .../ae_assert_tests/CVE-2022-29023-0.c.bc | 359 -- .../ae_assert_tests/CVE-2022-34835-0.c.bc | 326 -- .../ae_assert_tests/CVE-2022-34913-0.c.bc | 630 ---- .../ae_assert_tests/CVE-2022-34918-0.c.bc | 433 --- .../ae_assert_tests/CWE127_har_alloc-0.c.bc | 106 - .../ae_assert_tests/INTERVAL_test_10-0.c.bc | 98 - .../ae_assert_tests/INTERVAL_test_11-0.c.bc | 80 - .../ae_assert_tests/INTERVAL_test_12-0.c.bc | 91 - .../ae_assert_tests/INTERVAL_test_13-0.c.bc | 91 - .../ae_assert_tests/INTERVAL_test_14-0.c.bc | 89 - .../ae_assert_tests/INTERVAL_test_15-0.c.bc | 87 - .../ae_assert_tests/INTERVAL_test_16-0.c.bc | 99 - .../ae_assert_tests/INTERVAL_test_17-0.c.bc | 184 - .../ae_assert_tests/INTERVAL_test_18-0.c.bc | 184 - .../ae_assert_tests/INTERVAL_test_19-0.c.bc | 141 - .../ae_assert_tests/INTERVAL_test_2-0.c.bc | 104 - .../ae_assert_tests/INTERVAL_test_20-0.c.bc | 130 - .../ae_assert_tests/INTERVAL_test_21-0.c.bc | 150 - .../ae_assert_tests/INTERVAL_test_22-0.c.bc | 104 - .../ae_assert_tests/INTERVAL_test_23-0.c.bc | 101 - .../ae_assert_tests/INTERVAL_test_25-0.c.bc | 229 -- .../ae_assert_tests/INTERVAL_test_26-0.c.bc | 73 - .../ae_assert_tests/INTERVAL_test_27-0.c.bc | 162 - .../ae_assert_tests/INTERVAL_test_29-0.c.bc | 100 - .../ae_assert_tests/INTERVAL_test_30-0.c.bc | 106 - .../ae_assert_tests/INTERVAL_test_31-0.c.bc | 135 - .../ae_assert_tests/INTERVAL_test_32-0.c.bc | 146 - .../ae_assert_tests/INTERVAL_test_33-0.c.bc | 145 - .../ae_assert_tests/INTERVAL_test_35-0.c.bc | 120 - .../ae_assert_tests/INTERVAL_test_36-1-0.c.bc | 130 - .../ae_assert_tests/INTERVAL_test_37-0.c.bc | 104 - .../ae_assert_tests/INTERVAL_test_39-0.c.bc | 157 - .../ae_assert_tests/INTERVAL_test_4-0.c.bc | 142 - .../ae_assert_tests/INTERVAL_test_40-0.c.bc | 135 - .../ae_assert_tests/INTERVAL_test_41-0.c.bc | 146 - .../ae_assert_tests/INTERVAL_test_42-0.c.bc | 129 - .../ae_assert_tests/INTERVAL_test_44-0.c.bc | 147 - .../ae_assert_tests/INTERVAL_test_45-0.c.bc | 157 - .../ae_assert_tests/INTERVAL_test_46-0.c.bc | 210 -- .../ae_assert_tests/INTERVAL_test_47-0.c.bc | 246 -- .../ae_assert_tests/INTERVAL_test_48-0.c.bc | 112 - .../ae_assert_tests/INTERVAL_test_49-0.c.bc | 105 - .../ae_assert_tests/INTERVAL_test_50-0.c.bc | 170 - .../ae_assert_tests/INTERVAL_test_51-0.c.bc | 151 - .../ae_assert_tests/INTERVAL_test_52-0.c.bc | 151 - .../ae_assert_tests/INTERVAL_test_57-0.c.bc | 235 -- .../ae_assert_tests/INTERVAL_test_58-0.c.bc | 179 - .../ae_assert_tests/INTERVAL_test_59-0.c.bc | 131 - .../ae_assert_tests/INTERVAL_test_6-0.c.bc | 77 - .../ae_assert_tests/INTERVAL_test_60-0.c.bc | 109 - .../ae_assert_tests/INTERVAL_test_61-0.c.bc | 106 - .../ae_assert_tests/INTERVAL_test_62-0.c.bc | 106 - .../ae_assert_tests/INTERVAL_test_63-0.c.bc | 252 -- .../ae_assert_tests/INTERVAL_test_64-0.c.bc | 211 -- .../ae_assert_tests/INTERVAL_test_7-0.c.bc | 94 - .../ae_assert_tests/INTERVAL_test_8-0.c.bc | 76 - .../ae_assert_tests/INTERVAL_test_9-0.c.bc | 91 - .../ae_assert_tests/LOOP_for01-0.c.bc | 109 - .../ae_assert_tests/LOOP_for_break02-0.c.bc | 109 - .../ae_assert_tests/LOOP_for_call-0.c.bc | 130 - .../ae_assert_tests/LOOP_for_inc-0.c.bc | 91 - .../ae_assert_tests/LOOP_for_nested-0.c.bc | 136 - .../ae_assert_tests/LOOP_while01-0.c.bc | 77 - .../ae_assert_tests/LOOP_while_break-0.c.bc | 90 - .../ae_assert_tests/LOOP_while_nested-0.c.bc | 111 - test_cases_bc/ae_assert_tests/NULL_1.c.bc | 57 - test_cases_bc/ae_assert_tests/NULL_2.c.bc | 62 - test_cases_bc/ae_assert_tests/NULL_3.c.bc | 78 - test_cases_bc/ae_assert_tests/NULL_4.c.bc | 76 - .../ae_assert_tests/UAF_uaf_0-0.c.bc | 97 - .../ae_assert_tests/cwe121_char_alloc-0.c.bc | 83 - .../ae_assert_tests/cwe121_int_alloc-0.c.bc | 81 - .../cwe121_struct_alloc-0.c.bc | 96 - .../ae_assert_tests/cwe126_char_alloc-0.c.bc | 92 - .../ae_assert_tests/cwe190_char_fscanf-0.c.bc | 81 - .../ae_assert_tests/cwe190_int_max-0.c.bc | 64 - ...ased_Buffer_Overflow__CWE129_fgets_01.c.bc | 550 --- ...fer_Overflow__CWE129_listen_socket_01.c.bc | 953 ------ ...Based_Buffer_Overflow__CWE129_rand_01.c.bc | 519 --- ...Based_Buffer_Overflow__CWE131_loop_01.c.bc | 334 -- ...sed_Buffer_Overflow__CWE131_memcpy_01.c.bc | 226 -- ...r_Overflow__CWE193_char_alloca_cpy_01.c.bc | 256 -- ...verflow__CWE193_char_alloca_memcpy_01.c.bc | 312 -- ...erflow__CWE193_char_alloca_memmove_01.c.bc | 315 -- ...rflow__CWE193_char_declare_memmove_01.c.bc | 306 -- ...erflow__CWE193_wchar_t_declare_cpy_01.c.bc | 252 -- ..._Overflow__CWE805_char_alloca_loop_01.c.bc | 371 -- ...verflow__CWE805_char_alloca_memcpy_01.c.bc | 275 -- ...rflow__CWE805_char_declare_memmove_01.c.bc | 266 -- ...Overflow__CWE805_char_declare_ncpy_01.c.bc | 267 -- ...low__CWE805_int64_t_alloca_memmove_01.c.bc | 255 -- ...rflow__CWE805_int64_t_declare_loop_01.c.bc | 356 -- ...low__CWE805_int64_t_declare_memcpy_01.c.bc | 246 -- ...ow__CWE805_int64_t_declare_memmove_01.c.bc | 246 -- ...r_Overflow__CWE805_int_alloca_loop_01.c.bc | 360 -- ...Overflow__CWE805_int_alloca_memcpy_01.c.bc | 250 -- ...flow__CWE805_struct_alloca_memmove_01.c.bc | 358 -- ...low__CWE805_struct_declare_memmove_01.c.bc | 349 -- ...erflow__CWE805_wchar_t_alloca_loop_01.c.bc | 364 -- ...ow__CWE805_wchar_t_alloca_snprintf_01.c.bc | 278 -- ...rflow__CWE805_wchar_t_declare_loop_01.c.bc | 355 -- ...low__CWE805_wchar_t_declare_memcpy_01.c.bc | 272 -- ...ow__CWE805_wchar_t_declare_memmove_01.c.bc | 272 -- ...w__CWE805_wchar_t_declare_snprintf_01.c.bc | 269 -- ...Overflow__CWE806_char_declare_loop_01.c.bc | 393 --- ...Overflow__CWE806_char_declare_ncpy_01.c.bc | 290 -- ...low__CWE806_wchar_t_declare_memcpy_01.c.bc | 309 -- ..._Overflow__dest_wchar_t_alloca_cpy_01.c.bc | 272 -- ...ffer_Overflow__src_char_alloca_cpy_01.c.bc | 248 -- ..._Overflow__src_wchar_t_declare_cpy_01.c.bc | 253 -- ...Based_Buffer_Overflow__CWE131_loop_01.c.bc | 366 -- ...sed_Buffer_Overflow__CWE131_memcpy_01.c.bc | 278 -- ..._Overflow__c_CWE805_int64_t_memcpy_01.c.bc | 283 -- ...Overflow__c_CWE805_int64_t_memmove_01.c.bc | 283 -- ...fer_Overflow__c_CWE805_int_memmove_01.c.bc | 278 -- ...r_Overflow__c_CWE805_struct_memcpy_01.c.bc | 386 --- ...Overflow__c_CWE805_wchar_t_memmove_01.c.bc | 309 -- ...verflow__c_CWE805_wchar_t_snprintf_01.c.bc | 306 -- ...er_Overflow__c_CWE806_char_memmove_01.c.bc | 342 -- ...Overflow__c_CWE806_wchar_t_memmove_01.c.bc | 350 -- ...d_Buffer_Overflow__c_dest_char_cpy_01.c.bc | 294 -- ...uffer_Overflow__c_dest_wchar_t_cpy_01.c.bc | 300 -- ...ed_Buffer_Overflow__c_src_char_cpy_01.c.bc | 323 -- ...E126_Buffer_Overread__CWE129_fgets_01.c.bc | 408 --- ...126_Buffer_Overread__CWE129_fscanf_01.c.bc | 338 -- ...fer_Overread__CWE129_listen_socket_01.c.bc | 824 ----- ...uffer_Overread__char_alloca_memcpy_01.c.bc | 348 -- ...Buffer_Overread__char_declare_loop_01.c.bc | 421 --- ...ffer_Overread__char_declare_memcpy_01.c.bc | 331 -- ..._Buffer_Overread__malloc_char_loop_01.c.bc | 456 --- ...ffer_Overread__malloc_char_memmove_01.c.bc | 358 -- ...ffer_Overread__malloc_wchar_t_loop_01.c.bc | 443 --- ...r_Overread__malloc_wchar_t_memmove_01.c.bc | 364 -- ...fer_Overread__wchar_t_declare_loop_01.c.bc | 432 --- ..._Overread__wchar_t_declare_memmove_01.c.bc | 341 -- test_cases_bc/basic_c_tests/CI-funptr.c.bc | 193 -- test_cases_bc/basic_c_tests/CI-global.c.bc | 177 - test_cases_bc/basic_c_tests/CI-local.c.bc | 200 -- .../basic_c_tests/array-constIdx.c.bc | 187 -- test_cases_bc/basic_c_tests/array-varIdx.c.bc | 184 - .../basic_c_tests/array-varIdx2.c.bc | 195 -- test_cases_bc/basic_c_tests/arraycopy1.c.bc | 40 - test_cases_bc/basic_c_tests/branch-call.c.bc | 215 -- test_cases_bc/basic_c_tests/branch-intra.c.bc | 185 - test_cases_bc/basic_c_tests/byteoffset1.c.bc | 85 - .../basic_c_tests/constraint-cycle-copy.c.bc | 207 -- .../basic_c_tests/constraint-cycle-field.c.bc | 222 -- .../basic_c_tests/constraint-cycle-pwc.c.bc | 83 - .../field-ptr-arith-constIdx.c.bc | 181 - .../basic_c_tests/field-ptr-arith-varIdx.c.bc | 183 - .../basic_c_tests/funptr-global.c.bc | 215 -- .../basic_c_tests/funptr-nested-call.c.bc | 90 - .../basic_c_tests/funptr-simple.c.bc | 203 -- .../basic_c_tests/funptr-struct.c.bc | 209 -- test_cases_bc/basic_c_tests/global-array.c.bc | 233 -- .../basic_c_tests/global-call-noparam.c.bc | 185 - .../basic_c_tests/global-call-struct.c.bc | 209 -- .../basic_c_tests/global-call-twoparms.c.bc | 236 -- .../basic_c_tests/global-const-struct.c.bc | 200 -- .../basic_c_tests/global-funptr.c.bc | 182 - .../basic_c_tests/global-initializer.c.bc | 188 -- .../basic_c_tests/global-nested-calls.c.bc | 190 -- .../basic_c_tests/global-simple.c.bc | 180 - .../basic_c_tests/heap-indirect.c.bc | 197 -- .../basic_c_tests/heap-linkedlist.c.bc | 247 -- test_cases_bc/basic_c_tests/heap-wrapper.c.bc | 186 -- test_cases_bc/basic_c_tests/int2pointer.c.bc | 181 - test_cases_bc/basic_c_tests/mesa.c.bc | 115 - .../basic_c_tests/ptr-dereference1.c.bc | 177 - .../basic_c_tests/ptr-dereference2.c.bc | 181 - .../basic_c_tests/ptr-dereference3.c.bc | 197 -- test_cases_bc/basic_c_tests/spec-equake.c.bc | 1128 ------- test_cases_bc/basic_c_tests/spec-gap.c.bc | 303 -- test_cases_bc/basic_c_tests/spec-mesa.c.bc | 380 --- test_cases_bc/basic_c_tests/spec-parser.c.bc | 271 -- test_cases_bc/basic_c_tests/spec-vortex.c.bc | 299 -- test_cases_bc/basic_c_tests/struct-array.c.bc | 193 -- .../struct-assignment-direct.c.bc | 184 - .../struct-assignment-indirect.c.bc | 191 -- .../struct-assignment-nested.c.bc | 203 -- .../struct-field-multi-dereference.c.bc | 184 - .../basic_c_tests/struct-idx-inbound.c.bc | 47 - .../basic_c_tests/struct-idx-overflow.c.bc | 47 - .../struct-incompab-typecast-nested.c.bc | 211 -- .../struct-incompab-typecast.c.bc | 195 -- .../basic_c_tests/struct-instance-return.c.bc | 196 -- .../basic_c_tests/struct-nested-1-layer.c.bc | 198 -- .../basic_c_tests/struct-nested-2-layers.c.bc | 219 -- .../basic_c_tests/struct-nested-array1.c.bc | 194 -- .../basic_c_tests/struct-nested-array2.c.bc | 204 -- .../basic_c_tests/struct-nested-array3.c.bc | 207 -- .../basic_c_tests/struct-onefld.c.bc | 193 -- .../basic_c_tests/struct-simple.c.bc | 177 - .../basic_c_tests/struct-twoflds.c.bc | 205 -- test_cases_bc/basic_c_tests/structcopy1.c.bc | 51 - test_cases_bc/basic_cpp_tests/abstract.cpp.bc | 299 -- test_cases_bc/basic_cpp_tests/array-1.cpp.bc | 275 -- test_cases_bc/basic_cpp_tests/array-2.cpp.bc | 324 -- test_cases_bc/basic_cpp_tests/array-3.cpp.bc | 326 -- .../basic_cpp_tests/constructor-1.cpp.bc | 267 -- .../basic_cpp_tests/constructor-2.cpp.bc | 281 -- test_cases_bc/basic_cpp_tests/deque-1.cpp.bc | 2258 ------------- test_cases_bc/basic_cpp_tests/deque-2.cpp.bc | 2246 ------------- test_cases_bc/basic_cpp_tests/deque-3.cpp.bc | 2203 ------------ test_cases_bc/basic_cpp_tests/deque-4.cpp.bc | 2191 ------------ .../basic_cpp_tests/destructor-1.cpp.bc | 405 --- .../basic_cpp_tests/destructor-2.cpp.bc | 412 --- .../diamond-inheritance.cpp.bc | 357 -- .../basic_cpp_tests/dynamic_cast-1.cpp.bc | 293 -- .../basic_cpp_tests/forward_list-1.cpp.bc | 949 ------ .../basic_cpp_tests/forward_list-2.cpp.bc | 981 ------ .../basic_cpp_tests/forward_list-3.cpp.bc | 956 ------ .../basic_cpp_tests/forward_list-4.cpp.bc | 988 ------ .../basic_cpp_tests/func-ptr-in-class.cpp.bc | 333 -- .../global-obj-in-array.cpp.bc | 325 -- test_cases_bc/basic_cpp_tests/list-1.cpp.bc | 1062 ------ test_cases_bc/basic_cpp_tests/list-2.cpp.bc | 1006 ------ test_cases_bc/basic_cpp_tests/map-1.cpp.bc | 1735 ---------- test_cases_bc/basic_cpp_tests/map-2.cpp.bc | 1712 ---------- .../basic_cpp_tests/member-variable.cpp.bc | 323 -- .../basic_cpp_tests/namespace.cpp.bc | 280 -- test_cases_bc/basic_cpp_tests/pwc.cpp.bc | 292 -- test_cases_bc/basic_cpp_tests/queue-1.cpp.bc | 2436 -------------- test_cases_bc/basic_cpp_tests/queue-2.cpp.bc | 2429 -------------- test_cases_bc/basic_cpp_tests/set-1.cpp.bc | 1678 ---------- test_cases_bc/basic_cpp_tests/set-2.cpp.bc | 1646 --------- .../single-inheritance-1.cpp.bc | 263 -- .../single-inheritance-2.cpp.bc | 286 -- .../single-inheritance-3.cpp.bc | 320 -- .../single-inheritance-4.cpp.bc | 266 -- test_cases_bc/basic_cpp_tests/stack-1.cpp.bc | 2471 -------------- test_cases_bc/basic_cpp_tests/stack-2.cpp.bc | 2477 -------------- .../basic_cpp_tests/unordered_map-1.cpp.bc | 2976 ----------------- .../basic_cpp_tests/unordered_map-2.cpp.bc | 2963 ---------------- .../basic_cpp_tests/unordered_set-1.cpp.bc | 2795 ---------------- .../basic_cpp_tests/variant-gep.cpp.bc | 53 - test_cases_bc/basic_cpp_tests/vector-1.cpp.bc | 1444 -------- test_cases_bc/basic_cpp_tests/vector-2.cpp.bc | 1334 -------- test_cases_bc/basic_cpp_tests/vector-3.cpp.bc | 1464 -------- test_cases_bc/basic_cpp_tests/vector-4.cpp.bc | 1424 -------- .../virtual-call-simple.cpp.bc | 156 - .../virtual-diamond-inheritance-2.cpp.bc | 532 --- .../virtual-inheritance-1.cpp.bc | 266 -- .../virtual-inheritance-2.cpp.bc | 310 -- .../virtual-inheritance-3.cpp.bc | 375 --- test_cases_bc/complex_tests/cond-swap.c.bc | 71 - test_cases_bc/complex_tests/swap-array.c.bc | 63 - test_cases_bc/complex_tests/swap-funcptr.c.bc | 62 - .../complex_tests/swap-funcptr1.c.bc | 72 - .../complex_tests/swap-funcptr2.c.bc | 72 - test_cases_bc/complex_tests/swap-global.c.bc | 59 - test_cases_bc/complex_tests/swap-global1.c.bc | 51 - test_cases_bc/complex_tests/swap-global2.c.bc | 58 - test_cases_bc/complex_tests/swap-heap.c.bc | 84 - test_cases_bc/complex_tests/swap-heap1.c.bc | 87 - test_cases_bc/complex_tests/swap-heap2.c.bc | 91 - test_cases_bc/complex_tests/swap-heap3.c.bc | 91 - test_cases_bc/complex_tests/swap-heap4.c.bc | 96 - .../complex_tests/swap-indirect.c.bc | 76 - .../complex_tests/swap-indirect1.c.bc | 83 - .../complex_tests/swap-indirect2.c.bc | 99 - .../complex_tests/swap-recursion.c.bc | 88 - test_cases_bc/complex_tests/swap-struct.c.bc | 65 - test_cases_bc/complex_tests/swap-struct1.c.bc | 65 - .../complex_tests/swap-structindirect.c.bc | 71 - test_cases_bc/complex_tests/swap.c.bc | 58 - test_cases_bc/complex_tests/swap1.c.bc | 72 - .../complex_tests/swap4-context.c.bc | 108 - .../complex_tests/swap4-context1.c.bc | 172 - .../complex_tests/swap4-contextindirect.c.bc | 135 - test_cases_bc/complex_tests/swap4.c.bc | 60 - test_cases_bc/complex_tests/test-clone.c.bc | 119 - test_cases_bc/complex_tests/test-clone1.c.bc | 127 - test_cases_bc/complex_tests/test-cond.c.bc | 50 - .../complex_tests/test-globalstruct.c.bc | 33 - .../complex_tests/test-indirect.c.bc | 63 - .../complex_tests/test-indirect1.c.bc | 70 - .../complex_tests/test-linklist.c.bc | 174 - .../complex_tests/test-linklist1.c.bc | 145 - test_cases_bc/complex_tests/test-path.c.bc | 104 - .../complex_tests/test-recursive.c.bc | 90 - .../complex_tests/test-recursive0.c.bc | 76 - .../complex_tests/test-recursive1.c.bc | 176 - .../complex_tests/test-recursive2.c.bc | 206 -- .../complex_tests/test-recursiveglobal.c.bc | 68 - .../complex_tests/test-recursiveglobal1.c.bc | 71 - .../complex_tests/test-recursiveglobal2.c.bc | 72 - test_cases_bc/complex_tests/test.c.bc | 79 - test_cases_bc/complex_tests/test1-path.c.bc | 75 - test_cases_bc/complex_tests/test1.c.bc | 69 - test_cases_bc/complex_tests/test2-path.c.bc | 81 - test_cases_bc/complex_tests/test2.c.bc | 56 - test_cases_bc/complex_tests/test3-path.c.bc | 104 - test_cases_bc/complex_tests/test3.c.bc | 95 - test_cases_bc/complex_tests/test4.c.bc | 99 - test_cases_bc/complex_tests/test5.c.bc | 60 - test_cases_bc/complex_tests/test6.c.bc | 57 - test_cases_bc/complex_tests/test8.c.bc | 47 - test_cases_bc/cpp_types/broken.cpp.bc | 87 - test_cases_bc/crux-bc/bash.bc | Bin 2754000 -> 0 bytes test_cases_bc/crux-bc/bc.bc | Bin 206256 -> 0 bytes test_cases_bc/crux-bc/bunzip2.bc | Bin 319480 -> 0 bytes test_cases_bc/crux-bc/bzip2recover.bc | Bin 17416 -> 0 bytes test_cases_bc/crux-bc/curl.bc | Bin 586424 -> 0 bytes test_cases_bc/crux-bc/dc.bc | Bin 113228 -> 0 bytes test_cases_bc/crux-bc/htop.bc | Bin 501996 -> 0 bytes test_cases_bc/crux-bc/libbz2.so.bc | Bin 261736 -> 0 bytes test_cases_bc/crux-bc/libcurl.so.bc | Bin 1965044 -> 0 bytes test_cases_bc/crux-bc/tmux.bc | Bin 2413464 -> 0 bytes test_cases_bc/crux-bc/unrar.bc | Bin 969488 -> 0 bytes test_cases_bc/cs_tests/cs0.c.bc | 195 -- test_cases_bc/cs_tests/cs1.c.bc | 184 - test_cases_bc/cs_tests/cs10.c.bc | 220 -- test_cases_bc/cs_tests/cs11.c.bc | 189 -- test_cases_bc/cs_tests/cs12.c.bc | 193 -- test_cases_bc/cs_tests/cs13.c.bc | 196 -- test_cases_bc/cs_tests/cs14.c.bc | 210 -- test_cases_bc/cs_tests/cs15.c.bc | 225 -- test_cases_bc/cs_tests/cs16.c.bc | 200 -- test_cases_bc/cs_tests/cs17.c.bc | 241 -- test_cases_bc/cs_tests/cs18.c.bc | 201 -- test_cases_bc/cs_tests/cs19.c.bc | 199 -- test_cases_bc/cs_tests/cs2.c.bc | 241 -- test_cases_bc/cs_tests/cs20.c.bc | 216 -- test_cases_bc/cs_tests/cs21.c.bc | 196 -- test_cases_bc/cs_tests/cs3.c.bc | 240 -- test_cases_bc/cs_tests/cs4.c.bc | 210 -- test_cases_bc/cs_tests/cs5.c.bc | 188 -- test_cases_bc/cs_tests/cs6.c.bc | 188 -- test_cases_bc/cs_tests/cs7.c.bc | 216 -- test_cases_bc/cs_tests/cs8.c.bc | 212 -- test_cases_bc/cs_tests/cs9.c.bc | 246 -- test_cases_bc/cs_tests/funcpoiner.c.bc | 206 -- test_cases_bc/cs_tests/recur0.c.bc | 196 -- test_cases_bc/cs_tests/recur10.c.bc | 194 -- test_cases_bc/cs_tests/recur2.c.bc | 187 -- test_cases_bc/cs_tests/recur3.c.bc | 200 -- test_cases_bc/cs_tests/recur4.c.bc | 196 -- test_cases_bc/cs_tests/recur5.c.bc | 203 -- test_cases_bc/cs_tests/recur6.c.bc | 192 -- test_cases_bc/cs_tests/recur7.c.bc | 207 -- test_cases_bc/cs_tests/recur8.c.bc | 224 -- test_cases_bc/cs_tests/recur9.c.bc | 225 -- test_cases_bc/double_free/df0.c.bc | 107 - test_cases_bc/double_free/df00.c.bc | 125 - test_cases_bc/double_free/df1.c.bc | 109 - test_cases_bc/double_free/df10.c.bc | 840 ----- test_cases_bc/double_free/df11.c.bc | 751 ----- test_cases_bc/double_free/df12.c.bc | 778 ----- test_cases_bc/double_free/df13.c.bc | 769 ----- test_cases_bc/double_free/df14.c.bc | 752 ----- test_cases_bc/double_free/df15.c.bc | 763 ----- test_cases_bc/double_free/df16.c.bc | 772 ----- test_cases_bc/double_free/df18.c.bc | 733 ---- test_cases_bc/double_free/df19.c.bc | 777 ----- test_cases_bc/double_free/df2.c.bc | 116 - test_cases_bc/double_free/df20.c.bc | 777 ----- test_cases_bc/double_free/df21.c.bc | 777 ----- test_cases_bc/double_free/df22.c.bc | 868 ----- test_cases_bc/double_free/df23.c.bc | 777 ----- test_cases_bc/double_free/df24.c.bc | 867 ----- test_cases_bc/double_free/df25.c.bc | 777 ----- test_cases_bc/double_free/df26.c.bc | 768 ----- test_cases_bc/double_free/df27.c.bc | 777 ----- test_cases_bc/double_free/df28.c.bc | 868 ----- test_cases_bc/double_free/df29.c.bc | 779 ----- test_cases_bc/double_free/df3.c.bc | 132 - test_cases_bc/double_free/df30.c.bc | 867 ----- test_cases_bc/double_free/df31.c.bc | 878 ----- test_cases_bc/double_free/df32.c.bc | 777 ----- test_cases_bc/double_free/df33.c.bc | 866 ----- test_cases_bc/double_free/df34.c.bc | 866 ----- test_cases_bc/double_free/df35.c.bc | 822 ----- test_cases_bc/double_free/df36.c.bc | 777 ----- test_cases_bc/double_free/df37.c.bc | 866 ----- test_cases_bc/double_free/df38.c.bc | 777 ----- test_cases_bc/double_free/df39.c.bc | 769 ----- test_cases_bc/double_free/df4.c.bc | 126 - test_cases_bc/double_free/df40.c.bc | 751 ----- test_cases_bc/double_free/df41.c.bc | 840 ----- test_cases_bc/double_free/df42.c.bc | 742 ---- test_cases_bc/double_free/df43.c.bc | 778 ----- test_cases_bc/double_free/df44.c.bc | 855 ----- test_cases_bc/double_free/df45.c.bc | 769 ----- test_cases_bc/double_free/df46.c.bc | 763 ----- test_cases_bc/double_free/df5.c.bc | 760 ----- test_cases_bc/double_free/df6.c.bc | 777 ----- test_cases_bc/double_free/df7.c.bc | 769 ----- test_cases_bc/double_free/df8.c.bc | 855 ----- test_cases_bc/double_free/df9.c.bc | 751 ----- test_cases_bc/fs_tests/array_alias_1.c.bc | 204 -- test_cases_bc/fs_tests/array_alias_2.c.bc | 242 -- test_cases_bc/fs_tests/array_alias_3.c.bc | 183 - test_cases_bc/fs_tests/array_alias_4.c.bc | 193 -- test_cases_bc/fs_tests/array_alias_5.c.bc | 199 -- test_cases_bc/fs_tests/branch_1.c.bc | 183 - test_cases_bc/fs_tests/branch_2.c.bc | 186 -- test_cases_bc/fs_tests/branch_3.c.bc | 192 -- test_cases_bc/fs_tests/function_pointer.c.bc | 204 -- .../fs_tests/function_pointer_2.c.bc | 198 -- test_cases_bc/fs_tests/global_1.c.bc | 192 -- test_cases_bc/fs_tests/global_2.c.bc | 198 -- test_cases_bc/fs_tests/global_3.c.bc | 191 -- test_cases_bc/fs_tests/global_4.c.bc | 201 -- test_cases_bc/fs_tests/global_5.c.bc | 190 -- test_cases_bc/fs_tests/pcycle1.c.bc | 186 -- test_cases_bc/fs_tests/pcycle2.c.bc | 175 - test_cases_bc/fs_tests/return.c.bc | 186 -- test_cases_bc/fs_tests/simple_1.c.bc | 176 - test_cases_bc/fs_tests/simple_2.c.bc | 184 - test_cases_bc/fs_tests/simple_3.c.bc | 188 -- test_cases_bc/fs_tests/strong_update.c.bc | 190 -- test_cases_bc/fs_tests/struct_1.c.bc | 193 -- test_cases_bc/fs_tests/struct_2.c.bc | 193 -- test_cases_bc/fs_tests/test-su.c.bc | 181 - test_cases_bc/fs_tests/tt.c.bc | 30 - test_cases_bc/mem_leak/malloc0.c.bc | 241 -- test_cases_bc/mem_leak/malloc1.c.bc | 228 -- test_cases_bc/mem_leak/malloc10.c.bc | 247 -- test_cases_bc/mem_leak/malloc11.c.bc | 229 -- test_cases_bc/mem_leak/malloc12.c.bc | 225 -- test_cases_bc/mem_leak/malloc13.c.bc | 213 -- test_cases_bc/mem_leak/malloc14.c.bc | 216 -- test_cases_bc/mem_leak/malloc15.c.bc | 193 -- test_cases_bc/mem_leak/malloc16.c.bc | 270 -- test_cases_bc/mem_leak/malloc17.c.bc | 247 -- test_cases_bc/mem_leak/malloc18.c.bc | 292 -- test_cases_bc/mem_leak/malloc19.c.bc | 255 -- test_cases_bc/mem_leak/malloc2.c.bc | 247 -- test_cases_bc/mem_leak/malloc20.c.bc | 242 -- test_cases_bc/mem_leak/malloc21.c.bc | 282 -- test_cases_bc/mem_leak/malloc22.c.bc | 276 -- test_cases_bc/mem_leak/malloc23.c.bc | 230 -- test_cases_bc/mem_leak/malloc24.c.bc | 241 -- test_cases_bc/mem_leak/malloc25.c.bc | 256 -- test_cases_bc/mem_leak/malloc26.c.bc | 324 -- test_cases_bc/mem_leak/malloc27.c.bc | 305 -- test_cases_bc/mem_leak/malloc28.c.bc | 252 -- test_cases_bc/mem_leak/malloc29.c.bc | 218 -- test_cases_bc/mem_leak/malloc3.c.bc | 266 -- test_cases_bc/mem_leak/malloc30.c.bc | 226 -- test_cases_bc/mem_leak/malloc31.c.bc | 286 -- test_cases_bc/mem_leak/malloc32.c.bc | 269 -- test_cases_bc/mem_leak/malloc33.c.bc | 253 -- test_cases_bc/mem_leak/malloc34.c.bc | 234 -- test_cases_bc/mem_leak/malloc35.c.bc | 216 -- test_cases_bc/mem_leak/malloc36.c.bc | 268 -- test_cases_bc/mem_leak/malloc37.c.bc | 262 -- test_cases_bc/mem_leak/malloc38.c.bc | 316 -- test_cases_bc/mem_leak/malloc39.c.bc | 328 -- test_cases_bc/mem_leak/malloc4.c.bc | 275 -- test_cases_bc/mem_leak/malloc40.c.bc | 221 -- test_cases_bc/mem_leak/malloc41.c.bc | 288 -- test_cases_bc/mem_leak/malloc42.c.bc | 233 -- test_cases_bc/mem_leak/malloc43.c.bc | 222 -- test_cases_bc/mem_leak/malloc44.c.bc | 242 -- test_cases_bc/mem_leak/malloc45.c.bc | 320 -- test_cases_bc/mem_leak/malloc46.c.bc | 214 -- test_cases_bc/mem_leak/malloc47.c.bc | 251 -- test_cases_bc/mem_leak/malloc48.c.bc | 242 -- test_cases_bc/mem_leak/malloc49.c.bc | 241 -- test_cases_bc/mem_leak/malloc5.c.bc | 230 -- test_cases_bc/mem_leak/malloc50.c.bc | 259 -- test_cases_bc/mem_leak/malloc51.c.bc | 268 -- test_cases_bc/mem_leak/malloc52.c.bc | 928 ----- test_cases_bc/mem_leak/malloc53.c.bc | 808 ----- test_cases_bc/mem_leak/malloc54.c.bc | 249 -- test_cases_bc/mem_leak/malloc55.c.bc | 236 -- test_cases_bc/mem_leak/malloc56.c.bc | 226 -- test_cases_bc/mem_leak/malloc57.c.bc | 249 -- test_cases_bc/mem_leak/malloc58.c.bc | 335 -- test_cases_bc/mem_leak/malloc59.c.bc | 246 -- test_cases_bc/mem_leak/malloc6.c.bc | 244 -- test_cases_bc/mem_leak/malloc60.c.bc | 228 -- test_cases_bc/mem_leak/malloc61.c.bc | 268 -- test_cases_bc/mem_leak/malloc62.c.bc | 265 -- test_cases_bc/mem_leak/malloc63.c.bc | 319 -- test_cases_bc/mem_leak/malloc64.c.bc | 2089 ------------ test_cases_bc/mem_leak/malloc7.c.bc | 206 -- test_cases_bc/mem_leak/malloc8.c.bc | 248 -- test_cases_bc/mem_leak/malloc9.c.bc | 225 -- test_cases_bc/mem_leak/sp1.c.bc | 272 -- test_cases_bc/mem_leak/sp10.c.bc | 352 -- test_cases_bc/mem_leak/sp11.c.bc | 249 -- test_cases_bc/mem_leak/sp12.c.bc | 244 -- test_cases_bc/mem_leak/sp12a.c.bc | 244 -- test_cases_bc/mem_leak/sp13.c.bc | 260 -- test_cases_bc/mem_leak/sp13a.c.bc | 275 -- test_cases_bc/mem_leak/sp14.c.bc | 251 -- test_cases_bc/mem_leak/sp14a.c.bc | 243 -- test_cases_bc/mem_leak/sp15.c.bc | 309 -- test_cases_bc/mem_leak/sp15a.c.bc | 306 -- test_cases_bc/mem_leak/sp1a.c.bc | 263 -- test_cases_bc/mem_leak/sp2.c.bc | 274 -- test_cases_bc/mem_leak/sp22.c.bc | 240 -- test_cases_bc/mem_leak/sp2a.c.bc | 270 -- test_cases_bc/mem_leak/sp3.c.bc | 309 -- test_cases_bc/mem_leak/sp3a.c.bc | 300 -- test_cases_bc/mem_leak/sp4.c.bc | 315 -- test_cases_bc/mem_leak/sp41.c.bc | 367 -- test_cases_bc/mem_leak/sp4a.c.bc | 360 -- test_cases_bc/mem_leak/sp5.c.bc | 244 -- test_cases_bc/mem_leak/sp5a.c.bc | 240 -- test_cases_bc/mem_leak/sp6.c.bc | 284 -- test_cases_bc/mem_leak/sp6a.c.bc | 306 -- test_cases_bc/mem_leak/sp7.c.bc | 234 -- test_cases_bc/mem_leak/sp8.c.bc | 348 -- test_cases_bc/mem_leak/sp9.c.bc | 459 --- .../mta/imprecise_cxt_indfork_1.c.bc | 334 -- .../mta/imprecise_cxt_indfork_2.c.bc | 370 -- .../mta/imprecise_cxt_indfork_3.c.bc | 450 --- test_cases_bc/mta/imprecise_cxt_join_4.c.bc | 260 -- test_cases_bc/mta/imprecise_cxt_join_5.c.bc | 260 -- test_cases_bc/mta/imprecise_cxt_loop_5.c.bc | 354 -- .../mta/imprecise_cxt_offspring_5.c.bc | 306 -- test_cases_bc/mta/imprecise_cxt_recur_2.c.bc | 330 -- test_cases_bc/mta/imprecise_cxt_recur_3.c.bc | 329 -- test_cases_bc/mta/imprecise_cxt_recur_5.c.bc | 340 -- test_cases_bc/mta/imprecise_cxt_recur_6.c.bc | 339 -- .../mta/imprecise_cxt_thdindex_10.c.bc | 373 --- .../mta/imprecise_cxt_thdindex_3.c.bc | 306 -- .../mta/imprecise_cxt_thdindex_4_1.c.bc | 373 --- .../mta/imprecise_cxt_thdindex_4_2.c.bc | 375 --- .../mta/imprecise_cxt_thdindex_8_2.c.bc | 303 -- .../mta/imprecise_cxt_thdindex_9.c.bc | 320 -- test_cases_bc/mta/succ_cxt_branch_1.c.bc | 242 -- test_cases_bc/mta/succ_cxt_branch_2.c.bc | 244 -- test_cases_bc/mta/succ_cxt_branch_3.c.bc | 242 -- test_cases_bc/mta/succ_cxt_branch_4.c.bc | 255 -- test_cases_bc/mta/succ_cxt_branch_5.c.bc | 258 -- test_cases_bc/mta/succ_cxt_cand_1.c.bc | 251 -- test_cases_bc/mta/succ_cxt_cand_2.c.bc | 277 -- test_cases_bc/mta/succ_cxt_cand_3.c.bc | 307 -- test_cases_bc/mta/succ_cxt_join_1.c.bc | 297 -- test_cases_bc/mta/succ_cxt_join_2.c.bc | 402 --- test_cases_bc/mta/succ_cxt_join_3.c.bc | 402 --- test_cases_bc/mta/succ_cxt_loop_1.c.bc | 323 -- test_cases_bc/mta/succ_cxt_loop_2.c.bc | 372 --- test_cases_bc/mta/succ_cxt_loop_3.c.bc | 372 --- test_cases_bc/mta/succ_cxt_loop_6.c.bc | 307 -- test_cases_bc/mta/succ_cxt_loop_8.c.bc | 315 -- test_cases_bc/mta/succ_cxt_offspring_1.c.bc | 259 -- test_cases_bc/mta/succ_cxt_offspring_2.c.bc | 258 -- test_cases_bc/mta/succ_cxt_offspring_3.c.bc | 257 -- test_cases_bc/mta/succ_cxt_offspring_4.c.bc | 275 -- test_cases_bc/mta/succ_cxt_recur_4.c.bc | 302 -- test_cases_bc/mta/succ_cxt_recur_7.c.bc | 312 -- test_cases_bc/mta/succ_cxt_recur_index_1.c.bc | 297 -- test_cases_bc/mta/succ_cxt_sibling_1.c.bc | 319 -- test_cases_bc/mta/succ_cxt_sibling_2.c.bc | 321 -- test_cases_bc/mta/succ_cxt_sibling_3.c.bc | 319 -- test_cases_bc/mta/succ_cxt_sibling_4.c.bc | 318 -- test_cases_bc/mta/succ_cxt_sibling_5.c.bc | 385 --- test_cases_bc/mta/succ_cxt_sibling_6.c.bc | 386 --- test_cases_bc/mta/succ_cxt_sibling_7.c.bc | 384 --- test_cases_bc/mta/succ_cxt_sibling_8.c.bc | 384 --- test_cases_bc/mta/succ_cxt_simple_1.c.bc | 226 -- test_cases_bc/mta/succ_cxt_simple_2.c.bc | 264 -- test_cases_bc/mta/succ_cxt_simple_3.c.bc | 255 -- test_cases_bc/mta/succ_cxt_synthesis_1.c.bc | 298 -- test_cases_bc/mta/succ_cxt_thdindex_2.c.bc | 355 -- test_cases_bc/mta/succ_cxt_thdindex_7.c.bc | 301 -- test_cases_bc/mta/succ_cxt_thdindex_8_1.c.bc | 302 -- test_cases_bc/mta/succ_cxt_thdindex_8_3.c.bc | 302 -- test_cases_bc/mta/succ_cxt_thdindex_8_4.c.bc | 305 -- test_cases_bc/mta/unsound_cxt_loop_7.c.bc | 307 -- test_cases_bc/mta/unsound_cxt_thdindex_6.c.bc | 302 -- test_cases_bc/objtype_tests/type-basic.c.bc | 57 - test_cases_bc/objtype_tests/type-call.c.bc | 67 - test_cases_bc/objtype_tests/type-copy.c.bc | 60 - test_cases_bc/objtype_tests/type-ret.c.bc | 64 - test_cases_bc/objtype_tests/type-while.c.bc | 79 - test_cases_bc/path_tests/path1.c.bc | 208 -- test_cases_bc/path_tests/path10.c.bc | 215 -- test_cases_bc/path_tests/path11.c.bc | 214 -- test_cases_bc/path_tests/path12.c.bc | 209 -- test_cases_bc/path_tests/path13.c.bc | 214 -- test_cases_bc/path_tests/path14.c.bc | 209 -- test_cases_bc/path_tests/path15.c.bc | 196 -- test_cases_bc/path_tests/path16.c.bc | 211 -- test_cases_bc/path_tests/path17.c.bc | 220 -- test_cases_bc/path_tests/path18.c.bc | 204 -- test_cases_bc/path_tests/path19.c.bc | 217 -- test_cases_bc/path_tests/path2.c.bc | 206 -- test_cases_bc/path_tests/path20.c.bc | 201 -- test_cases_bc/path_tests/path21.c.bc | 208 -- test_cases_bc/path_tests/path22.c.bc | 221 -- test_cases_bc/path_tests/path3.c.bc | 204 -- test_cases_bc/path_tests/path4.c.bc | 211 -- test_cases_bc/path_tests/path5.c.bc | 210 -- test_cases_bc/path_tests/path6.c.bc | 208 -- test_cases_bc/path_tests/path7.c.bc | 195 -- test_cases_bc/path_tests/path8.c.bc | 226 -- test_cases_bc/path_tests/path9.c.bc | 209 -- 670 files changed, 205499 deletions(-) rename src/ae_nullptr_deref_tests/{loop_branch_access_nullptr(failed).c => loop_branch_access_nullptr.c} (100%) delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_array_2d_0-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_array_func_0-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_array_func_1-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_array_func_2-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_array_func_3-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_array_func_4-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_array_func_6-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_array_int_0-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_array_struct_0-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_array_varIdx_1-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_arraycopy1-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_arraycopy2-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_arraycopy3-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_assign_0-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_assign_1-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_assign_2-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_assign_3-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_bi_add_0-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_bi_add_1-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_bi_add_2-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_bi_div_0-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_bi_mix_0-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_bi_mul_0-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_bi_sub_0-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_br_false_0-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_br_nd_0-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_br_nd_1-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_br_nd_2-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_br_nd_malloc-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_br_true_0-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_extapi_strcat_0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_funcall_ref_0-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_funcall_ref_1-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_funcall_ref_2-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_nullptr_def_0-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_ptr_assign_0-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_ptr_call1-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_ptr_call2-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_ptr_func_0-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_ptr_func_1-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_ptr_func_4-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_ptr_func_6-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_ptr_s32_2-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_struct_array_0-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_struct_assign_0-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_switch-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_switch01-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_switch02-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_switch03-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_switch04-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_switch05-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_switch06-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_switch07-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_switch08-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_switch09-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_switch10-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BASIC_test_11-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/BUF_OVERFLOW_test_47-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CAST_fptosi.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CAST_fptoui.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CAST_fptrunc.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CAST_sext.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CAST_sitofp.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CAST_trunc.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CAST_uitofp.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CAST_zext.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CVE-2019-19847-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CVE-2020-13598-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CVE-2020-29203-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CVE-2021-39602-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CVE-2021-44975-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CVE-2021-45341-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CVE-2022-23850-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CVE-2022-26129-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CVE-2022-27239-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CVE-2022-29023-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CVE-2022-34835-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CVE-2022-34913-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CVE-2022-34918-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/CWE127_har_alloc-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_10-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_11-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_12-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_13-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_14-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_15-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_16-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_17-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_18-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_19-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_2-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_20-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_21-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_22-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_23-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_25-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_26-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_27-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_29-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_30-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_31-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_32-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_33-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_35-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_36-1-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_37-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_39-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_4-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_40-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_41-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_42-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_44-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_45-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_46-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_47-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_48-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_49-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_50-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_51-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_52-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_57-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_58-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_59-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_6-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_60-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_61-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_62-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_63-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_64-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_7-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_8-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/INTERVAL_test_9-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/LOOP_for01-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/LOOP_for_break02-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/LOOP_for_call-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/LOOP_for_inc-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/LOOP_for_nested-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/LOOP_while01-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/LOOP_while_break-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/LOOP_while_nested-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/NULL_1.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/NULL_2.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/NULL_3.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/NULL_4.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/UAF_uaf_0-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/cwe121_char_alloc-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/cwe121_int_alloc-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/cwe121_struct_alloc-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/cwe126_char_alloc-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/cwe190_char_fscanf-0.c.bc delete mode 100644 test_cases_bc/ae_assert_tests/cwe190_int_max-0.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_loop_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_loop_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_memcpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_memmove_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_ncpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_alloca_memmove_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_loop_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memcpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memmove_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_loop_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_memcpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_alloca_memmove_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_declare_memmove_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_loop_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_snprintf_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memcpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memmove_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_snprintf_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_loop_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_ncpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_declare_memcpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__dest_wchar_t_alloca_cpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_char_alloca_cpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_wchar_t_declare_cpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmove_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fgets_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fscanf_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_listen_socket_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_alloca_memcpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_loop_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_memcpy_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_loop_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_memmove_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_loop_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_memmove_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_loop_01.c.bc delete mode 100644 test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_memmove_01.c.bc delete mode 100644 test_cases_bc/basic_c_tests/CI-funptr.c.bc delete mode 100644 test_cases_bc/basic_c_tests/CI-global.c.bc delete mode 100644 test_cases_bc/basic_c_tests/CI-local.c.bc delete mode 100644 test_cases_bc/basic_c_tests/array-constIdx.c.bc delete mode 100644 test_cases_bc/basic_c_tests/array-varIdx.c.bc delete mode 100644 test_cases_bc/basic_c_tests/array-varIdx2.c.bc delete mode 100644 test_cases_bc/basic_c_tests/arraycopy1.c.bc delete mode 100644 test_cases_bc/basic_c_tests/branch-call.c.bc delete mode 100644 test_cases_bc/basic_c_tests/branch-intra.c.bc delete mode 100644 test_cases_bc/basic_c_tests/byteoffset1.c.bc delete mode 100644 test_cases_bc/basic_c_tests/constraint-cycle-copy.c.bc delete mode 100644 test_cases_bc/basic_c_tests/constraint-cycle-field.c.bc delete mode 100644 test_cases_bc/basic_c_tests/constraint-cycle-pwc.c.bc delete mode 100644 test_cases_bc/basic_c_tests/field-ptr-arith-constIdx.c.bc delete mode 100644 test_cases_bc/basic_c_tests/field-ptr-arith-varIdx.c.bc delete mode 100644 test_cases_bc/basic_c_tests/funptr-global.c.bc delete mode 100644 test_cases_bc/basic_c_tests/funptr-nested-call.c.bc delete mode 100644 test_cases_bc/basic_c_tests/funptr-simple.c.bc delete mode 100644 test_cases_bc/basic_c_tests/funptr-struct.c.bc delete mode 100644 test_cases_bc/basic_c_tests/global-array.c.bc delete mode 100644 test_cases_bc/basic_c_tests/global-call-noparam.c.bc delete mode 100644 test_cases_bc/basic_c_tests/global-call-struct.c.bc delete mode 100644 test_cases_bc/basic_c_tests/global-call-twoparms.c.bc delete mode 100644 test_cases_bc/basic_c_tests/global-const-struct.c.bc delete mode 100644 test_cases_bc/basic_c_tests/global-funptr.c.bc delete mode 100644 test_cases_bc/basic_c_tests/global-initializer.c.bc delete mode 100644 test_cases_bc/basic_c_tests/global-nested-calls.c.bc delete mode 100644 test_cases_bc/basic_c_tests/global-simple.c.bc delete mode 100644 test_cases_bc/basic_c_tests/heap-indirect.c.bc delete mode 100644 test_cases_bc/basic_c_tests/heap-linkedlist.c.bc delete mode 100644 test_cases_bc/basic_c_tests/heap-wrapper.c.bc delete mode 100644 test_cases_bc/basic_c_tests/int2pointer.c.bc delete mode 100644 test_cases_bc/basic_c_tests/mesa.c.bc delete mode 100644 test_cases_bc/basic_c_tests/ptr-dereference1.c.bc delete mode 100644 test_cases_bc/basic_c_tests/ptr-dereference2.c.bc delete mode 100644 test_cases_bc/basic_c_tests/ptr-dereference3.c.bc delete mode 100644 test_cases_bc/basic_c_tests/spec-equake.c.bc delete mode 100644 test_cases_bc/basic_c_tests/spec-gap.c.bc delete mode 100644 test_cases_bc/basic_c_tests/spec-mesa.c.bc delete mode 100644 test_cases_bc/basic_c_tests/spec-parser.c.bc delete mode 100644 test_cases_bc/basic_c_tests/spec-vortex.c.bc delete mode 100644 test_cases_bc/basic_c_tests/struct-array.c.bc delete mode 100644 test_cases_bc/basic_c_tests/struct-assignment-direct.c.bc delete mode 100644 test_cases_bc/basic_c_tests/struct-assignment-indirect.c.bc delete mode 100644 test_cases_bc/basic_c_tests/struct-assignment-nested.c.bc delete mode 100644 test_cases_bc/basic_c_tests/struct-field-multi-dereference.c.bc delete mode 100644 test_cases_bc/basic_c_tests/struct-idx-inbound.c.bc delete mode 100644 test_cases_bc/basic_c_tests/struct-idx-overflow.c.bc delete mode 100644 test_cases_bc/basic_c_tests/struct-incompab-typecast-nested.c.bc delete mode 100644 test_cases_bc/basic_c_tests/struct-incompab-typecast.c.bc delete mode 100644 test_cases_bc/basic_c_tests/struct-instance-return.c.bc delete mode 100644 test_cases_bc/basic_c_tests/struct-nested-1-layer.c.bc delete mode 100644 test_cases_bc/basic_c_tests/struct-nested-2-layers.c.bc delete mode 100644 test_cases_bc/basic_c_tests/struct-nested-array1.c.bc delete mode 100644 test_cases_bc/basic_c_tests/struct-nested-array2.c.bc delete mode 100644 test_cases_bc/basic_c_tests/struct-nested-array3.c.bc delete mode 100644 test_cases_bc/basic_c_tests/struct-onefld.c.bc delete mode 100644 test_cases_bc/basic_c_tests/struct-simple.c.bc delete mode 100644 test_cases_bc/basic_c_tests/struct-twoflds.c.bc delete mode 100644 test_cases_bc/basic_c_tests/structcopy1.c.bc delete mode 100644 test_cases_bc/basic_cpp_tests/abstract.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/array-1.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/array-2.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/array-3.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/constructor-1.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/constructor-2.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/deque-1.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/deque-2.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/deque-3.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/deque-4.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/destructor-1.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/destructor-2.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/diamond-inheritance.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/dynamic_cast-1.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/forward_list-1.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/forward_list-2.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/forward_list-3.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/forward_list-4.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/func-ptr-in-class.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/global-obj-in-array.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/list-1.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/list-2.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/map-1.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/map-2.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/member-variable.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/namespace.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/pwc.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/queue-1.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/queue-2.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/set-1.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/set-2.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/single-inheritance-1.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/single-inheritance-2.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/single-inheritance-3.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/single-inheritance-4.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/stack-1.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/stack-2.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/unordered_map-1.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/unordered_map-2.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/unordered_set-1.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/variant-gep.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/vector-1.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/vector-2.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/vector-3.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/vector-4.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/virtual-call-simple.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/virtual-diamond-inheritance-2.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/virtual-inheritance-1.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/virtual-inheritance-2.cpp.bc delete mode 100644 test_cases_bc/basic_cpp_tests/virtual-inheritance-3.cpp.bc delete mode 100644 test_cases_bc/complex_tests/cond-swap.c.bc delete mode 100644 test_cases_bc/complex_tests/swap-array.c.bc delete mode 100644 test_cases_bc/complex_tests/swap-funcptr.c.bc delete mode 100644 test_cases_bc/complex_tests/swap-funcptr1.c.bc delete mode 100644 test_cases_bc/complex_tests/swap-funcptr2.c.bc delete mode 100644 test_cases_bc/complex_tests/swap-global.c.bc delete mode 100644 test_cases_bc/complex_tests/swap-global1.c.bc delete mode 100644 test_cases_bc/complex_tests/swap-global2.c.bc delete mode 100644 test_cases_bc/complex_tests/swap-heap.c.bc delete mode 100644 test_cases_bc/complex_tests/swap-heap1.c.bc delete mode 100644 test_cases_bc/complex_tests/swap-heap2.c.bc delete mode 100644 test_cases_bc/complex_tests/swap-heap3.c.bc delete mode 100644 test_cases_bc/complex_tests/swap-heap4.c.bc delete mode 100644 test_cases_bc/complex_tests/swap-indirect.c.bc delete mode 100644 test_cases_bc/complex_tests/swap-indirect1.c.bc delete mode 100644 test_cases_bc/complex_tests/swap-indirect2.c.bc delete mode 100644 test_cases_bc/complex_tests/swap-recursion.c.bc delete mode 100644 test_cases_bc/complex_tests/swap-struct.c.bc delete mode 100644 test_cases_bc/complex_tests/swap-struct1.c.bc delete mode 100644 test_cases_bc/complex_tests/swap-structindirect.c.bc delete mode 100644 test_cases_bc/complex_tests/swap.c.bc delete mode 100644 test_cases_bc/complex_tests/swap1.c.bc delete mode 100644 test_cases_bc/complex_tests/swap4-context.c.bc delete mode 100644 test_cases_bc/complex_tests/swap4-context1.c.bc delete mode 100644 test_cases_bc/complex_tests/swap4-contextindirect.c.bc delete mode 100644 test_cases_bc/complex_tests/swap4.c.bc delete mode 100644 test_cases_bc/complex_tests/test-clone.c.bc delete mode 100644 test_cases_bc/complex_tests/test-clone1.c.bc delete mode 100644 test_cases_bc/complex_tests/test-cond.c.bc delete mode 100644 test_cases_bc/complex_tests/test-globalstruct.c.bc delete mode 100644 test_cases_bc/complex_tests/test-indirect.c.bc delete mode 100644 test_cases_bc/complex_tests/test-indirect1.c.bc delete mode 100644 test_cases_bc/complex_tests/test-linklist.c.bc delete mode 100644 test_cases_bc/complex_tests/test-linklist1.c.bc delete mode 100644 test_cases_bc/complex_tests/test-path.c.bc delete mode 100644 test_cases_bc/complex_tests/test-recursive.c.bc delete mode 100644 test_cases_bc/complex_tests/test-recursive0.c.bc delete mode 100644 test_cases_bc/complex_tests/test-recursive1.c.bc delete mode 100644 test_cases_bc/complex_tests/test-recursive2.c.bc delete mode 100644 test_cases_bc/complex_tests/test-recursiveglobal.c.bc delete mode 100644 test_cases_bc/complex_tests/test-recursiveglobal1.c.bc delete mode 100644 test_cases_bc/complex_tests/test-recursiveglobal2.c.bc delete mode 100644 test_cases_bc/complex_tests/test.c.bc delete mode 100644 test_cases_bc/complex_tests/test1-path.c.bc delete mode 100644 test_cases_bc/complex_tests/test1.c.bc delete mode 100644 test_cases_bc/complex_tests/test2-path.c.bc delete mode 100644 test_cases_bc/complex_tests/test2.c.bc delete mode 100644 test_cases_bc/complex_tests/test3-path.c.bc delete mode 100644 test_cases_bc/complex_tests/test3.c.bc delete mode 100644 test_cases_bc/complex_tests/test4.c.bc delete mode 100644 test_cases_bc/complex_tests/test5.c.bc delete mode 100644 test_cases_bc/complex_tests/test6.c.bc delete mode 100644 test_cases_bc/complex_tests/test8.c.bc delete mode 100644 test_cases_bc/cpp_types/broken.cpp.bc delete mode 100644 test_cases_bc/crux-bc/bash.bc delete mode 100644 test_cases_bc/crux-bc/bc.bc delete mode 100644 test_cases_bc/crux-bc/bunzip2.bc delete mode 100644 test_cases_bc/crux-bc/bzip2recover.bc delete mode 100644 test_cases_bc/crux-bc/curl.bc delete mode 100644 test_cases_bc/crux-bc/dc.bc delete mode 100644 test_cases_bc/crux-bc/htop.bc delete mode 100644 test_cases_bc/crux-bc/libbz2.so.bc delete mode 100644 test_cases_bc/crux-bc/libcurl.so.bc delete mode 100644 test_cases_bc/crux-bc/tmux.bc delete mode 100644 test_cases_bc/crux-bc/unrar.bc delete mode 100644 test_cases_bc/cs_tests/cs0.c.bc delete mode 100644 test_cases_bc/cs_tests/cs1.c.bc delete mode 100644 test_cases_bc/cs_tests/cs10.c.bc delete mode 100644 test_cases_bc/cs_tests/cs11.c.bc delete mode 100644 test_cases_bc/cs_tests/cs12.c.bc delete mode 100644 test_cases_bc/cs_tests/cs13.c.bc delete mode 100644 test_cases_bc/cs_tests/cs14.c.bc delete mode 100644 test_cases_bc/cs_tests/cs15.c.bc delete mode 100644 test_cases_bc/cs_tests/cs16.c.bc delete mode 100644 test_cases_bc/cs_tests/cs17.c.bc delete mode 100644 test_cases_bc/cs_tests/cs18.c.bc delete mode 100644 test_cases_bc/cs_tests/cs19.c.bc delete mode 100644 test_cases_bc/cs_tests/cs2.c.bc delete mode 100644 test_cases_bc/cs_tests/cs20.c.bc delete mode 100644 test_cases_bc/cs_tests/cs21.c.bc delete mode 100644 test_cases_bc/cs_tests/cs3.c.bc delete mode 100644 test_cases_bc/cs_tests/cs4.c.bc delete mode 100644 test_cases_bc/cs_tests/cs5.c.bc delete mode 100644 test_cases_bc/cs_tests/cs6.c.bc delete mode 100644 test_cases_bc/cs_tests/cs7.c.bc delete mode 100644 test_cases_bc/cs_tests/cs8.c.bc delete mode 100644 test_cases_bc/cs_tests/cs9.c.bc delete mode 100644 test_cases_bc/cs_tests/funcpoiner.c.bc delete mode 100644 test_cases_bc/cs_tests/recur0.c.bc delete mode 100644 test_cases_bc/cs_tests/recur10.c.bc delete mode 100644 test_cases_bc/cs_tests/recur2.c.bc delete mode 100644 test_cases_bc/cs_tests/recur3.c.bc delete mode 100644 test_cases_bc/cs_tests/recur4.c.bc delete mode 100644 test_cases_bc/cs_tests/recur5.c.bc delete mode 100644 test_cases_bc/cs_tests/recur6.c.bc delete mode 100644 test_cases_bc/cs_tests/recur7.c.bc delete mode 100644 test_cases_bc/cs_tests/recur8.c.bc delete mode 100644 test_cases_bc/cs_tests/recur9.c.bc delete mode 100644 test_cases_bc/double_free/df0.c.bc delete mode 100644 test_cases_bc/double_free/df00.c.bc delete mode 100644 test_cases_bc/double_free/df1.c.bc delete mode 100644 test_cases_bc/double_free/df10.c.bc delete mode 100644 test_cases_bc/double_free/df11.c.bc delete mode 100644 test_cases_bc/double_free/df12.c.bc delete mode 100644 test_cases_bc/double_free/df13.c.bc delete mode 100644 test_cases_bc/double_free/df14.c.bc delete mode 100644 test_cases_bc/double_free/df15.c.bc delete mode 100644 test_cases_bc/double_free/df16.c.bc delete mode 100644 test_cases_bc/double_free/df18.c.bc delete mode 100644 test_cases_bc/double_free/df19.c.bc delete mode 100644 test_cases_bc/double_free/df2.c.bc delete mode 100644 test_cases_bc/double_free/df20.c.bc delete mode 100644 test_cases_bc/double_free/df21.c.bc delete mode 100644 test_cases_bc/double_free/df22.c.bc delete mode 100644 test_cases_bc/double_free/df23.c.bc delete mode 100644 test_cases_bc/double_free/df24.c.bc delete mode 100644 test_cases_bc/double_free/df25.c.bc delete mode 100644 test_cases_bc/double_free/df26.c.bc delete mode 100644 test_cases_bc/double_free/df27.c.bc delete mode 100644 test_cases_bc/double_free/df28.c.bc delete mode 100644 test_cases_bc/double_free/df29.c.bc delete mode 100644 test_cases_bc/double_free/df3.c.bc delete mode 100644 test_cases_bc/double_free/df30.c.bc delete mode 100644 test_cases_bc/double_free/df31.c.bc delete mode 100644 test_cases_bc/double_free/df32.c.bc delete mode 100644 test_cases_bc/double_free/df33.c.bc delete mode 100644 test_cases_bc/double_free/df34.c.bc delete mode 100644 test_cases_bc/double_free/df35.c.bc delete mode 100644 test_cases_bc/double_free/df36.c.bc delete mode 100644 test_cases_bc/double_free/df37.c.bc delete mode 100644 test_cases_bc/double_free/df38.c.bc delete mode 100644 test_cases_bc/double_free/df39.c.bc delete mode 100644 test_cases_bc/double_free/df4.c.bc delete mode 100644 test_cases_bc/double_free/df40.c.bc delete mode 100644 test_cases_bc/double_free/df41.c.bc delete mode 100644 test_cases_bc/double_free/df42.c.bc delete mode 100644 test_cases_bc/double_free/df43.c.bc delete mode 100644 test_cases_bc/double_free/df44.c.bc delete mode 100644 test_cases_bc/double_free/df45.c.bc delete mode 100644 test_cases_bc/double_free/df46.c.bc delete mode 100644 test_cases_bc/double_free/df5.c.bc delete mode 100644 test_cases_bc/double_free/df6.c.bc delete mode 100644 test_cases_bc/double_free/df7.c.bc delete mode 100644 test_cases_bc/double_free/df8.c.bc delete mode 100644 test_cases_bc/double_free/df9.c.bc delete mode 100644 test_cases_bc/fs_tests/array_alias_1.c.bc delete mode 100644 test_cases_bc/fs_tests/array_alias_2.c.bc delete mode 100644 test_cases_bc/fs_tests/array_alias_3.c.bc delete mode 100644 test_cases_bc/fs_tests/array_alias_4.c.bc delete mode 100644 test_cases_bc/fs_tests/array_alias_5.c.bc delete mode 100644 test_cases_bc/fs_tests/branch_1.c.bc delete mode 100644 test_cases_bc/fs_tests/branch_2.c.bc delete mode 100644 test_cases_bc/fs_tests/branch_3.c.bc delete mode 100644 test_cases_bc/fs_tests/function_pointer.c.bc delete mode 100644 test_cases_bc/fs_tests/function_pointer_2.c.bc delete mode 100644 test_cases_bc/fs_tests/global_1.c.bc delete mode 100644 test_cases_bc/fs_tests/global_2.c.bc delete mode 100644 test_cases_bc/fs_tests/global_3.c.bc delete mode 100644 test_cases_bc/fs_tests/global_4.c.bc delete mode 100644 test_cases_bc/fs_tests/global_5.c.bc delete mode 100644 test_cases_bc/fs_tests/pcycle1.c.bc delete mode 100644 test_cases_bc/fs_tests/pcycle2.c.bc delete mode 100644 test_cases_bc/fs_tests/return.c.bc delete mode 100644 test_cases_bc/fs_tests/simple_1.c.bc delete mode 100644 test_cases_bc/fs_tests/simple_2.c.bc delete mode 100644 test_cases_bc/fs_tests/simple_3.c.bc delete mode 100644 test_cases_bc/fs_tests/strong_update.c.bc delete mode 100644 test_cases_bc/fs_tests/struct_1.c.bc delete mode 100644 test_cases_bc/fs_tests/struct_2.c.bc delete mode 100644 test_cases_bc/fs_tests/test-su.c.bc delete mode 100644 test_cases_bc/fs_tests/tt.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc0.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc1.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc10.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc11.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc12.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc13.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc14.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc15.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc16.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc17.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc18.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc19.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc2.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc20.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc21.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc22.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc23.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc24.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc25.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc26.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc27.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc28.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc29.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc3.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc30.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc31.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc32.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc33.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc34.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc35.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc36.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc37.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc38.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc39.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc4.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc40.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc41.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc42.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc43.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc44.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc45.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc46.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc47.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc48.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc49.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc5.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc50.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc51.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc52.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc53.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc54.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc55.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc56.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc57.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc58.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc59.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc6.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc60.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc61.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc62.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc63.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc64.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc7.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc8.c.bc delete mode 100644 test_cases_bc/mem_leak/malloc9.c.bc delete mode 100644 test_cases_bc/mem_leak/sp1.c.bc delete mode 100644 test_cases_bc/mem_leak/sp10.c.bc delete mode 100644 test_cases_bc/mem_leak/sp11.c.bc delete mode 100644 test_cases_bc/mem_leak/sp12.c.bc delete mode 100644 test_cases_bc/mem_leak/sp12a.c.bc delete mode 100644 test_cases_bc/mem_leak/sp13.c.bc delete mode 100644 test_cases_bc/mem_leak/sp13a.c.bc delete mode 100644 test_cases_bc/mem_leak/sp14.c.bc delete mode 100644 test_cases_bc/mem_leak/sp14a.c.bc delete mode 100644 test_cases_bc/mem_leak/sp15.c.bc delete mode 100644 test_cases_bc/mem_leak/sp15a.c.bc delete mode 100644 test_cases_bc/mem_leak/sp1a.c.bc delete mode 100644 test_cases_bc/mem_leak/sp2.c.bc delete mode 100644 test_cases_bc/mem_leak/sp22.c.bc delete mode 100644 test_cases_bc/mem_leak/sp2a.c.bc delete mode 100644 test_cases_bc/mem_leak/sp3.c.bc delete mode 100644 test_cases_bc/mem_leak/sp3a.c.bc delete mode 100644 test_cases_bc/mem_leak/sp4.c.bc delete mode 100644 test_cases_bc/mem_leak/sp41.c.bc delete mode 100644 test_cases_bc/mem_leak/sp4a.c.bc delete mode 100644 test_cases_bc/mem_leak/sp5.c.bc delete mode 100644 test_cases_bc/mem_leak/sp5a.c.bc delete mode 100644 test_cases_bc/mem_leak/sp6.c.bc delete mode 100644 test_cases_bc/mem_leak/sp6a.c.bc delete mode 100644 test_cases_bc/mem_leak/sp7.c.bc delete mode 100644 test_cases_bc/mem_leak/sp8.c.bc delete mode 100644 test_cases_bc/mem_leak/sp9.c.bc delete mode 100644 test_cases_bc/mta/imprecise_cxt_indfork_1.c.bc delete mode 100644 test_cases_bc/mta/imprecise_cxt_indfork_2.c.bc delete mode 100644 test_cases_bc/mta/imprecise_cxt_indfork_3.c.bc delete mode 100644 test_cases_bc/mta/imprecise_cxt_join_4.c.bc delete mode 100644 test_cases_bc/mta/imprecise_cxt_join_5.c.bc delete mode 100644 test_cases_bc/mta/imprecise_cxt_loop_5.c.bc delete mode 100644 test_cases_bc/mta/imprecise_cxt_offspring_5.c.bc delete mode 100644 test_cases_bc/mta/imprecise_cxt_recur_2.c.bc delete mode 100644 test_cases_bc/mta/imprecise_cxt_recur_3.c.bc delete mode 100644 test_cases_bc/mta/imprecise_cxt_recur_5.c.bc delete mode 100644 test_cases_bc/mta/imprecise_cxt_recur_6.c.bc delete mode 100644 test_cases_bc/mta/imprecise_cxt_thdindex_10.c.bc delete mode 100644 test_cases_bc/mta/imprecise_cxt_thdindex_3.c.bc delete mode 100644 test_cases_bc/mta/imprecise_cxt_thdindex_4_1.c.bc delete mode 100644 test_cases_bc/mta/imprecise_cxt_thdindex_4_2.c.bc delete mode 100644 test_cases_bc/mta/imprecise_cxt_thdindex_8_2.c.bc delete mode 100644 test_cases_bc/mta/imprecise_cxt_thdindex_9.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_branch_1.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_branch_2.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_branch_3.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_branch_4.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_branch_5.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_cand_1.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_cand_2.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_cand_3.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_join_1.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_join_2.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_join_3.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_loop_1.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_loop_2.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_loop_3.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_loop_6.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_loop_8.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_offspring_1.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_offspring_2.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_offspring_3.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_offspring_4.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_recur_4.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_recur_7.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_recur_index_1.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_sibling_1.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_sibling_2.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_sibling_3.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_sibling_4.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_sibling_5.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_sibling_6.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_sibling_7.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_sibling_8.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_simple_1.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_simple_2.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_simple_3.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_synthesis_1.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_thdindex_2.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_thdindex_7.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_thdindex_8_1.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_thdindex_8_3.c.bc delete mode 100644 test_cases_bc/mta/succ_cxt_thdindex_8_4.c.bc delete mode 100644 test_cases_bc/mta/unsound_cxt_loop_7.c.bc delete mode 100644 test_cases_bc/mta/unsound_cxt_thdindex_6.c.bc delete mode 100644 test_cases_bc/objtype_tests/type-basic.c.bc delete mode 100644 test_cases_bc/objtype_tests/type-call.c.bc delete mode 100644 test_cases_bc/objtype_tests/type-copy.c.bc delete mode 100644 test_cases_bc/objtype_tests/type-ret.c.bc delete mode 100644 test_cases_bc/objtype_tests/type-while.c.bc delete mode 100644 test_cases_bc/path_tests/path1.c.bc delete mode 100644 test_cases_bc/path_tests/path10.c.bc delete mode 100644 test_cases_bc/path_tests/path11.c.bc delete mode 100644 test_cases_bc/path_tests/path12.c.bc delete mode 100644 test_cases_bc/path_tests/path13.c.bc delete mode 100644 test_cases_bc/path_tests/path14.c.bc delete mode 100644 test_cases_bc/path_tests/path15.c.bc delete mode 100644 test_cases_bc/path_tests/path16.c.bc delete mode 100644 test_cases_bc/path_tests/path17.c.bc delete mode 100644 test_cases_bc/path_tests/path18.c.bc delete mode 100644 test_cases_bc/path_tests/path19.c.bc delete mode 100644 test_cases_bc/path_tests/path2.c.bc delete mode 100644 test_cases_bc/path_tests/path20.c.bc delete mode 100644 test_cases_bc/path_tests/path21.c.bc delete mode 100644 test_cases_bc/path_tests/path22.c.bc delete mode 100644 test_cases_bc/path_tests/path3.c.bc delete mode 100644 test_cases_bc/path_tests/path4.c.bc delete mode 100644 test_cases_bc/path_tests/path5.c.bc delete mode 100644 test_cases_bc/path_tests/path6.c.bc delete mode 100644 test_cases_bc/path_tests/path7.c.bc delete mode 100644 test_cases_bc/path_tests/path8.c.bc delete mode 100644 test_cases_bc/path_tests/path9.c.bc diff --git a/src/ae_nullptr_deref_tests/loop_branch_access_nullptr(failed).c b/src/ae_nullptr_deref_tests/loop_branch_access_nullptr.c similarity index 100% rename from src/ae_nullptr_deref_tests/loop_branch_access_nullptr(failed).c rename to src/ae_nullptr_deref_tests/loop_branch_access_nullptr.c diff --git a/test_cases_bc/ae_assert_tests/BASIC_array_2d_0-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_array_2d_0-0.c.bc deleted file mode 100644 index a5cee6ba..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_array_2d_0-0.c.bc +++ /dev/null @@ -1,119 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_2d_0-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_array_2d_0-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca [3 x [3 x i32]], align 16 - %b = alloca i32, align 4 - %c = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !20 - %arrayidx = getelementptr inbounds [3 x [3 x i32]], ptr %a, i64 0, i64 0, !dbg !21 - %arrayidx1 = getelementptr inbounds [3 x i32], ptr %arrayidx, i64 0, i64 0, !dbg !21 - store i32 0, ptr %arrayidx1, align 16, !dbg !22 - %arrayidx2 = getelementptr inbounds [3 x [3 x i32]], ptr %a, i64 0, i64 0, !dbg !23 - %arrayidx3 = getelementptr inbounds [3 x i32], ptr %arrayidx2, i64 0, i64 1, !dbg !23 - store i32 1, ptr %arrayidx3, align 4, !dbg !24 - %arrayidx4 = getelementptr inbounds [3 x [3 x i32]], ptr %a, i64 0, i64 0, !dbg !25 - %arrayidx5 = getelementptr inbounds [3 x i32], ptr %arrayidx4, i64 0, i64 2, !dbg !25 - store i32 2, ptr %arrayidx5, align 8, !dbg !26 - %arrayidx6 = getelementptr inbounds [3 x [3 x i32]], ptr %a, i64 0, i64 1, !dbg !27 - %arrayidx7 = getelementptr inbounds [3 x i32], ptr %arrayidx6, i64 0, i64 0, !dbg !27 - store i32 3, ptr %arrayidx7, align 4, !dbg !28 - %arrayidx8 = getelementptr inbounds [3 x [3 x i32]], ptr %a, i64 0, i64 1, !dbg !29 - %arrayidx9 = getelementptr inbounds [3 x i32], ptr %arrayidx8, i64 0, i64 1, !dbg !29 - store i32 4, ptr %arrayidx9, align 4, !dbg !30 - %arrayidx10 = getelementptr inbounds [3 x [3 x i32]], ptr %a, i64 0, i64 1, !dbg !31 - %arrayidx11 = getelementptr inbounds [3 x i32], ptr %arrayidx10, i64 0, i64 2, !dbg !31 - store i32 5, ptr %arrayidx11, align 4, !dbg !32 - %arrayidx12 = getelementptr inbounds [3 x [3 x i32]], ptr %a, i64 0, i64 2, !dbg !33 - %arrayidx13 = getelementptr inbounds [3 x i32], ptr %arrayidx12, i64 0, i64 0, !dbg !33 - store i32 6, ptr %arrayidx13, align 8, !dbg !34 - %arrayidx14 = getelementptr inbounds [3 x [3 x i32]], ptr %a, i64 0, i64 2, !dbg !35 - %arrayidx15 = getelementptr inbounds [3 x i32], ptr %arrayidx14, i64 0, i64 1, !dbg !35 - store i32 7, ptr %arrayidx15, align 4, !dbg !36 - %arrayidx16 = getelementptr inbounds [3 x [3 x i32]], ptr %a, i64 0, i64 2, !dbg !37 - %arrayidx17 = getelementptr inbounds [3 x i32], ptr %arrayidx16, i64 0, i64 2, !dbg !37 - store i32 8, ptr %arrayidx17, align 8, !dbg !38 - call void @llvm.dbg.declare(metadata ptr %b, metadata !39, metadata !DIExpression()), !dbg !40 - store i32 2, ptr %b, align 4, !dbg !40 - call void @llvm.dbg.declare(metadata ptr %c, metadata !41, metadata !DIExpression()), !dbg !42 - store i32 2, ptr %c, align 4, !dbg !42 - %0 = load i32, ptr %b, align 4, !dbg !43 - %idxprom = sext i32 %0 to i64, !dbg !44 - %arrayidx18 = getelementptr inbounds [3 x [3 x i32]], ptr %a, i64 0, i64 %idxprom, !dbg !44 - %1 = load i32, ptr %c, align 4, !dbg !45 - %idxprom19 = sext i32 %1 to i64, !dbg !44 - %arrayidx20 = getelementptr inbounds [3 x i32], ptr %arrayidx18, i64 0, i64 %idxprom19, !dbg !44 - %2 = load i32, ptr %arrayidx20, align 4, !dbg !44 - %cmp = icmp eq i32 %2, 8, !dbg !46 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !47 - ret i32 0, !dbg !48 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_array_2d_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "6093cd55e9bebab7f8de76c792a9a4f1") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 8, type: !12, scopeLine: 8, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_array_2d_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "6093cd55e9bebab7f8de76c792a9a4f1") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 9, type: !17) -!17 = !DICompositeType(tag: DW_TAG_array_type, baseType: !14, size: 288, elements: !18) -!18 = !{!19, !19} -!19 = !DISubrange(count: 3) -!20 = !DILocation(line: 9, column: 9, scope: !10) -!21 = !DILocation(line: 10, column: 5, scope: !10) -!22 = !DILocation(line: 10, column: 13, scope: !10) -!23 = !DILocation(line: 11, column: 5, scope: !10) -!24 = !DILocation(line: 11, column: 13, scope: !10) -!25 = !DILocation(line: 12, column: 5, scope: !10) -!26 = !DILocation(line: 12, column: 13, scope: !10) -!27 = !DILocation(line: 13, column: 5, scope: !10) -!28 = !DILocation(line: 13, column: 13, scope: !10) -!29 = !DILocation(line: 14, column: 5, scope: !10) -!30 = !DILocation(line: 14, column: 13, scope: !10) -!31 = !DILocation(line: 15, column: 5, scope: !10) -!32 = !DILocation(line: 15, column: 13, scope: !10) -!33 = !DILocation(line: 16, column: 5, scope: !10) -!34 = !DILocation(line: 16, column: 13, scope: !10) -!35 = !DILocation(line: 17, column: 5, scope: !10) -!36 = !DILocation(line: 17, column: 13, scope: !10) -!37 = !DILocation(line: 18, column: 5, scope: !10) -!38 = !DILocation(line: 18, column: 13, scope: !10) -!39 = !DILocalVariable(name: "b", scope: !10, file: !11, line: 20, type: !14) -!40 = !DILocation(line: 20, column: 9, scope: !10) -!41 = !DILocalVariable(name: "c", scope: !10, file: !11, line: 20, type: !14) -!42 = !DILocation(line: 20, column: 16, scope: !10) -!43 = !DILocation(line: 21, column: 18, scope: !10) -!44 = !DILocation(line: 21, column: 16, scope: !10) -!45 = !DILocation(line: 21, column: 21, scope: !10) -!46 = !DILocation(line: 21, column: 24, scope: !10) -!47 = !DILocation(line: 21, column: 5, scope: !10) -!48 = !DILocation(line: 22, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_array_func_0-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_array_func_0-0.c.bc deleted file mode 100644 index 9e92945f..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_array_func_0-0.c.bc +++ /dev/null @@ -1,101 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_func_0-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_array_func_0-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @getValue(ptr noundef %arr, i32 noundef %idx) #0 !dbg !10 { -entry: - %arr.addr = alloca ptr, align 8 - %idx.addr = alloca i32, align 4 - store ptr %arr, ptr %arr.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %arr.addr, metadata !17, metadata !DIExpression()), !dbg !18 - store i32 %idx, ptr %idx.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %idx.addr, metadata !19, metadata !DIExpression()), !dbg !20 - %0 = load ptr, ptr %arr.addr, align 8, !dbg !21 - %1 = load i32, ptr %idx.addr, align 4, !dbg !22 - %idxprom = sext i32 %1 to i64, !dbg !21 - %arrayidx = getelementptr inbounds i32, ptr %0, i64 %idxprom, !dbg !21 - %2 = load i32, ptr %arrayidx, align 4, !dbg !21 - ret i32 %2, !dbg !23 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !24 { -entry: - %retval = alloca i32, align 4 - %arr = alloca [2 x i32], align 4 - %v = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %arr, metadata !27, metadata !DIExpression()), !dbg !31 - %arrayidx = getelementptr inbounds [2 x i32], ptr %arr, i64 0, i64 0, !dbg !32 - store i32 0, ptr %arrayidx, align 4, !dbg !33 - %arrayidx1 = getelementptr inbounds [2 x i32], ptr %arr, i64 0, i64 1, !dbg !34 - store i32 1, ptr %arrayidx1, align 4, !dbg !35 - call void @llvm.dbg.declare(metadata ptr %v, metadata !36, metadata !DIExpression()), !dbg !37 - %arraydecay = getelementptr inbounds [2 x i32], ptr %arr, i64 0, i64 0, !dbg !38 - %call = call i32 @getValue(ptr noundef %arraydecay, i32 noundef 1), !dbg !39 - store i32 %call, ptr %v, align 4, !dbg !37 - %0 = load i32, ptr %v, align 4, !dbg !40 - %cmp = icmp eq i32 %0, 1, !dbg !41 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !42 - ret i32 0, !dbg !43 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_array_func_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e0c8c9dcd38b4fc537b53f47d9fc2204") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "getValue", scope: !11, file: !11, line: 8, type: !12, scopeLine: 8, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_array_func_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e0c8c9dcd38b4fc537b53f47d9fc2204") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !15, !14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !14, size: 64) -!16 = !{} -!17 = !DILocalVariable(name: "arr", arg: 1, scope: !10, file: !11, line: 8, type: !15) -!18 = !DILocation(line: 8, column: 19, scope: !10) -!19 = !DILocalVariable(name: "idx", arg: 2, scope: !10, file: !11, line: 8, type: !14) -!20 = !DILocation(line: 8, column: 28, scope: !10) -!21 = !DILocation(line: 9, column: 12, scope: !10) -!22 = !DILocation(line: 9, column: 16, scope: !10) -!23 = !DILocation(line: 9, column: 5, scope: !10) -!24 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 12, type: !25, scopeLine: 12, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!25 = !DISubroutineType(types: !26) -!26 = !{!14} -!27 = !DILocalVariable(name: "arr", scope: !24, file: !11, line: 13, type: !28) -!28 = !DICompositeType(tag: DW_TAG_array_type, baseType: !14, size: 64, elements: !29) -!29 = !{!30} -!30 = !DISubrange(count: 2) -!31 = !DILocation(line: 13, column: 9, scope: !24) -!32 = !DILocation(line: 14, column: 5, scope: !24) -!33 = !DILocation(line: 14, column: 12, scope: !24) -!34 = !DILocation(line: 15, column: 5, scope: !24) -!35 = !DILocation(line: 15, column: 12, scope: !24) -!36 = !DILocalVariable(name: "v", scope: !24, file: !11, line: 16, type: !14) -!37 = !DILocation(line: 16, column: 9, scope: !24) -!38 = !DILocation(line: 16, column: 22, scope: !24) -!39 = !DILocation(line: 16, column: 13, scope: !24) -!40 = !DILocation(line: 17, column: 16, scope: !24) -!41 = !DILocation(line: 17, column: 18, scope: !24) -!42 = !DILocation(line: 17, column: 5, scope: !24) -!43 = !DILocation(line: 18, column: 5, scope: !24) diff --git a/test_cases_bc/ae_assert_tests/BASIC_array_func_1-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_array_func_1-0.c.bc deleted file mode 100644 index f5e4c361..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_array_func_1-0.c.bc +++ /dev/null @@ -1,109 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_func_1-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_array_func_1-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @getValue(ptr noundef %arr, i32 noundef %x, i32 noundef %y) #0 !dbg !10 { -entry: - %arr.addr = alloca ptr, align 8 - %x.addr = alloca i32, align 4 - %y.addr = alloca i32, align 4 - store ptr %arr, ptr %arr.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %arr.addr, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 %x, ptr %x.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !20, metadata !DIExpression()), !dbg !21 - store i32 %y, ptr %y.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %y.addr, metadata !22, metadata !DIExpression()), !dbg !23 - %0 = load ptr, ptr %arr.addr, align 8, !dbg !24 - %1 = load i32, ptr %x.addr, align 4, !dbg !25 - %idxprom = sext i32 %1 to i64, !dbg !24 - %arrayidx = getelementptr inbounds ptr, ptr %0, i64 %idxprom, !dbg !24 - %2 = load ptr, ptr %arrayidx, align 8, !dbg !24 - %3 = load i32, ptr %y.addr, align 4, !dbg !26 - %idxprom1 = sext i32 %3 to i64, !dbg !24 - %arrayidx2 = getelementptr inbounds i32, ptr %2, i64 %idxprom1, !dbg !24 - %4 = load i32, ptr %arrayidx2, align 4, !dbg !24 - ret i32 %4, !dbg !27 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !28 { -entry: - %retval = alloca i32, align 4 - %arr = alloca [2 x [2 x i32]], align 16 - %v = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %arr, metadata !31, metadata !DIExpression()), !dbg !35 - %arrayidx = getelementptr inbounds [2 x [2 x i32]], ptr %arr, i64 0, i64 0, !dbg !36 - %arrayidx1 = getelementptr inbounds [2 x i32], ptr %arrayidx, i64 0, i64 0, !dbg !36 - store i32 10, ptr %arrayidx1, align 16, !dbg !37 - call void @llvm.dbg.declare(metadata ptr %v, metadata !38, metadata !DIExpression()), !dbg !39 - %arraydecay = getelementptr inbounds [2 x [2 x i32]], ptr %arr, i64 0, i64 0, !dbg !40 - %call = call i32 @getValue(ptr noundef %arraydecay, i32 noundef 0, i32 noundef 0), !dbg !41 - store i32 %call, ptr %v, align 4, !dbg !39 - %0 = load i32, ptr %v, align 4, !dbg !42 - %cmp = icmp eq i32 %0, 10, !dbg !43 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !44 - ret i32 0, !dbg !45 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_array_func_1-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "99c8c82f59339ff114e3cb9eaa56d36b") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "getValue", scope: !11, file: !11, line: 8, type: !12, scopeLine: 8, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_array_func_1-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "99c8c82f59339ff114e3cb9eaa56d36b") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !15, !14, !14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !16, size: 64) -!16 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !14, size: 64) -!17 = !{} -!18 = !DILocalVariable(name: "arr", arg: 1, scope: !10, file: !11, line: 8, type: !15) -!19 = !DILocation(line: 8, column: 20, scope: !10) -!20 = !DILocalVariable(name: "x", arg: 2, scope: !10, file: !11, line: 8, type: !14) -!21 = !DILocation(line: 8, column: 29, scope: !10) -!22 = !DILocalVariable(name: "y", arg: 3, scope: !10, file: !11, line: 8, type: !14) -!23 = !DILocation(line: 8, column: 36, scope: !10) -!24 = !DILocation(line: 9, column: 12, scope: !10) -!25 = !DILocation(line: 9, column: 16, scope: !10) -!26 = !DILocation(line: 9, column: 19, scope: !10) -!27 = !DILocation(line: 9, column: 5, scope: !10) -!28 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 12, type: !29, scopeLine: 12, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) -!29 = !DISubroutineType(types: !30) -!30 = !{!14} -!31 = !DILocalVariable(name: "arr", scope: !28, file: !11, line: 13, type: !32) -!32 = !DICompositeType(tag: DW_TAG_array_type, baseType: !14, size: 128, elements: !33) -!33 = !{!34, !34} -!34 = !DISubrange(count: 2) -!35 = !DILocation(line: 13, column: 9, scope: !28) -!36 = !DILocation(line: 14, column: 5, scope: !28) -!37 = !DILocation(line: 14, column: 15, scope: !28) -!38 = !DILocalVariable(name: "v", scope: !28, file: !11, line: 15, type: !14) -!39 = !DILocation(line: 15, column: 9, scope: !28) -!40 = !DILocation(line: 15, column: 22, scope: !28) -!41 = !DILocation(line: 15, column: 13, scope: !28) -!42 = !DILocation(line: 16, column: 16, scope: !28) -!43 = !DILocation(line: 16, column: 18, scope: !28) -!44 = !DILocation(line: 16, column: 5, scope: !28) -!45 = !DILocation(line: 17, column: 5, scope: !28) diff --git a/test_cases_bc/ae_assert_tests/BASIC_array_func_2-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_array_func_2-0.c.bc deleted file mode 100644 index f528dba9..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_array_func_2-0.c.bc +++ /dev/null @@ -1,131 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_func_2-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_array_func_2-0.c" -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-unknown-linux-gnu" - -%struct.A = type { i32, i32 } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i64 @getValue(ptr noundef %arr, i32 noundef %x) #0 !dbg !10 { -entry: - %retval = alloca %struct.A, align 4 - %arr.addr = alloca ptr, align 8 - %x.addr = alloca i32, align 4 - store ptr %arr, ptr %arr.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %arr.addr, metadata !22, metadata !DIExpression()), !dbg !23 - store i32 %x, ptr %x.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !24, metadata !DIExpression()), !dbg !25 - %0 = load ptr, ptr %arr.addr, align 8, !dbg !26 - %1 = load i32, ptr %x.addr, align 4, !dbg !27 - %idxprom = sext i32 %1 to i64, !dbg !26 - %arrayidx = getelementptr inbounds %struct.A, ptr %0, i64 %idxprom, !dbg !26 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %retval, ptr align 4 %arrayidx, i64 8, i1 false), !dbg !26 - %2 = load i64, ptr %retval, align 4, !dbg !28 - ret i64 %2, !dbg !28 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !29 { -entry: - %retval = alloca i32, align 4 - %a = alloca [2 x %struct.A], align 16 - %res = alloca %struct.A, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !32, metadata !DIExpression()), !dbg !36 - %arrayidx = getelementptr inbounds [2 x %struct.A], ptr %a, i64 0, i64 0, !dbg !37 - %a1 = getelementptr inbounds %struct.A, ptr %arrayidx, i32 0, i32 0, !dbg !38 - store i32 10, ptr %a1, align 16, !dbg !39 - %arrayidx2 = getelementptr inbounds [2 x %struct.A], ptr %a, i64 0, i64 0, !dbg !40 - %b = getelementptr inbounds %struct.A, ptr %arrayidx2, i32 0, i32 1, !dbg !41 - store i32 11, ptr %b, align 4, !dbg !42 - %arrayidx3 = getelementptr inbounds [2 x %struct.A], ptr %a, i64 0, i64 1, !dbg !43 - %a4 = getelementptr inbounds %struct.A, ptr %arrayidx3, i32 0, i32 0, !dbg !44 - store i32 20, ptr %a4, align 8, !dbg !45 - %arrayidx5 = getelementptr inbounds [2 x %struct.A], ptr %a, i64 0, i64 1, !dbg !46 - %b6 = getelementptr inbounds %struct.A, ptr %arrayidx5, i32 0, i32 1, !dbg !47 - store i32 21, ptr %b6, align 4, !dbg !48 - call void @llvm.dbg.declare(metadata ptr %res, metadata !49, metadata !DIExpression()), !dbg !50 - %arraydecay = getelementptr inbounds [2 x %struct.A], ptr %a, i64 0, i64 0, !dbg !51 - %call = call i64 @getValue(ptr noundef %arraydecay, i32 noundef 1), !dbg !52 - store i64 %call, ptr %res, align 4, !dbg !52 - %b7 = getelementptr inbounds %struct.A, ptr %res, i32 0, i32 1, !dbg !53 - %0 = load i32, ptr %b7, align 4, !dbg !53 - %cmp = icmp eq i32 %0, 21, !dbg !54 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !55 - ret i32 0, !dbg !56 -} - -declare void @svf_assert(i1 noundef zeroext) #3 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_array_func_2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "051a64ea69eb8230e2ad147bf090f9fe") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "getValue", scope: !11, file: !11, line: 13, type: !12, scopeLine: 13, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !21) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_array_func_2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "051a64ea69eb8230e2ad147bf090f9fe") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !20, !18} -!14 = !DIDerivedType(tag: DW_TAG_typedef, name: "A", file: !11, line: 11, baseType: !15) -!15 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !11, line: 8, size: 64, elements: !16) -!16 = !{!17, !19} -!17 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !15, file: !11, line: 9, baseType: !18, size: 32) -!18 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!19 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !15, file: !11, line: 10, baseType: !18, size: 32, offset: 32) -!20 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !14, size: 64) -!21 = !{} -!22 = !DILocalVariable(name: "arr", arg: 1, scope: !10, file: !11, line: 13, type: !20) -!23 = !DILocation(line: 13, column: 15, scope: !10) -!24 = !DILocalVariable(name: "x", arg: 2, scope: !10, file: !11, line: 13, type: !18) -!25 = !DILocation(line: 13, column: 24, scope: !10) -!26 = !DILocation(line: 14, column: 12, scope: !10) -!27 = !DILocation(line: 14, column: 16, scope: !10) -!28 = !DILocation(line: 14, column: 5, scope: !10) -!29 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 17, type: !30, scopeLine: 17, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !21) -!30 = !DISubroutineType(types: !31) -!31 = !{!18} -!32 = !DILocalVariable(name: "a", scope: !29, file: !11, line: 18, type: !33) -!33 = !DICompositeType(tag: DW_TAG_array_type, baseType: !14, size: 128, elements: !34) -!34 = !{!35} -!35 = !DISubrange(count: 2) -!36 = !DILocation(line: 18, column: 7, scope: !29) -!37 = !DILocation(line: 19, column: 5, scope: !29) -!38 = !DILocation(line: 19, column: 10, scope: !29) -!39 = !DILocation(line: 19, column: 12, scope: !29) -!40 = !DILocation(line: 20, column: 5, scope: !29) -!41 = !DILocation(line: 20, column: 10, scope: !29) -!42 = !DILocation(line: 20, column: 12, scope: !29) -!43 = !DILocation(line: 21, column: 5, scope: !29) -!44 = !DILocation(line: 21, column: 10, scope: !29) -!45 = !DILocation(line: 21, column: 12, scope: !29) -!46 = !DILocation(line: 22, column: 5, scope: !29) -!47 = !DILocation(line: 22, column: 10, scope: !29) -!48 = !DILocation(line: 22, column: 12, scope: !29) -!49 = !DILocalVariable(name: "res", scope: !29, file: !11, line: 23, type: !14) -!50 = !DILocation(line: 23, column: 7, scope: !29) -!51 = !DILocation(line: 23, column: 22, scope: !29) -!52 = !DILocation(line: 23, column: 13, scope: !29) -!53 = !DILocation(line: 24, column: 20, scope: !29) -!54 = !DILocation(line: 24, column: 22, scope: !29) -!55 = !DILocation(line: 24, column: 5, scope: !29) -!56 = !DILocation(line: 25, column: 5, scope: !29) diff --git a/test_cases_bc/ae_assert_tests/BASIC_array_func_3-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_array_func_3-0.c.bc deleted file mode 100644 index eafa852c..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_array_func_3-0.c.bc +++ /dev/null @@ -1,109 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_func_3-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_array_func_3-0.c" -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-unknown-linux-gnu" - -%struct.A = type { i32, [2 x i32] } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @getValue(ptr noundef %arr, i32 noundef %x) #0 !dbg !10 { -entry: - %arr.addr = alloca ptr, align 8 - %x.addr = alloca i32, align 4 - store ptr %arr, ptr %arr.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %arr.addr, metadata !25, metadata !DIExpression()), !dbg !26 - store i32 %x, ptr %x.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !27, metadata !DIExpression()), !dbg !28 - %0 = load ptr, ptr %arr.addr, align 8, !dbg !29 - %b = getelementptr inbounds %struct.A, ptr %0, i32 0, i32 1, !dbg !30 - %1 = load i32, ptr %x.addr, align 4, !dbg !31 - %idxprom = sext i32 %1 to i64, !dbg !29 - %arrayidx = getelementptr inbounds [2 x i32], ptr %b, i64 0, i64 %idxprom, !dbg !29 - %2 = load i32, ptr %arrayidx, align 4, !dbg !29 - ret i32 %2, !dbg !32 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !33 { -entry: - %retval = alloca i32, align 4 - %a = alloca %struct.A, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !36, metadata !DIExpression()), !dbg !37 - %a1 = getelementptr inbounds %struct.A, ptr %a, i32 0, i32 0, !dbg !38 - store i32 0, ptr %a1, align 4, !dbg !39 - %b = getelementptr inbounds %struct.A, ptr %a, i32 0, i32 1, !dbg !40 - %arrayidx = getelementptr inbounds [2 x i32], ptr %b, i64 0, i64 0, !dbg !41 - store i32 1, ptr %arrayidx, align 4, !dbg !42 - %b2 = getelementptr inbounds %struct.A, ptr %a, i32 0, i32 1, !dbg !43 - %arrayidx3 = getelementptr inbounds [2 x i32], ptr %b2, i64 0, i64 1, !dbg !44 - store i32 2, ptr %arrayidx3, align 4, !dbg !45 - %call = call i32 @getValue(ptr noundef %a, i32 noundef 1), !dbg !46 - %cmp = icmp eq i32 %call, 2, !dbg !47 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !48 - ret i32 0, !dbg !49 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_array_func_3-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7e88dc7fc363863357b6ffe230ee5709") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "getValue", scope: !11, file: !11, line: 13, type: !12, scopeLine: 13, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !24) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_array_func_3-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7e88dc7fc363863357b6ffe230ee5709") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !15, !14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !16, size: 64) -!16 = !DIDerivedType(tag: DW_TAG_typedef, name: "A", file: !11, line: 11, baseType: !17) -!17 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !11, line: 8, size: 96, elements: !18) -!18 = !{!19, !20} -!19 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !17, file: !11, line: 9, baseType: !14, size: 32) -!20 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !17, file: !11, line: 10, baseType: !21, size: 64, offset: 32) -!21 = !DICompositeType(tag: DW_TAG_array_type, baseType: !14, size: 64, elements: !22) -!22 = !{!23} -!23 = !DISubrange(count: 2) -!24 = !{} -!25 = !DILocalVariable(name: "arr", arg: 1, scope: !10, file: !11, line: 13, type: !15) -!26 = !DILocation(line: 13, column: 17, scope: !10) -!27 = !DILocalVariable(name: "x", arg: 2, scope: !10, file: !11, line: 13, type: !14) -!28 = !DILocation(line: 13, column: 26, scope: !10) -!29 = !DILocation(line: 14, column: 12, scope: !10) -!30 = !DILocation(line: 14, column: 17, scope: !10) -!31 = !DILocation(line: 14, column: 19, scope: !10) -!32 = !DILocation(line: 14, column: 5, scope: !10) -!33 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 17, type: !34, scopeLine: 17, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !24) -!34 = !DISubroutineType(types: !35) -!35 = !{!14} -!36 = !DILocalVariable(name: "a", scope: !33, file: !11, line: 18, type: !16) -!37 = !DILocation(line: 18, column: 7, scope: !33) -!38 = !DILocation(line: 19, column: 7, scope: !33) -!39 = !DILocation(line: 19, column: 9, scope: !33) -!40 = !DILocation(line: 20, column: 7, scope: !33) -!41 = !DILocation(line: 20, column: 5, scope: !33) -!42 = !DILocation(line: 20, column: 12, scope: !33) -!43 = !DILocation(line: 21, column: 7, scope: !33) -!44 = !DILocation(line: 21, column: 5, scope: !33) -!45 = !DILocation(line: 21, column: 12, scope: !33) -!46 = !DILocation(line: 22, column: 16, scope: !33) -!47 = !DILocation(line: 22, column: 32, scope: !33) -!48 = !DILocation(line: 22, column: 5, scope: !33) -!49 = !DILocation(line: 23, column: 5, scope: !33) diff --git a/test_cases_bc/ae_assert_tests/BASIC_array_func_4-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_array_func_4-0.c.bc deleted file mode 100644 index 46d4487e..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_array_func_4-0.c.bc +++ /dev/null @@ -1,101 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_func_4-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_array_func_4-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @getValue(ptr noundef %arr, i32 noundef %x) #0 !dbg !10 { -entry: - %arr.addr = alloca ptr, align 8 - %x.addr = alloca i32, align 4 - store ptr %arr, ptr %arr.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %arr.addr, metadata !17, metadata !DIExpression()), !dbg !18 - store i32 %x, ptr %x.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !19, metadata !DIExpression()), !dbg !20 - %0 = load ptr, ptr %arr.addr, align 8, !dbg !21 - %1 = load i32, ptr %x.addr, align 4, !dbg !22 - %idxprom = sext i32 %1 to i64, !dbg !21 - %arrayidx = getelementptr inbounds i32, ptr %0, i64 %idxprom, !dbg !21 - %2 = load i32, ptr %arrayidx, align 4, !dbg !21 - ret i32 %2, !dbg !23 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !24 { -entry: - %retval = alloca i32, align 4 - %arr = alloca [2 x i32], align 4 - %res = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %arr, metadata !27, metadata !DIExpression()), !dbg !31 - %arrayidx = getelementptr inbounds [2 x i32], ptr %arr, i64 0, i64 0, !dbg !32 - store i32 0, ptr %arrayidx, align 4, !dbg !33 - %arrayidx1 = getelementptr inbounds [2 x i32], ptr %arr, i64 0, i64 1, !dbg !34 - store i32 1, ptr %arrayidx1, align 4, !dbg !35 - call void @llvm.dbg.declare(metadata ptr %res, metadata !36, metadata !DIExpression()), !dbg !37 - %arraydecay = getelementptr inbounds [2 x i32], ptr %arr, i64 0, i64 0, !dbg !38 - %call = call i32 @getValue(ptr noundef %arraydecay, i32 noundef 1), !dbg !39 - store i32 %call, ptr %res, align 4, !dbg !37 - %0 = load i32, ptr %res, align 4, !dbg !40 - %cmp = icmp eq i32 %0, 1, !dbg !41 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !42 - ret i32 0, !dbg !43 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_array_func_4-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "dca9f3c4fae3f559eadec869e3ac5175") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "getValue", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_array_func_4-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "dca9f3c4fae3f559eadec869e3ac5175") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !15, !14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !14, size: 64) -!16 = !{} -!17 = !DILocalVariable(name: "arr", arg: 1, scope: !10, file: !11, line: 9, type: !15) -!18 = !DILocation(line: 9, column: 19, scope: !10) -!19 = !DILocalVariable(name: "x", arg: 2, scope: !10, file: !11, line: 9, type: !14) -!20 = !DILocation(line: 9, column: 28, scope: !10) -!21 = !DILocation(line: 10, column: 12, scope: !10) -!22 = !DILocation(line: 10, column: 16, scope: !10) -!23 = !DILocation(line: 10, column: 5, scope: !10) -!24 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 13, type: !25, scopeLine: 13, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!25 = !DISubroutineType(types: !26) -!26 = !{!14} -!27 = !DILocalVariable(name: "arr", scope: !24, file: !11, line: 14, type: !28) -!28 = !DICompositeType(tag: DW_TAG_array_type, baseType: !14, size: 64, elements: !29) -!29 = !{!30} -!30 = !DISubrange(count: 2) -!31 = !DILocation(line: 14, column: 9, scope: !24) -!32 = !DILocation(line: 15, column: 5, scope: !24) -!33 = !DILocation(line: 15, column: 12, scope: !24) -!34 = !DILocation(line: 16, column: 5, scope: !24) -!35 = !DILocation(line: 16, column: 12, scope: !24) -!36 = !DILocalVariable(name: "res", scope: !24, file: !11, line: 17, type: !14) -!37 = !DILocation(line: 17, column: 9, scope: !24) -!38 = !DILocation(line: 17, column: 24, scope: !24) -!39 = !DILocation(line: 17, column: 15, scope: !24) -!40 = !DILocation(line: 18, column: 16, scope: !24) -!41 = !DILocation(line: 18, column: 20, scope: !24) -!42 = !DILocation(line: 18, column: 5, scope: !24) -!43 = !DILocation(line: 19, column: 5, scope: !24) diff --git a/test_cases_bc/ae_assert_tests/BASIC_array_func_6-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_array_func_6-0.c.bc deleted file mode 100644 index aaeb5b3e..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_array_func_6-0.c.bc +++ /dev/null @@ -1,109 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_func_6-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_array_func_6-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @getValue(ptr noundef %arr, i32 noundef %x, i32 noundef %y) #0 !dbg !10 { -entry: - %arr.addr = alloca ptr, align 8 - %x.addr = alloca i32, align 4 - %y.addr = alloca i32, align 4 - store ptr %arr, ptr %arr.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %arr.addr, metadata !20, metadata !DIExpression()), !dbg !21 - store i32 %x, ptr %x.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !22, metadata !DIExpression()), !dbg !23 - store i32 %y, ptr %y.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %y.addr, metadata !24, metadata !DIExpression()), !dbg !25 - %0 = load ptr, ptr %arr.addr, align 8, !dbg !26 - %1 = load i32, ptr %x.addr, align 4, !dbg !27 - %idxprom = sext i32 %1 to i64, !dbg !26 - %arrayidx = getelementptr inbounds [2 x i32], ptr %0, i64 %idxprom, !dbg !26 - %2 = load i32, ptr %y.addr, align 4, !dbg !28 - %idxprom1 = sext i32 %2 to i64, !dbg !26 - %arrayidx2 = getelementptr inbounds [2 x i32], ptr %arrayidx, i64 0, i64 %idxprom1, !dbg !26 - %3 = load i32, ptr %arrayidx2, align 4, !dbg !26 - ret i32 %3, !dbg !29 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !30 { -entry: - %retval = alloca i32, align 4 - %arr = alloca [2 x [2 x i32]], align 16 - %v = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %arr, metadata !33, metadata !DIExpression()), !dbg !36 - %arrayidx = getelementptr inbounds [2 x [2 x i32]], ptr %arr, i64 0, i64 0, !dbg !37 - %arrayidx1 = getelementptr inbounds [2 x i32], ptr %arrayidx, i64 0, i64 0, !dbg !37 - store i32 10, ptr %arrayidx1, align 16, !dbg !38 - call void @llvm.dbg.declare(metadata ptr %v, metadata !39, metadata !DIExpression()), !dbg !40 - %arraydecay = getelementptr inbounds [2 x [2 x i32]], ptr %arr, i64 0, i64 0, !dbg !41 - %call = call i32 @getValue(ptr noundef %arraydecay, i32 noundef 0, i32 noundef 0), !dbg !42 - store i32 %call, ptr %v, align 4, !dbg !40 - %0 = load i32, ptr %v, align 4, !dbg !43 - %cmp = icmp eq i32 %0, 10, !dbg !44 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !45 - ret i32 0, !dbg !46 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_array_func_6-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "559afc4e865cd2d6c44c804462f6bf58") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "getValue", scope: !11, file: !11, line: 8, type: !12, scopeLine: 8, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !19) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_array_func_6-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "559afc4e865cd2d6c44c804462f6bf58") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !15, !14, !14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !16, size: 64) -!16 = !DICompositeType(tag: DW_TAG_array_type, baseType: !14, size: 64, elements: !17) -!17 = !{!18} -!18 = !DISubrange(count: 2) -!19 = !{} -!20 = !DILocalVariable(name: "arr", arg: 1, scope: !10, file: !11, line: 8, type: !15) -!21 = !DILocation(line: 8, column: 18, scope: !10) -!22 = !DILocalVariable(name: "x", arg: 2, scope: !10, file: !11, line: 8, type: !14) -!23 = !DILocation(line: 8, column: 33, scope: !10) -!24 = !DILocalVariable(name: "y", arg: 3, scope: !10, file: !11, line: 8, type: !14) -!25 = !DILocation(line: 8, column: 40, scope: !10) -!26 = !DILocation(line: 9, column: 12, scope: !10) -!27 = !DILocation(line: 9, column: 16, scope: !10) -!28 = !DILocation(line: 9, column: 19, scope: !10) -!29 = !DILocation(line: 9, column: 5, scope: !10) -!30 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 12, type: !31, scopeLine: 12, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !19) -!31 = !DISubroutineType(types: !32) -!32 = !{!14} -!33 = !DILocalVariable(name: "arr", scope: !30, file: !11, line: 13, type: !34) -!34 = !DICompositeType(tag: DW_TAG_array_type, baseType: !14, size: 128, elements: !35) -!35 = !{!18, !18} -!36 = !DILocation(line: 13, column: 9, scope: !30) -!37 = !DILocation(line: 14, column: 5, scope: !30) -!38 = !DILocation(line: 14, column: 15, scope: !30) -!39 = !DILocalVariable(name: "v", scope: !30, file: !11, line: 15, type: !14) -!40 = !DILocation(line: 15, column: 9, scope: !30) -!41 = !DILocation(line: 15, column: 22, scope: !30) -!42 = !DILocation(line: 15, column: 13, scope: !30) -!43 = !DILocation(line: 16, column: 16, scope: !30) -!44 = !DILocation(line: 16, column: 18, scope: !30) -!45 = !DILocation(line: 16, column: 5, scope: !30) -!46 = !DILocation(line: 17, column: 5, scope: !30) diff --git a/test_cases_bc/ae_assert_tests/BASIC_array_int_0-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_array_int_0-0.c.bc deleted file mode 100644 index 5bff9506..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_array_int_0-0.c.bc +++ /dev/null @@ -1,78 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_int_0-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_array_int_0-0.c" -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-unknown-linux-gnu" - -@__const.main.a = private unnamed_addr constant [10 x i32] [i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9], align 16 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca [10 x i32], align 16 - %p = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !20 - call void @llvm.memcpy.p0.p0.i64(ptr align 16 %a, ptr align 16 @__const.main.a, i64 40, i1 false), !dbg !20 - call void @llvm.dbg.declare(metadata ptr %p, metadata !21, metadata !DIExpression()), !dbg !23 - %arraydecay = getelementptr inbounds [10 x i32], ptr %a, i64 0, i64 0, !dbg !24 - %add.ptr = getelementptr inbounds i32, ptr %arraydecay, i64 9, !dbg !25 - store ptr %add.ptr, ptr %p, align 8, !dbg !23 - %0 = load ptr, ptr %p, align 8, !dbg !26 - store i32 10, ptr %0, align 4, !dbg !27 - %arrayidx = getelementptr inbounds [10 x i32], ptr %a, i64 0, i64 9, !dbg !28 - %1 = load i32, ptr %arrayidx, align 4, !dbg !28 - %cmp = icmp eq i32 %1, 10, !dbg !29 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !30 - ret i32 0, !dbg !31 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 - -declare void @svf_assert(i1 noundef zeroext) #3 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_array_int_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "45f4e1082d285c28768620199f572748") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_array_int_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "45f4e1082d285c28768620199f572748") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 10, type: !17) -!17 = !DICompositeType(tag: DW_TAG_array_type, baseType: !14, size: 320, elements: !18) -!18 = !{!19} -!19 = !DISubrange(count: 10) -!20 = !DILocation(line: 10, column: 9, scope: !10) -!21 = !DILocalVariable(name: "p", scope: !10, file: !11, line: 11, type: !22) -!22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !14, size: 64) -!23 = !DILocation(line: 11, column: 10, scope: !10) -!24 = !DILocation(line: 11, column: 15, scope: !10) -!25 = !DILocation(line: 11, column: 17, scope: !10) -!26 = !DILocation(line: 12, column: 6, scope: !10) -!27 = !DILocation(line: 12, column: 8, scope: !10) -!28 = !DILocation(line: 13, column: 16, scope: !10) -!29 = !DILocation(line: 13, column: 25, scope: !10) -!30 = !DILocation(line: 13, column: 5, scope: !10) -!31 = !DILocation(line: 14, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_array_struct_0-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_array_struct_0-0.c.bc deleted file mode 100644 index be34b380..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_array_struct_0-0.c.bc +++ /dev/null @@ -1,98 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_struct_0-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_array_struct_0-0.c" -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-unknown-linux-gnu" - -%struct.A = type { i32, i32 } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca [2 x %struct.A], align 16 - %c = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !25 - %arrayidx = getelementptr inbounds [2 x %struct.A], ptr %a, i64 0, i64 0, !dbg !26 - %a1 = getelementptr inbounds %struct.A, ptr %arrayidx, i32 0, i32 0, !dbg !27 - store i32 10, ptr %a1, align 16, !dbg !28 - %arrayidx2 = getelementptr inbounds [2 x %struct.A], ptr %a, i64 0, i64 0, !dbg !29 - %b = getelementptr inbounds %struct.A, ptr %arrayidx2, i32 0, i32 1, !dbg !30 - store i32 11, ptr %b, align 4, !dbg !31 - %arrayidx3 = getelementptr inbounds [2 x %struct.A], ptr %a, i64 0, i64 1, !dbg !32 - %a4 = getelementptr inbounds %struct.A, ptr %arrayidx3, i32 0, i32 0, !dbg !33 - store i32 20, ptr %a4, align 8, !dbg !34 - %arrayidx5 = getelementptr inbounds [2 x %struct.A], ptr %a, i64 0, i64 1, !dbg !35 - %b6 = getelementptr inbounds %struct.A, ptr %arrayidx5, i32 0, i32 1, !dbg !36 - store i32 21, ptr %b6, align 4, !dbg !37 - call void @llvm.dbg.declare(metadata ptr %c, metadata !38, metadata !DIExpression()), !dbg !39 - store i32 0, ptr %c, align 4, !dbg !39 - %0 = load i32, ptr %c, align 4, !dbg !40 - %idxprom = sext i32 %0 to i64, !dbg !41 - %arrayidx7 = getelementptr inbounds [2 x %struct.A], ptr %a, i64 0, i64 %idxprom, !dbg !41 - %b8 = getelementptr inbounds %struct.A, ptr %arrayidx7, i32 0, i32 1, !dbg !42 - %1 = load i32, ptr %b8, align 4, !dbg !42 - %cmp = icmp eq i32 %1, 11, !dbg !43 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !44 - ret i32 0, !dbg !45 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_array_struct_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "78e446f45362b8103119869dd85fd930") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 13, type: !12, scopeLine: 13, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_array_struct_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "78e446f45362b8103119869dd85fd930") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 14, type: !17) -!17 = !DICompositeType(tag: DW_TAG_array_type, baseType: !18, size: 128, elements: !23) -!18 = !DIDerivedType(tag: DW_TAG_typedef, name: "A", file: !11, line: 12, baseType: !19) -!19 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !11, line: 9, size: 64, elements: !20) -!20 = !{!21, !22} -!21 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !19, file: !11, line: 10, baseType: !14, size: 32) -!22 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !19, file: !11, line: 11, baseType: !14, size: 32, offset: 32) -!23 = !{!24} -!24 = !DISubrange(count: 2) -!25 = !DILocation(line: 14, column: 7, scope: !10) -!26 = !DILocation(line: 15, column: 5, scope: !10) -!27 = !DILocation(line: 15, column: 10, scope: !10) -!28 = !DILocation(line: 15, column: 12, scope: !10) -!29 = !DILocation(line: 16, column: 5, scope: !10) -!30 = !DILocation(line: 16, column: 10, scope: !10) -!31 = !DILocation(line: 16, column: 12, scope: !10) -!32 = !DILocation(line: 17, column: 5, scope: !10) -!33 = !DILocation(line: 17, column: 10, scope: !10) -!34 = !DILocation(line: 17, column: 12, scope: !10) -!35 = !DILocation(line: 18, column: 5, scope: !10) -!36 = !DILocation(line: 18, column: 10, scope: !10) -!37 = !DILocation(line: 18, column: 12, scope: !10) -!38 = !DILocalVariable(name: "c", scope: !10, file: !11, line: 19, type: !14) -!39 = !DILocation(line: 19, column: 9, scope: !10) -!40 = !DILocation(line: 20, column: 18, scope: !10) -!41 = !DILocation(line: 20, column: 16, scope: !10) -!42 = !DILocation(line: 20, column: 21, scope: !10) -!43 = !DILocation(line: 20, column: 23, scope: !10) -!44 = !DILocation(line: 20, column: 5, scope: !10) -!45 = !DILocation(line: 21, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_array_varIdx_1-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_array_varIdx_1-0.c.bc deleted file mode 100644 index 343c21ef..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_array_varIdx_1-0.c.bc +++ /dev/null @@ -1,76 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_array_varIdx_1-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_array_varIdx_1-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %a = alloca [3 x i32], align 4 - %i = alloca i32, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !20 - %arrayidx = getelementptr inbounds [3 x i32], ptr %a, i64 0, i64 0, !dbg !21 - store i32 0, ptr %arrayidx, align 4, !dbg !22 - %arrayidx1 = getelementptr inbounds [3 x i32], ptr %a, i64 0, i64 1, !dbg !23 - store i32 1, ptr %arrayidx1, align 4, !dbg !24 - %arrayidx2 = getelementptr inbounds [3 x i32], ptr %a, i64 0, i64 2, !dbg !25 - store i32 2, ptr %arrayidx2, align 4, !dbg !26 - call void @llvm.dbg.declare(metadata ptr %i, metadata !27, metadata !DIExpression()), !dbg !28 - store i32 1, ptr %i, align 4, !dbg !28 - %0 = load i32, ptr %i, align 4, !dbg !29 - %idxprom = sext i32 %0 to i64, !dbg !30 - %arrayidx3 = getelementptr inbounds [3 x i32], ptr %a, i64 0, i64 %idxprom, !dbg !30 - %1 = load i32, ptr %arrayidx3, align 4, !dbg !30 - %cmp = icmp eq i32 %1, 1, !dbg !31 - %conv = zext i1 %cmp to i32, !dbg !31 - call void @svf_assert(i32 noundef %conv), !dbg !32 - ret i32 0, !dbg !33 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i32 noundef) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_array_varIdx_1-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "299e929d7faf82f2aa27760f4941e817") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 2, type: !12, scopeLine: 2, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_array_varIdx_1-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "299e929d7faf82f2aa27760f4941e817") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 4, type: !17) -!17 = !DICompositeType(tag: DW_TAG_array_type, baseType: !14, size: 96, elements: !18) -!18 = !{!19} -!19 = !DISubrange(count: 3) -!20 = !DILocation(line: 4, column: 7, scope: !10) -!21 = !DILocation(line: 5, column: 3, scope: !10) -!22 = !DILocation(line: 5, column: 8, scope: !10) -!23 = !DILocation(line: 6, column: 3, scope: !10) -!24 = !DILocation(line: 6, column: 8, scope: !10) -!25 = !DILocation(line: 7, column: 3, scope: !10) -!26 = !DILocation(line: 7, column: 8, scope: !10) -!27 = !DILocalVariable(name: "i", scope: !10, file: !11, line: 8, type: !14) -!28 = !DILocation(line: 8, column: 7, scope: !10) -!29 = !DILocation(line: 9, column: 16, scope: !10) -!30 = !DILocation(line: 9, column: 14, scope: !10) -!31 = !DILocation(line: 9, column: 18, scope: !10) -!32 = !DILocation(line: 9, column: 3, scope: !10) -!33 = !DILocation(line: 11, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_arraycopy1-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_arraycopy1-0.c.bc deleted file mode 100644 index cadab58c..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_arraycopy1-0.c.bc +++ /dev/null @@ -1,79 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_arraycopy1-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_arraycopy1-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %source = alloca [2 x ptr], align 16 - %x = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !18, metadata !DIExpression()), !dbg !19 - call void @llvm.dbg.declare(metadata ptr %source, metadata !20, metadata !DIExpression()), !dbg !25 - %arrayinit.begin = getelementptr inbounds [2 x ptr], ptr %source, i64 0, i64 0, !dbg !26 - store ptr %a, ptr %arrayinit.begin, align 8, !dbg !26 - %arrayinit.element = getelementptr inbounds ptr, ptr %arrayinit.begin, i64 1, !dbg !26 - store ptr %b, ptr %arrayinit.element, align 8, !dbg !26 - call void @llvm.dbg.declare(metadata ptr %x, metadata !27, metadata !DIExpression()), !dbg !28 - %arrayidx = getelementptr inbounds [2 x ptr], ptr %source, i64 0, i64 1, !dbg !29 - %0 = load ptr, ptr %arrayidx, align 8, !dbg !29 - store ptr %0, ptr %x, align 8, !dbg !28 - %1 = load ptr, ptr %x, align 8, !dbg !30 - %cmp = icmp eq ptr %1, %b, !dbg !31 - %conv = zext i1 %cmp to i32, !dbg !31 - %call = call i32 (i32, ...) @svf_assert(i32 noundef %conv), !dbg !32 - ret i32 0, !dbg !33 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare i32 @svf_assert(...) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_arraycopy1-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "de146ffa0f16e9b76e273bb7984edb78") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 1, type: !12, scopeLine: 1, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_arraycopy1-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "de146ffa0f16e9b76e273bb7984edb78") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 2, type: !14) -!17 = !DILocation(line: 2, column: 6, scope: !10) -!18 = !DILocalVariable(name: "b", scope: !10, file: !11, line: 2, type: !14) -!19 = !DILocation(line: 2, column: 9, scope: !10) -!20 = !DILocalVariable(name: "source", scope: !10, file: !11, line: 3, type: !21) -!21 = !DICompositeType(tag: DW_TAG_array_type, baseType: !22, size: 128, elements: !23) -!22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !14, size: 64) -!23 = !{!24} -!24 = !DISubrange(count: 2) -!25 = !DILocation(line: 3, column: 7, scope: !10) -!26 = !DILocation(line: 3, column: 19, scope: !10) -!27 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 4, type: !22) -!28 = !DILocation(line: 4, column: 7, scope: !10) -!29 = !DILocation(line: 4, column: 11, scope: !10) -!30 = !DILocation(line: 5, column: 13, scope: !10) -!31 = !DILocation(line: 5, column: 14, scope: !10) -!32 = !DILocation(line: 5, column: 2, scope: !10) -!33 = !DILocation(line: 6, column: 2, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_arraycopy2-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_arraycopy2-0.c.bc deleted file mode 100644 index cb38e7d5..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_arraycopy2-0.c.bc +++ /dev/null @@ -1,74 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_arraycopy2-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_arraycopy2-0.c" -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-unknown-linux-gnu" - -@__const.main.source = private unnamed_addr constant [2 x i8] c"AB", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %source = alloca [2 x i8], align 1 - %x = alloca i8, align 1 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %source, metadata !16, metadata !DIExpression()), !dbg !21 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %source, ptr align 1 @__const.main.source, i64 2, i1 false), !dbg !21 - call void @llvm.dbg.declare(metadata ptr %x, metadata !22, metadata !DIExpression()), !dbg !23 - %arrayidx = getelementptr inbounds [2 x i8], ptr %source, i64 0, i64 1, !dbg !24 - %0 = load i8, ptr %arrayidx, align 1, !dbg !24 - store i8 %0, ptr %x, align 1, !dbg !23 - %1 = load i8, ptr %x, align 1, !dbg !25 - %conv = sext i8 %1 to i32, !dbg !25 - %cmp = icmp eq i32 %conv, 66, !dbg !26 - %conv1 = zext i1 %cmp to i32, !dbg !26 - call void @svf_assert(i32 noundef %conv1), !dbg !27 - ret i32 0, !dbg !28 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 - -declare void @svf_assert(i32 noundef) #3 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_arraycopy2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ce0ff7cf64f892094a392595652a06c3") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 2, type: !12, scopeLine: 2, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_arraycopy2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ce0ff7cf64f892094a392595652a06c3") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "source", scope: !10, file: !11, line: 3, type: !17) -!17 = !DICompositeType(tag: DW_TAG_array_type, baseType: !18, size: 16, elements: !19) -!18 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!19 = !{!20} -!20 = !DISubrange(count: 2) -!21 = !DILocation(line: 3, column: 7, scope: !10) -!22 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 4, type: !18) -!23 = !DILocation(line: 4, column: 7, scope: !10) -!24 = !DILocation(line: 4, column: 11, scope: !10) -!25 = !DILocation(line: 5, column: 13, scope: !10) -!26 = !DILocation(line: 5, column: 14, scope: !10) -!27 = !DILocation(line: 5, column: 2, scope: !10) -!28 = !DILocation(line: 6, column: 2, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_arraycopy3-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_arraycopy3-0.c.bc deleted file mode 100644 index 8f8ec64b..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_arraycopy3-0.c.bc +++ /dev/null @@ -1,54 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_arraycopy3-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_arraycopy3-0.c" -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-unknown-linux-gnu" - -@a = dso_local global [2 x i32] [i32 1, i32 2], align 4, !dbg !0 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !18 { -entry: - %retval = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %0 = load i32, ptr getelementptr inbounds ([2 x i32], ptr @a, i64 0, i64 1), align 4, !dbg !22 - %cmp = icmp eq i32 %0, 2, !dbg !23 - %conv = zext i1 %cmp to i32, !dbg !23 - call void @svf_assert(i32 noundef %conv), !dbg !24 - ret i32 0, !dbg !25 -} - -declare void @svf_assert(i32 noundef) #1 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!2} -!llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} -!llvm.ident = !{!17} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(name: "a", scope: !2, file: !5, line: 2, type: !6, isLocal: false, isDefinition: true) -!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None) -!3 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_arraycopy3-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d42dc4407b84c9902d263bd262b2eaa6") -!4 = !{!0} -!5 = !DIFile(filename: "src/ae_assert_tests/BASIC_arraycopy3-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d42dc4407b84c9902d263bd262b2eaa6") -!6 = !DICompositeType(tag: DW_TAG_array_type, baseType: !7, size: 64, elements: !8) -!7 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!8 = !{!9} -!9 = !DISubrange(count: 2) -!10 = !{i32 7, !"Dwarf Version", i32 5} -!11 = !{i32 2, !"Debug Info Version", i32 3} -!12 = !{i32 1, !"wchar_size", i32 4} -!13 = !{i32 8, !"PIC Level", i32 2} -!14 = !{i32 7, !"PIE Level", i32 2} -!15 = !{i32 7, !"uwtable", i32 2} -!16 = !{i32 7, !"frame-pointer", i32 2} -!17 = !{!"clang version 16.0.0"} -!18 = distinct !DISubprogram(name: "main", scope: !5, file: !5, line: 3, type: !19, scopeLine: 3, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !21) -!19 = !DISubroutineType(types: !20) -!20 = !{!7} -!21 = !{} -!22 = !DILocation(line: 5, column: 13, scope: !18) -!23 = !DILocation(line: 5, column: 17, scope: !18) -!24 = !DILocation(line: 5, column: 2, scope: !18) -!25 = !DILocation(line: 6, column: 2, scope: !18) diff --git a/test_cases_bc/ae_assert_tests/BASIC_assign_0-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_assign_0-0.c.bc deleted file mode 100644 index ae08b800..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_assign_0-0.c.bc +++ /dev/null @@ -1,62 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_assign_0-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_assign_0-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 -1, ptr %a, align 4, !dbg !17 - %0 = load i32, ptr %a, align 4, !dbg !18 - %1 = load i32, ptr %a, align 4, !dbg !19 - %mul = mul nsw i32 %0, %1, !dbg !20 - store i32 %mul, ptr %a, align 4, !dbg !21 - %2 = load i32, ptr %a, align 4, !dbg !22 - %cmp = icmp sgt i32 %2, 0, !dbg !23 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !24 - ret i32 0, !dbg !25 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_assign_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b61922e837e3495d927321f151e29a1a") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 7, type: !12, scopeLine: 7, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_assign_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b61922e837e3495d927321f151e29a1a") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 8, type: !14) -!17 = !DILocation(line: 8, column: 9, scope: !10) -!18 = !DILocation(line: 9, column: 9, scope: !10) -!19 = !DILocation(line: 9, column: 11, scope: !10) -!20 = !DILocation(line: 9, column: 10, scope: !10) -!21 = !DILocation(line: 9, column: 7, scope: !10) -!22 = !DILocation(line: 10, column: 16, scope: !10) -!23 = !DILocation(line: 10, column: 17, scope: !10) -!24 = !DILocation(line: 10, column: 5, scope: !10) -!25 = !DILocation(line: 11, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_assign_1-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_assign_1-0.c.bc deleted file mode 100644 index 06f0076c..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_assign_1-0.c.bc +++ /dev/null @@ -1,61 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_assign_1-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_assign_1-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 1, ptr %x, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %y, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 1, ptr %y, align 4, !dbg !19 - %0 = load i32, ptr %x, align 4, !dbg !20 - %1 = load i32, ptr %y, align 4, !dbg !21 - %cmp = icmp eq i32 %0, %1, !dbg !22 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !23 - ret i32 0, !dbg !24 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_assign_1-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "6da5e4fd89618c8cc0ffbfc1b831ead6") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 3, type: !12, scopeLine: 3, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_assign_1-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "6da5e4fd89618c8cc0ffbfc1b831ead6") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 4, type: !14) -!17 = !DILocation(line: 4, column: 9, scope: !10) -!18 = !DILocalVariable(name: "y", scope: !10, file: !11, line: 5, type: !14) -!19 = !DILocation(line: 5, column: 9, scope: !10) -!20 = !DILocation(line: 6, column: 16, scope: !10) -!21 = !DILocation(line: 6, column: 21, scope: !10) -!22 = !DILocation(line: 6, column: 18, scope: !10) -!23 = !DILocation(line: 6, column: 5, scope: !10) -!24 = !DILocation(line: 7, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_assign_2-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_assign_2-0.c.bc deleted file mode 100644 index 02367690..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_assign_2-0.c.bc +++ /dev/null @@ -1,63 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_assign_2-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_assign_2-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 10, ptr %a, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 5, ptr %b, align 4, !dbg !19 - %0 = load i32, ptr %b, align 4, !dbg !20 - store i32 %0, ptr %a, align 4, !dbg !21 - %1 = load i32, ptr %a, align 4, !dbg !22 - %cmp = icmp ne i32 %1, 10, !dbg !23 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !24 - ret i32 0, !dbg !25 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_assign_2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "482bb2fab30b68b22410520f4ead374a") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 3, type: !12, scopeLine: 3, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_assign_2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "482bb2fab30b68b22410520f4ead374a") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 4, type: !14) -!17 = !DILocation(line: 4, column: 9, scope: !10) -!18 = !DILocalVariable(name: "b", scope: !10, file: !11, line: 5, type: !14) -!19 = !DILocation(line: 5, column: 9, scope: !10) -!20 = !DILocation(line: 6, column: 9, scope: !10) -!21 = !DILocation(line: 6, column: 7, scope: !10) -!22 = !DILocation(line: 7, column: 17, scope: !10) -!23 = !DILocation(line: 7, column: 19, scope: !10) -!24 = !DILocation(line: 7, column: 5, scope: !10) -!25 = !DILocation(line: 8, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_assign_3-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_assign_3-0.c.bc deleted file mode 100644 index 3e0a7d0e..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_assign_3-0.c.bc +++ /dev/null @@ -1,63 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_assign_3-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_assign_3-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 10, ptr %a, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 5, ptr %b, align 4, !dbg !19 - %0 = load i32, ptr %b, align 4, !dbg !20 - store i32 %0, ptr %a, align 4, !dbg !21 - %1 = load i32, ptr %a, align 4, !dbg !22 - %cmp = icmp eq i32 %1, 5, !dbg !23 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !24 - ret i32 0, !dbg !25 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_assign_3-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "db1d772ac126bf2e073fc6f7a1d8a087") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 3, type: !12, scopeLine: 3, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_assign_3-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "db1d772ac126bf2e073fc6f7a1d8a087") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 4, type: !14) -!17 = !DILocation(line: 4, column: 9, scope: !10) -!18 = !DILocalVariable(name: "b", scope: !10, file: !11, line: 5, type: !14) -!19 = !DILocation(line: 5, column: 9, scope: !10) -!20 = !DILocation(line: 6, column: 9, scope: !10) -!21 = !DILocation(line: 6, column: 7, scope: !10) -!22 = !DILocation(line: 7, column: 17, scope: !10) -!23 = !DILocation(line: 7, column: 19, scope: !10) -!24 = !DILocation(line: 7, column: 5, scope: !10) -!25 = !DILocation(line: 8, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_bi_add_0-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_bi_add_0-0.c.bc deleted file mode 100644 index 1b7b9a7c..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_bi_add_0-0.c.bc +++ /dev/null @@ -1,58 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_bi_add_0-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_bi_add_0-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 -1, ptr %x, align 4, !dbg !17 - %0 = load i32, ptr %x, align 4, !dbg !18 - %add = add nsw i32 %0, 3, !dbg !18 - store i32 %add, ptr %x, align 4, !dbg !18 - %1 = load i32, ptr %x, align 4, !dbg !19 - %cmp = icmp eq i32 %1, 2, !dbg !20 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !21 - ret i32 0, !dbg !22 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_bi_add_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "77494ca4ae2c0bf85d8bf882d757ed82") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 4, type: !12, scopeLine: 4, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_bi_add_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "77494ca4ae2c0bf85d8bf882d757ed82") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 5, type: !14) -!17 = !DILocation(line: 5, column: 9, scope: !10) -!18 = !DILocation(line: 6, column: 7, scope: !10) -!19 = !DILocation(line: 7, column: 16, scope: !10) -!20 = !DILocation(line: 7, column: 18, scope: !10) -!21 = !DILocation(line: 7, column: 5, scope: !10) -!22 = !DILocation(line: 8, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_bi_add_1-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_bi_add_1-0.c.bc deleted file mode 100644 index 7a292a90..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_bi_add_1-0.c.bc +++ /dev/null @@ -1,67 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_bi_add_1-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_bi_add_1-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 1, ptr %a, align 4, !dbg !20 - %0 = load i32, ptr %a, align 4, !dbg !21 - %add = add nsw i32 %0, 2, !dbg !21 - store i32 %add, ptr %a, align 4, !dbg !21 - %1 = load i32, ptr %a, align 4, !dbg !22 - store i32 %1, ptr %b, align 4, !dbg !23 - %2 = load i32, ptr %b, align 4, !dbg !24 - %cmp = icmp eq i32 %2, 3, !dbg !25 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !26 - ret i32 0, !dbg !27 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_bi_add_1-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "9441fd95aa7bc53c4c56715bcce1c313") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 3, type: !12, scopeLine: 3, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_bi_add_1-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "9441fd95aa7bc53c4c56715bcce1c313") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 4, type: !14) -!17 = !DILocation(line: 4, column: 9, scope: !10) -!18 = !DILocalVariable(name: "b", scope: !10, file: !11, line: 4, type: !14) -!19 = !DILocation(line: 4, column: 12, scope: !10) -!20 = !DILocation(line: 5, column: 7, scope: !10) -!21 = !DILocation(line: 6, column: 7, scope: !10) -!22 = !DILocation(line: 7, column: 9, scope: !10) -!23 = !DILocation(line: 7, column: 7, scope: !10) -!24 = !DILocation(line: 8, column: 17, scope: !10) -!25 = !DILocation(line: 8, column: 19, scope: !10) -!26 = !DILocation(line: 8, column: 5, scope: !10) -!27 = !DILocation(line: 9, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_bi_add_2-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_bi_add_2-0.c.bc deleted file mode 100644 index 94a1423d..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_bi_add_2-0.c.bc +++ /dev/null @@ -1,76 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_bi_add_2-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_bi_add_2-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %i) #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %i.addr = alloca i32, align 4 - %a = alloca i32, align 4 - %c = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - store i32 %i, ptr %i.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %a, metadata !18, metadata !DIExpression()), !dbg !19 - call void @llvm.dbg.declare(metadata ptr %c, metadata !20, metadata !DIExpression()), !dbg !21 - %0 = load i32, ptr %i.addr, align 4, !dbg !22 - %add = add nsw i32 %0, 1, !dbg !23 - store i32 %add, ptr %a, align 4, !dbg !24 - %1 = load i32, ptr %a, align 4, !dbg !25 - store i32 %1, ptr %c, align 4, !dbg !26 - %2 = load i32, ptr %c, align 4, !dbg !27 - %3 = load i32, ptr %i.addr, align 4, !dbg !28 - %add1 = add nsw i32 %3, 1, !dbg !29 - %cmp = icmp eq i32 %2, %add1, !dbg !30 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !31 - ret i32 0, !dbg !32 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_bi_add_2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d893d9a37e52a3c1466561fc78b9505a") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 3, type: !12, scopeLine: 3, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_bi_add_2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d893d9a37e52a3c1466561fc78b9505a") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "i", arg: 1, scope: !10, file: !11, line: 3, type: !14) -!17 = !DILocation(line: 3, column: 14, scope: !10) -!18 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 4, type: !14) -!19 = !DILocation(line: 4, column: 9, scope: !10) -!20 = !DILocalVariable(name: "c", scope: !10, file: !11, line: 4, type: !14) -!21 = !DILocation(line: 4, column: 12, scope: !10) -!22 = !DILocation(line: 5, column: 9, scope: !10) -!23 = !DILocation(line: 5, column: 11, scope: !10) -!24 = !DILocation(line: 5, column: 7, scope: !10) -!25 = !DILocation(line: 6, column: 9, scope: !10) -!26 = !DILocation(line: 6, column: 7, scope: !10) -!27 = !DILocation(line: 7, column: 17, scope: !10) -!28 = !DILocation(line: 7, column: 22, scope: !10) -!29 = !DILocation(line: 7, column: 24, scope: !10) -!30 = !DILocation(line: 7, column: 19, scope: !10) -!31 = !DILocation(line: 7, column: 5, scope: !10) -!32 = !DILocation(line: 8, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_bi_div_0-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_bi_div_0-0.c.bc deleted file mode 100644 index 646d6d7a..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_bi_div_0-0.c.bc +++ /dev/null @@ -1,94 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_bi_div_0-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_bi_div_0-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %c = alloca i32, align 4 - %d = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 10, ptr %a, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 5, ptr %b, align 4, !dbg !19 - call void @llvm.dbg.declare(metadata ptr %c, metadata !20, metadata !DIExpression()), !dbg !21 - %0 = load i32, ptr %a, align 4, !dbg !22 - %1 = load i32, ptr %b, align 4, !dbg !23 - %div = sdiv i32 %0, %1, !dbg !24 - store i32 %div, ptr %c, align 4, !dbg !21 - call void @llvm.dbg.declare(metadata ptr %d, metadata !25, metadata !DIExpression()), !dbg !26 - %2 = load i32, ptr %a, align 4, !dbg !27 - %3 = load i32, ptr %b, align 4, !dbg !28 - %rem = srem i32 %2, %3, !dbg !29 - store i32 %rem, ptr %d, align 4, !dbg !26 - %4 = load i32, ptr %c, align 4, !dbg !30 - %cmp = icmp eq i32 %4, 2, !dbg !31 - br i1 %cmp, label %land.rhs, label %land.end, !dbg !32 - -land.rhs: ; preds = %entry - %5 = load i32, ptr %d, align 4, !dbg !33 - %cmp1 = icmp eq i32 %5, 0, !dbg !34 - br label %land.end - -land.end: ; preds = %land.rhs, %entry - %6 = phi i1 [ false, %entry ], [ %cmp1, %land.rhs ], !dbg !35 - call void @svf_assert(i1 noundef zeroext %6), !dbg !36 - ret i32 0, !dbg !37 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_bi_div_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "bc01df80d6f32ad00dcb46e79201ecd8") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 4, type: !12, scopeLine: 4, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_bi_div_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "bc01df80d6f32ad00dcb46e79201ecd8") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 5, type: !14) -!17 = !DILocation(line: 5, column: 9, scope: !10) -!18 = !DILocalVariable(name: "b", scope: !10, file: !11, line: 6, type: !14) -!19 = !DILocation(line: 6, column: 9, scope: !10) -!20 = !DILocalVariable(name: "c", scope: !10, file: !11, line: 7, type: !14) -!21 = !DILocation(line: 7, column: 9, scope: !10) -!22 = !DILocation(line: 7, column: 13, scope: !10) -!23 = !DILocation(line: 7, column: 17, scope: !10) -!24 = !DILocation(line: 7, column: 15, scope: !10) -!25 = !DILocalVariable(name: "d", scope: !10, file: !11, line: 8, type: !14) -!26 = !DILocation(line: 8, column: 9, scope: !10) -!27 = !DILocation(line: 8, column: 13, scope: !10) -!28 = !DILocation(line: 8, column: 17, scope: !10) -!29 = !DILocation(line: 8, column: 15, scope: !10) -!30 = !DILocation(line: 9, column: 16, scope: !10) -!31 = !DILocation(line: 9, column: 18, scope: !10) -!32 = !DILocation(line: 9, column: 23, scope: !10) -!33 = !DILocation(line: 9, column: 26, scope: !10) -!34 = !DILocation(line: 9, column: 28, scope: !10) -!35 = !DILocation(line: 0, scope: !10) -!36 = !DILocation(line: 9, column: 5, scope: !10) -!37 = !DILocation(line: 10, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_bi_mix_0-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_bi_mix_0-0.c.bc deleted file mode 100644 index d3799bb6..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_bi_mix_0-0.c.bc +++ /dev/null @@ -1,84 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_bi_mix_0-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_bi_mix_0-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 1, ptr %a, align 4, !dbg !20 - %0 = load i32, ptr %a, align 4, !dbg !21 - %add = add nsw i32 %0, 2, !dbg !21 - store i32 %add, ptr %a, align 4, !dbg !21 - %1 = load i32, ptr %a, align 4, !dbg !22 - store i32 %1, ptr %b, align 4, !dbg !23 - %2 = load i32, ptr %b, align 4, !dbg !24 - %sub = sub nsw i32 %2, 1, !dbg !24 - store i32 %sub, ptr %b, align 4, !dbg !24 - %3 = load i32, ptr %a, align 4, !dbg !25 - %cmp = icmp eq i32 %3, 3, !dbg !26 - br i1 %cmp, label %land.rhs, label %land.end, !dbg !27 - -land.rhs: ; preds = %entry - %4 = load i32, ptr %b, align 4, !dbg !28 - %cmp1 = icmp eq i32 %4, 2, !dbg !29 - br label %land.end - -land.end: ; preds = %land.rhs, %entry - %5 = phi i1 [ false, %entry ], [ %cmp1, %land.rhs ], !dbg !30 - call void @svf_assert(i1 noundef zeroext %5), !dbg !31 - ret i32 0, !dbg !32 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_bi_mix_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7db7375423e2404258ac610885be644e") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 3, type: !12, scopeLine: 3, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_bi_mix_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7db7375423e2404258ac610885be644e") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 4, type: !14) -!17 = !DILocation(line: 4, column: 9, scope: !10) -!18 = !DILocalVariable(name: "b", scope: !10, file: !11, line: 4, type: !14) -!19 = !DILocation(line: 4, column: 12, scope: !10) -!20 = !DILocation(line: 5, column: 7, scope: !10) -!21 = !DILocation(line: 6, column: 7, scope: !10) -!22 = !DILocation(line: 7, column: 9, scope: !10) -!23 = !DILocation(line: 7, column: 7, scope: !10) -!24 = !DILocation(line: 8, column: 7, scope: !10) -!25 = !DILocation(line: 9, column: 17, scope: !10) -!26 = !DILocation(line: 9, column: 19, scope: !10) -!27 = !DILocation(line: 9, column: 24, scope: !10) -!28 = !DILocation(line: 9, column: 27, scope: !10) -!29 = !DILocation(line: 9, column: 29, scope: !10) -!30 = !DILocation(line: 0, scope: !10) -!31 = !DILocation(line: 9, column: 5, scope: !10) -!32 = !DILocation(line: 12, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_bi_mul_0-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_bi_mul_0-0.c.bc deleted file mode 100644 index beffb86f..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_bi_mul_0-0.c.bc +++ /dev/null @@ -1,70 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_bi_mul_0-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_bi_mul_0-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %c = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 1, ptr %a, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 2, ptr %b, align 4, !dbg !19 - call void @llvm.dbg.declare(metadata ptr %c, metadata !20, metadata !DIExpression()), !dbg !21 - %0 = load i32, ptr %a, align 4, !dbg !22 - %1 = load i32, ptr %b, align 4, !dbg !23 - %mul = mul nsw i32 %0, %1, !dbg !24 - store i32 %mul, ptr %c, align 4, !dbg !21 - %2 = load i32, ptr %c, align 4, !dbg !25 - %cmp = icmp eq i32 %2, 2, !dbg !26 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !27 - ret i32 0, !dbg !28 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_bi_mul_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fd876f12d07a3b92124ea544b6658741") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 4, type: !12, scopeLine: 4, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_bi_mul_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fd876f12d07a3b92124ea544b6658741") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 5, type: !14) -!17 = !DILocation(line: 5, column: 7, scope: !10) -!18 = !DILocalVariable(name: "b", scope: !10, file: !11, line: 6, type: !14) -!19 = !DILocation(line: 6, column: 7, scope: !10) -!20 = !DILocalVariable(name: "c", scope: !10, file: !11, line: 7, type: !14) -!21 = !DILocation(line: 7, column: 7, scope: !10) -!22 = !DILocation(line: 7, column: 11, scope: !10) -!23 = !DILocation(line: 7, column: 15, scope: !10) -!24 = !DILocation(line: 7, column: 13, scope: !10) -!25 = !DILocation(line: 8, column: 14, scope: !10) -!26 = !DILocation(line: 8, column: 16, scope: !10) -!27 = !DILocation(line: 8, column: 3, scope: !10) -!28 = !DILocation(line: 9, column: 3, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_bi_sub_0-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_bi_sub_0-0.c.bc deleted file mode 100644 index 4a6a02b6..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_bi_sub_0-0.c.bc +++ /dev/null @@ -1,76 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_bi_sub_0-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_bi_sub_0-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %i) #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %i.addr = alloca i32, align 4 - %a = alloca i32, align 4 - %c = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - store i32 %i, ptr %i.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %a, metadata !18, metadata !DIExpression()), !dbg !19 - call void @llvm.dbg.declare(metadata ptr %c, metadata !20, metadata !DIExpression()), !dbg !21 - %0 = load i32, ptr %i.addr, align 4, !dbg !22 - %sub = sub nsw i32 %0, 1, !dbg !23 - store i32 %sub, ptr %a, align 4, !dbg !24 - %1 = load i32, ptr %a, align 4, !dbg !25 - store i32 %1, ptr %c, align 4, !dbg !26 - %2 = load i32, ptr %c, align 4, !dbg !27 - %3 = load i32, ptr %i.addr, align 4, !dbg !28 - %sub1 = sub nsw i32 %3, 1, !dbg !29 - %cmp = icmp eq i32 %2, %sub1, !dbg !30 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !31 - ret i32 0, !dbg !32 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_bi_sub_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "1b789e1924d97c52fc0c4773e8e3e8aa") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 3, type: !12, scopeLine: 3, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_bi_sub_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "1b789e1924d97c52fc0c4773e8e3e8aa") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "i", arg: 1, scope: !10, file: !11, line: 3, type: !14) -!17 = !DILocation(line: 3, column: 14, scope: !10) -!18 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 4, type: !14) -!19 = !DILocation(line: 4, column: 9, scope: !10) -!20 = !DILocalVariable(name: "c", scope: !10, file: !11, line: 4, type: !14) -!21 = !DILocation(line: 4, column: 12, scope: !10) -!22 = !DILocation(line: 5, column: 9, scope: !10) -!23 = !DILocation(line: 5, column: 11, scope: !10) -!24 = !DILocation(line: 5, column: 7, scope: !10) -!25 = !DILocation(line: 6, column: 9, scope: !10) -!26 = !DILocation(line: 6, column: 7, scope: !10) -!27 = !DILocation(line: 7, column: 17, scope: !10) -!28 = !DILocation(line: 7, column: 22, scope: !10) -!29 = !DILocation(line: 7, column: 24, scope: !10) -!30 = !DILocation(line: 7, column: 19, scope: !10) -!31 = !DILocation(line: 7, column: 5, scope: !10) -!32 = !DILocation(line: 8, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_br_false_0-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_br_false_0-0.c.bc deleted file mode 100644 index 8b284bbc..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_br_false_0-0.c.bc +++ /dev/null @@ -1,55 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_br_false_0-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_br_false_0-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 1, ptr %x, align 4, !dbg !18 - %0 = load i32, ptr %x, align 4, !dbg !19 - %cmp = icmp ne i32 %0, 2, !dbg !20 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !21 - ret i32 0, !dbg !22 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_br_false_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "babb163b0d1b8145d8eadfe52057bd3e") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_br_false_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "babb163b0d1b8145d8eadfe52057bd3e") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 10, type: !14) -!17 = !DILocation(line: 10, column: 9, scope: !10) -!18 = !DILocation(line: 11, column: 7, scope: !10) -!19 = !DILocation(line: 16, column: 16, scope: !10) -!20 = !DILocation(line: 16, column: 18, scope: !10) -!21 = !DILocation(line: 16, column: 5, scope: !10) -!22 = !DILocation(line: 17, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_br_nd_0-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_br_nd_0-0.c.bc deleted file mode 100644 index ea1bccd4..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_br_nd_0-0.c.bc +++ /dev/null @@ -1,109 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_br_nd_0-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_br_nd_0-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %y, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 1, ptr %x, align 4, !dbg !20 - store i32 1, ptr %y, align 4, !dbg !21 - %call = call i32 @nd(), !dbg !22 - %tobool = icmp ne i32 %call, 0, !dbg !22 - br i1 %tobool, label %if.then, label %if.end, !dbg !24 - -if.then: ; preds = %entry - %0 = load i32, ptr %x, align 4, !dbg !25 - %inc = add nsw i32 %0, 1, !dbg !25 - store i32 %inc, ptr %x, align 4, !dbg !25 - %1 = load i32, ptr %y, align 4, !dbg !27 - %inc1 = add nsw i32 %1, 1, !dbg !27 - store i32 %inc1, ptr %y, align 4, !dbg !27 - br label %if.end, !dbg !28 - -if.end: ; preds = %if.then, %entry - %2 = load i32, ptr %x, align 4, !dbg !29 - %cmp = icmp sle i32 %2, 10, !dbg !30 - br i1 %cmp, label %land.lhs.true, label %land.end, !dbg !31 - -land.lhs.true: ; preds = %if.end - %3 = load i32, ptr %x, align 4, !dbg !32 - %4 = load i32, ptr %y, align 4, !dbg !33 - %cmp2 = icmp sge i32 %3, %4, !dbg !34 - br i1 %cmp2, label %land.rhs, label %land.end, !dbg !35 - -land.rhs: ; preds = %land.lhs.true - %5 = load i32, ptr %x, align 4, !dbg !36 - %6 = load i32, ptr %y, align 4, !dbg !37 - %cmp3 = icmp sle i32 %5, %6, !dbg !38 - br label %land.end - -land.end: ; preds = %land.rhs, %land.lhs.true, %if.end - %7 = phi i1 [ false, %land.lhs.true ], [ false, %if.end ], [ %cmp3, %land.rhs ], !dbg !39 - call void @svf_assert(i1 noundef zeroext %7), !dbg !40 - ret i32 0, !dbg !41 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare i32 @nd() #2 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_br_nd_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "794f77d2bd6bf33ef52a57729e26842f") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 10, type: !12, scopeLine: 10, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_br_nd_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "794f77d2bd6bf33ef52a57729e26842f") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 11, type: !14) -!17 = !DILocation(line: 11, column: 9, scope: !10) -!18 = !DILocalVariable(name: "y", scope: !10, file: !11, line: 11, type: !14) -!19 = !DILocation(line: 11, column: 12, scope: !10) -!20 = !DILocation(line: 12, column: 7, scope: !10) -!21 = !DILocation(line: 13, column: 7, scope: !10) -!22 = !DILocation(line: 15, column: 9, scope: !23) -!23 = distinct !DILexicalBlock(scope: !10, file: !11, line: 15, column: 9) -!24 = !DILocation(line: 15, column: 9, scope: !10) -!25 = !DILocation(line: 16, column: 10, scope: !26) -!26 = distinct !DILexicalBlock(scope: !23, file: !11, line: 15, column: 15) -!27 = !DILocation(line: 17, column: 10, scope: !26) -!28 = !DILocation(line: 18, column: 5, scope: !26) -!29 = !DILocation(line: 19, column: 16, scope: !10) -!30 = !DILocation(line: 19, column: 18, scope: !10) -!31 = !DILocation(line: 19, column: 23, scope: !10) -!32 = !DILocation(line: 19, column: 26, scope: !10) -!33 = !DILocation(line: 19, column: 29, scope: !10) -!34 = !DILocation(line: 19, column: 27, scope: !10) -!35 = !DILocation(line: 19, column: 31, scope: !10) -!36 = !DILocation(line: 19, column: 34, scope: !10) -!37 = !DILocation(line: 19, column: 39, scope: !10) -!38 = !DILocation(line: 19, column: 36, scope: !10) -!39 = !DILocation(line: 0, scope: !10) -!40 = !DILocation(line: 19, column: 5, scope: !10) -!41 = !DILocation(line: 20, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_br_nd_1-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_br_nd_1-0.c.bc deleted file mode 100644 index f7e8daaa..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_br_nd_1-0.c.bc +++ /dev/null @@ -1,119 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_br_nd_1-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_br_nd_1-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %y, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 1, ptr %x, align 4, !dbg !20 - store i32 1, ptr %y, align 4, !dbg !21 - %call = call i32 @nd(), !dbg !22 - %tobool = icmp ne i32 %call, 0, !dbg !22 - br i1 %tobool, label %if.then, label %if.end, !dbg !24 - -if.then: ; preds = %entry - %0 = load i32, ptr %x, align 4, !dbg !25 - %inc = add nsw i32 %0, 1, !dbg !25 - store i32 %inc, ptr %x, align 4, !dbg !25 - %1 = load i32, ptr %y, align 4, !dbg !27 - %inc1 = add nsw i32 %1, 1, !dbg !27 - store i32 %inc1, ptr %y, align 4, !dbg !27 - %2 = load i32, ptr %x, align 4, !dbg !28 - %3 = load i32, ptr %y, align 4, !dbg !29 - %cmp = icmp eq i32 %2, %3, !dbg !30 - br i1 %cmp, label %land.lhs.true, label %land.end, !dbg !31 - -land.lhs.true: ; preds = %if.then - %4 = load i32, ptr %x, align 4, !dbg !32 - %cmp2 = icmp sle i32 %4, 10, !dbg !33 - br i1 %cmp2, label %land.lhs.true3, label %land.end, !dbg !34 - -land.lhs.true3: ; preds = %land.lhs.true - %5 = load i32, ptr %x, align 4, !dbg !35 - %6 = load i32, ptr %y, align 4, !dbg !36 - %cmp4 = icmp sge i32 %5, %6, !dbg !37 - br i1 %cmp4, label %land.rhs, label %land.end, !dbg !38 - -land.rhs: ; preds = %land.lhs.true3 - %7 = load i32, ptr %x, align 4, !dbg !39 - %8 = load i32, ptr %y, align 4, !dbg !40 - %cmp5 = icmp sle i32 %7, %8, !dbg !41 - br label %land.end - -land.end: ; preds = %land.rhs, %land.lhs.true3, %land.lhs.true, %if.then - %9 = phi i1 [ false, %land.lhs.true3 ], [ false, %land.lhs.true ], [ false, %if.then ], [ %cmp5, %land.rhs ], !dbg !42 - call void @svf_assert(i1 noundef zeroext %9), !dbg !43 - br label %if.end, !dbg !44 - -if.end: ; preds = %land.end, %entry - ret i32 0, !dbg !45 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare i32 @nd() #2 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_br_nd_1-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d735ed503267deb3442f4b1b251511bb") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 10, type: !12, scopeLine: 10, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_br_nd_1-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d735ed503267deb3442f4b1b251511bb") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 11, type: !14) -!17 = !DILocation(line: 11, column: 9, scope: !10) -!18 = !DILocalVariable(name: "y", scope: !10, file: !11, line: 11, type: !14) -!19 = !DILocation(line: 11, column: 12, scope: !10) -!20 = !DILocation(line: 12, column: 7, scope: !10) -!21 = !DILocation(line: 13, column: 7, scope: !10) -!22 = !DILocation(line: 15, column: 9, scope: !23) -!23 = distinct !DILexicalBlock(scope: !10, file: !11, line: 15, column: 9) -!24 = !DILocation(line: 15, column: 9, scope: !10) -!25 = !DILocation(line: 16, column: 10, scope: !26) -!26 = distinct !DILexicalBlock(scope: !23, file: !11, line: 15, column: 15) -!27 = !DILocation(line: 17, column: 10, scope: !26) -!28 = !DILocation(line: 18, column: 20, scope: !26) -!29 = !DILocation(line: 18, column: 23, scope: !26) -!30 = !DILocation(line: 18, column: 21, scope: !26) -!31 = !DILocation(line: 18, column: 25, scope: !26) -!32 = !DILocation(line: 18, column: 28, scope: !26) -!33 = !DILocation(line: 18, column: 29, scope: !26) -!34 = !DILocation(line: 18, column: 34, scope: !26) -!35 = !DILocation(line: 18, column: 37, scope: !26) -!36 = !DILocation(line: 18, column: 40, scope: !26) -!37 = !DILocation(line: 18, column: 38, scope: !26) -!38 = !DILocation(line: 18, column: 42, scope: !26) -!39 = !DILocation(line: 18, column: 45, scope: !26) -!40 = !DILocation(line: 18, column: 48, scope: !26) -!41 = !DILocation(line: 18, column: 46, scope: !26) -!42 = !DILocation(line: 0, scope: !26) -!43 = !DILocation(line: 18, column: 9, scope: !26) -!44 = !DILocation(line: 19, column: 5, scope: !26) -!45 = !DILocation(line: 20, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_br_nd_2-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_br_nd_2-0.c.bc deleted file mode 100644 index ad50eac8..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_br_nd_2-0.c.bc +++ /dev/null @@ -1,86 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_br_nd_2-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_br_nd_2-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %y, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 1, ptr %x, align 4, !dbg !20 - store i32 1, ptr %y, align 4, !dbg !21 - %call = call i32 @nd(), !dbg !22 - %tobool = icmp ne i32 %call, 0, !dbg !22 - br i1 %tobool, label %if.then, label %if.end, !dbg !24 - -if.then: ; preds = %entry - %0 = load i32, ptr %x, align 4, !dbg !25 - %inc = add nsw i32 %0, 1, !dbg !25 - store i32 %inc, ptr %x, align 4, !dbg !25 - %1 = load i32, ptr %y, align 4, !dbg !27 - %inc1 = add nsw i32 %1, 1, !dbg !27 - store i32 %inc1, ptr %y, align 4, !dbg !27 - br label %if.end, !dbg !28 - -if.end: ; preds = %if.then, %entry - %2 = load i32, ptr %x, align 4, !dbg !29 - %3 = load i32, ptr %y, align 4, !dbg !30 - %cmp = icmp eq i32 %2, %3, !dbg !31 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !32 - ret i32 0, !dbg !33 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare i32 @nd() #2 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_br_nd_2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "bb447fbcd4260135916b3c738eebb700") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 10, type: !12, scopeLine: 10, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_br_nd_2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "bb447fbcd4260135916b3c738eebb700") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 11, type: !14) -!17 = !DILocation(line: 11, column: 9, scope: !10) -!18 = !DILocalVariable(name: "y", scope: !10, file: !11, line: 11, type: !14) -!19 = !DILocation(line: 11, column: 12, scope: !10) -!20 = !DILocation(line: 12, column: 7, scope: !10) -!21 = !DILocation(line: 13, column: 7, scope: !10) -!22 = !DILocation(line: 15, column: 9, scope: !23) -!23 = distinct !DILexicalBlock(scope: !10, file: !11, line: 15, column: 9) -!24 = !DILocation(line: 15, column: 9, scope: !10) -!25 = !DILocation(line: 16, column: 10, scope: !26) -!26 = distinct !DILexicalBlock(scope: !23, file: !11, line: 15, column: 15) -!27 = !DILocation(line: 17, column: 10, scope: !26) -!28 = !DILocation(line: 18, column: 5, scope: !26) -!29 = !DILocation(line: 19, column: 16, scope: !10) -!30 = !DILocation(line: 19, column: 21, scope: !10) -!31 = !DILocation(line: 19, column: 18, scope: !10) -!32 = !DILocation(line: 19, column: 5, scope: !10) -!33 = !DILocation(line: 20, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_br_nd_malloc-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_br_nd_malloc-0.c.bc deleted file mode 100644 index 204a77c8..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_br_nd_malloc-0.c.bc +++ /dev/null @@ -1,93 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_br_nd_malloc-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_br_nd_malloc-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc) #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %p = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %p, metadata !18, metadata !DIExpression()), !dbg !20 - %call = call ptr @malloc(i32 noundef 10), !dbg !21 - store ptr %call, ptr %p, align 8, !dbg !20 - %0 = load ptr, ptr %p, align 8, !dbg !22 - store i32 10, ptr %0, align 4, !dbg !23 - %1 = load i32, ptr %argc.addr, align 4, !dbg !24 - %tobool = icmp ne i32 %1, 0, !dbg !24 - br i1 %tobool, label %if.then, label %if.else, !dbg !26 - -if.then: ; preds = %entry - %2 = load ptr, ptr %p, align 8, !dbg !27 - store i32 20, ptr %2, align 4, !dbg !29 - br label %if.end, !dbg !30 - -if.else: ; preds = %entry - %3 = load ptr, ptr %p, align 8, !dbg !31 - %4 = load i32, ptr %3, align 4, !dbg !33 - %cmp = icmp eq i32 %4, 10, !dbg !34 - %conv = zext i1 %cmp to i32, !dbg !34 - call void @svf_assert(i32 noundef %conv), !dbg !35 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %5 = load i32, ptr %retval, align 4, !dbg !36 - ret i32 %5, !dbg !36 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare ptr @malloc(i32 noundef) #2 - -declare void @svf_assert(i32 noundef) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_br_nd_malloc-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "01fcb0a24b581011fd8004bb13ddb19b") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 3, type: !12, scopeLine: 3, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_br_nd_malloc-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "01fcb0a24b581011fd8004bb13ddb19b") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "argc", arg: 1, scope: !10, file: !11, line: 3, type: !14) -!17 = !DILocation(line: 3, column: 14, scope: !10) -!18 = !DILocalVariable(name: "p", scope: !10, file: !11, line: 4, type: !19) -!19 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !14, size: 64) -!20 = !DILocation(line: 4, column: 10, scope: !10) -!21 = !DILocation(line: 4, column: 14, scope: !10) -!22 = !DILocation(line: 5, column: 6, scope: !10) -!23 = !DILocation(line: 5, column: 8, scope: !10) -!24 = !DILocation(line: 6, column: 8, scope: !25) -!25 = distinct !DILexicalBlock(scope: !10, file: !11, line: 6, column: 8) -!26 = !DILocation(line: 6, column: 8, scope: !10) -!27 = !DILocation(line: 7, column: 10, scope: !28) -!28 = distinct !DILexicalBlock(scope: !25, file: !11, line: 6, column: 13) -!29 = !DILocation(line: 7, column: 12, scope: !28) -!30 = !DILocation(line: 8, column: 5, scope: !28) -!31 = !DILocation(line: 10, column: 21, scope: !32) -!32 = distinct !DILexicalBlock(scope: !25, file: !11, line: 9, column: 9) -!33 = !DILocation(line: 10, column: 20, scope: !32) -!34 = !DILocation(line: 10, column: 22, scope: !32) -!35 = !DILocation(line: 10, column: 9, scope: !32) -!36 = !DILocation(line: 12, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_br_true_0-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_br_true_0-0.c.bc deleted file mode 100644 index 25daebba..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_br_true_0-0.c.bc +++ /dev/null @@ -1,73 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_br_true_0-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_br_true_0-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %y, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 1, ptr %x, align 4, !dbg !20 - store i32 1, ptr %y, align 4, !dbg !21 - %0 = load i32, ptr %x, align 4, !dbg !22 - %inc = add nsw i32 %0, 1, !dbg !22 - store i32 %inc, ptr %x, align 4, !dbg !22 - %1 = load i32, ptr %y, align 4, !dbg !25 - %inc1 = add nsw i32 %1, 1, !dbg !25 - store i32 %inc1, ptr %y, align 4, !dbg !25 - %2 = load i32, ptr %x, align 4, !dbg !26 - %3 = load i32, ptr %y, align 4, !dbg !27 - %cmp = icmp eq i32 %2, %3, !dbg !28 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !29 - ret i32 0, !dbg !30 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_br_true_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f602064476cd9d07e4ecd25225bef809") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 10, type: !12, scopeLine: 10, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_br_true_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f602064476cd9d07e4ecd25225bef809") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 11, type: !14) -!17 = !DILocation(line: 11, column: 9, scope: !10) -!18 = !DILocalVariable(name: "y", scope: !10, file: !11, line: 11, type: !14) -!19 = !DILocation(line: 11, column: 12, scope: !10) -!20 = !DILocation(line: 12, column: 7, scope: !10) -!21 = !DILocation(line: 13, column: 7, scope: !10) -!22 = !DILocation(line: 16, column: 10, scope: !23) -!23 = distinct !DILexicalBlock(scope: !24, file: !11, line: 15, column: 15) -!24 = distinct !DILexicalBlock(scope: !10, file: !11, line: 15, column: 9) -!25 = !DILocation(line: 17, column: 10, scope: !23) -!26 = !DILocation(line: 19, column: 16, scope: !10) -!27 = !DILocation(line: 19, column: 21, scope: !10) -!28 = !DILocation(line: 19, column: 18, scope: !10) -!29 = !DILocation(line: 19, column: 5, scope: !10) -!30 = !DILocation(line: 20, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_extapi_strcat_0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_extapi_strcat_0.c.bc deleted file mode 100644 index 2e3da152..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_extapi_strcat_0.c.bc +++ /dev/null @@ -1,93 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_extapi_strcat_0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_extapi_strcat_0.c" -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-unknown-linux-gnu" - -@__const.main.dest = private unnamed_addr constant [20 x i8] c"Hello, \00\00\00\00\00\00\00\00\00\00\00\00\00", align 16 -@.str = private unnamed_addr constant [7 x i8] c"world!\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [14 x i8] c"Hello, world!\00", align 1, !dbg !7 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !23 { -entry: - %retval = alloca i32, align 4 - %dest = alloca [20 x i8], align 16 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !28, metadata !DIExpression()), !dbg !32 - call void @llvm.memcpy.p0.p0.i64(ptr align 16 %dest, ptr align 16 @__const.main.dest, i64 20, i1 false), !dbg !32 - %arraydecay = getelementptr inbounds [20 x i8], ptr %dest, i64 0, i64 0, !dbg !33 - %call = call ptr @strcat(ptr noundef %arraydecay, ptr noundef @.str) #6, !dbg !34 - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %dest, i64 0, i64 0, !dbg !35 - %call2 = call i32 @strcmp(ptr noundef %arraydecay1, ptr noundef @.str.1) #7, !dbg !36 - %cmp = icmp eq i32 %call2, 0, !dbg !37 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !38 - ret i32 0, !dbg !39 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 - -; Function Attrs: nounwind -declare ptr @strcat(ptr noundef, ptr noundef) #3 - -declare void @svf_assert(i1 noundef zeroext) #4 - -; Function Attrs: nounwind willreturn memory(read) -declare i32 @strcmp(ptr noundef, ptr noundef) #5 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #3 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind } -attributes #7 = { nounwind willreturn memory(read) } - -!llvm.dbg.cu = !{!12} -!llvm.module.flags = !{!15, !16, !17, !18, !19, !20, !21} -!llvm.ident = !{!22} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 10, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/BASIC_extapi_strcat_0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f2f46024a59336594aa27ffcb50ca564") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 56, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 7) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 11, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 112, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 14) -!12 = distinct !DICompileUnit(language: DW_LANG_C11, file: !13, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !14, splitDebugInlining: false, nameTableKind: None) -!13 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_extapi_strcat_0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f2f46024a59336594aa27ffcb50ca564") -!14 = !{!0, !7} -!15 = !{i32 7, !"Dwarf Version", i32 5} -!16 = !{i32 2, !"Debug Info Version", i32 3} -!17 = !{i32 1, !"wchar_size", i32 4} -!18 = !{i32 8, !"PIC Level", i32 2} -!19 = !{i32 7, !"PIE Level", i32 2} -!20 = !{i32 7, !"uwtable", i32 2} -!21 = !{i32 7, !"frame-pointer", i32 2} -!22 = !{!"clang version 16.0.0"} -!23 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 8, type: !24, scopeLine: 8, spFlags: DISPFlagDefinition, unit: !12, retainedNodes: !27) -!24 = !DISubroutineType(types: !25) -!25 = !{!26} -!26 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!27 = !{} -!28 = !DILocalVariable(name: "dest", scope: !23, file: !2, line: 9, type: !29) -!29 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 160, elements: !30) -!30 = !{!31} -!31 = !DISubrange(count: 20) -!32 = !DILocation(line: 9, column: 10, scope: !23) -!33 = !DILocation(line: 10, column: 12, scope: !23) -!34 = !DILocation(line: 10, column: 5, scope: !23) -!35 = !DILocation(line: 11, column: 23, scope: !23) -!36 = !DILocation(line: 11, column: 16, scope: !23) -!37 = !DILocation(line: 11, column: 46, scope: !23) -!38 = !DILocation(line: 11, column: 5, scope: !23) -!39 = !DILocation(line: 12, column: 5, scope: !23) diff --git a/test_cases_bc/ae_assert_tests/BASIC_funcall_ref_0-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_funcall_ref_0-0.c.bc deleted file mode 100644 index f7b82c2b..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_funcall_ref_0-0.c.bc +++ /dev/null @@ -1,74 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_funcall_ref_0-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_funcall_ref_0-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @foo(ptr noundef %p) #0 !dbg !10 { -entry: - %p.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !17, metadata !DIExpression()), !dbg !18 - %0 = load ptr, ptr %p.addr, align 8, !dbg !19 - store i32 1, ptr %0, align 4, !dbg !20 - ret void, !dbg !21 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !22 { -entry: - %a = alloca i32, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !25, metadata !DIExpression()), !dbg !26 - store i32 0, ptr %a, align 4, !dbg !26 - call void @foo(ptr noundef %a), !dbg !27 - %0 = load i32, ptr %a, align 4, !dbg !28 - %cmp = icmp eq i32 %0, 1, !dbg !29 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !30 - ret i32 0, !dbg !31 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_funcall_ref_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a1edbb8d6fb86a49914cd0b9f1ec179c") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "foo", scope: !11, file: !11, line: 8, type: !12, scopeLine: 8, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_funcall_ref_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a1edbb8d6fb86a49914cd0b9f1ec179c") -!12 = !DISubroutineType(types: !13) -!13 = !{null, !14} -!14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) -!15 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!16 = !{} -!17 = !DILocalVariable(name: "p", arg: 1, scope: !10, file: !11, line: 8, type: !14) -!18 = !DILocation(line: 8, column: 15, scope: !10) -!19 = !DILocation(line: 9, column: 4, scope: !10) -!20 = !DILocation(line: 9, column: 6, scope: !10) -!21 = !DILocation(line: 10, column: 1, scope: !10) -!22 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 12, type: !23, scopeLine: 12, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!23 = !DISubroutineType(types: !24) -!24 = !{!15} -!25 = !DILocalVariable(name: "a", scope: !22, file: !11, line: 13, type: !15) -!26 = !DILocation(line: 13, column: 9, scope: !22) -!27 = !DILocation(line: 14, column: 5, scope: !22) -!28 = !DILocation(line: 15, column: 16, scope: !22) -!29 = !DILocation(line: 15, column: 18, scope: !22) -!30 = !DILocation(line: 15, column: 5, scope: !22) -!31 = !DILocation(line: 16, column: 1, scope: !22) diff --git a/test_cases_bc/ae_assert_tests/BASIC_funcall_ref_1-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_funcall_ref_1-0.c.bc deleted file mode 100644 index 4004531d..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_funcall_ref_1-0.c.bc +++ /dev/null @@ -1,103 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_funcall_ref_1-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_funcall_ref_1-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %p, ptr noundef %q) #0 !dbg !10 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - %t = alloca i32, align 4 - store ptr %p, ptr %p.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !17, metadata !DIExpression()), !dbg !18 - store ptr %q, ptr %q.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %q.addr, metadata !19, metadata !DIExpression()), !dbg !20 - call void @llvm.dbg.declare(metadata ptr %t, metadata !21, metadata !DIExpression()), !dbg !22 - %0 = load ptr, ptr %p.addr, align 8, !dbg !23 - %1 = load i32, ptr %0, align 4, !dbg !24 - store i32 %1, ptr %t, align 4, !dbg !22 - %2 = load ptr, ptr %q.addr, align 8, !dbg !25 - %3 = load i32, ptr %2, align 4, !dbg !26 - %4 = load ptr, ptr %p.addr, align 8, !dbg !27 - store i32 %3, ptr %4, align 4, !dbg !28 - %5 = load i32, ptr %t, align 4, !dbg !29 - %6 = load ptr, ptr %q.addr, align 8, !dbg !30 - store i32 %5, ptr %6, align 4, !dbg !31 - ret void, !dbg !32 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !33 { -entry: - %a = alloca i32, align 4 - %b = alloca i32, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !36, metadata !DIExpression()), !dbg !37 - store i32 0, ptr %a, align 4, !dbg !37 - call void @llvm.dbg.declare(metadata ptr %b, metadata !38, metadata !DIExpression()), !dbg !39 - store i32 1, ptr %b, align 4, !dbg !39 - call void @swap(ptr noundef %a, ptr noundef %b), !dbg !40 - %0 = load i32, ptr %a, align 4, !dbg !41 - %cmp = icmp eq i32 %0, 1, !dbg !42 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !43 - ret i32 0, !dbg !44 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_funcall_ref_1-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "146ff971d14b3e0a87c8df25db9c4c88") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "swap", scope: !11, file: !11, line: 8, type: !12, scopeLine: 8, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_funcall_ref_1-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "146ff971d14b3e0a87c8df25db9c4c88") -!12 = !DISubroutineType(types: !13) -!13 = !{null, !14, !14} -!14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) -!15 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!16 = !{} -!17 = !DILocalVariable(name: "p", arg: 1, scope: !10, file: !11, line: 8, type: !14) -!18 = !DILocation(line: 8, column: 16, scope: !10) -!19 = !DILocalVariable(name: "q", arg: 2, scope: !10, file: !11, line: 8, type: !14) -!20 = !DILocation(line: 8, column: 24, scope: !10) -!21 = !DILocalVariable(name: "t", scope: !10, file: !11, line: 9, type: !15) -!22 = !DILocation(line: 9, column: 9, scope: !10) -!23 = !DILocation(line: 9, column: 14, scope: !10) -!24 = !DILocation(line: 9, column: 13, scope: !10) -!25 = !DILocation(line: 10, column: 11, scope: !10) -!26 = !DILocation(line: 10, column: 10, scope: !10) -!27 = !DILocation(line: 10, column: 6, scope: !10) -!28 = !DILocation(line: 10, column: 8, scope: !10) -!29 = !DILocation(line: 11, column: 10, scope: !10) -!30 = !DILocation(line: 11, column: 6, scope: !10) -!31 = !DILocation(line: 11, column: 8, scope: !10) -!32 = !DILocation(line: 12, column: 1, scope: !10) -!33 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 14, type: !34, scopeLine: 14, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!34 = !DISubroutineType(types: !35) -!35 = !{!15} -!36 = !DILocalVariable(name: "a", scope: !33, file: !11, line: 15, type: !15) -!37 = !DILocation(line: 15, column: 8, scope: !33) -!38 = !DILocalVariable(name: "b", scope: !33, file: !11, line: 15, type: !15) -!39 = !DILocation(line: 15, column: 15, scope: !33) -!40 = !DILocation(line: 16, column: 5, scope: !33) -!41 = !DILocation(line: 17, column: 16, scope: !33) -!42 = !DILocation(line: 17, column: 18, scope: !33) -!43 = !DILocation(line: 17, column: 5, scope: !33) -!44 = !DILocation(line: 18, column: 1, scope: !33) diff --git a/test_cases_bc/ae_assert_tests/BASIC_funcall_ref_2-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_funcall_ref_2-0.c.bc deleted file mode 100644 index 86520854..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_funcall_ref_2-0.c.bc +++ /dev/null @@ -1,75 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_funcall_ref_2-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_funcall_ref_2-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @foo(ptr noundef %p) #0 !dbg !10 { -entry: - %p.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !17, metadata !DIExpression()), !dbg !18 - ret i32 0, !dbg !19 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !20 { -entry: - %a = alloca i32, align 4 - %res = alloca i32, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !23, metadata !DIExpression()), !dbg !24 - store i32 0, ptr %a, align 4, !dbg !24 - call void @llvm.dbg.declare(metadata ptr %res, metadata !25, metadata !DIExpression()), !dbg !26 - %call = call i32 @foo(ptr noundef %a), !dbg !27 - store i32 %call, ptr %res, align 4, !dbg !26 - %0 = load i32, ptr %res, align 4, !dbg !28 - %cmp = icmp eq i32 %0, 0, !dbg !29 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !30 - ret i32 0, !dbg !31 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_funcall_ref_2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c35c5bf4b069b96d7c622bea08931938") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "foo", scope: !11, file: !11, line: 8, type: !12, scopeLine: 8, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_funcall_ref_2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c35c5bf4b069b96d7c622bea08931938") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !15} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !14, size: 64) -!16 = !{} -!17 = !DILocalVariable(name: "p", arg: 1, scope: !10, file: !11, line: 8, type: !15) -!18 = !DILocation(line: 8, column: 14, scope: !10) -!19 = !DILocation(line: 9, column: 3, scope: !10) -!20 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 12, type: !21, scopeLine: 12, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!21 = !DISubroutineType(types: !22) -!22 = !{!14} -!23 = !DILocalVariable(name: "a", scope: !20, file: !11, line: 13, type: !14) -!24 = !DILocation(line: 13, column: 9, scope: !20) -!25 = !DILocalVariable(name: "res", scope: !20, file: !11, line: 14, type: !14) -!26 = !DILocation(line: 14, column: 9, scope: !20) -!27 = !DILocation(line: 14, column: 15, scope: !20) -!28 = !DILocation(line: 15, column: 16, scope: !20) -!29 = !DILocation(line: 15, column: 20, scope: !20) -!30 = !DILocation(line: 15, column: 5, scope: !20) -!31 = !DILocation(line: 16, column: 1, scope: !20) diff --git a/test_cases_bc/ae_assert_tests/BASIC_nullptr_def_0-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_nullptr_def_0-0.c.bc deleted file mode 100644 index a224a592..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_nullptr_def_0-0.c.bc +++ /dev/null @@ -1,100 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_nullptr_def_0-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_nullptr_def_0-0.c" -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-unknown-linux-gnu" - -%struct._twoIntsStruct = type { i32, i32 } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !19 { -entry: - %retval = alloca i32, align 4 - %twoIntsStructPointer = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %twoIntsStructPointer, metadata !23, metadata !DIExpression()), !dbg !24 - %0 = alloca i8, i64 8, align 16, !dbg !25 - store ptr %0, ptr %twoIntsStructPointer, align 8, !dbg !24 - %1 = load ptr, ptr %twoIntsStructPointer, align 8, !dbg !26 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %1, i32 0, i32 0, !dbg !27 - store i32 5, ptr %intOne, align 4, !dbg !28 - %2 = load ptr, ptr %twoIntsStructPointer, align 8, !dbg !29 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i32 0, i32 1, !dbg !30 - store i32 3, ptr %intTwo, align 4, !dbg !31 - %3 = load ptr, ptr %twoIntsStructPointer, align 8, !dbg !32 - %intTwo1 = getelementptr inbounds %struct._twoIntsStruct, ptr %3, i32 0, i32 1, !dbg !34 - %4 = load i32, ptr %intTwo1, align 4, !dbg !34 - %cmp = icmp slt i32 %4, 0, !dbg !35 - br i1 %cmp, label %if.then, label %if.end, !dbg !36 - -if.then: ; preds = %entry - store ptr null, ptr %twoIntsStructPointer, align 8, !dbg !37 - br label %if.end, !dbg !39 - -if.end: ; preds = %if.then, %entry - %5 = load ptr, ptr %twoIntsStructPointer, align 8, !dbg !40 - %intTwo2 = getelementptr inbounds %struct._twoIntsStruct, ptr %5, i32 0, i32 1, !dbg !41 - %6 = load i32, ptr %intTwo2, align 4, !dbg !41 - %cmp3 = icmp eq i32 %6, 3, !dbg !42 - %conv = zext i1 %cmp3 to i32, !dbg !42 - %call = call i32 (i32, ...) @svf_assert(i32 noundef %conv), !dbg !43 - ret i32 0, !dbg !44 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare i32 @svf_assert(...) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!11, !12, !13, !14, !15, !16, !17} -!llvm.ident = !{!18} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_nullptr_def_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c9b714616143a75c636d37ced957d7ac") -!2 = !{!3} -!3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!4 = !DIDerivedType(tag: DW_TAG_typedef, name: "twoIntsStruct", file: !5, line: 18, baseType: !6) -!5 = !DIFile(filename: "src/ae_assert_tests/BASIC_nullptr_def_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c9b714616143a75c636d37ced957d7ac") -!6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_twoIntsStruct", file: !5, line: 15, size: 64, elements: !7) -!7 = !{!8, !10} -!8 = !DIDerivedType(tag: DW_TAG_member, name: "intOne", scope: !6, file: !5, line: 16, baseType: !9, size: 32) -!9 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!10 = !DIDerivedType(tag: DW_TAG_member, name: "intTwo", scope: !6, file: !5, line: 17, baseType: !9, size: 32, offset: 32) -!11 = !{i32 7, !"Dwarf Version", i32 5} -!12 = !{i32 2, !"Debug Info Version", i32 3} -!13 = !{i32 1, !"wchar_size", i32 4} -!14 = !{i32 8, !"PIC Level", i32 2} -!15 = !{i32 7, !"PIE Level", i32 2} -!16 = !{i32 7, !"uwtable", i32 2} -!17 = !{i32 7, !"frame-pointer", i32 2} -!18 = !{!"clang version 16.0.0"} -!19 = distinct !DISubprogram(name: "main", scope: !5, file: !5, line: 20, type: !20, scopeLine: 20, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !22) -!20 = !DISubroutineType(types: !21) -!21 = !{!9} -!22 = !{} -!23 = !DILocalVariable(name: "twoIntsStructPointer", scope: !19, file: !5, line: 21, type: !3) -!24 = !DILocation(line: 21, column: 18, scope: !19) -!25 = !DILocation(line: 21, column: 59, scope: !19) -!26 = !DILocation(line: 22, column: 2, scope: !19) -!27 = !DILocation(line: 22, column: 24, scope: !19) -!28 = !DILocation(line: 22, column: 31, scope: !19) -!29 = !DILocation(line: 23, column: 5, scope: !19) -!30 = !DILocation(line: 23, column: 27, scope: !19) -!31 = !DILocation(line: 23, column: 34, scope: !19) -!32 = !DILocation(line: 24, column: 9, scope: !33) -!33 = distinct !DILexicalBlock(scope: !19, file: !5, line: 24, column: 9) -!34 = !DILocation(line: 24, column: 31, scope: !33) -!35 = !DILocation(line: 24, column: 38, scope: !33) -!36 = !DILocation(line: 24, column: 9, scope: !19) -!37 = !DILocation(line: 25, column: 30, scope: !38) -!38 = distinct !DILexicalBlock(scope: !33, file: !5, line: 24, column: 43) -!39 = !DILocation(line: 26, column: 5, scope: !38) -!40 = !DILocation(line: 27, column: 13, scope: !19) -!41 = !DILocation(line: 27, column: 35, scope: !19) -!42 = !DILocation(line: 27, column: 42, scope: !19) -!43 = !DILocation(line: 27, column: 2, scope: !19) -!44 = !DILocation(line: 29, column: 2, scope: !19) diff --git a/test_cases_bc/ae_assert_tests/BASIC_ptr_assign_0-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_ptr_assign_0-0.c.bc deleted file mode 100644 index 2d7e49ad..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_ptr_assign_0-0.c.bc +++ /dev/null @@ -1,63 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_assign_0-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_ptr_assign_0-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %p = alloca ptr, align 8 - %a = alloca i32, align 4 - call void @llvm.dbg.declare(metadata ptr %p, metadata !16, metadata !DIExpression()), !dbg !18 - call void @llvm.dbg.declare(metadata ptr %a, metadata !19, metadata !DIExpression()), !dbg !20 - store i32 1, ptr %a, align 4, !dbg !20 - store ptr %a, ptr %p, align 8, !dbg !21 - %0 = load ptr, ptr %p, align 8, !dbg !22 - store i32 3, ptr %0, align 4, !dbg !23 - %1 = load i32, ptr %a, align 4, !dbg !24 - %cmp = icmp eq i32 %1, 3, !dbg !25 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !26 - ret i32 0, !dbg !27 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_ptr_assign_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "cb1dc5512cccf3bb03c349e8288ea0b1") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_ptr_assign_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "cb1dc5512cccf3bb03c349e8288ea0b1") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "p", scope: !10, file: !11, line: 10, type: !17) -!17 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !14, size: 64) -!18 = !DILocation(line: 10, column: 10, scope: !10) -!19 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 11, type: !14) -!20 = !DILocation(line: 11, column: 9, scope: !10) -!21 = !DILocation(line: 12, column: 7, scope: !10) -!22 = !DILocation(line: 13, column: 6, scope: !10) -!23 = !DILocation(line: 13, column: 8, scope: !10) -!24 = !DILocation(line: 14, column: 16, scope: !10) -!25 = !DILocation(line: 14, column: 18, scope: !10) -!26 = !DILocation(line: 14, column: 5, scope: !10) -!27 = !DILocation(line: 15, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_ptr_call1-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_ptr_call1-0.c.bc deleted file mode 100644 index 0e978ee3..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_ptr_call1-0.c.bc +++ /dev/null @@ -1,128 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_call1-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_ptr_call1-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %p = alloca ptr, align 8 - %q = alloca ptr, align 8 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %p, metadata !16, metadata !DIExpression()), !dbg !18 - call void @llvm.dbg.declare(metadata ptr %q, metadata !19, metadata !DIExpression()), !dbg !23 - %call = call i32 @nd_int(), !dbg !24 - %tobool = icmp ne i32 %call, 0, !dbg !24 - br i1 %tobool, label %if.then, label %if.end, !dbg !26 - -if.then: ; preds = %entry - br label %if.end, !dbg !27 - -if.end: ; preds = %if.then, %entry - call void @llvm.dbg.declare(metadata ptr %x, metadata !29, metadata !DIExpression()), !dbg !30 - %call1 = call i32 @a(), !dbg !31 - store i32 %call1, ptr %x, align 4, !dbg !30 - call void @llvm.dbg.declare(metadata ptr %y, metadata !32, metadata !DIExpression()), !dbg !33 - %call2 = call i32 @c(i32 noundef 2), !dbg !34 - store i32 %call2, ptr %y, align 4, !dbg !33 - %0 = load i32, ptr %x, align 4, !dbg !35 - %cmp = icmp sge i32 %0, 5, !dbg !36 - br i1 %cmp, label %land.rhs, label %land.end, !dbg !37 - -land.rhs: ; preds = %if.end - %1 = load i32, ptr %y, align 4, !dbg !38 - %cmp3 = icmp sge i32 %1, 7, !dbg !39 - br label %land.end - -land.end: ; preds = %land.rhs, %if.end - %2 = phi i1 [ false, %if.end ], [ %cmp3, %land.rhs ], !dbg !40 - call void @svf_assert(i1 noundef zeroext %2), !dbg !41 - ret i32 0, !dbg !42 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare i32 @nd_int() #2 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @a() #0 !dbg !43 { -entry: - ret i32 10, !dbg !44 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @c(i32 noundef %x) #0 !dbg !45 { -entry: - %x.addr = alloca i32, align 4 - store i32 %x, ptr %x.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !46, metadata !DIExpression()), !dbg !47 - %0 = load i32, ptr %x.addr, align 4, !dbg !48 - %add = add nsw i32 %0, 5, !dbg !49 - ret i32 %add, !dbg !50 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_ptr_call1-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "170ac1ec762dee7b184a9abdb83dd549") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_ptr_call1-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "170ac1ec762dee7b184a9abdb83dd549") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "p", scope: !10, file: !11, line: 10, type: !17) -!17 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !12, size: 64) -!18 = !DILocation(line: 10, column: 9, scope: !10) -!19 = !DILocalVariable(name: "q", scope: !10, file: !11, line: 11, type: !20) -!20 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !21, size: 64) -!21 = !DISubroutineType(types: !22) -!22 = !{!14, !14} -!23 = !DILocation(line: 11, column: 9, scope: !10) -!24 = !DILocation(line: 13, column: 7, scope: !25) -!25 = distinct !DILexicalBlock(scope: !10, file: !11, line: 13, column: 7) -!26 = !DILocation(line: 13, column: 7, scope: !10) -!27 = !DILocation(line: 19, column: 3, scope: !28) -!28 = distinct !DILexicalBlock(scope: !25, file: !11, line: 13, column: 17) -!29 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 21, type: !14) -!30 = !DILocation(line: 21, column: 7, scope: !10) -!31 = !DILocation(line: 21, column: 11, scope: !10) -!32 = !DILocalVariable(name: "y", scope: !10, file: !11, line: 22, type: !14) -!33 = !DILocation(line: 22, column: 7, scope: !10) -!34 = !DILocation(line: 22, column: 11, scope: !10) -!35 = !DILocation(line: 24, column: 14, scope: !10) -!36 = !DILocation(line: 24, column: 15, scope: !10) -!37 = !DILocation(line: 24, column: 20, scope: !10) -!38 = !DILocation(line: 24, column: 23, scope: !10) -!39 = !DILocation(line: 24, column: 24, scope: !10) -!40 = !DILocation(line: 0, scope: !10) -!41 = !DILocation(line: 24, column: 3, scope: !10) -!42 = !DILocation(line: 26, column: 3, scope: !10) -!43 = distinct !DISubprogram(name: "a", scope: !11, file: !11, line: 29, type: !12, scopeLine: 29, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!44 = !DILocation(line: 29, column: 10, scope: !43) -!45 = distinct !DISubprogram(name: "c", scope: !11, file: !11, line: 30, type: !21, scopeLine: 30, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!46 = !DILocalVariable(name: "x", arg: 1, scope: !45, file: !11, line: 30, type: !14) -!47 = !DILocation(line: 30, column: 11, scope: !45) -!48 = !DILocation(line: 30, column: 22, scope: !45) -!49 = !DILocation(line: 30, column: 23, scope: !45) -!50 = !DILocation(line: 30, column: 15, scope: !45) diff --git a/test_cases_bc/ae_assert_tests/BASIC_ptr_call2-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_ptr_call2-0.c.bc deleted file mode 100644 index 2b1ebfbb..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_ptr_call2-0.c.bc +++ /dev/null @@ -1,80 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_call2-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_ptr_call2-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %y = alloca i32, align 4 - %x = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %y, metadata !16, metadata !DIExpression()), !dbg !17 - %call = call i32 @c(i32 noundef 2), !dbg !18 - store i32 %call, ptr %y, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %x, metadata !19, metadata !DIExpression()), !dbg !20 - %call1 = call i32 @c(i32 noundef 3), !dbg !21 - store i32 %call1, ptr %x, align 4, !dbg !20 - %0 = load i32, ptr %x, align 4, !dbg !22 - %cmp = icmp eq i32 %0, 3, !dbg !23 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !24 - ret i32 0, !dbg !25 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @c(i32 noundef %z) #0 !dbg !26 { -entry: - %z.addr = alloca i32, align 4 - store i32 %z, ptr %z.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %z.addr, metadata !29, metadata !DIExpression()), !dbg !30 - %0 = load i32, ptr %z.addr, align 4, !dbg !31 - ret i32 %0, !dbg !32 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_ptr_call2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "64d7f2059ccffb53abc5bcee213ab19b") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 8, type: !12, scopeLine: 8, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_ptr_call2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "64d7f2059ccffb53abc5bcee213ab19b") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "y", scope: !10, file: !11, line: 10, type: !14) -!17 = !DILocation(line: 10, column: 7, scope: !10) -!18 = !DILocation(line: 10, column: 11, scope: !10) -!19 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 11, type: !14) -!20 = !DILocation(line: 11, column: 7, scope: !10) -!21 = !DILocation(line: 11, column: 11, scope: !10) -!22 = !DILocation(line: 13, column: 14, scope: !10) -!23 = !DILocation(line: 13, column: 15, scope: !10) -!24 = !DILocation(line: 13, column: 3, scope: !10) -!25 = !DILocation(line: 15, column: 3, scope: !10) -!26 = distinct !DISubprogram(name: "c", scope: !11, file: !11, line: 18, type: !27, scopeLine: 18, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!27 = !DISubroutineType(types: !28) -!28 = !{!14, !14} -!29 = !DILocalVariable(name: "z", arg: 1, scope: !26, file: !11, line: 18, type: !14) -!30 = !DILocation(line: 18, column: 11, scope: !26) -!31 = !DILocation(line: 18, column: 22, scope: !26) -!32 = !DILocation(line: 18, column: 15, scope: !26) diff --git a/test_cases_bc/ae_assert_tests/BASIC_ptr_func_0-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_ptr_func_0-0.c.bc deleted file mode 100644 index 690c340c..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_ptr_func_0-0.c.bc +++ /dev/null @@ -1,117 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_func_0-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_ptr_func_0-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %p, ptr noundef %q) #0 !dbg !10 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - %t = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !18, metadata !DIExpression()), !dbg !19 - store ptr %q, ptr %q.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %q.addr, metadata !20, metadata !DIExpression()), !dbg !21 - call void @llvm.dbg.declare(metadata ptr %t, metadata !22, metadata !DIExpression()), !dbg !23 - %0 = load ptr, ptr %p.addr, align 8, !dbg !24 - %1 = load ptr, ptr %0, align 8, !dbg !25 - store ptr %1, ptr %t, align 8, !dbg !23 - %2 = load ptr, ptr %q.addr, align 8, !dbg !26 - %3 = load ptr, ptr %2, align 8, !dbg !27 - %4 = load ptr, ptr %p.addr, align 8, !dbg !28 - store ptr %3, ptr %4, align 8, !dbg !29 - %5 = load ptr, ptr %t, align 8, !dbg !30 - %6 = load ptr, ptr %q.addr, align 8, !dbg !31 - store ptr %5, ptr %6, align 8, !dbg !32 - %7 = load ptr, ptr %q.addr, align 8, !dbg !33 - %8 = load ptr, ptr %7, align 8, !dbg !34 - %9 = load ptr, ptr %t, align 8, !dbg !35 - %cmp = icmp eq ptr %8, %9, !dbg !36 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !37 - ret void, !dbg !38 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !39 { -entry: - %a1 = alloca i8, align 1 - %b1 = alloca i8, align 1 - %a = alloca ptr, align 8 - %b = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %a1, metadata !43, metadata !DIExpression()), !dbg !44 - call void @llvm.dbg.declare(metadata ptr %b1, metadata !45, metadata !DIExpression()), !dbg !46 - call void @llvm.dbg.declare(metadata ptr %a, metadata !47, metadata !DIExpression()), !dbg !48 - store ptr %a1, ptr %a, align 8, !dbg !48 - call void @llvm.dbg.declare(metadata ptr %b, metadata !49, metadata !DIExpression()), !dbg !50 - store ptr %b1, ptr %b, align 8, !dbg !50 - call void @swap(ptr noundef %a, ptr noundef %b), !dbg !51 - ret i32 0, !dbg !52 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_ptr_func_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c8b7df03c0d7b53bca2ab712150da941") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "swap", scope: !11, file: !11, line: 3, type: !12, scopeLine: 3, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_ptr_func_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c8b7df03c0d7b53bca2ab712150da941") -!12 = !DISubroutineType(types: !13) -!13 = !{null, !14, !14} -!14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) -!15 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !16, size: 64) -!16 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!17 = !{} -!18 = !DILocalVariable(name: "p", arg: 1, scope: !10, file: !11, line: 3, type: !14) -!19 = !DILocation(line: 3, column: 18, scope: !10) -!20 = !DILocalVariable(name: "q", arg: 2, scope: !10, file: !11, line: 3, type: !14) -!21 = !DILocation(line: 3, column: 28, scope: !10) -!22 = !DILocalVariable(name: "t", scope: !10, file: !11, line: 4, type: !15) -!23 = !DILocation(line: 4, column: 9, scope: !10) -!24 = !DILocation(line: 4, column: 14, scope: !10) -!25 = !DILocation(line: 4, column: 13, scope: !10) -!26 = !DILocation(line: 5, column: 14, scope: !10) -!27 = !DILocation(line: 5, column: 13, scope: !10) -!28 = !DILocation(line: 5, column: 9, scope: !10) -!29 = !DILocation(line: 5, column: 11, scope: !10) -!30 = !DILocation(line: 6, column: 13, scope: !10) -!31 = !DILocation(line: 6, column: 9, scope: !10) -!32 = !DILocation(line: 6, column: 11, scope: !10) -!33 = !DILocation(line: 7, column: 19, scope: !10) -!34 = !DILocation(line: 7, column: 18, scope: !10) -!35 = !DILocation(line: 7, column: 24, scope: !10) -!36 = !DILocation(line: 7, column: 21, scope: !10) -!37 = !DILocation(line: 7, column: 7, scope: !10) -!38 = !DILocation(line: 8, column: 1, scope: !10) -!39 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 9, type: !40, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) -!40 = !DISubroutineType(types: !41) -!41 = !{!42} -!42 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!43 = !DILocalVariable(name: "a1", scope: !39, file: !11, line: 10, type: !16) -!44 = !DILocation(line: 10, column: 12, scope: !39) -!45 = !DILocalVariable(name: "b1", scope: !39, file: !11, line: 10, type: !16) -!46 = !DILocation(line: 10, column: 16, scope: !39) -!47 = !DILocalVariable(name: "a", scope: !39, file: !11, line: 11, type: !15) -!48 = !DILocation(line: 11, column: 13, scope: !39) -!49 = !DILocalVariable(name: "b", scope: !39, file: !11, line: 12, type: !15) -!50 = !DILocation(line: 12, column: 13, scope: !39) -!51 = !DILocation(line: 13, column: 7, scope: !39) -!52 = !DILocation(line: 14, column: 1, scope: !39) diff --git a/test_cases_bc/ae_assert_tests/BASIC_ptr_func_1-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_ptr_func_1-0.c.bc deleted file mode 100644 index 5ed87d42..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_ptr_func_1-0.c.bc +++ /dev/null @@ -1,134 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_func_1-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_ptr_func_1-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %p = alloca ptr, align 8 - %q = alloca ptr, align 8 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %p, metadata !16, metadata !DIExpression()), !dbg !18 - call void @llvm.dbg.declare(metadata ptr %q, metadata !19, metadata !DIExpression()), !dbg !23 - %call = call i32 @nd_int(), !dbg !24 - %tobool = icmp ne i32 %call, 0, !dbg !24 - br i1 %tobool, label %if.then, label %if.end, !dbg !26 - -if.then: ; preds = %entry - store ptr @a, ptr %p, align 8, !dbg !27 - store ptr @c, ptr %q, align 8, !dbg !29 - br label %if.end, !dbg !30 - -if.end: ; preds = %if.then, %entry - call void @llvm.dbg.declare(metadata ptr %x, metadata !31, metadata !DIExpression()), !dbg !32 - %0 = load ptr, ptr %p, align 8, !dbg !33 - %call1 = call i32 %0(), !dbg !33 - store i32 %call1, ptr %x, align 4, !dbg !32 - call void @llvm.dbg.declare(metadata ptr %y, metadata !34, metadata !DIExpression()), !dbg !35 - %1 = load ptr, ptr %q, align 8, !dbg !36 - %call2 = call i32 %1(i32 noundef 2), !dbg !36 - store i32 %call2, ptr %y, align 4, !dbg !35 - %2 = load i32, ptr %x, align 4, !dbg !37 - %cmp = icmp sge i32 %2, 5, !dbg !38 - br i1 %cmp, label %land.rhs, label %land.end, !dbg !39 - -land.rhs: ; preds = %if.end - %3 = load i32, ptr %y, align 4, !dbg !40 - %cmp3 = icmp sge i32 %3, 7, !dbg !41 - br label %land.end - -land.end: ; preds = %land.rhs, %if.end - %4 = phi i1 [ false, %if.end ], [ %cmp3, %land.rhs ], !dbg !42 - call void @svf_assert(i1 noundef zeroext %4), !dbg !43 - ret i32 0, !dbg !44 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare i32 @nd_int() #2 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @a() #0 !dbg !45 { -entry: - ret i32 10, !dbg !46 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @c(i32 noundef %x) #0 !dbg !47 { -entry: - %x.addr = alloca i32, align 4 - store i32 %x, ptr %x.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !48, metadata !DIExpression()), !dbg !49 - %0 = load i32, ptr %x.addr, align 4, !dbg !50 - %add = add nsw i32 %0, 5, !dbg !51 - ret i32 %add, !dbg !52 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_ptr_func_1-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c780b1b60dee127e0bd37f2c6b480056") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_ptr_func_1-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c780b1b60dee127e0bd37f2c6b480056") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "p", scope: !10, file: !11, line: 10, type: !17) -!17 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !12, size: 64) -!18 = !DILocation(line: 10, column: 9, scope: !10) -!19 = !DILocalVariable(name: "q", scope: !10, file: !11, line: 11, type: !20) -!20 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !21, size: 64) -!21 = !DISubroutineType(types: !22) -!22 = !{!14, !14} -!23 = !DILocation(line: 11, column: 9, scope: !10) -!24 = !DILocation(line: 13, column: 7, scope: !25) -!25 = distinct !DILexicalBlock(scope: !10, file: !11, line: 13, column: 7) -!26 = !DILocation(line: 13, column: 7, scope: !10) -!27 = !DILocation(line: 14, column: 9, scope: !28) -!28 = distinct !DILexicalBlock(scope: !25, file: !11, line: 13, column: 17) -!29 = !DILocation(line: 15, column: 9, scope: !28) -!30 = !DILocation(line: 16, column: 3, scope: !28) -!31 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 18, type: !14) -!32 = !DILocation(line: 18, column: 7, scope: !10) -!33 = !DILocation(line: 18, column: 11, scope: !10) -!34 = !DILocalVariable(name: "y", scope: !10, file: !11, line: 19, type: !14) -!35 = !DILocation(line: 19, column: 7, scope: !10) -!36 = !DILocation(line: 19, column: 11, scope: !10) -!37 = !DILocation(line: 21, column: 14, scope: !10) -!38 = !DILocation(line: 21, column: 15, scope: !10) -!39 = !DILocation(line: 21, column: 20, scope: !10) -!40 = !DILocation(line: 21, column: 23, scope: !10) -!41 = !DILocation(line: 21, column: 24, scope: !10) -!42 = !DILocation(line: 0, scope: !10) -!43 = !DILocation(line: 21, column: 3, scope: !10) -!44 = !DILocation(line: 23, column: 3, scope: !10) -!45 = distinct !DISubprogram(name: "a", scope: !11, file: !11, line: 26, type: !12, scopeLine: 26, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!46 = !DILocation(line: 26, column: 10, scope: !45) -!47 = distinct !DISubprogram(name: "c", scope: !11, file: !11, line: 27, type: !21, scopeLine: 27, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!48 = !DILocalVariable(name: "x", arg: 1, scope: !47, file: !11, line: 27, type: !14) -!49 = !DILocation(line: 27, column: 11, scope: !47) -!50 = !DILocation(line: 27, column: 22, scope: !47) -!51 = !DILocation(line: 27, column: 23, scope: !47) -!52 = !DILocation(line: 27, column: 15, scope: !47) diff --git a/test_cases_bc/ae_assert_tests/BASIC_ptr_func_4-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_ptr_func_4-0.c.bc deleted file mode 100644 index 3a2e823c..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_ptr_func_4-0.c.bc +++ /dev/null @@ -1,135 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_func_4-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_ptr_func_4-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %q = alloca ptr, align 8 - %y = alloca i32, align 4 - %r = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !19, metadata !DIExpression()), !dbg !20 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !21, metadata !DIExpression()), !dbg !22 - call void @llvm.dbg.declare(metadata ptr %q, metadata !23, metadata !DIExpression()), !dbg !28 - %call = call i32 @nd_int(), !dbg !29 - %tobool = icmp ne i32 %call, 0, !dbg !29 - br i1 %tobool, label %if.then, label %if.else, !dbg !31 - -if.then: ; preds = %entry - store ptr @c, ptr %q, align 8, !dbg !32 - br label %if.end, !dbg !34 - -if.else: ; preds = %entry - store ptr @c, ptr %q, align 8, !dbg !35 - br label %if.end - -if.end: ; preds = %if.else, %if.then - call void @llvm.dbg.declare(metadata ptr %y, metadata !37, metadata !DIExpression()), !dbg !38 - store i32 5, ptr %y, align 4, !dbg !38 - call void @llvm.dbg.declare(metadata ptr %r, metadata !39, metadata !DIExpression()), !dbg !40 - %0 = load ptr, ptr %q, align 8, !dbg !41 - %call1 = call i32 %0(ptr noundef %y), !dbg !41 - store i32 %call1, ptr %r, align 4, !dbg !40 - %1 = load i32, ptr %y, align 4, !dbg !42 - %cmp = icmp sge i32 %1, 7, !dbg !43 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !44 - %2 = load i32, ptr %retval, align 4, !dbg !45 - ret i32 %2, !dbg !45 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare i32 @nd_int() #2 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @c(ptr noundef %x) #0 !dbg !46 { -entry: - %x.addr = alloca ptr, align 8 - store ptr %x, ptr %x.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !47, metadata !DIExpression()), !dbg !48 - %0 = load ptr, ptr %x.addr, align 8, !dbg !49 - %1 = load i32, ptr %0, align 4, !dbg !50 - %add = add nsw i32 %1, 5, !dbg !51 - %2 = load ptr, ptr %x.addr, align 8, !dbg !52 - store i32 %add, ptr %2, align 4, !dbg !53 - %call = call i32 @nd_int(), !dbg !54 - %tobool = icmp ne i32 %call, 0, !dbg !54 - %3 = zext i1 %tobool to i64, !dbg !54 - %cond = select i1 %tobool, i32 0, i32 1, !dbg !54 - ret i32 %cond, !dbg !55 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_ptr_func_4-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e2196daf9539908a930fd53e4ab037a9") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 7, type: !12, scopeLine: 7, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !18) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_ptr_func_4-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e2196daf9539908a930fd53e4ab037a9") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !14, !15} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !16, size: 64) -!16 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !17, size: 64) -!17 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!18 = !{} -!19 = !DILocalVariable(name: "argc", arg: 1, scope: !10, file: !11, line: 7, type: !14) -!20 = !DILocation(line: 7, column: 14, scope: !10) -!21 = !DILocalVariable(name: "argv", arg: 2, scope: !10, file: !11, line: 7, type: !15) -!22 = !DILocation(line: 7, column: 27, scope: !10) -!23 = !DILocalVariable(name: "q", scope: !10, file: !11, line: 8, type: !24) -!24 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64) -!25 = !DISubroutineType(types: !26) -!26 = !{!14, !27} -!27 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !14, size: 64) -!28 = !DILocation(line: 8, column: 9, scope: !10) -!29 = !DILocation(line: 9, column: 7, scope: !30) -!30 = distinct !DILexicalBlock(scope: !10, file: !11, line: 9, column: 7) -!31 = !DILocation(line: 9, column: 7, scope: !10) -!32 = !DILocation(line: 10, column: 7, scope: !33) -!33 = distinct !DILexicalBlock(scope: !30, file: !11, line: 9, column: 17) -!34 = !DILocation(line: 11, column: 3, scope: !33) -!35 = !DILocation(line: 12, column: 9, scope: !36) -!36 = distinct !DILexicalBlock(scope: !30, file: !11, line: 11, column: 10) -!37 = !DILocalVariable(name: "y", scope: !10, file: !11, line: 14, type: !14) -!38 = !DILocation(line: 14, column: 7, scope: !10) -!39 = !DILocalVariable(name: "r", scope: !10, file: !11, line: 15, type: !14) -!40 = !DILocation(line: 15, column: 7, scope: !10) -!41 = !DILocation(line: 15, column: 11, scope: !10) -!42 = !DILocation(line: 17, column: 14, scope: !10) -!43 = !DILocation(line: 17, column: 16, scope: !10) -!44 = !DILocation(line: 17, column: 3, scope: !10) -!45 = !DILocation(line: 18, column: 1, scope: !10) -!46 = distinct !DISubprogram(name: "c", scope: !11, file: !11, line: 20, type: !25, scopeLine: 20, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !18) -!47 = !DILocalVariable(name: "x", arg: 1, scope: !46, file: !11, line: 20, type: !27) -!48 = !DILocation(line: 20, column: 12, scope: !46) -!49 = !DILocation(line: 21, column: 9, scope: !46) -!50 = !DILocation(line: 21, column: 8, scope: !46) -!51 = !DILocation(line: 21, column: 10, scope: !46) -!52 = !DILocation(line: 21, column: 4, scope: !46) -!53 = !DILocation(line: 21, column: 6, scope: !46) -!54 = !DILocation(line: 22, column: 11, scope: !46) -!55 = !DILocation(line: 22, column: 3, scope: !46) diff --git a/test_cases_bc/ae_assert_tests/BASIC_ptr_func_6-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_ptr_func_6-0.c.bc deleted file mode 100644 index 509d407a..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_ptr_func_6-0.c.bc +++ /dev/null @@ -1,106 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_func_6-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_ptr_func_6-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !10 { -entry: - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %q = alloca ptr, align 8 - %y = alloca i32, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !19, metadata !DIExpression()), !dbg !20 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !21, metadata !DIExpression()), !dbg !22 - call void @llvm.dbg.declare(metadata ptr %q, metadata !23, metadata !DIExpression()), !dbg !28 - store ptr @c, ptr %q, align 8, !dbg !28 - %call = call i32 @nd_int(), !dbg !29 - call void @llvm.dbg.declare(metadata ptr %y, metadata !30, metadata !DIExpression()), !dbg !31 - store i32 5, ptr %y, align 4, !dbg !31 - %0 = load ptr, ptr %q, align 8, !dbg !32 - call void %0(ptr noundef %y), !dbg !32 - %1 = load i32, ptr %y, align 4, !dbg !33 - %cmp = icmp sge i32 %1, 7, !dbg !34 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !35 - ret i32 0, !dbg !36 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @c(ptr noundef %x) #0 !dbg !37 { -entry: - %x.addr = alloca ptr, align 8 - store ptr %x, ptr %x.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !38, metadata !DIExpression()), !dbg !39 - %0 = load ptr, ptr %x.addr, align 8, !dbg !40 - %1 = load i32, ptr %0, align 4, !dbg !41 - %add = add nsw i32 %1, 5, !dbg !42 - %2 = load ptr, ptr %x.addr, align 8, !dbg !43 - store i32 %add, ptr %2, align 4, !dbg !44 - %call = call i32 @nd_int(), !dbg !45 - ret void, !dbg !46 -} - -declare i32 @nd_int() #2 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_ptr_func_6-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8fb03d5c9add5111986eb31879a136b1") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 7, type: !12, scopeLine: 7, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !18) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_ptr_func_6-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8fb03d5c9add5111986eb31879a136b1") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !14, !15} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !16, size: 64) -!16 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !17, size: 64) -!17 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!18 = !{} -!19 = !DILocalVariable(name: "argc", arg: 1, scope: !10, file: !11, line: 7, type: !14) -!20 = !DILocation(line: 7, column: 14, scope: !10) -!21 = !DILocalVariable(name: "argv", arg: 2, scope: !10, file: !11, line: 7, type: !15) -!22 = !DILocation(line: 7, column: 27, scope: !10) -!23 = !DILocalVariable(name: "q", scope: !10, file: !11, line: 8, type: !24) -!24 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64) -!25 = !DISubroutineType(types: !26) -!26 = !{null, !27} -!27 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !14, size: 64) -!28 = !DILocation(line: 8, column: 10, scope: !10) -!29 = !DILocation(line: 9, column: 3, scope: !10) -!30 = !DILocalVariable(name: "y", scope: !10, file: !11, line: 11, type: !14) -!31 = !DILocation(line: 11, column: 7, scope: !10) -!32 = !DILocation(line: 12, column: 3, scope: !10) -!33 = !DILocation(line: 14, column: 14, scope: !10) -!34 = !DILocation(line: 14, column: 16, scope: !10) -!35 = !DILocation(line: 14, column: 3, scope: !10) -!36 = !DILocation(line: 15, column: 1, scope: !10) -!37 = distinct !DISubprogram(name: "c", scope: !11, file: !11, line: 17, type: !25, scopeLine: 17, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !18) -!38 = !DILocalVariable(name: "x", arg: 1, scope: !37, file: !11, line: 17, type: !27) -!39 = !DILocation(line: 17, column: 13, scope: !37) -!40 = !DILocation(line: 18, column: 9, scope: !37) -!41 = !DILocation(line: 18, column: 8, scope: !37) -!42 = !DILocation(line: 18, column: 10, scope: !37) -!43 = !DILocation(line: 18, column: 4, scope: !37) -!44 = !DILocation(line: 18, column: 6, scope: !37) -!45 = !DILocation(line: 19, column: 3, scope: !37) -!46 = !DILocation(line: 20, column: 1, scope: !37) diff --git a/test_cases_bc/ae_assert_tests/BASIC_ptr_s32_2-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_ptr_s32_2-0.c.bc deleted file mode 100644 index b4053ee6..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_ptr_s32_2-0.c.bc +++ /dev/null @@ -1,66 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_ptr_s32_2-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_ptr_s32_2-0.c" -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-unknown-linux-gnu" - -@__const.main.a = private unnamed_addr constant [3 x i32] [i32 1, i32 2, i32 3], align 4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !13 { -entry: - %a = alloca [3 x i32], align 4 - %p = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %a, metadata !18, metadata !DIExpression()), !dbg !22 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %a, ptr align 4 @__const.main.a, i64 12, i1 false), !dbg !22 - call void @llvm.dbg.declare(metadata ptr %p, metadata !23, metadata !DIExpression()), !dbg !24 - %0 = alloca i8, i64 16, align 16, !dbg !25 - store ptr %0, ptr %p, align 8, !dbg !24 - %1 = load ptr, ptr %p, align 8, !dbg !26 - %arraydecay = getelementptr inbounds [3 x i32], ptr %a, i64 0, i64 0, !dbg !27 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1, ptr align 4 %arraydecay, i64 12, i1 false), !dbg !27 - ret i32 0, !dbg !28 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!5, !6, !7, !8, !9, !10, !11} -!llvm.ident = !{!12} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_ptr_s32_2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fb6df4584ba3688c8b656d4d1e01eb61") -!2 = !{!3} -!3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!4 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!5 = !{i32 7, !"Dwarf Version", i32 5} -!6 = !{i32 2, !"Debug Info Version", i32 3} -!7 = !{i32 1, !"wchar_size", i32 4} -!8 = !{i32 8, !"PIC Level", i32 2} -!9 = !{i32 7, !"PIE Level", i32 2} -!10 = !{i32 7, !"uwtable", i32 2} -!11 = !{i32 7, !"frame-pointer", i32 2} -!12 = !{!"clang version 16.0.0"} -!13 = distinct !DISubprogram(name: "main", scope: !14, file: !14, line: 9, type: !15, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) -!14 = !DIFile(filename: "src/ae_assert_tests/BASIC_ptr_s32_2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fb6df4584ba3688c8b656d4d1e01eb61") -!15 = !DISubroutineType(types: !16) -!16 = !{!4} -!17 = !{} -!18 = !DILocalVariable(name: "a", scope: !13, file: !14, line: 10, type: !19) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 96, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 3) -!22 = !DILocation(line: 10, column: 9, scope: !13) -!23 = !DILocalVariable(name: "p", scope: !13, file: !14, line: 11, type: !3) -!24 = !DILocation(line: 11, column: 10, scope: !13) -!25 = !DILocation(line: 11, column: 21, scope: !13) -!26 = !DILocation(line: 12, column: 12, scope: !13) -!27 = !DILocation(line: 12, column: 5, scope: !13) -!28 = !DILocation(line: 13, column: 1, scope: !13) diff --git a/test_cases_bc/ae_assert_tests/BASIC_struct_array_0-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_struct_array_0-0.c.bc deleted file mode 100644 index 8e675405..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_struct_array_0-0.c.bc +++ /dev/null @@ -1,92 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_struct_array_0-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_struct_array_0-0.c" -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-unknown-linux-gnu" - -%struct.A = type { i32, [3 x i32] } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca %struct.A, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !25 - %b = getelementptr inbounds %struct.A, ptr %a, i32 0, i32 1, !dbg !26 - %arrayidx = getelementptr inbounds [3 x i32], ptr %b, i64 0, i64 0, !dbg !27 - store i32 4, ptr %arrayidx, align 4, !dbg !28 - %b1 = getelementptr inbounds %struct.A, ptr %a, i32 0, i32 1, !dbg !29 - %arrayidx2 = getelementptr inbounds [3 x i32], ptr %b1, i64 0, i64 1, !dbg !30 - store i32 5, ptr %arrayidx2, align 4, !dbg !31 - %b3 = getelementptr inbounds %struct.A, ptr %a, i32 0, i32 1, !dbg !32 - %arrayidx4 = getelementptr inbounds [3 x i32], ptr %b3, i64 0, i64 2, !dbg !33 - store i32 6, ptr %arrayidx4, align 4, !dbg !34 - %a5 = getelementptr inbounds %struct.A, ptr %a, i32 0, i32 0, !dbg !35 - store i32 1, ptr %a5, align 4, !dbg !36 - %b6 = getelementptr inbounds %struct.A, ptr %a, i32 0, i32 1, !dbg !37 - %a7 = getelementptr inbounds %struct.A, ptr %a, i32 0, i32 0, !dbg !38 - %0 = load i32, ptr %a7, align 4, !dbg !38 - %idxprom = sext i32 %0 to i64, !dbg !39 - %arrayidx8 = getelementptr inbounds [3 x i32], ptr %b6, i64 0, i64 %idxprom, !dbg !39 - %1 = load i32, ptr %arrayidx8, align 4, !dbg !39 - %cmp = icmp eq i32 %1, 5, !dbg !40 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !41 - ret i32 0, !dbg !42 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_struct_array_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "964c3c8a922dba2af5e9119a11f58ef0") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 12, type: !12, scopeLine: 12, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_struct_array_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "964c3c8a922dba2af5e9119a11f58ef0") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 13, type: !17) -!17 = !DIDerivedType(tag: DW_TAG_typedef, name: "A", file: !11, line: 11, baseType: !18) -!18 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !11, line: 8, size: 128, elements: !19) -!19 = !{!20, !21} -!20 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !18, file: !11, line: 9, baseType: !14, size: 32) -!21 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !18, file: !11, line: 10, baseType: !22, size: 96, offset: 32) -!22 = !DICompositeType(tag: DW_TAG_array_type, baseType: !14, size: 96, elements: !23) -!23 = !{!24} -!24 = !DISubrange(count: 3) -!25 = !DILocation(line: 13, column: 7, scope: !10) -!26 = !DILocation(line: 14, column: 7, scope: !10) -!27 = !DILocation(line: 14, column: 5, scope: !10) -!28 = !DILocation(line: 14, column: 12, scope: !10) -!29 = !DILocation(line: 15, column: 7, scope: !10) -!30 = !DILocation(line: 15, column: 5, scope: !10) -!31 = !DILocation(line: 15, column: 12, scope: !10) -!32 = !DILocation(line: 16, column: 7, scope: !10) -!33 = !DILocation(line: 16, column: 5, scope: !10) -!34 = !DILocation(line: 16, column: 12, scope: !10) -!35 = !DILocation(line: 17, column: 7, scope: !10) -!36 = !DILocation(line: 17, column: 9, scope: !10) -!37 = !DILocation(line: 18, column: 18, scope: !10) -!38 = !DILocation(line: 18, column: 22, scope: !10) -!39 = !DILocation(line: 18, column: 16, scope: !10) -!40 = !DILocation(line: 18, column: 25, scope: !10) -!41 = !DILocation(line: 18, column: 5, scope: !10) -!42 = !DILocation(line: 19, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_struct_assign_0-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_struct_assign_0-0.c.bc deleted file mode 100644 index 1934df99..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_struct_assign_0-0.c.bc +++ /dev/null @@ -1,74 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_struct_assign_0-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_struct_assign_0-0.c" -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-unknown-linux-gnu" - -%struct.Struct = type { i32, i32 } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca %struct.Struct, align 4 - %p = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !22 - call void @llvm.dbg.declare(metadata ptr %p, metadata !23, metadata !DIExpression()), !dbg !25 - %y = getelementptr inbounds %struct.Struct, ptr %a, i32 0, i32 1, !dbg !26 - store ptr %y, ptr %p, align 8, !dbg !25 - %y1 = getelementptr inbounds %struct.Struct, ptr %a, i32 0, i32 1, !dbg !27 - store i32 10, ptr %y1, align 4, !dbg !28 - %0 = load ptr, ptr %p, align 8, !dbg !29 - %1 = load i32, ptr %0, align 4, !dbg !30 - %cmp = icmp eq i32 %1, 10, !dbg !31 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !32 - ret i32 0, !dbg !33 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_struct_assign_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "9de6f29f1655805490d8474658bc3a5a") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 18, type: !12, scopeLine: 18, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_struct_assign_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "9de6f29f1655805490d8474658bc3a5a") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 19, type: !17) -!17 = !DIDerivedType(tag: DW_TAG_typedef, name: "Struct", file: !11, line: 16, baseType: !18) -!18 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "Struct", file: !11, line: 13, size: 64, elements: !19) -!19 = !{!20, !21} -!20 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !18, file: !11, line: 14, baseType: !14, size: 32) -!21 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !18, file: !11, line: 15, baseType: !14, size: 32, offset: 32) -!22 = !DILocation(line: 19, column: 12, scope: !10) -!23 = !DILocalVariable(name: "p", scope: !10, file: !11, line: 20, type: !24) -!24 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !14, size: 64) -!25 = !DILocation(line: 20, column: 10, scope: !10) -!26 = !DILocation(line: 20, column: 17, scope: !10) -!27 = !DILocation(line: 21, column: 7, scope: !10) -!28 = !DILocation(line: 21, column: 9, scope: !10) -!29 = !DILocation(line: 22, column: 17, scope: !10) -!30 = !DILocation(line: 22, column: 16, scope: !10) -!31 = !DILocation(line: 22, column: 19, scope: !10) -!32 = !DILocation(line: 22, column: 5, scope: !10) -!33 = !DILocation(line: 23, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_switch-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_switch-0.c.bc deleted file mode 100644 index 38ab4826..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_switch-0.c.bc +++ /dev/null @@ -1,122 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - %cond = alloca i8, align 1 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %y, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 1, ptr %x, align 4, !dbg !20 - store i32 0, ptr %y, align 4, !dbg !21 - call void @llvm.dbg.declare(metadata ptr %cond, metadata !22, metadata !DIExpression()), !dbg !24 - store i8 97, ptr %cond, align 1, !dbg !24 - %0 = load i8, ptr %cond, align 1, !dbg !25 - %conv = sext i8 %0 to i32, !dbg !25 - switch i32 %conv, label %sw.default [ - i32 97, label %sw.bb - i32 25186, label %sw.bb1 - i32 99, label %sw.bb3 - ], !dbg !26 - -sw.bb: ; preds = %entry - %1 = load i32, ptr %x, align 4, !dbg !27 - %add = add nsw i32 %1, 1, !dbg !27 - store i32 %add, ptr %x, align 4, !dbg !27 - br label %sw.epilog, !dbg !29 - -sw.bb1: ; preds = %entry - %2 = load i32, ptr %y, align 4, !dbg !30 - %3 = load i32, ptr %x, align 4, !dbg !31 - %add2 = add nsw i32 %3, %2, !dbg !31 - store i32 %add2, ptr %x, align 4, !dbg !31 - br label %sw.bb3, !dbg !32 - -sw.bb3: ; preds = %sw.bb1, %entry - %4 = load i32, ptr %y, align 4, !dbg !33 - %5 = load i32, ptr %x, align 4, !dbg !34 - %sub = sub nsw i32 %5, %4, !dbg !34 - store i32 %sub, ptr %x, align 4, !dbg !34 - br label %sw.default, !dbg !35 - -sw.default: ; preds = %sw.bb3, %entry - %6 = load i32, ptr %x, align 4, !dbg !36 - %inc = add nsw i32 %6, 1, !dbg !36 - store i32 %inc, ptr %x, align 4, !dbg !36 - %7 = load i32, ptr %y, align 4, !dbg !37 - %inc4 = add nsw i32 %7, 1, !dbg !37 - store i32 %inc4, ptr %y, align 4, !dbg !37 - br label %sw.epilog, !dbg !38 - -sw.epilog: ; preds = %sw.default, %sw.bb - %8 = load i32, ptr %x, align 4, !dbg !39 - %9 = load i32, ptr %y, align 4, !dbg !40 - %cmp = icmp sge i32 %8, %9, !dbg !41 - %conv5 = zext i1 %cmp to i32, !dbg !41 - %call = call i32 (i32, ...) @svf_assert(i32 noundef %conv5), !dbg !42 - ret i32 0, !dbg !43 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare i32 @svf_assert(...) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "9c4237da1d6907a101d32f871f2e4cf1") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 6, type: !12, scopeLine: 6, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "9c4237da1d6907a101d32f871f2e4cf1") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 7, type: !14) -!17 = !DILocation(line: 7, column: 9, scope: !10) -!18 = !DILocalVariable(name: "y", scope: !10, file: !11, line: 7, type: !14) -!19 = !DILocation(line: 7, column: 12, scope: !10) -!20 = !DILocation(line: 8, column: 7, scope: !10) -!21 = !DILocation(line: 9, column: 7, scope: !10) -!22 = !DILocalVariable(name: "cond", scope: !10, file: !11, line: 10, type: !23) -!23 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!24 = !DILocation(line: 10, column: 10, scope: !10) -!25 = !DILocation(line: 11, column: 13, scope: !10) -!26 = !DILocation(line: 11, column: 5, scope: !10) -!27 = !DILocation(line: 14, column: 15, scope: !28) -!28 = distinct !DILexicalBlock(scope: !10, file: !11, line: 12, column: 5) -!29 = !DILocation(line: 15, column: 13, scope: !28) -!30 = !DILocation(line: 17, column: 18, scope: !28) -!31 = !DILocation(line: 17, column: 15, scope: !28) -!32 = !DILocation(line: 17, column: 13, scope: !28) -!33 = !DILocation(line: 19, column: 18, scope: !28) -!34 = !DILocation(line: 19, column: 15, scope: !28) -!35 = !DILocation(line: 19, column: 13, scope: !28) -!36 = !DILocation(line: 21, column: 14, scope: !28) -!37 = !DILocation(line: 22, column: 14, scope: !28) -!38 = !DILocation(line: 23, column: 13, scope: !28) -!39 = !DILocation(line: 25, column: 16, scope: !10) -!40 = !DILocation(line: 25, column: 21, scope: !10) -!41 = !DILocation(line: 25, column: 18, scope: !10) -!42 = !DILocation(line: 25, column: 5, scope: !10) -!43 = !DILocation(line: 26, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_switch01-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_switch01-0.c.bc deleted file mode 100644 index 6d694384..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_switch01-0.c.bc +++ /dev/null @@ -1,122 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch01-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch01-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @nd() #0 !dbg !10 { -entry: - ret i32 1, !dbg !16 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !17 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !18, metadata !DIExpression()), !dbg !19 - call void @llvm.dbg.declare(metadata ptr %y, metadata !20, metadata !DIExpression()), !dbg !21 - store i32 1, ptr %x, align 4, !dbg !22 - store i32 0, ptr %y, align 4, !dbg !23 - %call = call i32 @nd(), !dbg !24 - switch i32 %call, label %sw.default [ - i32 0, label %sw.bb - i32 1, label %sw.bb1 - i32 2, label %sw.bb3 - ], !dbg !25 - -sw.bb: ; preds = %entry - %0 = load i32, ptr %x, align 4, !dbg !26 - %add = add nsw i32 %0, 1, !dbg !26 - store i32 %add, ptr %x, align 4, !dbg !26 - br label %sw.epilog, !dbg !28 - -sw.bb1: ; preds = %entry - %1 = load i32, ptr %y, align 4, !dbg !29 - %2 = load i32, ptr %x, align 4, !dbg !30 - %add2 = add nsw i32 %2, %1, !dbg !30 - store i32 %add2, ptr %x, align 4, !dbg !30 - br label %sw.epilog, !dbg !31 - -sw.bb3: ; preds = %entry - %3 = load i32, ptr %y, align 4, !dbg !32 - %4 = load i32, ptr %x, align 4, !dbg !33 - %sub = sub nsw i32 %4, %3, !dbg !33 - store i32 %sub, ptr %x, align 4, !dbg !33 - br label %sw.epilog, !dbg !34 - -sw.default: ; preds = %entry - %5 = load i32, ptr %x, align 4, !dbg !35 - %inc = add nsw i32 %5, 1, !dbg !35 - store i32 %inc, ptr %x, align 4, !dbg !35 - %6 = load i32, ptr %y, align 4, !dbg !36 - %inc4 = add nsw i32 %6, 1, !dbg !36 - store i32 %inc4, ptr %y, align 4, !dbg !36 - br label %sw.epilog, !dbg !37 - -sw.epilog: ; preds = %sw.default, %sw.bb3, %sw.bb1, %sw.bb - %7 = load i32, ptr %x, align 4, !dbg !38 - %8 = load i32, ptr %y, align 4, !dbg !39 - %cmp = icmp sge i32 %7, %8, !dbg !40 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !41 - ret i32 0, !dbg !42 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch01-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "96f557f66709288c2e7b12a98cea6cbb") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "nd", scope: !11, file: !11, line: 4, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch01-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "96f557f66709288c2e7b12a98cea6cbb") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocation(line: 6, column: 5, scope: !10) -!17 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!18 = !DILocalVariable(name: "x", scope: !17, file: !11, line: 10, type: !14) -!19 = !DILocation(line: 10, column: 7, scope: !17) -!20 = !DILocalVariable(name: "y", scope: !17, file: !11, line: 10, type: !14) -!21 = !DILocation(line: 10, column: 10, scope: !17) -!22 = !DILocation(line: 11, column: 5, scope: !17) -!23 = !DILocation(line: 12, column: 5, scope: !17) -!24 = !DILocation(line: 13, column: 11, scope: !17) -!25 = !DILocation(line: 13, column: 3, scope: !17) -!26 = !DILocation(line: 16, column: 11, scope: !27) -!27 = distinct !DILexicalBlock(scope: !17, file: !11, line: 14, column: 3) -!28 = !DILocation(line: 17, column: 9, scope: !27) -!29 = !DILocation(line: 19, column: 14, scope: !27) -!30 = !DILocation(line: 19, column: 11, scope: !27) -!31 = !DILocation(line: 20, column: 9, scope: !27) -!32 = !DILocation(line: 22, column: 14, scope: !27) -!33 = !DILocation(line: 22, column: 11, scope: !27) -!34 = !DILocation(line: 23, column: 9, scope: !27) -!35 = !DILocation(line: 25, column: 10, scope: !27) -!36 = !DILocation(line: 26, column: 10, scope: !27) -!37 = !DILocation(line: 27, column: 9, scope: !27) -!38 = !DILocation(line: 29, column: 16, scope: !17) -!39 = !DILocation(line: 29, column: 21, scope: !17) -!40 = !DILocation(line: 29, column: 18, scope: !17) -!41 = !DILocation(line: 29, column: 5, scope: !17) -!42 = !DILocation(line: 30, column: 5, scope: !17) diff --git a/test_cases_bc/ae_assert_tests/BASIC_switch02-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_switch02-0.c.bc deleted file mode 100644 index f4dca727..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_switch02-0.c.bc +++ /dev/null @@ -1,121 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch02-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch02-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - %cond = alloca i8, align 1 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %y, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 1, ptr %x, align 4, !dbg !20 - store i32 0, ptr %y, align 4, !dbg !21 - call void @llvm.dbg.declare(metadata ptr %cond, metadata !22, metadata !DIExpression()), !dbg !24 - store i8 97, ptr %cond, align 1, !dbg !24 - %0 = load i8, ptr %cond, align 1, !dbg !25 - %conv = sext i8 %0 to i32, !dbg !25 - switch i32 %conv, label %sw.default [ - i32 97, label %sw.bb - i32 25186, label %sw.bb1 - i32 99, label %sw.bb3 - ], !dbg !26 - -sw.bb: ; preds = %entry - %1 = load i32, ptr %x, align 4, !dbg !27 - %add = add nsw i32 %1, 1, !dbg !27 - store i32 %add, ptr %x, align 4, !dbg !27 - br label %sw.epilog, !dbg !29 - -sw.bb1: ; preds = %entry - %2 = load i32, ptr %y, align 4, !dbg !30 - %3 = load i32, ptr %x, align 4, !dbg !31 - %add2 = add nsw i32 %3, %2, !dbg !31 - store i32 %add2, ptr %x, align 4, !dbg !31 - br label %sw.bb3, !dbg !32 - -sw.bb3: ; preds = %sw.bb1, %entry - %4 = load i32, ptr %y, align 4, !dbg !33 - %5 = load i32, ptr %x, align 4, !dbg !34 - %sub = sub nsw i32 %5, %4, !dbg !34 - store i32 %sub, ptr %x, align 4, !dbg !34 - br label %sw.default, !dbg !35 - -sw.default: ; preds = %sw.bb3, %entry - %6 = load i32, ptr %x, align 4, !dbg !36 - %inc = add nsw i32 %6, 1, !dbg !36 - store i32 %inc, ptr %x, align 4, !dbg !36 - %7 = load i32, ptr %y, align 4, !dbg !37 - %inc4 = add nsw i32 %7, 1, !dbg !37 - store i32 %inc4, ptr %y, align 4, !dbg !37 - br label %sw.epilog, !dbg !38 - -sw.epilog: ; preds = %sw.default, %sw.bb - %8 = load i32, ptr %x, align 4, !dbg !39 - %9 = load i32, ptr %y, align 4, !dbg !40 - %cmp = icmp sge i32 %8, %9, !dbg !41 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !42 - ret i32 0, !dbg !43 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch02-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8d4277357c2e2c8f9405a7b4426d4bc3") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 6, type: !12, scopeLine: 6, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch02-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8d4277357c2e2c8f9405a7b4426d4bc3") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 7, type: !14) -!17 = !DILocation(line: 7, column: 9, scope: !10) -!18 = !DILocalVariable(name: "y", scope: !10, file: !11, line: 7, type: !14) -!19 = !DILocation(line: 7, column: 12, scope: !10) -!20 = !DILocation(line: 8, column: 7, scope: !10) -!21 = !DILocation(line: 9, column: 7, scope: !10) -!22 = !DILocalVariable(name: "cond", scope: !10, file: !11, line: 10, type: !23) -!23 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!24 = !DILocation(line: 10, column: 10, scope: !10) -!25 = !DILocation(line: 11, column: 13, scope: !10) -!26 = !DILocation(line: 11, column: 5, scope: !10) -!27 = !DILocation(line: 14, column: 15, scope: !28) -!28 = distinct !DILexicalBlock(scope: !10, file: !11, line: 12, column: 5) -!29 = !DILocation(line: 15, column: 13, scope: !28) -!30 = !DILocation(line: 17, column: 18, scope: !28) -!31 = !DILocation(line: 17, column: 15, scope: !28) -!32 = !DILocation(line: 17, column: 13, scope: !28) -!33 = !DILocation(line: 19, column: 18, scope: !28) -!34 = !DILocation(line: 19, column: 15, scope: !28) -!35 = !DILocation(line: 19, column: 13, scope: !28) -!36 = !DILocation(line: 21, column: 14, scope: !28) -!37 = !DILocation(line: 22, column: 14, scope: !28) -!38 = !DILocation(line: 23, column: 13, scope: !28) -!39 = !DILocation(line: 25, column: 16, scope: !10) -!40 = !DILocation(line: 25, column: 21, scope: !10) -!41 = !DILocation(line: 25, column: 18, scope: !10) -!42 = !DILocation(line: 25, column: 5, scope: !10) -!43 = !DILocation(line: 26, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_switch03-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_switch03-0.c.bc deleted file mode 100644 index 93a67f37..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_switch03-0.c.bc +++ /dev/null @@ -1,122 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch03-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch03-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @nd() #0 !dbg !10 { -entry: - ret i32 1, !dbg !16 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !17 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !18, metadata !DIExpression()), !dbg !19 - call void @llvm.dbg.declare(metadata ptr %y, metadata !20, metadata !DIExpression()), !dbg !21 - store i32 1, ptr %x, align 4, !dbg !22 - store i32 0, ptr %y, align 4, !dbg !23 - %call = call i32 @nd(), !dbg !24 - switch i32 %call, label %sw.default [ - i32 1, label %sw.bb - i32 0, label %sw.bb1 - i32 2, label %sw.bb3 - ], !dbg !25 - -sw.bb: ; preds = %entry - %0 = load i32, ptr %x, align 4, !dbg !26 - %add = add nsw i32 %0, 1, !dbg !26 - store i32 %add, ptr %x, align 4, !dbg !26 - br label %sw.epilog, !dbg !28 - -sw.bb1: ; preds = %entry - %1 = load i32, ptr %y, align 4, !dbg !29 - %2 = load i32, ptr %x, align 4, !dbg !30 - %add2 = add nsw i32 %2, %1, !dbg !30 - store i32 %add2, ptr %x, align 4, !dbg !30 - br label %sw.epilog, !dbg !31 - -sw.bb3: ; preds = %entry - %3 = load i32, ptr %y, align 4, !dbg !32 - %4 = load i32, ptr %x, align 4, !dbg !33 - %sub = sub nsw i32 %4, %3, !dbg !33 - store i32 %sub, ptr %x, align 4, !dbg !33 - br label %sw.epilog, !dbg !34 - -sw.default: ; preds = %entry - %5 = load i32, ptr %x, align 4, !dbg !35 - %inc = add nsw i32 %5, 1, !dbg !35 - store i32 %inc, ptr %x, align 4, !dbg !35 - %6 = load i32, ptr %y, align 4, !dbg !36 - %inc4 = add nsw i32 %6, 1, !dbg !36 - store i32 %inc4, ptr %y, align 4, !dbg !36 - br label %sw.epilog, !dbg !37 - -sw.epilog: ; preds = %sw.default, %sw.bb3, %sw.bb1, %sw.bb - %7 = load i32, ptr %x, align 4, !dbg !38 - %8 = load i32, ptr %y, align 4, !dbg !39 - %cmp = icmp sge i32 %7, %8, !dbg !40 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !41 - ret i32 0, !dbg !42 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch03-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "66748de6ce667a0803aef76cbb8ffbc5") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "nd", scope: !11, file: !11, line: 4, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch03-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "66748de6ce667a0803aef76cbb8ffbc5") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocation(line: 6, column: 5, scope: !10) -!17 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!18 = !DILocalVariable(name: "x", scope: !17, file: !11, line: 10, type: !14) -!19 = !DILocation(line: 10, column: 9, scope: !17) -!20 = !DILocalVariable(name: "y", scope: !17, file: !11, line: 10, type: !14) -!21 = !DILocation(line: 10, column: 12, scope: !17) -!22 = !DILocation(line: 11, column: 7, scope: !17) -!23 = !DILocation(line: 12, column: 7, scope: !17) -!24 = !DILocation(line: 13, column: 13, scope: !17) -!25 = !DILocation(line: 13, column: 5, scope: !17) -!26 = !DILocation(line: 16, column: 15, scope: !27) -!27 = distinct !DILexicalBlock(scope: !17, file: !11, line: 14, column: 5) -!28 = !DILocation(line: 17, column: 13, scope: !27) -!29 = !DILocation(line: 19, column: 18, scope: !27) -!30 = !DILocation(line: 19, column: 15, scope: !27) -!31 = !DILocation(line: 20, column: 13, scope: !27) -!32 = !DILocation(line: 22, column: 18, scope: !27) -!33 = !DILocation(line: 22, column: 15, scope: !27) -!34 = !DILocation(line: 23, column: 13, scope: !27) -!35 = !DILocation(line: 25, column: 14, scope: !27) -!36 = !DILocation(line: 26, column: 14, scope: !27) -!37 = !DILocation(line: 27, column: 13, scope: !27) -!38 = !DILocation(line: 29, column: 16, scope: !17) -!39 = !DILocation(line: 29, column: 21, scope: !17) -!40 = !DILocation(line: 29, column: 18, scope: !17) -!41 = !DILocation(line: 29, column: 5, scope: !17) -!42 = !DILocation(line: 30, column: 5, scope: !17) diff --git a/test_cases_bc/ae_assert_tests/BASIC_switch04-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_switch04-0.c.bc deleted file mode 100644 index 93463b47..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_switch04-0.c.bc +++ /dev/null @@ -1,128 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch04-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch04-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @nd() #0 !dbg !10 { -entry: - ret i32 1, !dbg !16 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !17 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - %i = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !18, metadata !DIExpression()), !dbg !19 - call void @llvm.dbg.declare(metadata ptr %y, metadata !20, metadata !DIExpression()), !dbg !21 - store i32 1, ptr %x, align 4, !dbg !22 - store i32 0, ptr %y, align 4, !dbg !23 - call void @llvm.dbg.declare(metadata ptr %i, metadata !24, metadata !DIExpression()), !dbg !26 - store i32 1, ptr %i, align 4, !dbg !26 - %0 = load i32, ptr %x, align 4, !dbg !27 - switch i32 %0, label %sw.default [ - i32 0, label %sw.bb - i32 1, label %sw.bb1 - i32 2, label %sw.bb3 - ], !dbg !28 - -sw.bb: ; preds = %entry - %1 = load i32, ptr %x, align 4, !dbg !29 - %add = add nsw i32 %1, 1, !dbg !29 - store i32 %add, ptr %x, align 4, !dbg !29 - br label %sw.epilog, !dbg !31 - -sw.bb1: ; preds = %entry - %2 = load i32, ptr %y, align 4, !dbg !32 - %3 = load i32, ptr %x, align 4, !dbg !33 - %add2 = add nsw i32 %3, %2, !dbg !33 - store i32 %add2, ptr %x, align 4, !dbg !33 - br label %sw.epilog, !dbg !34 - -sw.bb3: ; preds = %entry - %4 = load i32, ptr %y, align 4, !dbg !35 - %5 = load i32, ptr %x, align 4, !dbg !36 - %sub = sub nsw i32 %5, %4, !dbg !36 - store i32 %sub, ptr %x, align 4, !dbg !36 - br label %sw.epilog, !dbg !37 - -sw.default: ; preds = %entry - %6 = load i32, ptr %x, align 4, !dbg !38 - %inc = add nsw i32 %6, 1, !dbg !38 - store i32 %inc, ptr %x, align 4, !dbg !38 - %7 = load i32, ptr %y, align 4, !dbg !39 - %inc4 = add nsw i32 %7, 1, !dbg !39 - store i32 %inc4, ptr %y, align 4, !dbg !39 - br label %sw.epilog, !dbg !40 - -sw.epilog: ; preds = %sw.default, %sw.bb3, %sw.bb1, %sw.bb - %8 = load i32, ptr %x, align 4, !dbg !41 - %9 = load i32, ptr %y, align 4, !dbg !42 - %cmp = icmp sge i32 %8, %9, !dbg !43 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !44 - ret i32 0, !dbg !45 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch04-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "9061c3e46e9ddcb4969a5b600efd72a9") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "nd", scope: !11, file: !11, line: 4, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch04-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "9061c3e46e9ddcb4969a5b600efd72a9") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocation(line: 6, column: 5, scope: !10) -!17 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!18 = !DILocalVariable(name: "x", scope: !17, file: !11, line: 10, type: !14) -!19 = !DILocation(line: 10, column: 7, scope: !17) -!20 = !DILocalVariable(name: "y", scope: !17, file: !11, line: 10, type: !14) -!21 = !DILocation(line: 10, column: 10, scope: !17) -!22 = !DILocation(line: 11, column: 5, scope: !17) -!23 = !DILocation(line: 12, column: 5, scope: !17) -!24 = !DILocalVariable(name: "i", scope: !17, file: !11, line: 13, type: !25) -!25 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !14) -!26 = !DILocation(line: 13, column: 13, scope: !17) -!27 = !DILocation(line: 14, column: 11, scope: !17) -!28 = !DILocation(line: 14, column: 3, scope: !17) -!29 = !DILocation(line: 17, column: 11, scope: !30) -!30 = distinct !DILexicalBlock(scope: !17, file: !11, line: 15, column: 3) -!31 = !DILocation(line: 18, column: 9, scope: !30) -!32 = !DILocation(line: 20, column: 14, scope: !30) -!33 = !DILocation(line: 20, column: 11, scope: !30) -!34 = !DILocation(line: 21, column: 9, scope: !30) -!35 = !DILocation(line: 23, column: 14, scope: !30) -!36 = !DILocation(line: 23, column: 11, scope: !30) -!37 = !DILocation(line: 24, column: 9, scope: !30) -!38 = !DILocation(line: 26, column: 10, scope: !30) -!39 = !DILocation(line: 27, column: 10, scope: !30) -!40 = !DILocation(line: 28, column: 9, scope: !30) -!41 = !DILocation(line: 30, column: 16, scope: !17) -!42 = !DILocation(line: 30, column: 21, scope: !17) -!43 = !DILocation(line: 30, column: 18, scope: !17) -!44 = !DILocation(line: 30, column: 5, scope: !17) -!45 = !DILocation(line: 31, column: 5, scope: !17) diff --git a/test_cases_bc/ae_assert_tests/BASIC_switch05-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_switch05-0.c.bc deleted file mode 100644 index 88e8263d..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_switch05-0.c.bc +++ /dev/null @@ -1,122 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch05-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch05-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @nd() #0 !dbg !10 { -entry: - ret i32 1, !dbg !16 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !17 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !18, metadata !DIExpression()), !dbg !19 - call void @llvm.dbg.declare(metadata ptr %y, metadata !20, metadata !DIExpression()), !dbg !21 - store i32 1, ptr %x, align 4, !dbg !22 - store i32 0, ptr %y, align 4, !dbg !23 - %call = call i32 @nd(), !dbg !24 - switch i32 %call, label %sw.default [ - i32 0, label %sw.bb - i32 1, label %sw.bb1 - i32 2, label %sw.bb3 - ], !dbg !25 - -sw.bb: ; preds = %entry - %0 = load i32, ptr %x, align 4, !dbg !26 - %add = add nsw i32 %0, 1, !dbg !26 - store i32 %add, ptr %x, align 4, !dbg !26 - br label %sw.epilog, !dbg !28 - -sw.bb1: ; preds = %entry - %1 = load i32, ptr %y, align 4, !dbg !29 - %2 = load i32, ptr %x, align 4, !dbg !30 - %add2 = add nsw i32 %2, %1, !dbg !30 - store i32 %add2, ptr %x, align 4, !dbg !30 - br label %sw.epilog, !dbg !31 - -sw.bb3: ; preds = %entry - %3 = load i32, ptr %y, align 4, !dbg !32 - %4 = load i32, ptr %x, align 4, !dbg !33 - %sub = sub nsw i32 %4, %3, !dbg !33 - store i32 %sub, ptr %x, align 4, !dbg !33 - br label %sw.epilog, !dbg !34 - -sw.default: ; preds = %entry - %5 = load i32, ptr %x, align 4, !dbg !35 - %inc = add nsw i32 %5, 1, !dbg !35 - store i32 %inc, ptr %x, align 4, !dbg !35 - %6 = load i32, ptr %y, align 4, !dbg !36 - %inc4 = add nsw i32 %6, 1, !dbg !36 - store i32 %inc4, ptr %y, align 4, !dbg !36 - br label %sw.epilog, !dbg !37 - -sw.epilog: ; preds = %sw.default, %sw.bb3, %sw.bb1, %sw.bb - %7 = load i32, ptr %x, align 4, !dbg !38 - %8 = load i32, ptr %y, align 4, !dbg !39 - %cmp = icmp sge i32 %7, %8, !dbg !40 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !41 - ret i32 0, !dbg !42 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch05-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "495eb07e73dab36134e244b9cc25d3f6") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "nd", scope: !11, file: !11, line: 4, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch05-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "495eb07e73dab36134e244b9cc25d3f6") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocation(line: 6, column: 5, scope: !10) -!17 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!18 = !DILocalVariable(name: "x", scope: !17, file: !11, line: 10, type: !14) -!19 = !DILocation(line: 10, column: 9, scope: !17) -!20 = !DILocalVariable(name: "y", scope: !17, file: !11, line: 10, type: !14) -!21 = !DILocation(line: 10, column: 12, scope: !17) -!22 = !DILocation(line: 11, column: 7, scope: !17) -!23 = !DILocation(line: 12, column: 7, scope: !17) -!24 = !DILocation(line: 13, column: 13, scope: !17) -!25 = !DILocation(line: 13, column: 5, scope: !17) -!26 = !DILocation(line: 16, column: 15, scope: !27) -!27 = distinct !DILexicalBlock(scope: !17, file: !11, line: 14, column: 5) -!28 = !DILocation(line: 17, column: 13, scope: !27) -!29 = !DILocation(line: 19, column: 18, scope: !27) -!30 = !DILocation(line: 19, column: 15, scope: !27) -!31 = !DILocation(line: 20, column: 13, scope: !27) -!32 = !DILocation(line: 22, column: 18, scope: !27) -!33 = !DILocation(line: 22, column: 15, scope: !27) -!34 = !DILocation(line: 23, column: 13, scope: !27) -!35 = !DILocation(line: 25, column: 14, scope: !27) -!36 = !DILocation(line: 26, column: 14, scope: !27) -!37 = !DILocation(line: 27, column: 13, scope: !27) -!38 = !DILocation(line: 29, column: 16, scope: !17) -!39 = !DILocation(line: 29, column: 21, scope: !17) -!40 = !DILocation(line: 29, column: 18, scope: !17) -!41 = !DILocation(line: 29, column: 5, scope: !17) -!42 = !DILocation(line: 30, column: 5, scope: !17) diff --git a/test_cases_bc/ae_assert_tests/BASIC_switch06-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_switch06-0.c.bc deleted file mode 100644 index c07e9343..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_switch06-0.c.bc +++ /dev/null @@ -1,121 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch06-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch06-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - %cond = alloca i8, align 1 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %y, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 1, ptr %x, align 4, !dbg !20 - store i32 0, ptr %y, align 4, !dbg !21 - call void @llvm.dbg.declare(metadata ptr %cond, metadata !22, metadata !DIExpression()), !dbg !24 - store i8 97, ptr %cond, align 1, !dbg !24 - %0 = load i8, ptr %cond, align 1, !dbg !25 - %conv = sext i8 %0 to i32, !dbg !25 - switch i32 %conv, label %sw.default [ - i32 97, label %sw.bb - i32 25186, label %sw.bb1 - i32 99, label %sw.bb3 - ], !dbg !26 - -sw.bb: ; preds = %entry - %1 = load i32, ptr %x, align 4, !dbg !27 - %add = add nsw i32 %1, 1, !dbg !27 - store i32 %add, ptr %x, align 4, !dbg !27 - br label %sw.epilog, !dbg !29 - -sw.bb1: ; preds = %entry - %2 = load i32, ptr %y, align 4, !dbg !30 - %3 = load i32, ptr %x, align 4, !dbg !31 - %add2 = add nsw i32 %3, %2, !dbg !31 - store i32 %add2, ptr %x, align 4, !dbg !31 - br label %sw.bb3, !dbg !32 - -sw.bb3: ; preds = %sw.bb1, %entry - %4 = load i32, ptr %y, align 4, !dbg !33 - %5 = load i32, ptr %x, align 4, !dbg !34 - %sub = sub nsw i32 %5, %4, !dbg !34 - store i32 %sub, ptr %x, align 4, !dbg !34 - br label %sw.default, !dbg !35 - -sw.default: ; preds = %sw.bb3, %entry - %6 = load i32, ptr %x, align 4, !dbg !36 - %inc = add nsw i32 %6, 1, !dbg !36 - store i32 %inc, ptr %x, align 4, !dbg !36 - %7 = load i32, ptr %y, align 4, !dbg !37 - %inc4 = add nsw i32 %7, 1, !dbg !37 - store i32 %inc4, ptr %y, align 4, !dbg !37 - br label %sw.epilog, !dbg !38 - -sw.epilog: ; preds = %sw.default, %sw.bb - %8 = load i32, ptr %x, align 4, !dbg !39 - %9 = load i32, ptr %y, align 4, !dbg !40 - %cmp = icmp sge i32 %8, %9, !dbg !41 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !42 - ret i32 0, !dbg !43 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch06-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8d4277357c2e2c8f9405a7b4426d4bc3") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 6, type: !12, scopeLine: 6, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch06-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8d4277357c2e2c8f9405a7b4426d4bc3") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 7, type: !14) -!17 = !DILocation(line: 7, column: 9, scope: !10) -!18 = !DILocalVariable(name: "y", scope: !10, file: !11, line: 7, type: !14) -!19 = !DILocation(line: 7, column: 12, scope: !10) -!20 = !DILocation(line: 8, column: 7, scope: !10) -!21 = !DILocation(line: 9, column: 7, scope: !10) -!22 = !DILocalVariable(name: "cond", scope: !10, file: !11, line: 10, type: !23) -!23 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!24 = !DILocation(line: 10, column: 10, scope: !10) -!25 = !DILocation(line: 11, column: 13, scope: !10) -!26 = !DILocation(line: 11, column: 5, scope: !10) -!27 = !DILocation(line: 14, column: 15, scope: !28) -!28 = distinct !DILexicalBlock(scope: !10, file: !11, line: 12, column: 5) -!29 = !DILocation(line: 15, column: 13, scope: !28) -!30 = !DILocation(line: 17, column: 18, scope: !28) -!31 = !DILocation(line: 17, column: 15, scope: !28) -!32 = !DILocation(line: 17, column: 13, scope: !28) -!33 = !DILocation(line: 19, column: 18, scope: !28) -!34 = !DILocation(line: 19, column: 15, scope: !28) -!35 = !DILocation(line: 19, column: 13, scope: !28) -!36 = !DILocation(line: 21, column: 14, scope: !28) -!37 = !DILocation(line: 22, column: 14, scope: !28) -!38 = !DILocation(line: 23, column: 13, scope: !28) -!39 = !DILocation(line: 25, column: 16, scope: !10) -!40 = !DILocation(line: 25, column: 21, scope: !10) -!41 = !DILocation(line: 25, column: 18, scope: !10) -!42 = !DILocation(line: 25, column: 5, scope: !10) -!43 = !DILocation(line: 26, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_switch07-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_switch07-0.c.bc deleted file mode 100644 index 3f05c6db..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_switch07-0.c.bc +++ /dev/null @@ -1,122 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch07-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch07-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @nd() #0 !dbg !10 { -entry: - ret i32 1, !dbg !16 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !17 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !18, metadata !DIExpression()), !dbg !19 - call void @llvm.dbg.declare(metadata ptr %y, metadata !20, metadata !DIExpression()), !dbg !21 - store i32 1, ptr %x, align 4, !dbg !22 - store i32 0, ptr %y, align 4, !dbg !23 - %call = call i32 @nd(), !dbg !24 - switch i32 %call, label %sw.default [ - i32 1, label %sw.bb - i32 0, label %sw.bb1 - i32 2, label %sw.bb3 - ], !dbg !25 - -sw.bb: ; preds = %entry - %0 = load i32, ptr %x, align 4, !dbg !26 - %add = add nsw i32 %0, 1, !dbg !26 - store i32 %add, ptr %x, align 4, !dbg !26 - br label %sw.epilog, !dbg !28 - -sw.bb1: ; preds = %entry - %1 = load i32, ptr %y, align 4, !dbg !29 - %2 = load i32, ptr %x, align 4, !dbg !30 - %add2 = add nsw i32 %2, %1, !dbg !30 - store i32 %add2, ptr %x, align 4, !dbg !30 - br label %sw.epilog, !dbg !31 - -sw.bb3: ; preds = %entry - %3 = load i32, ptr %y, align 4, !dbg !32 - %4 = load i32, ptr %x, align 4, !dbg !33 - %sub = sub nsw i32 %4, %3, !dbg !33 - store i32 %sub, ptr %x, align 4, !dbg !33 - br label %sw.epilog, !dbg !34 - -sw.default: ; preds = %entry - %5 = load i32, ptr %x, align 4, !dbg !35 - %inc = add nsw i32 %5, 1, !dbg !35 - store i32 %inc, ptr %x, align 4, !dbg !35 - %6 = load i32, ptr %y, align 4, !dbg !36 - %inc4 = add nsw i32 %6, 1, !dbg !36 - store i32 %inc4, ptr %y, align 4, !dbg !36 - br label %sw.epilog, !dbg !37 - -sw.epilog: ; preds = %sw.default, %sw.bb3, %sw.bb1, %sw.bb - %7 = load i32, ptr %x, align 4, !dbg !38 - %8 = load i32, ptr %y, align 4, !dbg !39 - %cmp = icmp sge i32 %7, %8, !dbg !40 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !41 - ret i32 0, !dbg !42 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch07-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "66748de6ce667a0803aef76cbb8ffbc5") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "nd", scope: !11, file: !11, line: 4, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch07-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "66748de6ce667a0803aef76cbb8ffbc5") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocation(line: 6, column: 5, scope: !10) -!17 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!18 = !DILocalVariable(name: "x", scope: !17, file: !11, line: 10, type: !14) -!19 = !DILocation(line: 10, column: 9, scope: !17) -!20 = !DILocalVariable(name: "y", scope: !17, file: !11, line: 10, type: !14) -!21 = !DILocation(line: 10, column: 12, scope: !17) -!22 = !DILocation(line: 11, column: 7, scope: !17) -!23 = !DILocation(line: 12, column: 7, scope: !17) -!24 = !DILocation(line: 13, column: 13, scope: !17) -!25 = !DILocation(line: 13, column: 5, scope: !17) -!26 = !DILocation(line: 16, column: 15, scope: !27) -!27 = distinct !DILexicalBlock(scope: !17, file: !11, line: 14, column: 5) -!28 = !DILocation(line: 17, column: 13, scope: !27) -!29 = !DILocation(line: 19, column: 18, scope: !27) -!30 = !DILocation(line: 19, column: 15, scope: !27) -!31 = !DILocation(line: 20, column: 13, scope: !27) -!32 = !DILocation(line: 22, column: 18, scope: !27) -!33 = !DILocation(line: 22, column: 15, scope: !27) -!34 = !DILocation(line: 23, column: 13, scope: !27) -!35 = !DILocation(line: 25, column: 14, scope: !27) -!36 = !DILocation(line: 26, column: 14, scope: !27) -!37 = !DILocation(line: 27, column: 13, scope: !27) -!38 = !DILocation(line: 29, column: 16, scope: !17) -!39 = !DILocation(line: 29, column: 21, scope: !17) -!40 = !DILocation(line: 29, column: 18, scope: !17) -!41 = !DILocation(line: 29, column: 5, scope: !17) -!42 = !DILocation(line: 30, column: 5, scope: !17) diff --git a/test_cases_bc/ae_assert_tests/BASIC_switch08-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_switch08-0.c.bc deleted file mode 100644 index e4633275..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_switch08-0.c.bc +++ /dev/null @@ -1,128 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch08-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch08-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @nd() #0 !dbg !10 { -entry: - ret i32 1, !dbg !16 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !17 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - %i = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !18, metadata !DIExpression()), !dbg !19 - call void @llvm.dbg.declare(metadata ptr %y, metadata !20, metadata !DIExpression()), !dbg !21 - store i32 1, ptr %x, align 4, !dbg !22 - store i32 0, ptr %y, align 4, !dbg !23 - call void @llvm.dbg.declare(metadata ptr %i, metadata !24, metadata !DIExpression()), !dbg !26 - store i32 1, ptr %i, align 4, !dbg !26 - %0 = load i32, ptr %x, align 4, !dbg !27 - switch i32 %0, label %sw.default [ - i32 0, label %sw.bb - i32 1, label %sw.bb1 - i32 2, label %sw.bb3 - ], !dbg !28 - -sw.bb: ; preds = %entry - %1 = load i32, ptr %x, align 4, !dbg !29 - %add = add nsw i32 %1, 1, !dbg !29 - store i32 %add, ptr %x, align 4, !dbg !29 - br label %sw.epilog, !dbg !31 - -sw.bb1: ; preds = %entry - %2 = load i32, ptr %y, align 4, !dbg !32 - %3 = load i32, ptr %x, align 4, !dbg !33 - %add2 = add nsw i32 %3, %2, !dbg !33 - store i32 %add2, ptr %x, align 4, !dbg !33 - br label %sw.epilog, !dbg !34 - -sw.bb3: ; preds = %entry - %4 = load i32, ptr %y, align 4, !dbg !35 - %5 = load i32, ptr %x, align 4, !dbg !36 - %sub = sub nsw i32 %5, %4, !dbg !36 - store i32 %sub, ptr %x, align 4, !dbg !36 - br label %sw.epilog, !dbg !37 - -sw.default: ; preds = %entry - %6 = load i32, ptr %x, align 4, !dbg !38 - %inc = add nsw i32 %6, 1, !dbg !38 - store i32 %inc, ptr %x, align 4, !dbg !38 - %7 = load i32, ptr %y, align 4, !dbg !39 - %inc4 = add nsw i32 %7, 1, !dbg !39 - store i32 %inc4, ptr %y, align 4, !dbg !39 - br label %sw.epilog, !dbg !40 - -sw.epilog: ; preds = %sw.default, %sw.bb3, %sw.bb1, %sw.bb - %8 = load i32, ptr %x, align 4, !dbg !41 - %9 = load i32, ptr %y, align 4, !dbg !42 - %cmp = icmp sge i32 %8, %9, !dbg !43 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !44 - ret i32 0, !dbg !45 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch08-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a6bb4d50810689e7ca82b6089398d6f5") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "nd", scope: !11, file: !11, line: 4, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch08-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a6bb4d50810689e7ca82b6089398d6f5") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocation(line: 6, column: 5, scope: !10) -!17 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!18 = !DILocalVariable(name: "x", scope: !17, file: !11, line: 10, type: !14) -!19 = !DILocation(line: 10, column: 9, scope: !17) -!20 = !DILocalVariable(name: "y", scope: !17, file: !11, line: 10, type: !14) -!21 = !DILocation(line: 10, column: 12, scope: !17) -!22 = !DILocation(line: 11, column: 7, scope: !17) -!23 = !DILocation(line: 12, column: 7, scope: !17) -!24 = !DILocalVariable(name: "i", scope: !17, file: !11, line: 13, type: !25) -!25 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !14) -!26 = !DILocation(line: 13, column: 15, scope: !17) -!27 = !DILocation(line: 14, column: 13, scope: !17) -!28 = !DILocation(line: 14, column: 5, scope: !17) -!29 = !DILocation(line: 17, column: 15, scope: !30) -!30 = distinct !DILexicalBlock(scope: !17, file: !11, line: 15, column: 5) -!31 = !DILocation(line: 18, column: 13, scope: !30) -!32 = !DILocation(line: 20, column: 18, scope: !30) -!33 = !DILocation(line: 20, column: 15, scope: !30) -!34 = !DILocation(line: 21, column: 13, scope: !30) -!35 = !DILocation(line: 23, column: 18, scope: !30) -!36 = !DILocation(line: 23, column: 15, scope: !30) -!37 = !DILocation(line: 24, column: 13, scope: !30) -!38 = !DILocation(line: 26, column: 14, scope: !30) -!39 = !DILocation(line: 27, column: 14, scope: !30) -!40 = !DILocation(line: 28, column: 13, scope: !30) -!41 = !DILocation(line: 30, column: 16, scope: !17) -!42 = !DILocation(line: 30, column: 21, scope: !17) -!43 = !DILocation(line: 30, column: 18, scope: !17) -!44 = !DILocation(line: 30, column: 5, scope: !17) -!45 = !DILocation(line: 31, column: 5, scope: !17) diff --git a/test_cases_bc/ae_assert_tests/BASIC_switch09-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_switch09-0.c.bc deleted file mode 100644 index 201391e3..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_switch09-0.c.bc +++ /dev/null @@ -1,122 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch09-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch09-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @nd() #0 !dbg !10 { -entry: - ret i32 1, !dbg !16 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !17 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !18, metadata !DIExpression()), !dbg !19 - call void @llvm.dbg.declare(metadata ptr %y, metadata !20, metadata !DIExpression()), !dbg !21 - store i32 1, ptr %x, align 4, !dbg !22 - store i32 0, ptr %y, align 4, !dbg !23 - %call = call i32 @nd(), !dbg !24 - switch i32 %call, label %sw.default [ - i32 0, label %sw.bb - i32 1, label %sw.bb1 - i32 2, label %sw.bb3 - ], !dbg !25 - -sw.bb: ; preds = %entry - %0 = load i32, ptr %x, align 4, !dbg !26 - %add = add nsw i32 %0, 1, !dbg !26 - store i32 %add, ptr %x, align 4, !dbg !26 - br label %sw.epilog, !dbg !28 - -sw.bb1: ; preds = %entry - %1 = load i32, ptr %y, align 4, !dbg !29 - %2 = load i32, ptr %x, align 4, !dbg !30 - %add2 = add nsw i32 %2, %1, !dbg !30 - store i32 %add2, ptr %x, align 4, !dbg !30 - br label %sw.epilog, !dbg !31 - -sw.bb3: ; preds = %entry - %3 = load i32, ptr %y, align 4, !dbg !32 - %4 = load i32, ptr %x, align 4, !dbg !33 - %sub = sub nsw i32 %4, %3, !dbg !33 - store i32 %sub, ptr %x, align 4, !dbg !33 - br label %sw.epilog, !dbg !34 - -sw.default: ; preds = %entry - %5 = load i32, ptr %x, align 4, !dbg !35 - %inc = add nsw i32 %5, 1, !dbg !35 - store i32 %inc, ptr %x, align 4, !dbg !35 - %6 = load i32, ptr %y, align 4, !dbg !36 - %inc4 = add nsw i32 %6, 1, !dbg !36 - store i32 %inc4, ptr %y, align 4, !dbg !36 - br label %sw.epilog, !dbg !37 - -sw.epilog: ; preds = %sw.default, %sw.bb3, %sw.bb1, %sw.bb - %7 = load i32, ptr %x, align 4, !dbg !38 - %8 = load i32, ptr %y, align 4, !dbg !39 - %cmp = icmp sge i32 %7, %8, !dbg !40 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !41 - ret i32 0, !dbg !42 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch09-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "627c91fbc5a098d13db04043002ef3cf") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "nd", scope: !11, file: !11, line: 6, type: !12, scopeLine: 7, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch09-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "627c91fbc5a098d13db04043002ef3cf") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocation(line: 8, column: 5, scope: !10) -!17 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 11, type: !12, scopeLine: 11, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!18 = !DILocalVariable(name: "x", scope: !17, file: !11, line: 12, type: !14) -!19 = !DILocation(line: 12, column: 9, scope: !17) -!20 = !DILocalVariable(name: "y", scope: !17, file: !11, line: 12, type: !14) -!21 = !DILocation(line: 12, column: 12, scope: !17) -!22 = !DILocation(line: 13, column: 7, scope: !17) -!23 = !DILocation(line: 14, column: 7, scope: !17) -!24 = !DILocation(line: 15, column: 13, scope: !17) -!25 = !DILocation(line: 15, column: 5, scope: !17) -!26 = !DILocation(line: 18, column: 15, scope: !27) -!27 = distinct !DILexicalBlock(scope: !17, file: !11, line: 16, column: 5) -!28 = !DILocation(line: 19, column: 13, scope: !27) -!29 = !DILocation(line: 21, column: 18, scope: !27) -!30 = !DILocation(line: 21, column: 15, scope: !27) -!31 = !DILocation(line: 22, column: 13, scope: !27) -!32 = !DILocation(line: 24, column: 18, scope: !27) -!33 = !DILocation(line: 24, column: 15, scope: !27) -!34 = !DILocation(line: 25, column: 13, scope: !27) -!35 = !DILocation(line: 27, column: 14, scope: !27) -!36 = !DILocation(line: 28, column: 14, scope: !27) -!37 = !DILocation(line: 29, column: 13, scope: !27) -!38 = !DILocation(line: 31, column: 16, scope: !17) -!39 = !DILocation(line: 31, column: 21, scope: !17) -!40 = !DILocation(line: 31, column: 18, scope: !17) -!41 = !DILocation(line: 31, column: 5, scope: !17) -!42 = !DILocation(line: 32, column: 5, scope: !17) diff --git a/test_cases_bc/ae_assert_tests/BASIC_switch10-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_switch10-0.c.bc deleted file mode 100644 index 7b9c47ec..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_switch10-0.c.bc +++ /dev/null @@ -1,121 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_switch10-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch10-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - %cond = alloca i8, align 1 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %y, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 1, ptr %x, align 4, !dbg !20 - store i32 0, ptr %y, align 4, !dbg !21 - call void @llvm.dbg.declare(metadata ptr %cond, metadata !22, metadata !DIExpression()), !dbg !24 - store i8 97, ptr %cond, align 1, !dbg !24 - %0 = load i8, ptr %cond, align 1, !dbg !25 - %conv = sext i8 %0 to i32, !dbg !25 - switch i32 %conv, label %sw.default [ - i32 97, label %sw.bb - i32 25186, label %sw.bb1 - i32 99, label %sw.bb3 - ], !dbg !26 - -sw.bb: ; preds = %entry - %1 = load i32, ptr %x, align 4, !dbg !27 - %add = add nsw i32 %1, 1, !dbg !27 - store i32 %add, ptr %x, align 4, !dbg !27 - br label %sw.epilog, !dbg !29 - -sw.bb1: ; preds = %entry - %2 = load i32, ptr %y, align 4, !dbg !30 - %3 = load i32, ptr %x, align 4, !dbg !31 - %add2 = add nsw i32 %3, %2, !dbg !31 - store i32 %add2, ptr %x, align 4, !dbg !31 - br label %sw.bb3, !dbg !32 - -sw.bb3: ; preds = %sw.bb1, %entry - %4 = load i32, ptr %y, align 4, !dbg !33 - %5 = load i32, ptr %x, align 4, !dbg !34 - %sub = sub nsw i32 %5, %4, !dbg !34 - store i32 %sub, ptr %x, align 4, !dbg !34 - br label %sw.default, !dbg !35 - -sw.default: ; preds = %sw.bb3, %entry - %6 = load i32, ptr %x, align 4, !dbg !36 - %inc = add nsw i32 %6, 1, !dbg !36 - store i32 %inc, ptr %x, align 4, !dbg !36 - %7 = load i32, ptr %y, align 4, !dbg !37 - %inc4 = add nsw i32 %7, 1, !dbg !37 - store i32 %inc4, ptr %y, align 4, !dbg !37 - br label %sw.epilog, !dbg !38 - -sw.epilog: ; preds = %sw.default, %sw.bb - %8 = load i32, ptr %x, align 4, !dbg !39 - %9 = load i32, ptr %y, align 4, !dbg !40 - %cmp = icmp sge i32 %8, %9, !dbg !41 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !42 - ret i32 0, !dbg !43 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_switch10-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8d4277357c2e2c8f9405a7b4426d4bc3") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 6, type: !12, scopeLine: 6, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_switch10-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8d4277357c2e2c8f9405a7b4426d4bc3") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 7, type: !14) -!17 = !DILocation(line: 7, column: 9, scope: !10) -!18 = !DILocalVariable(name: "y", scope: !10, file: !11, line: 7, type: !14) -!19 = !DILocation(line: 7, column: 12, scope: !10) -!20 = !DILocation(line: 8, column: 7, scope: !10) -!21 = !DILocation(line: 9, column: 7, scope: !10) -!22 = !DILocalVariable(name: "cond", scope: !10, file: !11, line: 10, type: !23) -!23 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!24 = !DILocation(line: 10, column: 10, scope: !10) -!25 = !DILocation(line: 11, column: 13, scope: !10) -!26 = !DILocation(line: 11, column: 5, scope: !10) -!27 = !DILocation(line: 14, column: 15, scope: !28) -!28 = distinct !DILexicalBlock(scope: !10, file: !11, line: 12, column: 5) -!29 = !DILocation(line: 15, column: 13, scope: !28) -!30 = !DILocation(line: 17, column: 18, scope: !28) -!31 = !DILocation(line: 17, column: 15, scope: !28) -!32 = !DILocation(line: 17, column: 13, scope: !28) -!33 = !DILocation(line: 19, column: 18, scope: !28) -!34 = !DILocation(line: 19, column: 15, scope: !28) -!35 = !DILocation(line: 19, column: 13, scope: !28) -!36 = !DILocation(line: 21, column: 14, scope: !28) -!37 = !DILocation(line: 22, column: 14, scope: !28) -!38 = !DILocation(line: 23, column: 13, scope: !28) -!39 = !DILocation(line: 25, column: 16, scope: !10) -!40 = !DILocation(line: 25, column: 21, scope: !10) -!41 = !DILocation(line: 25, column: 18, scope: !10) -!42 = !DILocation(line: 25, column: 5, scope: !10) -!43 = !DILocation(line: 26, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BASIC_test_11-0.c.bc b/test_cases_bc/ae_assert_tests/BASIC_test_11-0.c.bc deleted file mode 100644 index a62f2c6c..00000000 --- a/test_cases_bc/ae_assert_tests/BASIC_test_11-0.c.bc +++ /dev/null @@ -1,66 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BASIC_test_11-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_test_11-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %data = alloca i32, align 4 - %data1 = alloca i32, align 4 - %data2 = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %data, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 0, ptr %data, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %data1, metadata !18, metadata !DIExpression()), !dbg !20 - store i32 1, ptr %data1, align 4, !dbg !20 - call void @llvm.dbg.declare(metadata ptr %data2, metadata !21, metadata !DIExpression()), !dbg !23 - store i32 2, ptr %data2, align 4, !dbg !23 - %0 = load i32, ptr %data1, align 4, !dbg !24 - %cmp = icmp eq i32 %0, 1, !dbg !25 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !26 - ret i32 0, !dbg !27 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BASIC_test_11-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b959132c620c1d5511825589aa0b5c10") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 6, type: !12, scopeLine: 6, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/BASIC_test_11-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b959132c620c1d5511825589aa0b5c10") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "data", scope: !10, file: !11, line: 7, type: !14) -!17 = !DILocation(line: 7, column: 9, scope: !10) -!18 = !DILocalVariable(name: "data", scope: !19, file: !11, line: 9, type: !14) -!19 = distinct !DILexicalBlock(scope: !10, file: !11, line: 8, column: 5) -!20 = !DILocation(line: 9, column: 13, scope: !19) -!21 = !DILocalVariable(name: "data", scope: !22, file: !11, line: 11, type: !14) -!22 = distinct !DILexicalBlock(scope: !19, file: !11, line: 10, column: 9) -!23 = !DILocation(line: 11, column: 17, scope: !22) -!24 = !DILocation(line: 13, column: 20, scope: !19) -!25 = !DILocation(line: 13, column: 25, scope: !19) -!26 = !DILocation(line: 13, column: 9, scope: !19) -!27 = !DILocation(line: 15, column: 2, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/BUF_OVERFLOW_test_47-0.c.bc b/test_cases_bc/ae_assert_tests/BUF_OVERFLOW_test_47-0.c.bc deleted file mode 100644 index d9d1e93a..00000000 --- a/test_cases_bc/ae_assert_tests/BUF_OVERFLOW_test_47-0.c.bc +++ /dev/null @@ -1,144 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/BUF_OVERFLOW_test_47-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BUF_OVERFLOW_test_47-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !30 { -entry: - %retval = alloca i32, align 4 - %buffer = alloca [58 x i32], align 16 - %randomNumber = alloca i32, align 4 - %ch = alloca i8, align 1 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !35, metadata !DIExpression()), !dbg !39 - %call = call i32 (i32, ...) @time(i32 noundef 0), !dbg !40 - call void @srand(i32 noundef %call) #5, !dbg !41 - call void @llvm.dbg.declare(metadata ptr %randomNumber, metadata !42, metadata !DIExpression()), !dbg !43 - %call1 = call i32 @rand() #5, !dbg !44 - %rem = srem i32 %call1, 128, !dbg !45 - store i32 %rem, ptr %randomNumber, align 4, !dbg !43 - call void @llvm.dbg.declare(metadata ptr %ch, metadata !46, metadata !DIExpression()), !dbg !48 - %0 = load i32, ptr %randomNumber, align 4, !dbg !49 - %conv = trunc i32 %0 to i8, !dbg !49 - store i8 %conv, ptr %ch, align 1, !dbg !48 - %call2 = call ptr @__ctype_b_loc() #6, !dbg !50 - %1 = load ptr, ptr %call2, align 8, !dbg !50 - %2 = load i8, ptr %ch, align 1, !dbg !50 - %conv3 = sext i8 %2 to i32, !dbg !50 - %idxprom = sext i32 %conv3 to i64, !dbg !50 - %arrayidx = getelementptr inbounds i16, ptr %1, i64 %idxprom, !dbg !50 - %3 = load i16, ptr %arrayidx, align 2, !dbg !50 - %conv4 = zext i16 %3 to i32, !dbg !50 - %and = and i32 %conv4, 2048, !dbg !50 - %tobool = icmp ne i32 %and, 0, !dbg !50 - br i1 %tobool, label %if.then, label %if.else, !dbg !52 - -if.then: ; preds = %entry - %4 = load i32, ptr %randomNumber, align 4, !dbg !53 - %idxprom5 = sext i32 %4 to i64, !dbg !55 - %arrayidx6 = getelementptr inbounds [58 x i32], ptr %buffer, i64 0, i64 %idxprom5, !dbg !55 - store i32 1, ptr %arrayidx6, align 4, !dbg !56 - br label %if.end, !dbg !57 - -if.else: ; preds = %entry - %5 = load i32, ptr %randomNumber, align 4, !dbg !58 - %idxprom7 = sext i32 %5 to i64, !dbg !60 - %arrayidx8 = getelementptr inbounds [58 x i32], ptr %buffer, i64 0, i64 %idxprom7, !dbg !60 - store i32 1, ptr %arrayidx8, align 4, !dbg !61 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %6 = load i32, ptr %retval, align 4, !dbg !62 - ret i32 %6, !dbg !62 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -declare i32 @time(...) #3 - -; Function Attrs: nounwind -declare i32 @rand() #2 - -; Function Attrs: nounwind willreturn memory(none) -declare ptr @__ctype_b_loc() #4 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind willreturn memory(none) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { nounwind willreturn memory(none) } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!22, !23, !24, !25, !26, !27, !28} -!llvm.ident = !{!29} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !19, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/BUF_OVERFLOW_test_47-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "352e37dfff62dbe992ec1404ff1c67f5") -!2 = !{!3} -!3 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !4, line: 46, baseType: !5, size: 32, elements: !6) -!4 = !DIFile(filename: "/usr/include/ctype.h", directory: "", checksumkind: CSK_MD5, checksum: "36575f934ef4fe7e9d50a3cb17bd5c66") -!5 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!6 = !{!7, !8, !9, !10, !11, !12, !13, !14, !15, !16, !17, !18} -!7 = !DIEnumerator(name: "_ISupper", value: 256) -!8 = !DIEnumerator(name: "_ISlower", value: 512) -!9 = !DIEnumerator(name: "_ISalpha", value: 1024) -!10 = !DIEnumerator(name: "_ISdigit", value: 2048) -!11 = !DIEnumerator(name: "_ISxdigit", value: 4096) -!12 = !DIEnumerator(name: "_ISspace", value: 8192) -!13 = !DIEnumerator(name: "_ISprint", value: 16384) -!14 = !DIEnumerator(name: "_ISgraph", value: 32768) -!15 = !DIEnumerator(name: "_ISblank", value: 1) -!16 = !DIEnumerator(name: "_IScntrl", value: 2) -!17 = !DIEnumerator(name: "_ISpunct", value: 4) -!18 = !DIEnumerator(name: "_ISalnum", value: 8) -!19 = !{!20, !21} -!20 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!21 = !DIBasicType(name: "unsigned short", size: 16, encoding: DW_ATE_unsigned) -!22 = !{i32 7, !"Dwarf Version", i32 5} -!23 = !{i32 2, !"Debug Info Version", i32 3} -!24 = !{i32 1, !"wchar_size", i32 4} -!25 = !{i32 8, !"PIC Level", i32 2} -!26 = !{i32 7, !"PIE Level", i32 2} -!27 = !{i32 7, !"uwtable", i32 2} -!28 = !{i32 7, !"frame-pointer", i32 2} -!29 = !{!"clang version 16.0.0"} -!30 = distinct !DISubprogram(name: "main", scope: !31, file: !31, line: 8, type: !32, scopeLine: 8, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !34) -!31 = !DIFile(filename: "src/ae_assert_tests/BUF_OVERFLOW_test_47-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "352e37dfff62dbe992ec1404ff1c67f5") -!32 = !DISubroutineType(types: !33) -!33 = !{!20} -!34 = !{} -!35 = !DILocalVariable(name: "buffer", scope: !30, file: !31, line: 9, type: !36) -!36 = !DICompositeType(tag: DW_TAG_array_type, baseType: !20, size: 1856, elements: !37) -!37 = !{!38} -!38 = !DISubrange(count: 58) -!39 = !DILocation(line: 9, column: 6, scope: !30) -!40 = !DILocation(line: 10, column: 11, scope: !30) -!41 = !DILocation(line: 10, column: 5, scope: !30) -!42 = !DILocalVariable(name: "randomNumber", scope: !30, file: !31, line: 11, type: !20) -!43 = !DILocation(line: 11, column: 6, scope: !30) -!44 = !DILocation(line: 11, column: 21, scope: !30) -!45 = !DILocation(line: 11, column: 28, scope: !30) -!46 = !DILocalVariable(name: "ch", scope: !30, file: !31, line: 12, type: !47) -!47 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!48 = !DILocation(line: 12, column: 10, scope: !30) -!49 = !DILocation(line: 12, column: 15, scope: !30) -!50 = !DILocation(line: 13, column: 9, scope: !51) -!51 = distinct !DILexicalBlock(scope: !30, file: !31, line: 13, column: 9) -!52 = !DILocation(line: 13, column: 9, scope: !30) -!53 = !DILocation(line: 15, column: 10, scope: !54) -!54 = distinct !DILexicalBlock(scope: !51, file: !31, line: 13, column: 22) -!55 = !DILocation(line: 15, column: 3, scope: !54) -!56 = !DILocation(line: 15, column: 24, scope: !54) -!57 = !DILocation(line: 16, column: 5, scope: !54) -!58 = !DILocation(line: 19, column: 10, scope: !59) -!59 = distinct !DILexicalBlock(scope: !51, file: !31, line: 17, column: 10) -!60 = !DILocation(line: 19, column: 3, scope: !59) -!61 = !DILocation(line: 19, column: 24, scope: !59) -!62 = !DILocation(line: 21, column: 1, scope: !30) diff --git a/test_cases_bc/ae_assert_tests/CAST_fptosi.c.bc b/test_cases_bc/ae_assert_tests/CAST_fptosi.c.bc deleted file mode 100644 index ea802782..00000000 --- a/test_cases_bc/ae_assert_tests/CAST_fptosi.c.bc +++ /dev/null @@ -1,64 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CAST_fptosi.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CAST_fptosi.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !12 { -entry: - %retval = alloca i32, align 4 - %f = alloca float, align 4 - %si = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %f, metadata !16, metadata !DIExpression()), !dbg !18 - store float 0xC0091EB860000000, ptr %f, align 4, !dbg !18 - call void @llvm.dbg.declare(metadata ptr %si, metadata !19, metadata !DIExpression()), !dbg !20 - %0 = load float, ptr %f, align 4, !dbg !21 - %conv = fptosi float %0 to i32, !dbg !22 - store i32 %conv, ptr %si, align 4, !dbg !20 - %1 = load i32, ptr %si, align 4, !dbg !23 - %cmp = icmp eq i32 %1, -3, !dbg !24 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !25 - ret i32 0, !dbg !26 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!4, !5, !6, !7, !8, !9, !10} -!llvm.ident = !{!11} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CAST_fptosi.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "05f2a344e08b283f616ac46982cbf04c") -!2 = !{!3} -!3 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!4 = !{i32 7, !"Dwarf Version", i32 5} -!5 = !{i32 2, !"Debug Info Version", i32 3} -!6 = !{i32 1, !"wchar_size", i32 4} -!7 = !{i32 8, !"PIC Level", i32 2} -!8 = !{i32 7, !"PIE Level", i32 2} -!9 = !{i32 7, !"uwtable", i32 2} -!10 = !{i32 7, !"frame-pointer", i32 2} -!11 = !{!"clang version 16.0.0"} -!12 = distinct !DISubprogram(name: "main", scope: !13, file: !13, line: 3, type: !14, scopeLine: 3, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!13 = !DIFile(filename: "src/ae_assert_tests/CAST_fptosi.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "05f2a344e08b283f616ac46982cbf04c") -!14 = !DISubroutineType(types: !2) -!15 = !{} -!16 = !DILocalVariable(name: "f", scope: !12, file: !13, line: 4, type: !17) -!17 = !DIBasicType(name: "float", size: 32, encoding: DW_ATE_float) -!18 = !DILocation(line: 4, column: 11, scope: !12) -!19 = !DILocalVariable(name: "si", scope: !12, file: !13, line: 5, type: !3) -!20 = !DILocation(line: 5, column: 9, scope: !12) -!21 = !DILocation(line: 5, column: 19, scope: !12) -!22 = !DILocation(line: 5, column: 14, scope: !12) -!23 = !DILocation(line: 6, column: 16, scope: !12) -!24 = !DILocation(line: 6, column: 19, scope: !12) -!25 = !DILocation(line: 6, column: 5, scope: !12) -!26 = !DILocation(line: 7, column: 5, scope: !12) diff --git a/test_cases_bc/ae_assert_tests/CAST_fptoui.c.bc b/test_cases_bc/ae_assert_tests/CAST_fptoui.c.bc deleted file mode 100644 index 25e293aa..00000000 --- a/test_cases_bc/ae_assert_tests/CAST_fptoui.c.bc +++ /dev/null @@ -1,81 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CAST_fptoui.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CAST_fptoui.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [3 x i8] c"UI\00", align 1, !dbg !0 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !20 { -entry: - %retval = alloca i32, align 4 - %f = alloca float, align 4 - %ui = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %f, metadata !25, metadata !DIExpression()), !dbg !27 - store float 0x40091EB860000000, ptr %f, align 4, !dbg !27 - call void @llvm.dbg.declare(metadata ptr %ui, metadata !28, metadata !DIExpression()), !dbg !29 - %0 = load float, ptr %f, align 4, !dbg !30 - %conv = fptoui float %0 to i32, !dbg !31 - store i32 %conv, ptr %ui, align 4, !dbg !29 - %1 = load i32, ptr %ui, align 4, !dbg !32 - call void @svf_print(i32 noundef %1, ptr noundef @.str), !dbg !33 - %2 = load i32, ptr %ui, align 4, !dbg !34 - %cmp = icmp eq i32 %2, 3, !dbg !35 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !36 - ret i32 0, !dbg !37 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_print(i32 noundef, ptr noundef) #2 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!7} -!llvm.module.flags = !{!12, !13, !14, !15, !16, !17, !18} -!llvm.ident = !{!19} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 7, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/CAST_fptoui.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "4c5eb2118728d711f6befe00e91db836") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 24, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 3) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !11, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CAST_fptoui.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "4c5eb2118728d711f6befe00e91db836") -!9 = !{!10} -!10 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!11 = !{!0} -!12 = !{i32 7, !"Dwarf Version", i32 5} -!13 = !{i32 2, !"Debug Info Version", i32 3} -!14 = !{i32 1, !"wchar_size", i32 4} -!15 = !{i32 8, !"PIC Level", i32 2} -!16 = !{i32 7, !"PIE Level", i32 2} -!17 = !{i32 7, !"uwtable", i32 2} -!18 = !{i32 7, !"frame-pointer", i32 2} -!19 = !{!"clang version 16.0.0"} -!20 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 4, type: !21, scopeLine: 4, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !24) -!21 = !DISubroutineType(types: !22) -!22 = !{!23} -!23 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!24 = !{} -!25 = !DILocalVariable(name: "f", scope: !20, file: !2, line: 5, type: !26) -!26 = !DIBasicType(name: "float", size: 32, encoding: DW_ATE_float) -!27 = !DILocation(line: 5, column: 11, scope: !20) -!28 = !DILocalVariable(name: "ui", scope: !20, file: !2, line: 6, type: !10) -!29 = !DILocation(line: 6, column: 18, scope: !20) -!30 = !DILocation(line: 6, column: 37, scope: !20) -!31 = !DILocation(line: 6, column: 23, scope: !20) -!32 = !DILocation(line: 7, column: 15, scope: !20) -!33 = !DILocation(line: 7, column: 5, scope: !20) -!34 = !DILocation(line: 8, column: 16, scope: !20) -!35 = !DILocation(line: 8, column: 19, scope: !20) -!36 = !DILocation(line: 8, column: 5, scope: !20) -!37 = !DILocation(line: 9, column: 5, scope: !20) diff --git a/test_cases_bc/ae_assert_tests/CAST_fptrunc.c.bc b/test_cases_bc/ae_assert_tests/CAST_fptrunc.c.bc deleted file mode 100644 index 09a11c3e..00000000 --- a/test_cases_bc/ae_assert_tests/CAST_fptrunc.c.bc +++ /dev/null @@ -1,66 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CAST_fptrunc.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CAST_fptrunc.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !12 { -entry: - %retval = alloca i32, align 4 - %d = alloca double, align 8 - %f = alloca float, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %d, metadata !18, metadata !DIExpression()), !dbg !20 - store double 1.000000e+00, ptr %d, align 8, !dbg !20 - call void @llvm.dbg.declare(metadata ptr %f, metadata !21, metadata !DIExpression()), !dbg !22 - %0 = load double, ptr %d, align 8, !dbg !23 - %conv = fptrunc double %0 to float, !dbg !24 - store float %conv, ptr %f, align 4, !dbg !22 - %1 = load float, ptr %f, align 4, !dbg !25 - %cmp = fcmp oeq float %1, 1.000000e+00, !dbg !26 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !27 - ret i32 0, !dbg !28 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!4, !5, !6, !7, !8, !9, !10} -!llvm.ident = !{!11} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CAST_fptrunc.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "2e88ac487de5d0c1c4be8578bacc0fcb") -!2 = !{!3} -!3 = !DIBasicType(name: "float", size: 32, encoding: DW_ATE_float) -!4 = !{i32 7, !"Dwarf Version", i32 5} -!5 = !{i32 2, !"Debug Info Version", i32 3} -!6 = !{i32 1, !"wchar_size", i32 4} -!7 = !{i32 8, !"PIC Level", i32 2} -!8 = !{i32 7, !"PIE Level", i32 2} -!9 = !{i32 7, !"uwtable", i32 2} -!10 = !{i32 7, !"frame-pointer", i32 2} -!11 = !{!"clang version 16.0.0"} -!12 = distinct !DISubprogram(name: "main", scope: !13, file: !13, line: 3, type: !14, scopeLine: 3, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) -!13 = !DIFile(filename: "src/ae_assert_tests/CAST_fptrunc.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "2e88ac487de5d0c1c4be8578bacc0fcb") -!14 = !DISubroutineType(types: !15) -!15 = !{!16} -!16 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!17 = !{} -!18 = !DILocalVariable(name: "d", scope: !12, file: !13, line: 4, type: !19) -!19 = !DIBasicType(name: "double", size: 64, encoding: DW_ATE_float) -!20 = !DILocation(line: 4, column: 12, scope: !12) -!21 = !DILocalVariable(name: "f", scope: !12, file: !13, line: 5, type: !3) -!22 = !DILocation(line: 5, column: 11, scope: !12) -!23 = !DILocation(line: 5, column: 22, scope: !12) -!24 = !DILocation(line: 5, column: 15, scope: !12) -!25 = !DILocation(line: 6, column: 16, scope: !12) -!26 = !DILocation(line: 6, column: 18, scope: !12) -!27 = !DILocation(line: 6, column: 5, scope: !12) -!28 = !DILocation(line: 7, column: 5, scope: !12) diff --git a/test_cases_bc/ae_assert_tests/CAST_sext.c.bc b/test_cases_bc/ae_assert_tests/CAST_sext.c.bc deleted file mode 100644 index a77105ca..00000000 --- a/test_cases_bc/ae_assert_tests/CAST_sext.c.bc +++ /dev/null @@ -1,61 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CAST_sext.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CAST_sext.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %size = alloca i8, align 1 - %c = alloca i32, align 4 - call void @llvm.dbg.declare(metadata ptr %size, metadata !16, metadata !DIExpression()), !dbg !18 - store i8 -1, ptr %size, align 1, !dbg !18 - call void @llvm.dbg.declare(metadata ptr %c, metadata !19, metadata !DIExpression()), !dbg !20 - %0 = load i8, ptr %size, align 1, !dbg !21 - %conv = sext i8 %0 to i32, !dbg !21 - store i32 %conv, ptr %c, align 4, !dbg !20 - %1 = load i32, ptr %c, align 4, !dbg !22 - %cmp = icmp eq i32 %1, -1, !dbg !23 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !24 - ret i32 0, !dbg !25 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CAST_sext.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "69d6f5c6750e914bc2270f5c46351d37") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 4, type: !12, scopeLine: 4, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/CAST_sext.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "69d6f5c6750e914bc2270f5c46351d37") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "size", scope: !10, file: !11, line: 5, type: !17) -!17 = !DIBasicType(name: "signed char", size: 8, encoding: DW_ATE_signed_char) -!18 = !DILocation(line: 5, column: 17, scope: !10) -!19 = !DILocalVariable(name: "c", scope: !10, file: !11, line: 6, type: !14) -!20 = !DILocation(line: 6, column: 9, scope: !10) -!21 = !DILocation(line: 6, column: 13, scope: !10) -!22 = !DILocation(line: 7, column: 16, scope: !10) -!23 = !DILocation(line: 7, column: 18, scope: !10) -!24 = !DILocation(line: 7, column: 5, scope: !10) -!25 = !DILocation(line: 8, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/CAST_sitofp.c.bc b/test_cases_bc/ae_assert_tests/CAST_sitofp.c.bc deleted file mode 100644 index 864ac431..00000000 --- a/test_cases_bc/ae_assert_tests/CAST_sitofp.c.bc +++ /dev/null @@ -1,65 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CAST_sitofp.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CAST_sitofp.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !12 { -entry: - %retval = alloca i32, align 4 - %si = alloca i32, align 4 - %f = alloca float, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %si, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 -42, ptr %si, align 4, !dbg !19 - call void @llvm.dbg.declare(metadata ptr %f, metadata !20, metadata !DIExpression()), !dbg !21 - %0 = load i32, ptr %si, align 4, !dbg !22 - %conv = sitofp i32 %0 to float, !dbg !23 - store float %conv, ptr %f, align 4, !dbg !21 - %1 = load float, ptr %f, align 4, !dbg !24 - %cmp = fcmp oeq float %1, -4.200000e+01, !dbg !25 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !26 - ret i32 0, !dbg !27 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!4, !5, !6, !7, !8, !9, !10} -!llvm.ident = !{!11} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CAST_sitofp.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f299735690641c664ae43ccba7dac4dc") -!2 = !{!3} -!3 = !DIBasicType(name: "float", size: 32, encoding: DW_ATE_float) -!4 = !{i32 7, !"Dwarf Version", i32 5} -!5 = !{i32 2, !"Debug Info Version", i32 3} -!6 = !{i32 1, !"wchar_size", i32 4} -!7 = !{i32 8, !"PIC Level", i32 2} -!8 = !{i32 7, !"PIE Level", i32 2} -!9 = !{i32 7, !"uwtable", i32 2} -!10 = !{i32 7, !"frame-pointer", i32 2} -!11 = !{!"clang version 16.0.0"} -!12 = distinct !DISubprogram(name: "main", scope: !13, file: !13, line: 3, type: !14, scopeLine: 3, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) -!13 = !DIFile(filename: "src/ae_assert_tests/CAST_sitofp.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f299735690641c664ae43ccba7dac4dc") -!14 = !DISubroutineType(types: !15) -!15 = !{!16} -!16 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!17 = !{} -!18 = !DILocalVariable(name: "si", scope: !12, file: !13, line: 4, type: !16) -!19 = !DILocation(line: 4, column: 9, scope: !12) -!20 = !DILocalVariable(name: "f", scope: !12, file: !13, line: 5, type: !3) -!21 = !DILocation(line: 5, column: 11, scope: !12) -!22 = !DILocation(line: 5, column: 22, scope: !12) -!23 = !DILocation(line: 5, column: 15, scope: !12) -!24 = !DILocation(line: 6, column: 16, scope: !12) -!25 = !DILocation(line: 6, column: 18, scope: !12) -!26 = !DILocation(line: 6, column: 5, scope: !12) -!27 = !DILocation(line: 7, column: 5, scope: !12) diff --git a/test_cases_bc/ae_assert_tests/CAST_trunc.c.bc b/test_cases_bc/ae_assert_tests/CAST_trunc.c.bc deleted file mode 100644 index 6c568b14..00000000 --- a/test_cases_bc/ae_assert_tests/CAST_trunc.c.bc +++ /dev/null @@ -1,73 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CAST_trunc.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CAST_trunc.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !16 { -entry: - %retval = alloca i32, align 4 - %largeValue = alloca i64, align 8 - %truncatedValue = alloca i8, align 1 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %largeValue, metadata !22, metadata !DIExpression()), !dbg !26 - store i64 256, ptr %largeValue, align 8, !dbg !26 - call void @llvm.dbg.declare(metadata ptr %truncatedValue, metadata !27, metadata !DIExpression()), !dbg !28 - %0 = load i64, ptr %largeValue, align 8, !dbg !29 - %conv = trunc i64 %0 to i8, !dbg !30 - store i8 %conv, ptr %truncatedValue, align 1, !dbg !28 - %1 = load i8, ptr %truncatedValue, align 1, !dbg !31 - %conv1 = sext i8 %1 to i32, !dbg !31 - %cmp = icmp eq i32 %conv1, 0, !dbg !32 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !33 - ret i32 0, !dbg !34 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!8, !9, !10, !11, !12, !13, !14} -!llvm.ident = !{!15} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CAST_trunc.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "cf95474b31e6546b0cf82e7999d64a74") -!2 = !{!3} -!3 = !DIDerivedType(tag: DW_TAG_typedef, name: "int8_t", file: !4, line: 24, baseType: !5) -!4 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h", directory: "", checksumkind: CSK_MD5, checksum: "081edea97425b3437dded4a7fe223193") -!5 = !DIDerivedType(tag: DW_TAG_typedef, name: "__int8_t", file: !6, line: 37, baseType: !7) -!6 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "f6304b1a6dcfc6bee76e9a51043b5090") -!7 = !DIBasicType(name: "signed char", size: 8, encoding: DW_ATE_signed_char) -!8 = !{i32 7, !"Dwarf Version", i32 5} -!9 = !{i32 2, !"Debug Info Version", i32 3} -!10 = !{i32 1, !"wchar_size", i32 4} -!11 = !{i32 8, !"PIC Level", i32 2} -!12 = !{i32 7, !"PIE Level", i32 2} -!13 = !{i32 7, !"uwtable", i32 2} -!14 = !{i32 7, !"frame-pointer", i32 2} -!15 = !{!"clang version 16.0.0"} -!16 = distinct !DISubprogram(name: "main", scope: !17, file: !17, line: 4, type: !18, scopeLine: 4, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !21) -!17 = !DIFile(filename: "src/ae_assert_tests/CAST_trunc.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "cf95474b31e6546b0cf82e7999d64a74") -!18 = !DISubroutineType(types: !19) -!19 = !{!20} -!20 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!21 = !{} -!22 = !DILocalVariable(name: "largeValue", scope: !16, file: !17, line: 5, type: !23) -!23 = !DIDerivedType(tag: DW_TAG_typedef, name: "int64_t", file: !4, line: 27, baseType: !24) -!24 = !DIDerivedType(tag: DW_TAG_typedef, name: "__int64_t", file: !6, line: 44, baseType: !25) -!25 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) -!26 = !DILocation(line: 5, column: 13, scope: !16) -!27 = !DILocalVariable(name: "truncatedValue", scope: !16, file: !17, line: 6, type: !3) -!28 = !DILocation(line: 6, column: 12, scope: !16) -!29 = !DILocation(line: 6, column: 37, scope: !16) -!30 = !DILocation(line: 6, column: 29, scope: !16) -!31 = !DILocation(line: 8, column: 16, scope: !16) -!32 = !DILocation(line: 8, column: 31, scope: !16) -!33 = !DILocation(line: 8, column: 5, scope: !16) -!34 = !DILocation(line: 9, column: 5, scope: !16) diff --git a/test_cases_bc/ae_assert_tests/CAST_uitofp.c.bc b/test_cases_bc/ae_assert_tests/CAST_uitofp.c.bc deleted file mode 100644 index 0ad3e7ab..00000000 --- a/test_cases_bc/ae_assert_tests/CAST_uitofp.c.bc +++ /dev/null @@ -1,66 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CAST_uitofp.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CAST_uitofp.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !12 { -entry: - %retval = alloca i32, align 4 - %ui = alloca i32, align 4 - %f = alloca float, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %ui, metadata !18, metadata !DIExpression()), !dbg !20 - store i32 42, ptr %ui, align 4, !dbg !20 - call void @llvm.dbg.declare(metadata ptr %f, metadata !21, metadata !DIExpression()), !dbg !22 - %0 = load i32, ptr %ui, align 4, !dbg !23 - %conv = uitofp i32 %0 to float, !dbg !24 - store float %conv, ptr %f, align 4, !dbg !22 - %1 = load float, ptr %f, align 4, !dbg !25 - %cmp = fcmp oeq float %1, 4.200000e+01, !dbg !26 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !27 - ret i32 0, !dbg !28 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!4, !5, !6, !7, !8, !9, !10} -!llvm.ident = !{!11} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CAST_uitofp.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ee427f11a1d5c3cc9eabda368128b6f5") -!2 = !{!3} -!3 = !DIBasicType(name: "float", size: 32, encoding: DW_ATE_float) -!4 = !{i32 7, !"Dwarf Version", i32 5} -!5 = !{i32 2, !"Debug Info Version", i32 3} -!6 = !{i32 1, !"wchar_size", i32 4} -!7 = !{i32 8, !"PIC Level", i32 2} -!8 = !{i32 7, !"PIE Level", i32 2} -!9 = !{i32 7, !"uwtable", i32 2} -!10 = !{i32 7, !"frame-pointer", i32 2} -!11 = !{!"clang version 16.0.0"} -!12 = distinct !DISubprogram(name: "main", scope: !13, file: !13, line: 3, type: !14, scopeLine: 3, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) -!13 = !DIFile(filename: "src/ae_assert_tests/CAST_uitofp.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ee427f11a1d5c3cc9eabda368128b6f5") -!14 = !DISubroutineType(types: !15) -!15 = !{!16} -!16 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!17 = !{} -!18 = !DILocalVariable(name: "ui", scope: !12, file: !13, line: 4, type: !19) -!19 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!20 = !DILocation(line: 4, column: 18, scope: !12) -!21 = !DILocalVariable(name: "f", scope: !12, file: !13, line: 5, type: !3) -!22 = !DILocation(line: 5, column: 11, scope: !12) -!23 = !DILocation(line: 5, column: 22, scope: !12) -!24 = !DILocation(line: 5, column: 15, scope: !12) -!25 = !DILocation(line: 6, column: 16, scope: !12) -!26 = !DILocation(line: 6, column: 18, scope: !12) -!27 = !DILocation(line: 6, column: 5, scope: !12) -!28 = !DILocation(line: 7, column: 5, scope: !12) diff --git a/test_cases_bc/ae_assert_tests/CAST_zext.c.bc b/test_cases_bc/ae_assert_tests/CAST_zext.c.bc deleted file mode 100644 index dbdc5ccc..00000000 --- a/test_cases_bc/ae_assert_tests/CAST_zext.c.bc +++ /dev/null @@ -1,63 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CAST_zext.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CAST_zext.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %size = alloca i8, align 1 - %c = alloca i32, align 4 - call void @llvm.dbg.declare(metadata ptr %size, metadata !16, metadata !DIExpression()), !dbg !18 - store i8 -1, ptr %size, align 1, !dbg !18 - call void @llvm.dbg.declare(metadata ptr %c, metadata !19, metadata !DIExpression()), !dbg !20 - %0 = load i8, ptr %size, align 1, !dbg !21 - %conv = zext i8 %0 to i32, !dbg !21 - %add = add nsw i32 %conv, 1, !dbg !22 - store i32 %add, ptr %c, align 4, !dbg !20 - %1 = load i32, ptr %c, align 4, !dbg !23 - %cmp = icmp eq i32 %1, 256, !dbg !24 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !25 - ret i32 0, !dbg !26 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CAST_zext.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "dc4ad4d019087cd91900b640e0f3fe7d") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 3, type: !12, scopeLine: 3, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/CAST_zext.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "dc4ad4d019087cd91900b640e0f3fe7d") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "size", scope: !10, file: !11, line: 4, type: !17) -!17 = !DIBasicType(name: "unsigned char", size: 8, encoding: DW_ATE_unsigned_char) -!18 = !DILocation(line: 4, column: 19, scope: !10) -!19 = !DILocalVariable(name: "c", scope: !10, file: !11, line: 5, type: !14) -!20 = !DILocation(line: 5, column: 9, scope: !10) -!21 = !DILocation(line: 5, column: 13, scope: !10) -!22 = !DILocation(line: 5, column: 18, scope: !10) -!23 = !DILocation(line: 6, column: 16, scope: !10) -!24 = !DILocation(line: 6, column: 18, scope: !10) -!25 = !DILocation(line: 6, column: 5, scope: !10) -!26 = !DILocation(line: 7, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/CVE-2019-19847-0.c.bc b/test_cases_bc/ae_assert_tests/CVE-2019-19847-0.c.bc deleted file mode 100644 index 7b477af4..00000000 --- a/test_cases_bc/ae_assert_tests/CVE-2019-19847-0.c.bc +++ /dev/null @@ -1,103 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2019-19847-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2019-19847-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @spiro_to_bpath0(ptr noundef %dm) #0 !dbg !10 { -entry: - %dm.addr = alloca ptr, align 8 - %index = alloca i32, align 4 - store ptr %dm, ptr %dm.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %dm.addr, metadata !17, metadata !DIExpression()), !dbg !18 - call void @llvm.dbg.declare(metadata ptr %index, metadata !19, metadata !DIExpression()), !dbg !21 - store i32 5, ptr %index, align 4, !dbg !21 - %0 = load ptr, ptr %dm.addr, align 8, !dbg !22 - %1 = load i32, ptr %index, align 4, !dbg !23 - %idxprom = sext i32 %1 to i64, !dbg !22 - %arrayidx = getelementptr inbounds double, ptr %0, i64 %idxprom, !dbg !22 - store double 1.000000e+00, ptr %arrayidx, align 8, !dbg !24 - ret void, !dbg !25 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @test_curve() #0 !dbg !26 { -entry: - %d = alloca [5 x double], align 16 - call void @llvm.dbg.declare(metadata ptr %d, metadata !29, metadata !DIExpression()), !dbg !33 - %arrayidx = getelementptr inbounds [5 x double], ptr %d, i64 0, i64 0, !dbg !34 - store double 1.000000e+00, ptr %arrayidx, align 16, !dbg !35 - %arrayidx1 = getelementptr inbounds [5 x double], ptr %d, i64 0, i64 1, !dbg !36 - store double 0.000000e+00, ptr %arrayidx1, align 8, !dbg !37 - %arrayidx2 = getelementptr inbounds [5 x double], ptr %d, i64 0, i64 1, !dbg !38 - store double 0.000000e+00, ptr %arrayidx2, align 8, !dbg !39 - %arraydecay = getelementptr inbounds [5 x double], ptr %d, i64 0, i64 0, !dbg !40 - call void @spiro_to_bpath0(ptr noundef %arraydecay), !dbg !41 - ret void, !dbg !42 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !43 { -entry: - call void @test_curve(), !dbg !46 - ret i32 0, !dbg !47 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2019-19847-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7b91574c69bf47480e7c784203b7580e") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "spiro_to_bpath0", scope: !11, file: !11, line: 8, type: !12, scopeLine: 8, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "src/ae_assert_tests/CVE-2019-19847-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7b91574c69bf47480e7c784203b7580e") -!12 = !DISubroutineType(types: !13) -!13 = !{null, !14} -!14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) -!15 = !DIBasicType(name: "double", size: 64, encoding: DW_ATE_float) -!16 = !{} -!17 = !DILocalVariable(name: "dm", arg: 1, scope: !10, file: !11, line: 8, type: !14) -!18 = !DILocation(line: 8, column: 30, scope: !10) -!19 = !DILocalVariable(name: "index", scope: !10, file: !11, line: 9, type: !20) -!20 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!21 = !DILocation(line: 9, column: 9, scope: !10) -!22 = !DILocation(line: 11, column: 5, scope: !10) -!23 = !DILocation(line: 11, column: 8, scope: !10) -!24 = !DILocation(line: 11, column: 15, scope: !10) -!25 = !DILocation(line: 12, column: 1, scope: !10) -!26 = distinct !DISubprogram(name: "test_curve", scope: !11, file: !11, line: 14, type: !27, scopeLine: 14, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!27 = !DISubroutineType(types: !28) -!28 = !{null} -!29 = !DILocalVariable(name: "d", scope: !26, file: !11, line: 15, type: !30) -!30 = !DICompositeType(tag: DW_TAG_array_type, baseType: !15, size: 320, elements: !31) -!31 = !{!32} -!32 = !DISubrange(count: 5) -!33 = !DILocation(line: 15, column: 12, scope: !26) -!34 = !DILocation(line: 16, column: 5, scope: !26) -!35 = !DILocation(line: 16, column: 10, scope: !26) -!36 = !DILocation(line: 16, column: 23, scope: !26) -!37 = !DILocation(line: 16, column: 28, scope: !26) -!38 = !DILocation(line: 16, column: 16, scope: !26) -!39 = !DILocation(line: 16, column: 21, scope: !26) -!40 = !DILocation(line: 18, column: 21, scope: !26) -!41 = !DILocation(line: 18, column: 5, scope: !26) -!42 = !DILocation(line: 19, column: 1, scope: !26) -!43 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 21, type: !44, scopeLine: 21, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!44 = !DISubroutineType(types: !45) -!45 = !{!20} -!46 = !DILocation(line: 22, column: 5, scope: !43) -!47 = !DILocation(line: 23, column: 1, scope: !43) diff --git a/test_cases_bc/ae_assert_tests/CVE-2020-13598-0.c.bc b/test_cases_bc/ae_assert_tests/CVE-2020-13598-0.c.bc deleted file mode 100644 index 397abf7e..00000000 --- a/test_cases_bc/ae_assert_tests/CVE-2020-13598-0.c.bc +++ /dev/null @@ -1,116 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2020-13598-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2020-13598-0.c" -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-unknown-linux-gnu" - -%struct.FILINFO = type { [256 x i8] } -%struct.fs_dirent = type { [13 x i8] } - -@.str = private unnamed_addr constant [21 x i8] c"01234567890123456789\00", align 1, !dbg !0 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @fatfs_stat(ptr noundef %entry1, ptr noundef byval(%struct.FILINFO) align 8 %fno) #0 !dbg !18 { -entry: - %entry.addr = alloca ptr, align 8 - store ptr %entry1, ptr %entry.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %entry.addr, metadata !36, metadata !DIExpression()), !dbg !37 - call void @llvm.dbg.declare(metadata ptr %fno, metadata !38, metadata !DIExpression()), !dbg !39 - %0 = load ptr, ptr %entry.addr, align 8, !dbg !40 - %name = getelementptr inbounds %struct.fs_dirent, ptr %0, i32 0, i32 0, !dbg !43 - %arraydecay = getelementptr inbounds [13 x i8], ptr %name, i64 0, i64 0, !dbg !40 - %fname = getelementptr inbounds %struct.FILINFO, ptr %fno, i32 0, i32 0, !dbg !44 - %arraydecay2 = getelementptr inbounds [256 x i8], ptr %fname, i64 0, i64 0, !dbg !45 - %call = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef %arraydecay2) #3, !dbg !46 - ret void, !dbg !47 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !48 { -entry: - %fsdir = alloca %struct.fs_dirent, align 1 - %filinfo = alloca %struct.FILINFO, align 8 - call void @llvm.dbg.declare(metadata ptr %fsdir, metadata !52, metadata !DIExpression()), !dbg !53 - call void @llvm.dbg.declare(metadata ptr %filinfo, metadata !54, metadata !DIExpression()), !dbg !55 - %fname = getelementptr inbounds %struct.FILINFO, ptr %filinfo, i32 0, i32 0, !dbg !56 - %arraydecay = getelementptr inbounds [256 x i8], ptr %fname, i64 0, i64 0, !dbg !57 - %call = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef @.str) #3, !dbg !58 - call void @fatfs_stat(ptr noundef %fsdir, ptr noundef byval(%struct.FILINFO) align 8 %filinfo), !dbg !59 - ret i32 0, !dbg !60 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind } - -!llvm.dbg.cu = !{!7} -!llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} -!llvm.ident = !{!17} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 39, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/CVE-2020-13598-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fa9fd30bbc3fb31123484e9354e4fdf5") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 168, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 21) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2020-13598-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fa9fd30bbc3fb31123484e9354e4fdf5") -!9 = !{!0} -!10 = !{i32 7, !"Dwarf Version", i32 5} -!11 = !{i32 2, !"Debug Info Version", i32 3} -!12 = !{i32 1, !"wchar_size", i32 4} -!13 = !{i32 8, !"PIC Level", i32 2} -!14 = !{i32 7, !"PIE Level", i32 2} -!15 = !{i32 7, !"uwtable", i32 2} -!16 = !{i32 7, !"frame-pointer", i32 2} -!17 = !{!"clang version 16.0.0"} -!18 = distinct !DISubprogram(name: "fatfs_stat", scope: !2, file: !2, line: 29, type: !19, scopeLine: 29, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !35) -!19 = !DISubroutineType(types: !20) -!20 = !{null, !21, !28} -!21 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !22, size: 64) -!22 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "fs_dirent", file: !2, line: 25, size: 104, elements: !23) -!23 = !{!24} -!24 = !DIDerivedType(tag: DW_TAG_member, name: "name", scope: !22, file: !2, line: 26, baseType: !25, size: 104) -!25 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 104, elements: !26) -!26 = !{!27} -!27 = !DISubrange(count: 13) -!28 = !DIDerivedType(tag: DW_TAG_typedef, name: "FILINFO", file: !2, line: 23, baseType: !29) -!29 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !2, line: 17, size: 2048, elements: !30) -!30 = !{!31} -!31 = !DIDerivedType(tag: DW_TAG_member, name: "fname", scope: !29, file: !2, line: 19, baseType: !32, size: 2048) -!32 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 2048, elements: !33) -!33 = !{!34} -!34 = !DISubrange(count: 256) -!35 = !{} -!36 = !DILocalVariable(name: "entry", arg: 1, scope: !18, file: !2, line: 29, type: !21) -!37 = !DILocation(line: 29, column: 35, scope: !18) -!38 = !DILocalVariable(name: "fno", arg: 2, scope: !18, file: !2, line: 29, type: !28) -!39 = !DILocation(line: 29, column: 50, scope: !18) -!40 = !DILocation(line: 32, column: 10, scope: !41) -!41 = distinct !DILexicalBlock(scope: !42, file: !2, line: 30, column: 15) -!42 = distinct !DILexicalBlock(scope: !18, file: !2, line: 30, column: 9) -!43 = !DILocation(line: 32, column: 17, scope: !41) -!44 = !DILocation(line: 32, column: 27, scope: !41) -!45 = !DILocation(line: 32, column: 23, scope: !41) -!46 = !DILocation(line: 32, column: 3, scope: !41) -!47 = !DILocation(line: 34, column: 1, scope: !18) -!48 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 36, type: !49, scopeLine: 36, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !35) -!49 = !DISubroutineType(types: !50) -!50 = !{!51} -!51 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!52 = !DILocalVariable(name: "fsdir", scope: !48, file: !2, line: 37, type: !22) -!53 = !DILocation(line: 37, column: 22, scope: !48) -!54 = !DILocalVariable(name: "filinfo", scope: !48, file: !2, line: 38, type: !28) -!55 = !DILocation(line: 38, column: 13, scope: !48) -!56 = !DILocation(line: 39, column: 20, scope: !48) -!57 = !DILocation(line: 39, column: 12, scope: !48) -!58 = !DILocation(line: 39, column: 5, scope: !48) -!59 = !DILocation(line: 40, column: 5, scope: !48) -!60 = !DILocation(line: 41, column: 1, scope: !48) diff --git a/test_cases_bc/ae_assert_tests/CVE-2020-29203-0.c.bc b/test_cases_bc/ae_assert_tests/CVE-2020-29203-0.c.bc deleted file mode 100644 index 3be09c91..00000000 --- a/test_cases_bc/ae_assert_tests/CVE-2020-29203-0.c.bc +++ /dev/null @@ -1,356 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2020-29203-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2020-29203-0.c" -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-unknown-linux-gnu" - -%struct.cJSON = type { ptr, ptr, ptr } -%struct.Hometown = type { [8 x i8] } - -@.str = private unnamed_addr constant [5 x i8] c"name\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [79 x i8] c"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ\00", align 1, !dbg !7 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @cJSON_CreateString(ptr noundef %string) #0 !dbg !33 { -entry: - %string.addr = alloca ptr, align 8 - %item = alloca ptr, align 8 - store ptr %string, ptr %string.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %string.addr, metadata !39, metadata !DIExpression()), !dbg !40 - call void @llvm.dbg.declare(metadata ptr %item, metadata !41, metadata !DIExpression()), !dbg !42 - %call = call noalias ptr @malloc(i64 noundef 24) #7, !dbg !43 - store ptr %call, ptr %item, align 8, !dbg !42 - %0 = load ptr, ptr %string.addr, align 8, !dbg !44 - %call1 = call ptr @cJSON_strdup(ptr noundef %0), !dbg !45 - %1 = load ptr, ptr %item, align 8, !dbg !46 - %valuestring = getelementptr inbounds %struct.cJSON, ptr %1, i32 0, i32 1, !dbg !47 - store ptr %call1, ptr %valuestring, align 8, !dbg !48 - %2 = load ptr, ptr %item, align 8, !dbg !49 - ret ptr %2, !dbg !50 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define internal ptr @cJSON_strdup(ptr noundef %str) #0 !dbg !51 { -entry: - %str.addr = alloca ptr, align 8 - %len = alloca i64, align 8 - %copy = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %str.addr, metadata !54, metadata !DIExpression()), !dbg !55 - call void @llvm.dbg.declare(metadata ptr %len, metadata !56, metadata !DIExpression()), !dbg !60 - %0 = load ptr, ptr %str.addr, align 8, !dbg !61 - %call = call i64 @strlen(ptr noundef %0) #8, !dbg !62 - %add = add i64 %call, 1, !dbg !63 - store i64 %add, ptr %len, align 8, !dbg !60 - call void @llvm.dbg.declare(metadata ptr %copy, metadata !64, metadata !DIExpression()), !dbg !65 - %1 = load i64, ptr %len, align 8, !dbg !66 - %call1 = call noalias ptr @malloc(i64 noundef %1) #7, !dbg !67 - store ptr %call1, ptr %copy, align 8, !dbg !65 - %2 = load ptr, ptr %copy, align 8, !dbg !68 - %3 = load ptr, ptr %str.addr, align 8, !dbg !69 - %4 = load i64, ptr %len, align 8, !dbg !70 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2, ptr align 1 %3, i64 %4, i1 false), !dbg !71 - %5 = load ptr, ptr %copy, align 8, !dbg !72 - ret ptr %5, !dbg !73 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @cJSON_AddItemToArray(ptr noundef %array, ptr noundef %item) #0 !dbg !74 { -entry: - %array.addr = alloca ptr, align 8 - %item.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %array, ptr %array.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %array.addr, metadata !77, metadata !DIExpression()), !dbg !78 - store ptr %item, ptr %item.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %item.addr, metadata !79, metadata !DIExpression()), !dbg !80 - call void @llvm.dbg.declare(metadata ptr %c, metadata !81, metadata !DIExpression()), !dbg !82 - %0 = load ptr, ptr %array.addr, align 8, !dbg !83 - %child = getelementptr inbounds %struct.cJSON, ptr %0, i32 0, i32 0, !dbg !84 - %1 = load ptr, ptr %child, align 8, !dbg !84 - store ptr %1, ptr %c, align 8, !dbg !82 - %2 = load ptr, ptr %c, align 8, !dbg !85 - %tobool = icmp ne ptr %2, null, !dbg !85 - br i1 %tobool, label %if.end, label %if.then, !dbg !87 - -if.then: ; preds = %entry - %3 = load ptr, ptr %item.addr, align 8, !dbg !88 - %4 = load ptr, ptr %array.addr, align 8, !dbg !90 - %child1 = getelementptr inbounds %struct.cJSON, ptr %4, i32 0, i32 0, !dbg !91 - store ptr %3, ptr %child1, align 8, !dbg !92 - br label %if.end, !dbg !93 - -if.end: ; preds = %if.then, %entry - ret void, !dbg !94 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @cJSON_AddItemToObject(ptr noundef %object, ptr noundef %string, ptr noundef %item) #0 !dbg !95 { -entry: - %object.addr = alloca ptr, align 8 - %string.addr = alloca ptr, align 8 - %item.addr = alloca ptr, align 8 - store ptr %object, ptr %object.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %object.addr, metadata !98, metadata !DIExpression()), !dbg !99 - store ptr %string, ptr %string.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %string.addr, metadata !100, metadata !DIExpression()), !dbg !101 - store ptr %item, ptr %item.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %item.addr, metadata !102, metadata !DIExpression()), !dbg !103 - %0 = load ptr, ptr %string.addr, align 8, !dbg !104 - %call = call ptr @cJSON_strdup(ptr noundef %0), !dbg !105 - %1 = load ptr, ptr %item.addr, align 8, !dbg !106 - %string1 = getelementptr inbounds %struct.cJSON, ptr %1, i32 0, i32 2, !dbg !107 - store ptr %call, ptr %string1, align 8, !dbg !108 - %2 = load ptr, ptr %object.addr, align 8, !dbg !109 - %3 = load ptr, ptr %item.addr, align 8, !dbg !110 - call void @cJSON_AddItemToArray(ptr noundef %2, ptr noundef %3), !dbg !111 - ret void, !dbg !112 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !113 { -entry: - %json = alloca ptr, align 8 - %test = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %json, metadata !117, metadata !DIExpression()), !dbg !118 - %call = call noalias ptr @malloc(i64 noundef 24) #7, !dbg !119 - store ptr %call, ptr %json, align 8, !dbg !118 - %0 = load ptr, ptr %json, align 8, !dbg !120 - %call1 = call ptr @cJSON_CreateString(ptr noundef @.str.1), !dbg !121 - call void @cJSON_AddItemToObject(ptr noundef %0, ptr noundef @.str, ptr noundef %call1), !dbg !122 - call void @llvm.dbg.declare(metadata ptr %test, metadata !123, metadata !DIExpression()), !dbg !132 - %1 = load ptr, ptr %json, align 8, !dbg !133 - %call2 = call ptr @json_to_struct(ptr noundef %1), !dbg !134 - store ptr %call2, ptr %test, align 8, !dbg !132 - ret i32 0, !dbg !135 -} - -; Function Attrs: noinline nounwind optnone uwtable -define internal ptr @json_to_struct(ptr noundef %json_obj) #0 !dbg !136 { -entry: - %json_obj.addr = alloca ptr, align 8 - %json_temp = alloca ptr, align 8 - %struct_hometown = alloca ptr, align 8 - store ptr %json_obj, ptr %json_obj.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %json_obj.addr, metadata !140, metadata !DIExpression()), !dbg !141 - call void @llvm.dbg.declare(metadata ptr %json_temp, metadata !142, metadata !DIExpression()), !dbg !143 - call void @llvm.dbg.declare(metadata ptr %struct_hometown, metadata !144, metadata !DIExpression()), !dbg !143 - %call = call noalias ptr @malloc(i64 noundef 8) #7, !dbg !143 - store ptr %call, ptr %struct_hometown, align 8, !dbg !143 - %0 = load ptr, ptr %struct_hometown, align 8, !dbg !145 - %tobool = icmp ne ptr %0, null, !dbg !145 - br i1 %tobool, label %if.then, label %if.end, !dbg !143 - -if.then: ; preds = %entry - %1 = load ptr, ptr %struct_hometown, align 8, !dbg !145 - call void @llvm.memset.p0.i64(ptr align 1 %1, i8 0, i64 8, i1 false), !dbg !145 - br label %if.end, !dbg !145 - -if.end: ; preds = %if.then, %entry - %2 = load ptr, ptr %json_obj.addr, align 8, !dbg !147 - %child = getelementptr inbounds %struct.cJSON, ptr %2, i32 0, i32 0, !dbg !147 - %3 = load ptr, ptr %child, align 8, !dbg !147 - store ptr %3, ptr %json_temp, align 8, !dbg !147 - %4 = load ptr, ptr %json_temp, align 8, !dbg !148 - %tobool1 = icmp ne ptr %4, null, !dbg !148 - br i1 %tobool1, label %if.then2, label %if.end4, !dbg !147 - -if.then2: ; preds = %if.end - %5 = load ptr, ptr %struct_hometown, align 8, !dbg !148 - %name = getelementptr inbounds %struct.Hometown, ptr %5, i32 0, i32 0, !dbg !148 - %arraydecay = getelementptr inbounds [8 x i8], ptr %name, i64 0, i64 0, !dbg !148 - %6 = load ptr, ptr %json_temp, align 8, !dbg !148 - %valuestring = getelementptr inbounds %struct.cJSON, ptr %6, i32 0, i32 1, !dbg !148 - %7 = load ptr, ptr %valuestring, align 8, !dbg !148 - %call3 = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef %7) #9, !dbg !148 - br label %if.end4, !dbg !148 - -if.end4: ; preds = %if.then2, %if.end - %8 = load ptr, ptr %struct_hometown, align 8, !dbg !150 - ret ptr %8, !dbg !151 -} - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #3 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 - -; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #6 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #6 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind allocsize(0) } -attributes #8 = { nounwind willreturn memory(read) } -attributes #9 = { nounwind } - -!llvm.dbg.cu = !{!12} -!llvm.module.flags = !{!25, !26, !27, !28, !29, !30, !31} -!llvm.ident = !{!32} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 67, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/CVE-2020-29203-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "126830e37a8bafa0c896b9cbfcd0d236") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 40, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 5) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 67, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 632, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 79) -!12 = distinct !DICompileUnit(language: DW_LANG_C11, file: !13, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !14, globals: !24, splitDebugInlining: false, nameTableKind: None) -!13 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2020-29203-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "126830e37a8bafa0c896b9cbfcd0d236") -!14 = !{!15, !22} -!15 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !16, size: 64) -!16 = !DIDerivedType(tag: DW_TAG_typedef, name: "cJSON", file: !2, line: 22, baseType: !17) -!17 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "cJSON", file: !2, line: 18, size: 192, elements: !18) -!18 = !{!19, !21, !23} -!19 = !DIDerivedType(tag: DW_TAG_member, name: "child", scope: !17, file: !2, line: 19, baseType: !20, size: 64) -!20 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !17, size: 64) -!21 = !DIDerivedType(tag: DW_TAG_member, name: "valuestring", scope: !17, file: !2, line: 20, baseType: !22, size: 64, offset: 64) -!22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!23 = !DIDerivedType(tag: DW_TAG_member, name: "string", scope: !17, file: !2, line: 21, baseType: !22, size: 64, offset: 128) -!24 = !{!0, !7} -!25 = !{i32 7, !"Dwarf Version", i32 5} -!26 = !{i32 2, !"Debug Info Version", i32 3} -!27 = !{i32 1, !"wchar_size", i32 4} -!28 = !{i32 8, !"PIC Level", i32 2} -!29 = !{i32 7, !"PIE Level", i32 2} -!30 = !{i32 7, !"uwtable", i32 2} -!31 = !{i32 7, !"frame-pointer", i32 2} -!32 = !{!"clang version 16.0.0"} -!33 = distinct !DISubprogram(name: "cJSON_CreateString", scope: !2, file: !2, line: 41, type: !34, scopeLine: 41, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !12, retainedNodes: !38) -!34 = !DISubroutineType(types: !35) -!35 = !{!15, !36} -!36 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !37, size: 64) -!37 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !4) -!38 = !{} -!39 = !DILocalVariable(name: "string", arg: 1, scope: !33, file: !2, line: 41, type: !36) -!40 = !DILocation(line: 41, column: 39, scope: !33) -!41 = !DILocalVariable(name: "item", scope: !33, file: !2, line: 42, type: !15) -!42 = !DILocation(line: 42, column: 12, scope: !33) -!43 = !DILocation(line: 42, column: 27, scope: !33) -!44 = !DILocation(line: 43, column: 36, scope: !33) -!45 = !DILocation(line: 43, column: 23, scope: !33) -!46 = !DILocation(line: 43, column: 5, scope: !33) -!47 = !DILocation(line: 43, column: 11, scope: !33) -!48 = !DILocation(line: 43, column: 22, scope: !33) -!49 = !DILocation(line: 44, column: 12, scope: !33) -!50 = !DILocation(line: 44, column: 5, scope: !33) -!51 = distinct !DISubprogram(name: "cJSON_strdup", scope: !2, file: !2, line: 34, type: !52, scopeLine: 34, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, retainedNodes: !38) -!52 = !DISubroutineType(types: !53) -!53 = !{!22, !36} -!54 = !DILocalVariable(name: "str", arg: 1, scope: !51, file: !2, line: 34, type: !36) -!55 = !DILocation(line: 34, column: 39, scope: !51) -!56 = !DILocalVariable(name: "len", scope: !51, file: !2, line: 35, type: !57) -!57 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !58, line: 46, baseType: !59) -!58 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!59 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) -!60 = !DILocation(line: 35, column: 14, scope: !51) -!61 = !DILocation(line: 35, column: 27, scope: !51) -!62 = !DILocation(line: 35, column: 20, scope: !51) -!63 = !DILocation(line: 35, column: 32, scope: !51) -!64 = !DILocalVariable(name: "copy", scope: !51, file: !2, line: 36, type: !22) -!65 = !DILocation(line: 36, column: 13, scope: !51) -!66 = !DILocation(line: 36, column: 34, scope: !51) -!67 = !DILocation(line: 36, column: 27, scope: !51) -!68 = !DILocation(line: 37, column: 14, scope: !51) -!69 = !DILocation(line: 37, column: 19, scope: !51) -!70 = !DILocation(line: 37, column: 23, scope: !51) -!71 = !DILocation(line: 37, column: 7, scope: !51) -!72 = !DILocation(line: 38, column: 14, scope: !51) -!73 = !DILocation(line: 38, column: 7, scope: !51) -!74 = distinct !DISubprogram(name: "cJSON_AddItemToArray", scope: !2, file: !2, line: 47, type: !75, scopeLine: 47, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !12, retainedNodes: !38) -!75 = !DISubroutineType(types: !76) -!76 = !{null, !15, !15} -!77 = !DILocalVariable(name: "array", arg: 1, scope: !74, file: !2, line: 47, type: !15) -!78 = !DILocation(line: 47, column: 34, scope: !74) -!79 = !DILocalVariable(name: "item", arg: 2, scope: !74, file: !2, line: 47, type: !15) -!80 = !DILocation(line: 47, column: 48, scope: !74) -!81 = !DILocalVariable(name: "c", scope: !74, file: !2, line: 48, type: !15) -!82 = !DILocation(line: 48, column: 12, scope: !74) -!83 = !DILocation(line: 48, column: 16, scope: !74) -!84 = !DILocation(line: 48, column: 23, scope: !74) -!85 = !DILocation(line: 49, column: 10, scope: !86) -!86 = distinct !DILexicalBlock(scope: !74, file: !2, line: 49, column: 9) -!87 = !DILocation(line: 49, column: 9, scope: !74) -!88 = !DILocation(line: 50, column: 24, scope: !89) -!89 = distinct !DILexicalBlock(scope: !86, file: !2, line: 49, column: 13) -!90 = !DILocation(line: 50, column: 9, scope: !89) -!91 = !DILocation(line: 50, column: 16, scope: !89) -!92 = !DILocation(line: 50, column: 22, scope: !89) -!93 = !DILocation(line: 51, column: 5, scope: !89) -!94 = !DILocation(line: 52, column: 1, scope: !74) -!95 = distinct !DISubprogram(name: "cJSON_AddItemToObject", scope: !2, file: !2, line: 54, type: !96, scopeLine: 54, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !12, retainedNodes: !38) -!96 = !DISubroutineType(types: !97) -!97 = !{null, !15, !36, !15} -!98 = !DILocalVariable(name: "object", arg: 1, scope: !95, file: !2, line: 54, type: !15) -!99 = !DILocation(line: 54, column: 35, scope: !95) -!100 = !DILocalVariable(name: "string", arg: 2, scope: !95, file: !2, line: 54, type: !36) -!101 = !DILocation(line: 54, column: 54, scope: !95) -!102 = !DILocalVariable(name: "item", arg: 3, scope: !95, file: !2, line: 54, type: !15) -!103 = !DILocation(line: 54, column: 68, scope: !95) -!104 = !DILocation(line: 55, column: 31, scope: !95) -!105 = !DILocation(line: 55, column: 18, scope: !95) -!106 = !DILocation(line: 55, column: 5, scope: !95) -!107 = !DILocation(line: 55, column: 11, scope: !95) -!108 = !DILocation(line: 55, column: 17, scope: !95) -!109 = !DILocation(line: 56, column: 26, scope: !95) -!110 = !DILocation(line: 56, column: 33, scope: !95) -!111 = !DILocation(line: 56, column: 5, scope: !95) -!112 = !DILocation(line: 57, column: 1, scope: !95) -!113 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 65, type: !114, scopeLine: 65, spFlags: DISPFlagDefinition, unit: !12, retainedNodes: !38) -!114 = !DISubroutineType(types: !115) -!115 = !{!116} -!116 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!117 = !DILocalVariable(name: "json", scope: !113, file: !2, line: 66, type: !15) -!118 = !DILocation(line: 66, column: 10, scope: !113) -!119 = !DILocation(line: 66, column: 25, scope: !113) -!120 = !DILocation(line: 67, column: 25, scope: !113) -!121 = !DILocation(line: 67, column: 39, scope: !113) -!122 = !DILocation(line: 67, column: 3, scope: !113) -!123 = !DILocalVariable(name: "test", scope: !113, file: !2, line: 68, type: !124) -!124 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !125, size: 64) -!125 = !DIDerivedType(tag: DW_TAG_typedef, name: "Hometown", file: !2, line: 15, baseType: !126) -!126 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !2, line: 13, size: 64, elements: !127) -!127 = !{!128} -!128 = !DIDerivedType(tag: DW_TAG_member, name: "name", scope: !126, file: !2, line: 14, baseType: !129, size: 64) -!129 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 64, elements: !130) -!130 = !{!131} -!131 = !DISubrange(count: 8) -!132 = !DILocation(line: 68, column: 14, scope: !113) -!133 = !DILocation(line: 68, column: 36, scope: !113) -!134 = !DILocation(line: 68, column: 21, scope: !113) -!135 = !DILocation(line: 70, column: 1, scope: !113) -!136 = distinct !DISubprogram(name: "json_to_struct", scope: !2, file: !2, line: 59, type: !137, scopeLine: 59, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, retainedNodes: !38) -!137 = !DISubroutineType(types: !138) -!138 = !{!139, !15} -!139 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!140 = !DILocalVariable(name: "json_obj", arg: 1, scope: !136, file: !2, line: 59, type: !15) -!141 = !DILocation(line: 59, column: 36, scope: !136) -!142 = !DILocalVariable(name: "json_temp", scope: !136, file: !2, line: 60, type: !15) -!143 = !DILocation(line: 60, column: 3, scope: !136) -!144 = !DILocalVariable(name: "struct_hometown", scope: !136, file: !2, line: 60, type: !124) -!145 = !DILocation(line: 60, column: 3, scope: !146) -!146 = distinct !DILexicalBlock(scope: !136, file: !2, line: 60, column: 3) -!147 = !DILocation(line: 61, column: 3, scope: !136) -!148 = !DILocation(line: 61, column: 3, scope: !149) -!149 = distinct !DILexicalBlock(scope: !136, file: !2, line: 61, column: 3) -!150 = !DILocation(line: 62, column: 10, scope: !136) -!151 = !DILocation(line: 62, column: 3, scope: !136) diff --git a/test_cases_bc/ae_assert_tests/CVE-2021-39602-0.c.bc b/test_cases_bc/ae_assert_tests/CVE-2021-39602-0.c.bc deleted file mode 100644 index ea100d1a..00000000 --- a/test_cases_bc/ae_assert_tests/CVE-2021-39602-0.c.bc +++ /dev/null @@ -1,210 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2021-39602-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2021-39602-0.c" -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-unknown-linux-gnu" - -%struct.session = type { [1024 x i8] } - -@.str = private unnamed_addr constant [256 x i8] c"dQTzRwmNuJFoD9pFIwx97jfTRv1rAbvZ0Wcz6FdQU6uBcM6TreKoHvS0418qcGBLSqRCK4o7K0VxcfZ8btrUiIGMYbvdFdXueAvE3DrvmwaoFb06t3ZkpNw9HrSB7xCsJmdo86ZhrrCMlIx0m7im6zwBM3qnjds3OW6seTegTihzANyeZQmH1ojYIb7nZJEBJkFu7Ov8IBifYUFjoZNVdaTEmD8CnXnthnDYB45ssxTkcsPMbF2oLycwepI0jmd\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [35 x i8] c"Create directory operation failed.\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [19 x i8] c"Permission denied.\00", align 1, !dbg !17 -@.str.4 = private unnamed_addr constant [16 x i8] c"\22%s\\%s\22 created\00", align 1, !dbg !22 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !40 { -entry: - %sess = alloca %struct.session, align 1 - call void @llvm.dbg.declare(metadata ptr %sess, metadata !45, metadata !DIExpression()), !dbg !53 - %arg = getelementptr inbounds %struct.session, ptr %sess, i32 0, i32 0, !dbg !54 - %arraydecay = getelementptr inbounds [1024 x i8], ptr %arg, i64 0, i64 0, !dbg !55 - %call = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef @.str) #6, !dbg !56 - call void @do_mkd(ptr noundef %sess), !dbg !57 - ret i32 0, !dbg !58 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @do_mkd(ptr noundef %sess) #0 !dbg !59 { -entry: - %sess.addr = alloca ptr, align 8 - %buf = alloca [1024 x i8], align 16 - store ptr %sess, ptr %sess.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %sess.addr, metadata !63, metadata !DIExpression()), !dbg !64 - %0 = load ptr, ptr %sess.addr, align 8, !dbg !65 - %arg = getelementptr inbounds %struct.session, ptr %0, i32 0, i32 0, !dbg !67 - %arraydecay = getelementptr inbounds [1024 x i8], ptr %arg, i64 0, i64 0, !dbg !65 - %call = call i32 @mkdir(ptr noundef %arraydecay, i32 noundef 493) #6, !dbg !68 - %cmp = icmp slt i32 %call, 0, !dbg !69 - br i1 %cmp, label %if.then, label %if.end6, !dbg !70 - -if.then: ; preds = %entry - %call1 = call ptr @__errno_location() #7, !dbg !71 - %1 = load i32, ptr %call1, align 4, !dbg !71 - %cmp2 = icmp eq i32 %1, 17, !dbg !74 - br i1 %cmp2, label %if.then3, label %if.else, !dbg !75 - -if.then3: ; preds = %if.then - %call4 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef @.str.2), !dbg !76 - br label %if.end, !dbg !78 - -if.else: ; preds = %if.then - %call5 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef @.str.3), !dbg !79 - br label %if.end - -if.end: ; preds = %if.else, %if.then3 - br label %if.end16, !dbg !81 - -if.end6: ; preds = %entry - call void @llvm.dbg.declare(metadata ptr %buf, metadata !82, metadata !DIExpression()), !dbg !83 - call void @llvm.memset.p0.i64(ptr align 16 %buf, i8 0, i64 1024, i1 false), !dbg !83 - %arraydecay7 = getelementptr inbounds [1024 x i8], ptr %buf, i64 0, i64 0, !dbg !84 - %call8 = call ptr @getcwd(ptr noundef %arraydecay7, i64 noundef 1024) #6, !dbg !86 - %cmp9 = icmp ne ptr %call8, null, !dbg !87 - br i1 %cmp9, label %if.then10, label %if.end16, !dbg !88 - -if.then10: ; preds = %if.end6 - %arraydecay11 = getelementptr inbounds [1024 x i8], ptr %buf, i64 0, i64 0, !dbg !89 - %arraydecay12 = getelementptr inbounds [1024 x i8], ptr %buf, i64 0, i64 0, !dbg !91 - %2 = load ptr, ptr %sess.addr, align 8, !dbg !92 - %arg13 = getelementptr inbounds %struct.session, ptr %2, i32 0, i32 0, !dbg !93 - %arraydecay14 = getelementptr inbounds [1024 x i8], ptr %arg13, i64 0, i64 0, !dbg !92 - %call15 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %arraydecay11, ptr noundef @.str.4, ptr noundef %arraydecay12, ptr noundef %arraydecay14) #6, !dbg !94 - br label %if.end16, !dbg !95 - -if.end16: ; preds = %if.then10, %if.end6, %if.end - ret void, !dbg !96 -} - -; Function Attrs: nounwind -declare i32 @mkdir(ptr noundef, i32 noundef) #2 - -; Function Attrs: nounwind willreturn memory(none) -declare ptr @__errno_location() #3 - -declare i32 @printf(ptr noundef, ...) #4 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 - -; Function Attrs: nounwind -declare ptr @getcwd(ptr noundef, i64 noundef) #2 - -; Function Attrs: nounwind -declare i32 @sprintf(ptr noundef, ptr noundef, ...) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind willreturn memory(none) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #6 = { nounwind } -attributes #7 = { nounwind willreturn memory(none) } - -!llvm.dbg.cu = !{!27} -!llvm.module.flags = !{!32, !33, !34, !35, !36, !37, !38} -!llvm.ident = !{!39} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 45, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/CVE-2021-39602-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b9457f41daad9da681df7d5cb9dd3f0d") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 2048, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 256) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 28, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 32, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 4) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 28, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 280, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 35) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 31, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 152, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 19) -!22 = !DIGlobalVariableExpression(var: !23, expr: !DIExpression()) -!23 = distinct !DIGlobalVariable(scope: null, file: !2, line: 38, type: !24, isLocal: true, isDefinition: true) -!24 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !25) -!25 = !{!26} -!26 = !DISubrange(count: 16) -!27 = distinct !DICompileUnit(language: DW_LANG_C11, file: !28, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !29, globals: !31, splitDebugInlining: false, nameTableKind: None) -!28 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2021-39602-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b9457f41daad9da681df7d5cb9dd3f0d") -!29 = !{!30} -!30 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!31 = !{!0, !7, !12, !17, !22} -!32 = !{i32 7, !"Dwarf Version", i32 5} -!33 = !{i32 2, !"Debug Info Version", i32 3} -!34 = !{i32 1, !"wchar_size", i32 4} -!35 = !{i32 8, !"PIC Level", i32 2} -!36 = !{i32 7, !"PIE Level", i32 2} -!37 = !{i32 7, !"uwtable", i32 2} -!38 = !{i32 7, !"frame-pointer", i32 2} -!39 = !{!"clang version 16.0.0"} -!40 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 43, type: !41, scopeLine: 43, spFlags: DISPFlagDefinition, unit: !27, retainedNodes: !44) -!41 = !DISubroutineType(types: !42) -!42 = !{!43} -!43 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!44 = !{} -!45 = !DILocalVariable(name: "sess", scope: !40, file: !2, line: 44, type: !46) -!46 = !DIDerivedType(tag: DW_TAG_typedef, name: "session_t", file: !2, line: 23, baseType: !47) -!47 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "session", file: !2, line: 21, size: 8192, elements: !48) -!48 = !{!49} -!49 = !DIDerivedType(tag: DW_TAG_member, name: "arg", scope: !47, file: !2, line: 22, baseType: !50, size: 8192) -!50 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 8192, elements: !51) -!51 = !{!52} -!52 = !DISubrange(count: 1024) -!53 = !DILocation(line: 44, column: 12, scope: !40) -!54 = !DILocation(line: 45, column: 17, scope: !40) -!55 = !DILocation(line: 45, column: 12, scope: !40) -!56 = !DILocation(line: 45, column: 5, scope: !40) -!57 = !DILocation(line: 47, column: 5, scope: !40) -!58 = !DILocation(line: 48, column: 1, scope: !40) -!59 = distinct !DISubprogram(name: "do_mkd", scope: !2, file: !2, line: 25, type: !60, scopeLine: 25, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !27, retainedNodes: !44) -!60 = !DISubroutineType(types: !61) -!61 = !{null, !62} -!62 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !46, size: 64) -!63 = !DILocalVariable(name: "sess", arg: 1, scope: !59, file: !2, line: 25, type: !62) -!64 = !DILocation(line: 25, column: 31, scope: !59) -!65 = !DILocation(line: 26, column: 11, scope: !66) -!66 = distinct !DILexicalBlock(scope: !59, file: !2, line: 26, column: 5) -!67 = !DILocation(line: 26, column: 17, scope: !66) -!68 = !DILocation(line: 26, column: 5, scope: !66) -!69 = !DILocation(line: 26, column: 28, scope: !66) -!70 = !DILocation(line: 26, column: 5, scope: !59) -!71 = !DILocation(line: 27, column: 6, scope: !72) -!72 = distinct !DILexicalBlock(scope: !73, file: !2, line: 27, column: 6) -!73 = distinct !DILexicalBlock(scope: !66, file: !2, line: 26, column: 33) -!74 = !DILocation(line: 27, column: 12, scope: !72) -!75 = !DILocation(line: 27, column: 6, scope: !73) -!76 = !DILocation(line: 28, column: 4, scope: !77) -!77 = distinct !DILexicalBlock(scope: !72, file: !2, line: 27, column: 23) -!78 = !DILocation(line: 29, column: 3, scope: !77) -!79 = !DILocation(line: 31, column: 4, scope: !80) -!80 = distinct !DILexicalBlock(scope: !72, file: !2, line: 30, column: 8) -!81 = !DILocation(line: 33, column: 3, scope: !73) -!82 = !DILocalVariable(name: "buf", scope: !59, file: !2, line: 35, type: !50) -!83 = !DILocation(line: 35, column: 7, scope: !59) -!84 = !DILocation(line: 36, column: 12, scope: !85) -!85 = distinct !DILexicalBlock(scope: !59, file: !2, line: 36, column: 5) -!86 = !DILocation(line: 36, column: 5, scope: !85) -!87 = !DILocation(line: 36, column: 34, scope: !85) -!88 = !DILocation(line: 36, column: 5, scope: !59) -!89 = !DILocation(line: 38, column: 11, scope: !90) -!90 = distinct !DILexicalBlock(scope: !85, file: !2, line: 36, column: 43) -!91 = !DILocation(line: 38, column: 37, scope: !90) -!92 = !DILocation(line: 38, column: 41, scope: !90) -!93 = !DILocation(line: 38, column: 47, scope: !90) -!94 = !DILocation(line: 38, column: 3, scope: !90) -!95 = !DILocation(line: 40, column: 2, scope: !90) -!96 = !DILocation(line: 41, column: 1, scope: !59) diff --git a/test_cases_bc/ae_assert_tests/CVE-2021-44975-0.c.bc b/test_cases_bc/ae_assert_tests/CVE-2021-44975-0.c.bc deleted file mode 100644 index 84b07fe0..00000000 --- a/test_cases_bc/ae_assert_tests/CVE-2021-44975-0.c.bc +++ /dev/null @@ -1,527 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2021-44975-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2021-44975-0.c" -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-unknown-linux-gnu" - -%struct.r_io_t = type { i8 } -%struct.RCoreObjc = type { ptr, i64, ptr, ptr } -%struct.r_bin_section_t = type { i64 } -%struct.r_core_t = type { ptr } - -@.str = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [46 x i8] c"aao: Cannot read the whole const section %zu\0A\00", align 1, !dbg !7 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @r_io_pread_at(ptr noundef %io, ptr noundef %buf, i32 noundef %len) #0 !dbg !23 { -entry: - %retval = alloca i32, align 4 - %io.addr = alloca ptr, align 8 - %buf.addr = alloca ptr, align 8 - %len.addr = alloca i32, align 4 - store ptr %io, ptr %io.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %io.addr, metadata !35, metadata !DIExpression()), !dbg !36 - store ptr %buf, ptr %buf.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %buf.addr, metadata !37, metadata !DIExpression()), !dbg !38 - store i32 %len, ptr %len.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %len.addr, metadata !39, metadata !DIExpression()), !dbg !40 - %0 = load ptr, ptr %io.addr, align 8, !dbg !41 - %tobool = icmp ne ptr %0, null, !dbg !41 - br i1 %tobool, label %land.lhs.true, label %if.then, !dbg !43 - -land.lhs.true: ; preds = %entry - %1 = load ptr, ptr %buf.addr, align 8, !dbg !44 - %tobool1 = icmp ne ptr %1, null, !dbg !44 - br i1 %tobool1, label %land.lhs.true2, label %if.then, !dbg !45 - -land.lhs.true2: ; preds = %land.lhs.true - %2 = load i32, ptr %len.addr, align 4, !dbg !46 - %cmp = icmp sge i32 %2, 0, !dbg !47 - br i1 %cmp, label %if.end, label %if.then, !dbg !48 - -if.then: ; preds = %land.lhs.true2, %land.lhs.true, %entry - store i32 -1, ptr %retval, align 4, !dbg !49 - br label %return, !dbg !49 - -if.end: ; preds = %land.lhs.true2 - %3 = load ptr, ptr %buf.addr, align 8, !dbg !51 - %4 = load ptr, ptr %io.addr, align 8, !dbg !54 - %Oxff = getelementptr inbounds %struct.r_io_t, ptr %4, i32 0, i32 0, !dbg !55 - %5 = load i8, ptr %Oxff, align 1, !dbg !55 - %conv = zext i8 %5 to i32, !dbg !54 - %6 = trunc i32 %conv to i8, !dbg !56 - %7 = load i32, ptr %len.addr, align 4, !dbg !57 - %conv3 = sext i32 %7 to i64, !dbg !57 - call void @llvm.memset.p0.i64(ptr align 1 %3, i8 %6, i64 %conv3, i1 false), !dbg !56 - %8 = load ptr, ptr %buf.addr, align 8, !dbg !58 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %8), !dbg !59 - store i32 1, ptr %retval, align 4, !dbg !60 - br label %return, !dbg !60 - -return: ; preds = %if.end, %if.then - %9 = load i32, ptr %retval, align 4, !dbg !61 - ret i32 %9, !dbg !61 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -declare i32 @printf(ptr noundef, ...) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local zeroext i1 @internal_r_io_read_at(ptr noundef %io, ptr noundef %buf, i32 noundef %len) #0 !dbg !62 { -entry: - %retval = alloca i1, align 1 - %io.addr = alloca ptr, align 8 - %buf.addr = alloca ptr, align 8 - %len.addr = alloca i32, align 4 - %ret = alloca i8, align 1 - store ptr %io, ptr %io.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %io.addr, metadata !66, metadata !DIExpression()), !dbg !67 - store ptr %buf, ptr %buf.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %buf.addr, metadata !68, metadata !DIExpression()), !dbg !69 - store i32 %len, ptr %len.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %len.addr, metadata !70, metadata !DIExpression()), !dbg !71 - %0 = load i32, ptr %len.addr, align 4, !dbg !72 - %cmp = icmp slt i32 %0, 1, !dbg !74 - br i1 %cmp, label %if.then, label %if.end, !dbg !75 - -if.then: ; preds = %entry - store i1 false, ptr %retval, align 1, !dbg !76 - br label %return, !dbg !76 - -if.end: ; preds = %entry - call void @llvm.dbg.declare(metadata ptr %ret, metadata !78, metadata !DIExpression()), !dbg !79 - %1 = load ptr, ptr %io.addr, align 8, !dbg !80 - %2 = load ptr, ptr %buf.addr, align 8, !dbg !81 - %3 = load i32, ptr %len.addr, align 4, !dbg !82 - %call = call i32 @r_io_pread_at(ptr noundef %1, ptr noundef %2, i32 noundef %3), !dbg !83 - %cmp1 = icmp sgt i32 %call, 0, !dbg !84 - %frombool = zext i1 %cmp1 to i8, !dbg !79 - store i8 %frombool, ptr %ret, align 1, !dbg !79 - %4 = load i8, ptr %ret, align 1, !dbg !85 - %tobool = trunc i8 %4 to i1, !dbg !85 - store i1 %tobool, ptr %retval, align 1, !dbg !86 - br label %return, !dbg !86 - -return: ; preds = %if.end, %if.then - %5 = load i1, ptr %retval, align 1, !dbg !87 - ret i1 %5, !dbg !87 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local zeroext i1 @r_io_read_at(ptr noundef %io, ptr noundef %buf, i32 noundef %len) #0 !dbg !88 { -entry: - %retval = alloca i1, align 1 - %io.addr = alloca ptr, align 8 - %buf.addr = alloca ptr, align 8 - %len.addr = alloca i32, align 4 - store ptr %io, ptr %io.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %io.addr, metadata !89, metadata !DIExpression()), !dbg !90 - store ptr %buf, ptr %buf.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %buf.addr, metadata !91, metadata !DIExpression()), !dbg !92 - store i32 %len, ptr %len.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %len.addr, metadata !93, metadata !DIExpression()), !dbg !94 - %0 = load ptr, ptr %io.addr, align 8, !dbg !95 - %tobool = icmp ne ptr %0, null, !dbg !95 - br i1 %tobool, label %land.lhs.true, label %if.then, !dbg !97 - -land.lhs.true: ; preds = %entry - %1 = load ptr, ptr %buf.addr, align 8, !dbg !98 - %tobool1 = icmp ne ptr %1, null, !dbg !98 - br i1 %tobool1, label %land.lhs.true2, label %if.then, !dbg !99 - -land.lhs.true2: ; preds = %land.lhs.true - %2 = load i32, ptr %len.addr, align 4, !dbg !100 - %cmp = icmp sge i32 %2, 0, !dbg !101 - br i1 %cmp, label %if.end, label %if.then, !dbg !102 - -if.then: ; preds = %land.lhs.true2, %land.lhs.true, %entry - store i1 false, ptr %retval, align 1, !dbg !103 - br label %return, !dbg !103 - -if.end: ; preds = %land.lhs.true2 - %3 = load i32, ptr %len.addr, align 4, !dbg !105 - %cmp3 = icmp eq i32 %3, 0, !dbg !107 - br i1 %cmp3, label %if.then4, label %if.end5, !dbg !108 - -if.then4: ; preds = %if.end - store i1 false, ptr %retval, align 1, !dbg !109 - br label %return, !dbg !109 - -if.end5: ; preds = %if.end - %4 = load ptr, ptr %io.addr, align 8, !dbg !111 - %5 = load ptr, ptr %buf.addr, align 8, !dbg !112 - %6 = load i32, ptr %len.addr, align 4, !dbg !113 - %call = call zeroext i1 @internal_r_io_read_at(ptr noundef %4, ptr noundef %5, i32 noundef %6), !dbg !114 - store i1 %call, ptr %retval, align 1, !dbg !115 - br label %return, !dbg !115 - -return: ; preds = %if.end5, %if.then4, %if.then - %7 = load i1, ptr %retval, align 1, !dbg !116 - ret i1 %7, !dbg !116 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local zeroext i1 @objc_build_refs(ptr noundef %objc) #0 !dbg !117 { -entry: - %retval = alloca i1, align 1 - %objc.addr = alloca ptr, align 8 - %ss_const = alloca i64, align 8 - %ss_selrefs = alloca i64, align 8 - %maxsize = alloca i64, align 8 - %buf = alloca ptr, align 8 - store ptr %objc, ptr %objc.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %objc.addr, metadata !142, metadata !DIExpression()), !dbg !143 - call void @llvm.dbg.declare(metadata ptr %ss_const, metadata !144, metadata !DIExpression()), !dbg !145 - %0 = load ptr, ptr %objc.addr, align 8, !dbg !146 - %_const = getelementptr inbounds %struct.RCoreObjc, ptr %0, i32 0, i32 3, !dbg !147 - %1 = load ptr, ptr %_const, align 8, !dbg !147 - %vsize = getelementptr inbounds %struct.r_bin_section_t, ptr %1, i32 0, i32 0, !dbg !148 - %2 = load i64, ptr %vsize, align 8, !dbg !148 - store i64 %2, ptr %ss_const, align 8, !dbg !145 - call void @llvm.dbg.declare(metadata ptr %ss_selrefs, metadata !149, metadata !DIExpression()), !dbg !150 - %3 = load ptr, ptr %objc.addr, align 8, !dbg !151 - %_selrefs = getelementptr inbounds %struct.RCoreObjc, ptr %3, i32 0, i32 2, !dbg !152 - %4 = load ptr, ptr %_selrefs, align 8, !dbg !152 - %vsize1 = getelementptr inbounds %struct.r_bin_section_t, ptr %4, i32 0, i32 0, !dbg !153 - %5 = load i64, ptr %vsize1, align 8, !dbg !153 - store i64 %5, ptr %ss_selrefs, align 8, !dbg !150 - call void @llvm.dbg.declare(metadata ptr %maxsize, metadata !154, metadata !DIExpression()), !dbg !155 - %6 = load i64, ptr %ss_const, align 8, !dbg !156 - %7 = load i64, ptr %ss_selrefs, align 8, !dbg !156 - %cmp = icmp ugt i64 %6, %7, !dbg !156 - br i1 %cmp, label %cond.true, label %cond.false, !dbg !156 - -cond.true: ; preds = %entry - %8 = load i64, ptr %ss_const, align 8, !dbg !156 - br label %cond.end, !dbg !156 - -cond.false: ; preds = %entry - %9 = load i64, ptr %ss_selrefs, align 8, !dbg !156 - br label %cond.end, !dbg !156 - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %8, %cond.true ], [ %9, %cond.false ], !dbg !156 - store i64 %cond, ptr %maxsize, align 8, !dbg !155 - %10 = load i64, ptr %maxsize, align 8, !dbg !157 - %11 = load ptr, ptr %objc.addr, align 8, !dbg !157 - %file_size = getelementptr inbounds %struct.RCoreObjc, ptr %11, i32 0, i32 1, !dbg !157 - %12 = load i64, ptr %file_size, align 8, !dbg !157 - %cmp2 = icmp ugt i64 %10, %12, !dbg !157 - br i1 %cmp2, label %cond.true3, label %cond.false5, !dbg !157 - -cond.true3: ; preds = %cond.end - %13 = load ptr, ptr %objc.addr, align 8, !dbg !157 - %file_size4 = getelementptr inbounds %struct.RCoreObjc, ptr %13, i32 0, i32 1, !dbg !157 - %14 = load i64, ptr %file_size4, align 8, !dbg !157 - br label %cond.end6, !dbg !157 - -cond.false5: ; preds = %cond.end - %15 = load i64, ptr %maxsize, align 8, !dbg !157 - br label %cond.end6, !dbg !157 - -cond.end6: ; preds = %cond.false5, %cond.true3 - %cond7 = phi i64 [ %14, %cond.true3 ], [ %15, %cond.false5 ], !dbg !157 - store i64 %cond7, ptr %maxsize, align 8, !dbg !158 - call void @llvm.dbg.declare(metadata ptr %buf, metadata !159, metadata !DIExpression()), !dbg !160 - %16 = load i64, ptr %maxsize, align 8, !dbg !161 - %call = call noalias ptr @calloc(i64 noundef 1, i64 noundef %16) #5, !dbg !162 - store ptr %call, ptr %buf, align 8, !dbg !160 - %17 = load ptr, ptr %buf, align 8, !dbg !163 - %tobool = icmp ne ptr %17, null, !dbg !163 - br i1 %tobool, label %if.end, label %if.then, !dbg !165 - -if.then: ; preds = %cond.end6 - store i1 false, ptr %retval, align 1, !dbg !166 - br label %return, !dbg !166 - -if.end: ; preds = %cond.end6 - %18 = load ptr, ptr %objc.addr, align 8, !dbg !168 - %core = getelementptr inbounds %struct.RCoreObjc, ptr %18, i32 0, i32 0, !dbg !170 - %19 = load ptr, ptr %core, align 8, !dbg !170 - %io = getelementptr inbounds %struct.r_core_t, ptr %19, i32 0, i32 0, !dbg !171 - %20 = load ptr, ptr %io, align 8, !dbg !171 - %21 = load ptr, ptr %buf, align 8, !dbg !172 - %22 = load i64, ptr %ss_const, align 8, !dbg !173 - %conv = trunc i64 %22 to i32, !dbg !173 - %call8 = call zeroext i1 @r_io_read_at(ptr noundef %20, ptr noundef %21, i32 noundef %conv), !dbg !174 - br i1 %call8, label %if.end11, label %if.then9, !dbg !175 - -if.then9: ; preds = %if.end - %23 = load i64, ptr %ss_const, align 8, !dbg !176 - %call10 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, i64 noundef %23), !dbg !178 - store i1 false, ptr %retval, align 1, !dbg !179 - br label %return, !dbg !179 - -if.end11: ; preds = %if.end - store i1 true, ptr %retval, align 1, !dbg !180 - br label %return, !dbg !180 - -return: ; preds = %if.end11, %if.then9, %if.then - %24 = load i1, ptr %retval, align 1, !dbg !181 - ret i1 %24, !dbg !181 -} - -; Function Attrs: nounwind allocsize(0,1) -declare noalias ptr @calloc(i64 noundef, i64 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !182 { -entry: - %io = alloca %struct.r_io_t, align 1 - %core = alloca %struct.r_core_t, align 8 - %selrefs = alloca %struct.r_bin_section_t, align 8 - %rconst = alloca %struct.r_bin_section_t, align 8 - %objc = alloca %struct.RCoreObjc, align 8 - call void @llvm.dbg.declare(metadata ptr %io, metadata !185, metadata !DIExpression()), !dbg !186 - %Oxff = getelementptr inbounds %struct.r_io_t, ptr %io, i32 0, i32 0, !dbg !187 - store i8 97, ptr %Oxff, align 1, !dbg !188 - call void @llvm.dbg.declare(metadata ptr %core, metadata !189, metadata !DIExpression()), !dbg !190 - %io1 = getelementptr inbounds %struct.r_core_t, ptr %core, i32 0, i32 0, !dbg !191 - store ptr %io, ptr %io1, align 8, !dbg !192 - call void @llvm.dbg.declare(metadata ptr %selrefs, metadata !193, metadata !DIExpression()), !dbg !194 - call void @llvm.dbg.declare(metadata ptr %rconst, metadata !195, metadata !DIExpression()), !dbg !196 - %vsize = getelementptr inbounds %struct.r_bin_section_t, ptr %selrefs, i32 0, i32 0, !dbg !197 - store i64 3, ptr %vsize, align 8, !dbg !198 - %vsize2 = getelementptr inbounds %struct.r_bin_section_t, ptr %rconst, i32 0, i32 0, !dbg !199 - store i64 10, ptr %vsize2, align 8, !dbg !200 - call void @llvm.dbg.declare(metadata ptr %objc, metadata !201, metadata !DIExpression()), !dbg !202 - %core3 = getelementptr inbounds %struct.RCoreObjc, ptr %objc, i32 0, i32 0, !dbg !203 - store ptr %core, ptr %core3, align 8, !dbg !204 - %file_size = getelementptr inbounds %struct.RCoreObjc, ptr %objc, i32 0, i32 1, !dbg !205 - store i64 5, ptr %file_size, align 8, !dbg !206 - %_selrefs = getelementptr inbounds %struct.RCoreObjc, ptr %objc, i32 0, i32 2, !dbg !207 - store ptr %selrefs, ptr %_selrefs, align 8, !dbg !208 - %_const = getelementptr inbounds %struct.RCoreObjc, ptr %objc, i32 0, i32 3, !dbg !209 - store ptr %rconst, ptr %_const, align 8, !dbg !210 - %call = call zeroext i1 @objc_build_refs(ptr noundef %objc), !dbg !211 - ret i32 0, !dbg !212 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind allocsize(0,1) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind allocsize(0,1) } - -!llvm.dbg.cu = !{!12} -!llvm.module.flags = !{!15, !16, !17, !18, !19, !20, !21} -!llvm.ident = !{!22} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 44, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/CVE-2021-44975-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "cd260ac6c139d337e7016f4869ac17ff") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 32, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 4) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 81, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 368, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 46) -!12 = distinct !DICompileUnit(language: DW_LANG_C11, file: !13, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !14, splitDebugInlining: false, nameTableKind: None) -!13 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2021-44975-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "cd260ac6c139d337e7016f4869ac17ff") -!14 = !{!0, !7} -!15 = !{i32 7, !"Dwarf Version", i32 5} -!16 = !{i32 2, !"Debug Info Version", i32 3} -!17 = !{i32 1, !"wchar_size", i32 4} -!18 = !{i32 8, !"PIC Level", i32 2} -!19 = !{i32 7, !"PIE Level", i32 2} -!20 = !{i32 7, !"uwtable", i32 2} -!21 = !{i32 7, !"frame-pointer", i32 2} -!22 = !{!"clang version 16.0.0"} -!23 = distinct !DISubprogram(name: "r_io_pread_at", scope: !2, file: !2, line: 37, type: !24, scopeLine: 37, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !12, retainedNodes: !34) -!24 = !DISubroutineType(types: !25) -!25 = !{!26, !27, !33, !26} -!26 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!27 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !28, size: 64) -!28 = !DIDerivedType(tag: DW_TAG_typedef, name: "RIO", file: !2, line: 19, baseType: !29) -!29 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "r_io_t", file: !2, line: 17, size: 8, elements: !30) -!30 = !{!31} -!31 = !DIDerivedType(tag: DW_TAG_member, name: "Oxff", scope: !29, file: !2, line: 18, baseType: !32, size: 8) -!32 = !DIBasicType(name: "unsigned char", size: 8, encoding: DW_ATE_unsigned_char) -!33 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !32, size: 64) -!34 = !{} -!35 = !DILocalVariable(name: "io", arg: 1, scope: !23, file: !2, line: 37, type: !27) -!36 = !DILocation(line: 37, column: 24, scope: !23) -!37 = !DILocalVariable(name: "buf", arg: 2, scope: !23, file: !2, line: 37, type: !33) -!38 = !DILocation(line: 37, column: 33, scope: !23) -!39 = !DILocalVariable(name: "len", arg: 3, scope: !23, file: !2, line: 37, type: !26) -!40 = !DILocation(line: 37, column: 42, scope: !23) -!41 = !DILocation(line: 38, column: 7, scope: !42) -!42 = distinct !DILexicalBlock(scope: !23, file: !2, line: 38, column: 5) -!43 = !DILocation(line: 38, column: 10, scope: !42) -!44 = !DILocation(line: 38, column: 13, scope: !42) -!45 = !DILocation(line: 38, column: 17, scope: !42) -!46 = !DILocation(line: 38, column: 20, scope: !42) -!47 = !DILocation(line: 38, column: 24, scope: !42) -!48 = !DILocation(line: 38, column: 5, scope: !23) -!49 = !DILocation(line: 39, column: 3, scope: !50) -!50 = distinct !DILexicalBlock(scope: !42, file: !2, line: 38, column: 31) -!51 = !DILocation(line: 43, column: 10, scope: !52) -!52 = distinct !DILexicalBlock(scope: !53, file: !2, line: 41, column: 12) -!53 = distinct !DILexicalBlock(scope: !23, file: !2, line: 41, column: 6) -!54 = !DILocation(line: 43, column: 15, scope: !52) -!55 = !DILocation(line: 43, column: 19, scope: !52) -!56 = !DILocation(line: 43, column: 3, scope: !52) -!57 = !DILocation(line: 43, column: 25, scope: !52) -!58 = !DILocation(line: 44, column: 18, scope: !52) -!59 = !DILocation(line: 44, column: 3, scope: !52) -!60 = !DILocation(line: 46, column: 2, scope: !23) -!61 = !DILocation(line: 47, column: 1, scope: !23) -!62 = distinct !DISubprogram(name: "internal_r_io_read_at", scope: !2, file: !2, line: 49, type: !63, scopeLine: 49, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !12, retainedNodes: !34) -!63 = !DISubroutineType(types: !64) -!64 = !{!65, !27, !33, !26} -!65 = !DIBasicType(name: "_Bool", size: 8, encoding: DW_ATE_boolean) -!66 = !DILocalVariable(name: "io", arg: 1, scope: !62, file: !2, line: 49, type: !27) -!67 = !DILocation(line: 49, column: 33, scope: !62) -!68 = !DILocalVariable(name: "buf", arg: 2, scope: !62, file: !2, line: 49, type: !33) -!69 = !DILocation(line: 49, column: 42, scope: !62) -!70 = !DILocalVariable(name: "len", arg: 3, scope: !62, file: !2, line: 49, type: !26) -!71 = !DILocation(line: 49, column: 51, scope: !62) -!72 = !DILocation(line: 50, column: 6, scope: !73) -!73 = distinct !DILexicalBlock(scope: !62, file: !2, line: 50, column: 6) -!74 = !DILocation(line: 50, column: 10, scope: !73) -!75 = !DILocation(line: 50, column: 6, scope: !62) -!76 = !DILocation(line: 51, column: 3, scope: !77) -!77 = distinct !DILexicalBlock(scope: !73, file: !2, line: 50, column: 15) -!78 = !DILocalVariable(name: "ret", scope: !62, file: !2, line: 53, type: !65) -!79 = !DILocation(line: 53, column: 7, scope: !62) -!80 = !DILocation(line: 53, column: 28, scope: !62) -!81 = !DILocation(line: 53, column: 32, scope: !62) -!82 = !DILocation(line: 53, column: 37, scope: !62) -!83 = !DILocation(line: 53, column: 13, scope: !62) -!84 = !DILocation(line: 53, column: 42, scope: !62) -!85 = !DILocation(line: 54, column: 9, scope: !62) -!86 = !DILocation(line: 54, column: 2, scope: !62) -!87 = !DILocation(line: 55, column: 1, scope: !62) -!88 = distinct !DISubprogram(name: "r_io_read_at", scope: !2, file: !2, line: 58, type: !63, scopeLine: 58, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !12, retainedNodes: !34) -!89 = !DILocalVariable(name: "io", arg: 1, scope: !88, file: !2, line: 58, type: !27) -!90 = !DILocation(line: 58, column: 24, scope: !88) -!91 = !DILocalVariable(name: "buf", arg: 2, scope: !88, file: !2, line: 58, type: !33) -!92 = !DILocation(line: 58, column: 33, scope: !88) -!93 = !DILocalVariable(name: "len", arg: 3, scope: !88, file: !2, line: 58, type: !26) -!94 = !DILocation(line: 58, column: 42, scope: !88) -!95 = !DILocation(line: 59, column: 7, scope: !96) -!96 = distinct !DILexicalBlock(scope: !88, file: !2, line: 59, column: 5) -!97 = !DILocation(line: 59, column: 10, scope: !96) -!98 = !DILocation(line: 59, column: 13, scope: !96) -!99 = !DILocation(line: 59, column: 17, scope: !96) -!100 = !DILocation(line: 59, column: 20, scope: !96) -!101 = !DILocation(line: 59, column: 24, scope: !96) -!102 = !DILocation(line: 59, column: 5, scope: !88) -!103 = !DILocation(line: 60, column: 3, scope: !104) -!104 = distinct !DILexicalBlock(scope: !96, file: !2, line: 59, column: 31) -!105 = !DILocation(line: 62, column: 6, scope: !106) -!106 = distinct !DILexicalBlock(scope: !88, file: !2, line: 62, column: 6) -!107 = !DILocation(line: 62, column: 10, scope: !106) -!108 = !DILocation(line: 62, column: 6, scope: !88) -!109 = !DILocation(line: 63, column: 3, scope: !110) -!110 = distinct !DILexicalBlock(scope: !106, file: !2, line: 62, column: 16) -!111 = !DILocation(line: 65, column: 32, scope: !88) -!112 = !DILocation(line: 65, column: 36, scope: !88) -!113 = !DILocation(line: 65, column: 41, scope: !88) -!114 = !DILocation(line: 65, column: 9, scope: !88) -!115 = !DILocation(line: 65, column: 2, scope: !88) -!116 = !DILocation(line: 66, column: 1, scope: !88) -!117 = distinct !DISubprogram(name: "objc_build_refs", scope: !2, file: !2, line: 68, type: !118, scopeLine: 68, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !12, retainedNodes: !34) -!118 = !DISubroutineType(types: !119) -!119 = !{!65, !120} -!120 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !121, size: 64) -!121 = !DIDerivedType(tag: DW_TAG_typedef, name: "RCoreObjc", file: !2, line: 35, baseType: !122) -!122 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !2, line: 30, size: 256, elements: !123) -!123 = !{!124, !130, !134, !141} -!124 = !DIDerivedType(tag: DW_TAG_member, name: "core", scope: !122, file: !2, line: 31, baseType: !125, size: 64) -!125 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !126, size: 64) -!126 = !DIDerivedType(tag: DW_TAG_typedef, name: "RCore", file: !2, line: 28, baseType: !127) -!127 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "r_core_t", file: !2, line: 25, size: 64, elements: !128) -!128 = !{!129} -!129 = !DIDerivedType(tag: DW_TAG_member, name: "io", scope: !127, file: !2, line: 26, baseType: !27, size: 64) -!130 = !DIDerivedType(tag: DW_TAG_member, name: "file_size", scope: !122, file: !2, line: 32, baseType: !131, size: 64, offset: 64) -!131 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !132, line: 46, baseType: !133) -!132 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!133 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) -!134 = !DIDerivedType(tag: DW_TAG_member, name: "_selrefs", scope: !122, file: !2, line: 33, baseType: !135, size: 64, offset: 128) -!135 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !136, size: 64) -!136 = !DIDerivedType(tag: DW_TAG_typedef, name: "RBinSection", file: !2, line: 23, baseType: !137) -!137 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "r_bin_section_t", file: !2, line: 21, size: 64, elements: !138) -!138 = !{!139} -!139 = !DIDerivedType(tag: DW_TAG_member, name: "vsize", scope: !137, file: !2, line: 22, baseType: !140, size: 64) -!140 = !DIBasicType(name: "unsigned long long", size: 64, encoding: DW_ATE_unsigned) -!141 = !DIDerivedType(tag: DW_TAG_member, name: "_const", scope: !122, file: !2, line: 34, baseType: !135, size: 64, offset: 192) -!142 = !DILocalVariable(name: "objc", arg: 1, scope: !117, file: !2, line: 68, type: !120) -!143 = !DILocation(line: 68, column: 33, scope: !117) -!144 = !DILocalVariable(name: "ss_const", scope: !117, file: !2, line: 69, type: !131) -!145 = !DILocation(line: 69, column: 9, scope: !117) -!146 = !DILocation(line: 69, column: 20, scope: !117) -!147 = !DILocation(line: 69, column: 26, scope: !117) -!148 = !DILocation(line: 69, column: 34, scope: !117) -!149 = !DILocalVariable(name: "ss_selrefs", scope: !117, file: !2, line: 70, type: !131) -!150 = !DILocation(line: 70, column: 9, scope: !117) -!151 = !DILocation(line: 70, column: 22, scope: !117) -!152 = !DILocation(line: 70, column: 28, scope: !117) -!153 = !DILocation(line: 70, column: 38, scope: !117) -!154 = !DILocalVariable(name: "maxsize", scope: !117, file: !2, line: 73, type: !131) -!155 = !DILocation(line: 73, column: 9, scope: !117) -!156 = !DILocation(line: 73, column: 19, scope: !117) -!157 = !DILocation(line: 74, column: 12, scope: !117) -!158 = !DILocation(line: 74, column: 10, scope: !117) -!159 = !DILocalVariable(name: "buf", scope: !117, file: !2, line: 76, type: !33) -!160 = !DILocation(line: 76, column: 7, scope: !117) -!161 = !DILocation(line: 76, column: 24, scope: !117) -!162 = !DILocation(line: 76, column: 13, scope: !117) -!163 = !DILocation(line: 77, column: 7, scope: !164) -!164 = distinct !DILexicalBlock(scope: !117, file: !2, line: 77, column: 6) -!165 = !DILocation(line: 77, column: 6, scope: !117) -!166 = !DILocation(line: 78, column: 3, scope: !167) -!167 = distinct !DILexicalBlock(scope: !164, file: !2, line: 77, column: 12) -!168 = !DILocation(line: 80, column: 21, scope: !169) -!169 = distinct !DILexicalBlock(scope: !117, file: !2, line: 80, column: 6) -!170 = !DILocation(line: 80, column: 27, scope: !169) -!171 = !DILocation(line: 80, column: 33, scope: !169) -!172 = !DILocation(line: 80, column: 37, scope: !169) -!173 = !DILocation(line: 80, column: 42, scope: !169) -!174 = !DILocation(line: 80, column: 7, scope: !169) -!175 = !DILocation(line: 80, column: 6, scope: !117) -!176 = !DILocation(line: 81, column: 61, scope: !177) -!177 = distinct !DILexicalBlock(scope: !169, file: !2, line: 80, column: 53) -!178 = !DILocation(line: 81, column: 3, scope: !177) -!179 = !DILocation(line: 82, column: 3, scope: !177) -!180 = !DILocation(line: 84, column: 2, scope: !117) -!181 = !DILocation(line: 85, column: 1, scope: !117) -!182 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 87, type: !183, scopeLine: 87, spFlags: DISPFlagDefinition, unit: !12, retainedNodes: !34) -!183 = !DISubroutineType(types: !184) -!184 = !{!26} -!185 = !DILocalVariable(name: "io", scope: !182, file: !2, line: 88, type: !28) -!186 = !DILocation(line: 88, column: 6, scope: !182) -!187 = !DILocation(line: 89, column: 5, scope: !182) -!188 = !DILocation(line: 89, column: 10, scope: !182) -!189 = !DILocalVariable(name: "core", scope: !182, file: !2, line: 91, type: !126) -!190 = !DILocation(line: 91, column: 8, scope: !182) -!191 = !DILocation(line: 92, column: 7, scope: !182) -!192 = !DILocation(line: 92, column: 10, scope: !182) -!193 = !DILocalVariable(name: "selrefs", scope: !182, file: !2, line: 94, type: !136) -!194 = !DILocation(line: 94, column: 14, scope: !182) -!195 = !DILocalVariable(name: "rconst", scope: !182, file: !2, line: 95, type: !136) -!196 = !DILocation(line: 95, column: 14, scope: !182) -!197 = !DILocation(line: 96, column: 10, scope: !182) -!198 = !DILocation(line: 96, column: 16, scope: !182) -!199 = !DILocation(line: 97, column: 9, scope: !182) -!200 = !DILocation(line: 97, column: 15, scope: !182) -!201 = !DILocalVariable(name: "objc", scope: !182, file: !2, line: 99, type: !121) -!202 = !DILocation(line: 99, column: 12, scope: !182) -!203 = !DILocation(line: 100, column: 7, scope: !182) -!204 = !DILocation(line: 100, column: 12, scope: !182) -!205 = !DILocation(line: 101, column: 7, scope: !182) -!206 = !DILocation(line: 101, column: 17, scope: !182) -!207 = !DILocation(line: 102, column: 7, scope: !182) -!208 = !DILocation(line: 102, column: 16, scope: !182) -!209 = !DILocation(line: 103, column: 7, scope: !182) -!210 = !DILocation(line: 103, column: 14, scope: !182) -!211 = !DILocation(line: 105, column: 2, scope: !182) -!212 = !DILocation(line: 106, column: 1, scope: !182) diff --git a/test_cases_bc/ae_assert_tests/CVE-2021-45341-0.c.bc b/test_cases_bc/ae_assert_tests/CVE-2021-45341-0.c.bc deleted file mode 100644 index a7b23742..00000000 --- a/test_cases_bc/ae_assert_tests/CVE-2021-45341-0.c.bc +++ /dev/null @@ -1,179 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2021-45341-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2021-45341-0.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [2 x i8] c" \00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [668 x i8] c"255 513 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789\00", align 1, !dbg !12 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @Serialize(ptr noundef %ifstr) #0 !dbg !28 { -entry: - %ifstr.addr = alloca ptr, align 8 - %wd = alloca i32, align 4 - %buf = alloca [512 x i8], align 16 - %ifstr_cpy = alloca ptr, align 8 - %token = alloca ptr, align 8 - store ptr %ifstr, ptr %ifstr.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %ifstr.addr, metadata !33, metadata !DIExpression()), !dbg !34 - call void @llvm.dbg.declare(metadata ptr %wd, metadata !35, metadata !DIExpression()), !dbg !37 - call void @llvm.dbg.declare(metadata ptr %buf, metadata !38, metadata !DIExpression()), !dbg !42 - call void @llvm.dbg.declare(metadata ptr %ifstr_cpy, metadata !43, metadata !DIExpression()), !dbg !44 - %0 = load ptr, ptr %ifstr.addr, align 8, !dbg !45 - %call = call i64 @strlen(ptr noundef %0) #6, !dbg !46 - %add = add i64 %call, 1, !dbg !47 - %call1 = call noalias ptr @malloc(i64 noundef %add) #7, !dbg !48 - store ptr %call1, ptr %ifstr_cpy, align 8, !dbg !44 - %1 = load ptr, ptr %ifstr_cpy, align 8, !dbg !49 - %2 = load ptr, ptr %ifstr.addr, align 8, !dbg !50 - %call2 = call ptr @strcpy(ptr noundef %1, ptr noundef %2) #8, !dbg !51 - call void @llvm.dbg.declare(metadata ptr %token, metadata !52, metadata !DIExpression()), !dbg !53 - %3 = load ptr, ptr %ifstr_cpy, align 8, !dbg !54 - %call3 = call ptr @strtok(ptr noundef %3, ptr noundef @.str) #8, !dbg !55 - store ptr %call3, ptr %token, align 8, !dbg !53 - %call4 = call ptr @strtok(ptr noundef null, ptr noundef @.str) #8, !dbg !56 - store ptr %call4, ptr %token, align 8, !dbg !59 - %4 = load ptr, ptr %token, align 8, !dbg !60 - %call5 = call i32 @atoi(ptr noundef %4) #6, !dbg !61 - store i32 %call5, ptr %wd, align 4, !dbg !62 - %call6 = call ptr @strtok(ptr noundef null, ptr noundef @.str.1) #8, !dbg !63 - store ptr %call6, ptr %token, align 8, !dbg !64 - %arraydecay = getelementptr inbounds [512 x i8], ptr %buf, i64 0, i64 0, !dbg !65 - %5 = load ptr, ptr %token, align 8, !dbg !66 - %6 = load i32, ptr %wd, align 4, !dbg !67 - %conv = sext i32 %6 to i64, !dbg !67 - call void @llvm.memcpy.p0.p0.i64(ptr align 16 %arraydecay, ptr align 1 %5, i64 %conv, i1 false), !dbg !65 - %7 = load i32, ptr %wd, align 4, !dbg !68 - %idxprom = sext i32 %7 to i64, !dbg !69 - %arrayidx = getelementptr inbounds [512 x i8], ptr %buf, i64 0, i64 %idxprom, !dbg !69 - store i8 0, ptr %arrayidx, align 1, !dbg !70 - ret void, !dbg !71 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #3 - -; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #4 - -; Function Attrs: nounwind -declare ptr @strtok(ptr noundef, ptr noundef) #4 - -; Function Attrs: nounwind willreturn memory(read) -declare i32 @atoi(ptr noundef) #3 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !72 { -entry: - %ifstr = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %ifstr, metadata !75, metadata !DIExpression()), !dbg !76 - store ptr @.str.2, ptr %ifstr, align 8, !dbg !76 - %0 = load ptr, ptr %ifstr, align 8, !dbg !77 - call void @Serialize(ptr noundef %0), !dbg !78 - ret i32 0, !dbg !79 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #6 = { nounwind willreturn memory(read) } -attributes #7 = { nounwind allocsize(0) } -attributes #8 = { nounwind } - -!llvm.dbg.cu = !{!17} -!llvm.module.flags = !{!20, !21, !22, !23, !24, !25, !26} -!llvm.ident = !{!27} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 19, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/CVE-2021-45341-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3c85638a1acfc594f6d0ee0dc167f016") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 16, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 2) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 25, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 8, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 1) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 34, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 5344, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 668) -!17 = distinct !DICompileUnit(language: DW_LANG_C11, file: !18, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !19, splitDebugInlining: false, nameTableKind: None) -!18 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2021-45341-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3c85638a1acfc594f6d0ee0dc167f016") -!19 = !{!0, !7, !12} -!20 = !{i32 7, !"Dwarf Version", i32 5} -!21 = !{i32 2, !"Debug Info Version", i32 3} -!22 = !{i32 1, !"wchar_size", i32 4} -!23 = !{i32 8, !"PIC Level", i32 2} -!24 = !{i32 7, !"PIE Level", i32 2} -!25 = !{i32 7, !"uwtable", i32 2} -!26 = !{i32 7, !"frame-pointer", i32 2} -!27 = !{!"clang version 16.0.0"} -!28 = distinct !DISubprogram(name: "Serialize", scope: !2, file: !2, line: 13, type: !29, scopeLine: 13, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !17, retainedNodes: !32) -!29 = !DISubroutineType(types: !30) -!30 = !{null, !31} -!31 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!32 = !{} -!33 = !DILocalVariable(name: "ifstr", arg: 1, scope: !28, file: !2, line: 13, type: !31) -!34 = !DILocation(line: 13, column: 22, scope: !28) -!35 = !DILocalVariable(name: "wd", scope: !28, file: !2, line: 14, type: !36) -!36 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!37 = !DILocation(line: 14, column: 9, scope: !28) -!38 = !DILocalVariable(name: "buf", scope: !28, file: !2, line: 15, type: !39) -!39 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 4096, elements: !40) -!40 = !{!41} -!41 = !DISubrange(count: 512) -!42 = !DILocation(line: 15, column: 10, scope: !28) -!43 = !DILocalVariable(name: "ifstr_cpy", scope: !28, file: !2, line: 17, type: !31) -!44 = !DILocation(line: 17, column: 11, scope: !28) -!45 = !DILocation(line: 17, column: 37, scope: !28) -!46 = !DILocation(line: 17, column: 30, scope: !28) -!47 = !DILocation(line: 17, column: 44, scope: !28) -!48 = !DILocation(line: 17, column: 23, scope: !28) -!49 = !DILocation(line: 18, column: 12, scope: !28) -!50 = !DILocation(line: 18, column: 23, scope: !28) -!51 = !DILocation(line: 18, column: 5, scope: !28) -!52 = !DILocalVariable(name: "token", scope: !28, file: !2, line: 19, type: !31) -!53 = !DILocation(line: 19, column: 11, scope: !28) -!54 = !DILocation(line: 19, column: 26, scope: !28) -!55 = !DILocation(line: 19, column: 19, scope: !28) -!56 = !DILocation(line: 22, column: 17, scope: !57) -!57 = distinct !DILexicalBlock(scope: !58, file: !2, line: 21, column: 14) -!58 = distinct !DILexicalBlock(scope: !28, file: !2, line: 21, column: 8) -!59 = !DILocation(line: 22, column: 15, scope: !57) -!60 = !DILocation(line: 23, column: 19, scope: !57) -!61 = !DILocation(line: 23, column: 14, scope: !57) -!62 = !DILocation(line: 23, column: 12, scope: !57) -!63 = !DILocation(line: 25, column: 17, scope: !57) -!64 = !DILocation(line: 25, column: 15, scope: !57) -!65 = !DILocation(line: 27, column: 9, scope: !57) -!66 = !DILocation(line: 27, column: 21, scope: !57) -!67 = !DILocation(line: 27, column: 28, scope: !57) -!68 = !DILocation(line: 28, column: 13, scope: !57) -!69 = !DILocation(line: 28, column: 9, scope: !57) -!70 = !DILocation(line: 28, column: 17, scope: !57) -!71 = !DILocation(line: 31, column: 1, scope: !28) -!72 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 33, type: !73, scopeLine: 33, spFlags: DISPFlagDefinition, unit: !17, retainedNodes: !32) -!73 = !DISubroutineType(types: !74) -!74 = !{!36} -!75 = !DILocalVariable(name: "ifstr", scope: !72, file: !2, line: 34, type: !31) -!76 = !DILocation(line: 34, column: 11, scope: !72) -!77 = !DILocation(line: 35, column: 15, scope: !72) -!78 = !DILocation(line: 35, column: 5, scope: !72) -!79 = !DILocation(line: 36, column: 1, scope: !72) diff --git a/test_cases_bc/ae_assert_tests/CVE-2022-23850-0.c.bc b/test_cases_bc/ae_assert_tests/CVE-2022-23850-0.c.bc deleted file mode 100644 index 6ab1328c..00000000 --- a/test_cases_bc/ae_assert_tests/CVE-2022-23850-0.c.bc +++ /dev/null @@ -1,116 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-23850-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2022-23850-0.c" -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-unknown-linux-gnu" - -%struct._WString = type { ptr } - -@.str = private unnamed_addr constant [26 x i8] c"0123456789912345678912345\00", align 1, !dbg !0 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @xhtml_translate_entity(ptr noundef %entity) #0 !dbg !26 { -entry: - %entity.addr = alloca ptr, align 8 - %out = alloca [20 x i8], align 16 - %in = alloca ptr, align 8 - store ptr %entity, ptr %entity.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %entity.addr, metadata !36, metadata !DIExpression()), !dbg !37 - call void @llvm.dbg.declare(metadata ptr %out, metadata !38, metadata !DIExpression()), !dbg !42 - call void @llvm.dbg.declare(metadata ptr %in, metadata !43, metadata !DIExpression()), !dbg !44 - %0 = load ptr, ptr %entity.addr, align 8, !dbg !45 - %str = getelementptr inbounds %struct._WString, ptr %0, i32 0, i32 0, !dbg !46 - %1 = load ptr, ptr %str, align 8, !dbg !46 - store ptr %1, ptr %in, align 8, !dbg !44 - %arraydecay = getelementptr inbounds [20 x i8], ptr %out, i64 0, i64 0, !dbg !47 - %2 = load ptr, ptr %in, align 8, !dbg !48 - %call = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef %2) #3, !dbg !49 - ret void, !dbg !50 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !51 { -entry: - %wString = alloca %struct._WString, align 8 - call void @llvm.dbg.declare(metadata ptr %wString, metadata !55, metadata !DIExpression()), !dbg !56 - %str = getelementptr inbounds %struct._WString, ptr %wString, i32 0, i32 0, !dbg !57 - store ptr @.str, ptr %str, align 8, !dbg !58 - call void @xhtml_translate_entity(ptr noundef %wString), !dbg !59 - ret i32 0, !dbg !60 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind } - -!llvm.dbg.cu = !{!7} -!llvm.module.flags = !{!18, !19, !20, !21, !22, !23, !24} -!llvm.ident = !{!25} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 25, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/CVE-2022-23850-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "0ac8a6a18baf03409e466f39130b6b06") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 208, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 26) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !17, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2022-23850-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "0ac8a6a18baf03409e466f39130b6b06") -!9 = !{!10, !11} -!10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!11 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !12, size: 64) -!12 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint32_t", file: !13, line: 26, baseType: !14) -!13 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h", directory: "", checksumkind: CSK_MD5, checksum: "d3ea318a915682aaf6645ec16ac9f991") -!14 = !DIDerivedType(tag: DW_TAG_typedef, name: "__uint32_t", file: !15, line: 42, baseType: !16) -!15 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "f6304b1a6dcfc6bee76e9a51043b5090") -!16 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!17 = !{!0} -!18 = !{i32 7, !"Dwarf Version", i32 5} -!19 = !{i32 2, !"Debug Info Version", i32 3} -!20 = !{i32 1, !"wchar_size", i32 4} -!21 = !{i32 8, !"PIC Level", i32 2} -!22 = !{i32 7, !"PIE Level", i32 2} -!23 = !{i32 7, !"uwtable", i32 2} -!24 = !{i32 7, !"frame-pointer", i32 2} -!25 = !{!"clang version 16.0.0"} -!26 = distinct !DISubprogram(name: "xhtml_translate_entity", scope: !2, file: !2, line: 16, type: !27, scopeLine: 16, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !35) -!27 = !DISubroutineType(types: !28) -!28 = !{null, !29} -!29 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !30, size: 64) -!30 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !31) -!31 = !DIDerivedType(tag: DW_TAG_typedef, name: "WString", file: !2, line: 14, baseType: !32) -!32 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_WString", file: !2, line: 11, size: 64, elements: !33) -!33 = !{!34} -!34 = !DIDerivedType(tag: DW_TAG_member, name: "str", scope: !32, file: !2, line: 12, baseType: !11, size: 64) -!35 = !{} -!36 = !DILocalVariable(name: "entity", arg: 1, scope: !26, file: !2, line: 16, type: !29) -!37 = !DILocation(line: 16, column: 45, scope: !26) -!38 = !DILocalVariable(name: "out", scope: !26, file: !2, line: 17, type: !39) -!39 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 160, elements: !40) -!40 = !{!41} -!41 = !DISubrange(count: 20) -!42 = !DILocation(line: 17, column: 10, scope: !26) -!43 = !DILocalVariable(name: "in", scope: !26, file: !2, line: 18, type: !10) -!44 = !DILocation(line: 18, column: 11, scope: !26) -!45 = !DILocation(line: 18, column: 23, scope: !26) -!46 = !DILocation(line: 18, column: 31, scope: !26) -!47 = !DILocation(line: 20, column: 12, scope: !26) -!48 = !DILocation(line: 20, column: 17, scope: !26) -!49 = !DILocation(line: 20, column: 5, scope: !26) -!50 = !DILocation(line: 21, column: 1, scope: !26) -!51 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 23, type: !52, scopeLine: 23, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !35) -!52 = !DISubroutineType(types: !53) -!53 = !{!54} -!54 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!55 = !DILocalVariable(name: "wString", scope: !51, file: !2, line: 24, type: !31) -!56 = !DILocation(line: 24, column: 13, scope: !51) -!57 = !DILocation(line: 25, column: 13, scope: !51) -!58 = !DILocation(line: 25, column: 17, scope: !51) -!59 = !DILocation(line: 26, column: 5, scope: !51) -!60 = !DILocation(line: 27, column: 1, scope: !51) diff --git a/test_cases_bc/ae_assert_tests/CVE-2022-26129-0.c.bc b/test_cases_bc/ae_assert_tests/CVE-2022-26129-0.c.bc deleted file mode 100644 index 326fc719..00000000 --- a/test_cases_bc/ae_assert_tests/CVE-2022-26129-0.c.bc +++ /dev/null @@ -1,181 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-26129-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2022-26129-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @parse_update_subtlv(ptr noundef %a, i32 noundef %alen) #0 !dbg !10 { -entry: - %a.addr = alloca ptr, align 8 - %alen.addr = alloca i32, align 4 - %type = alloca i32, align 4 - %len = alloca i32, align 4 - %i = alloca i32, align 4 - store ptr %a, ptr %a.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !19, metadata !DIExpression()), !dbg !20 - store i32 %alen, ptr %alen.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %alen.addr, metadata !21, metadata !DIExpression()), !dbg !22 - call void @llvm.dbg.declare(metadata ptr %type, metadata !23, metadata !DIExpression()), !dbg !24 - call void @llvm.dbg.declare(metadata ptr %len, metadata !25, metadata !DIExpression()), !dbg !26 - call void @llvm.dbg.declare(metadata ptr %i, metadata !27, metadata !DIExpression()), !dbg !28 - store i32 0, ptr %i, align 4, !dbg !28 - br label %while.cond, !dbg !29 - -while.cond: ; preds = %if.end12, %entry - %0 = load i32, ptr %i, align 4, !dbg !30 - %1 = load i32, ptr %alen.addr, align 4, !dbg !31 - %cmp = icmp slt i32 %0, %1, !dbg !32 - br i1 %cmp, label %while.body, label %while.end, !dbg !29 - -while.body: ; preds = %while.cond - %2 = load ptr, ptr %a.addr, align 8, !dbg !33 - %3 = load i32, ptr %i, align 4, !dbg !35 - %idxprom = sext i32 %3 to i64, !dbg !33 - %arrayidx = getelementptr inbounds i8, ptr %2, i64 %idxprom, !dbg !33 - %4 = load i8, ptr %arrayidx, align 1, !dbg !33 - %conv = zext i8 %4 to i32, !dbg !33 - store i32 %conv, ptr %type, align 4, !dbg !36 - %5 = load i32, ptr %i, align 4, !dbg !37 - %add = add nsw i32 %5, 1, !dbg !39 - %6 = load i32, ptr %alen.addr, align 4, !dbg !40 - %cmp1 = icmp sgt i32 %add, %6, !dbg !41 - br i1 %cmp1, label %if.then, label %if.end, !dbg !42 - -if.then: ; preds = %while.body - br label %while.end, !dbg !43 - -if.end: ; preds = %while.body - %7 = load ptr, ptr %a.addr, align 8, !dbg !45 - %8 = load i32, ptr %i, align 4, !dbg !46 - %add3 = add nsw i32 %8, 1, !dbg !47 - %idxprom4 = sext i32 %add3 to i64, !dbg !45 - %arrayidx5 = getelementptr inbounds i8, ptr %7, i64 %idxprom4, !dbg !45 - %9 = load i8, ptr %arrayidx5, align 1, !dbg !45 - %conv6 = zext i8 %9 to i32, !dbg !45 - store i32 %conv6, ptr %len, align 4, !dbg !48 - %10 = load i32, ptr %i, align 4, !dbg !49 - %11 = load i32, ptr %len, align 4, !dbg !51 - %add7 = add nsw i32 %10, %11, !dbg !52 - %add8 = add nsw i32 %add7, 2, !dbg !53 - %12 = load i32, ptr %alen.addr, align 4, !dbg !54 - %cmp9 = icmp sgt i32 %add8, %12, !dbg !55 - br i1 %cmp9, label %if.then11, label %if.end12, !dbg !56 - -if.then11: ; preds = %if.end - br label %while.end, !dbg !57 - -if.end12: ; preds = %if.end - %13 = load i32, ptr %len, align 4, !dbg !59 - %add13 = add nsw i32 %13, 2, !dbg !60 - %14 = load i32, ptr %i, align 4, !dbg !61 - %add14 = add nsw i32 %14, %add13, !dbg !61 - store i32 %add14, ptr %i, align 4, !dbg !61 - br label %while.cond, !dbg !29, !llvm.loop !62 - -while.end: ; preds = %if.then11, %if.then, %while.cond - ret void, !dbg !65 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !66 { -entry: - %a = alloca [5 x i8], align 1 - call void @llvm.dbg.declare(metadata ptr %a, metadata !69, metadata !DIExpression()), !dbg !74 - call void @llvm.memset.p0.i64(ptr align 1 %a, i8 0, i64 5, i1 false), !dbg !74 - %arraydecay = getelementptr inbounds [5 x i8], ptr %a, i64 0, i64 0, !dbg !75 - call void @parse_update_subtlv(ptr noundef %arraydecay, i32 noundef 5), !dbg !76 - ret i32 0, !dbg !77 -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2022-26129-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "091485ed47a5f4d546d534edec4061b3") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "parse_update_subtlv", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !18) -!11 = !DIFile(filename: "src/ae_assert_tests/CVE-2022-26129-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "091485ed47a5f4d546d534edec4061b3") -!12 = !DISubroutineType(types: !13) -!13 = !{null, !14, !17} -!14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) -!15 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !16) -!16 = !DIBasicType(name: "unsigned char", size: 8, encoding: DW_ATE_unsigned_char) -!17 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!18 = !{} -!19 = !DILocalVariable(name: "a", arg: 1, scope: !10, file: !11, line: 9, type: !14) -!20 = !DILocation(line: 9, column: 47, scope: !10) -!21 = !DILocalVariable(name: "alen", arg: 2, scope: !10, file: !11, line: 9, type: !17) -!22 = !DILocation(line: 9, column: 54, scope: !10) -!23 = !DILocalVariable(name: "type", scope: !10, file: !11, line: 10, type: !17) -!24 = !DILocation(line: 10, column: 9, scope: !10) -!25 = !DILocalVariable(name: "len", scope: !10, file: !11, line: 10, type: !17) -!26 = !DILocation(line: 10, column: 15, scope: !10) -!27 = !DILocalVariable(name: "i", scope: !10, file: !11, line: 10, type: !17) -!28 = !DILocation(line: 10, column: 20, scope: !10) -!29 = !DILocation(line: 12, column: 5, scope: !10) -!30 = !DILocation(line: 12, column: 11, scope: !10) -!31 = !DILocation(line: 12, column: 15, scope: !10) -!32 = !DILocation(line: 12, column: 13, scope: !10) -!33 = !DILocation(line: 13, column: 16, scope: !34) -!34 = distinct !DILexicalBlock(scope: !10, file: !11, line: 12, column: 21) -!35 = !DILocation(line: 13, column: 18, scope: !34) -!36 = !DILocation(line: 13, column: 14, scope: !34) -!37 = !DILocation(line: 15, column: 12, scope: !38) -!38 = distinct !DILexicalBlock(scope: !34, file: !11, line: 15, column: 12) -!39 = !DILocation(line: 15, column: 14, scope: !38) -!40 = !DILocation(line: 15, column: 20, scope: !38) -!41 = !DILocation(line: 15, column: 18, scope: !38) -!42 = !DILocation(line: 15, column: 12, scope: !34) -!43 = !DILocation(line: 16, column: 13, scope: !44) -!44 = distinct !DILexicalBlock(scope: !38, file: !11, line: 15, column: 26) -!45 = !DILocation(line: 20, column: 15, scope: !34) -!46 = !DILocation(line: 20, column: 17, scope: !34) -!47 = !DILocation(line: 20, column: 19, scope: !34) -!48 = !DILocation(line: 20, column: 13, scope: !34) -!49 = !DILocation(line: 22, column: 6, scope: !50) -!50 = distinct !DILexicalBlock(scope: !34, file: !11, line: 22, column: 6) -!51 = !DILocation(line: 22, column: 10, scope: !50) -!52 = !DILocation(line: 22, column: 8, scope: !50) -!53 = !DILocation(line: 22, column: 14, scope: !50) -!54 = !DILocation(line: 22, column: 20, scope: !50) -!55 = !DILocation(line: 22, column: 18, scope: !50) -!56 = !DILocation(line: 22, column: 6, scope: !34) -!57 = !DILocation(line: 23, column: 13, scope: !58) -!58 = distinct !DILexicalBlock(scope: !50, file: !11, line: 22, column: 26) -!59 = !DILocation(line: 26, column: 8, scope: !34) -!60 = !DILocation(line: 26, column: 12, scope: !34) -!61 = !DILocation(line: 26, column: 5, scope: !34) -!62 = distinct !{!62, !29, !63, !64} -!63 = !DILocation(line: 27, column: 2, scope: !10) -!64 = !{!"llvm.loop.mustprogress"} -!65 = !DILocation(line: 28, column: 1, scope: !10) -!66 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 30, type: !67, scopeLine: 30, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !18) -!67 = !DISubroutineType(types: !68) -!68 = !{!17} -!69 = !DILocalVariable(name: "a", scope: !66, file: !11, line: 31, type: !70) -!70 = !DICompositeType(tag: DW_TAG_array_type, baseType: !71, size: 40, elements: !72) -!71 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!72 = !{!73} -!73 = !DISubrange(count: 5) -!74 = !DILocation(line: 31, column: 7, scope: !66) -!75 = !DILocation(line: 32, column: 22, scope: !66) -!76 = !DILocation(line: 32, column: 2, scope: !66) -!77 = !DILocation(line: 33, column: 1, scope: !66) diff --git a/test_cases_bc/ae_assert_tests/CVE-2022-27239-0.c.bc b/test_cases_bc/ae_assert_tests/CVE-2022-27239-0.c.bc deleted file mode 100644 index fff82fc4..00000000 --- a/test_cases_bc/ae_assert_tests/CVE-2022-27239-0.c.bc +++ /dev/null @@ -1,456 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-27239-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2022-27239-0.c" -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-unknown-linux-gnu" - -%struct.parsed_mount_info = type { [45 x i8], i8, [2 x i8] } - -@.str = private unnamed_addr constant [28 x i8] c"parse opt token, token: %s\0A\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [3 x i8] c"ip\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [5 x i8] c"addr\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [25 x i8] c"parse option, buffer:%s\0A\00", align 1, !dbg !17 -@.str.4 = private unnamed_addr constant [2 x i8] c",\00", align 1, !dbg !22 -@stderr = external global ptr, align 8 -@.str.5 = private unnamed_addr constant [34 x i8] c"ip address %s override specified\0A\00", align 1, !dbg !27 -@.str.6 = private unnamed_addr constant [74 x i8] c"keyword,ip=VapodinGmVAFzAbsPWGkWdPQI2gozcQulsHW1hJRsyVlaZ,keyword3=value3\00", align 1, !dbg !32 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @parse_opt_token(ptr noundef %token) #0 !dbg !50 { -entry: - %retval = alloca i32, align 4 - %token.addr = alloca ptr, align 8 - store ptr %token, ptr %token.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %token.addr, metadata !57, metadata !DIExpression()), !dbg !58 - %0 = load ptr, ptr %token.addr, align 8, !dbg !59 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %0), !dbg !60 - %1 = load ptr, ptr %token.addr, align 8, !dbg !61 - %cmp = icmp eq ptr %1, null, !dbg !63 - br i1 %cmp, label %if.then, label %if.end, !dbg !64 - -if.then: ; preds = %entry - store i32 -1, ptr %retval, align 4, !dbg !65 - br label %return, !dbg !65 - -if.end: ; preds = %entry - %2 = load ptr, ptr %token.addr, align 8, !dbg !66 - %call1 = call i32 @strcmp(ptr noundef %2, ptr noundef @.str.1) #7, !dbg !68 - %cmp2 = icmp eq i32 %call1, 0, !dbg !69 - br i1 %cmp2, label %if.then5, label %lor.lhs.false, !dbg !70 - -lor.lhs.false: ; preds = %if.end - %3 = load ptr, ptr %token.addr, align 8, !dbg !71 - %call3 = call i32 @strcmp(ptr noundef %3, ptr noundef @.str.2) #7, !dbg !72 - %cmp4 = icmp eq i32 %call3, 0, !dbg !73 - br i1 %cmp4, label %if.then5, label %if.end6, !dbg !74 - -if.then5: ; preds = %lor.lhs.false, %if.end - store i32 6, ptr %retval, align 4, !dbg !75 - br label %return, !dbg !75 - -if.end6: ; preds = %lor.lhs.false - store i32 -1, ptr %retval, align 4, !dbg !76 - br label %return, !dbg !76 - -return: ; preds = %if.end6, %if.then5, %if.then - %4 = load i32, ptr %retval, align 4, !dbg !77 - ret i32 %4, !dbg !77 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare i32 @printf(ptr noundef, ...) #2 - -; Function Attrs: nounwind willreturn memory(read) -declare i32 @strcmp(ptr noundef, ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @parse_options(ptr noundef %data, ptr noundef %parsed_info) #0 !dbg !78 { -entry: - %retval = alloca i32, align 4 - %data.addr = alloca ptr, align 8 - %parsed_info.addr = alloca ptr, align 8 - %value = alloca ptr, align 8 - %equals = alloca ptr, align 8 - %next_keyword = alloca ptr, align 8 - %saved_stack = alloca ptr, align 8 - %__vla_expr0 = alloca i64, align 8 - %token = alloca ptr, align 8 - store ptr %data, ptr %data.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %data.addr, metadata !90, metadata !DIExpression()), !dbg !91 - store ptr %parsed_info, ptr %parsed_info.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %parsed_info.addr, metadata !92, metadata !DIExpression()), !dbg !93 - call void @llvm.dbg.declare(metadata ptr %value, metadata !94, metadata !DIExpression()), !dbg !96 - %0 = load ptr, ptr %data.addr, align 8, !dbg !97 - %call = call i64 @strlen(ptr noundef %0) #7, !dbg !98 - %add = add i64 %call, 1, !dbg !99 - %call1 = call noalias ptr @malloc(i64 noundef %add) #8, !dbg !100 - store ptr %call1, ptr %value, align 8, !dbg !96 - call void @llvm.dbg.declare(metadata ptr %equals, metadata !101, metadata !DIExpression()), !dbg !102 - %1 = load ptr, ptr %data.addr, align 8, !dbg !103 - %call2 = call i64 @strlen(ptr noundef %1) #7, !dbg !104 - %add3 = add i64 %call2, 1, !dbg !105 - %call4 = call noalias ptr @malloc(i64 noundef %add3) #8, !dbg !106 - store ptr %call4, ptr %equals, align 8, !dbg !102 - call void @llvm.dbg.declare(metadata ptr %next_keyword, metadata !107, metadata !DIExpression()), !dbg !108 - %2 = load ptr, ptr %data.addr, align 8, !dbg !109 - %call5 = call i64 @strlen(ptr noundef %2) #7, !dbg !110 - %add6 = add i64 %call5, 1, !dbg !111 - %call7 = call noalias ptr @malloc(i64 noundef %add6) #8, !dbg !112 - store ptr %call7, ptr %next_keyword, align 8, !dbg !108 - %3 = load ptr, ptr %data.addr, align 8, !dbg !113 - %tobool = icmp ne ptr %3, null, !dbg !113 - br i1 %tobool, label %if.end, label %if.then, !dbg !115 - -if.then: ; preds = %entry - store i32 1, ptr %retval, align 4, !dbg !116 - br label %return, !dbg !116 - -if.end: ; preds = %entry - %4 = load ptr, ptr %data.addr, align 8, !dbg !117 - %call8 = call i64 @strlen(ptr noundef %4) #7, !dbg !118 - %add9 = add i64 %call8, 1, !dbg !119 - %5 = call ptr @llvm.stacksave(), !dbg !120 - store ptr %5, ptr %saved_stack, align 8, !dbg !120 - %vla = alloca i8, i64 %add9, align 16, !dbg !120 - store i64 %add9, ptr %__vla_expr0, align 8, !dbg !120 - call void @llvm.dbg.declare(metadata ptr %__vla_expr0, metadata !121, metadata !DIExpression()), !dbg !123 - call void @llvm.dbg.declare(metadata ptr %vla, metadata !124, metadata !DIExpression()), !dbg !128 - %6 = load ptr, ptr %data.addr, align 8, !dbg !129 - %call10 = call ptr @strcpy(ptr noundef %vla, ptr noundef %6) #9, !dbg !130 - %call11 = call i32 (ptr, ...) @printf(ptr noundef @.str.3, ptr noundef %vla), !dbg !131 - call void @llvm.dbg.declare(metadata ptr %token, metadata !132, metadata !DIExpression()), !dbg !133 - %call12 = call ptr @strtok(ptr noundef %vla, ptr noundef @.str.4) #9, !dbg !134 - store ptr %call12, ptr %token, align 8, !dbg !133 - br label %while.cond, !dbg !135 - -while.cond: ; preds = %if.end31, %if.end - %7 = load ptr, ptr %token, align 8, !dbg !136 - %cmp = icmp ne ptr %7, null, !dbg !137 - br i1 %cmp, label %while.body, label %while.end, !dbg !135 - -while.body: ; preds = %while.cond - %8 = load ptr, ptr %next_keyword, align 8, !dbg !138 - %9 = load ptr, ptr %token, align 8, !dbg !140 - %call13 = call ptr @strcpy(ptr noundef %8, ptr noundef %9) #9, !dbg !141 - store ptr null, ptr %value, align 8, !dbg !142 - %10 = load ptr, ptr %next_keyword, align 8, !dbg !143 - %call14 = call ptr @strchr(ptr noundef %10, i32 noundef 61) #7, !dbg !145 - store ptr %call14, ptr %equals, align 8, !dbg !146 - %cmp15 = icmp ne ptr %call14, null, !dbg !147 - br i1 %cmp15, label %if.then16, label %if.end17, !dbg !148 - -if.then16: ; preds = %while.body - %11 = load ptr, ptr %equals, align 8, !dbg !149 - store i8 0, ptr %11, align 1, !dbg !151 - %12 = load ptr, ptr %equals, align 8, !dbg !152 - %add.ptr = getelementptr inbounds i8, ptr %12, i64 1, !dbg !153 - store ptr %add.ptr, ptr %value, align 8, !dbg !154 - br label %if.end17, !dbg !155 - -if.end17: ; preds = %if.then16, %while.body - %13 = load ptr, ptr %value, align 8, !dbg !156 - %tobool18 = icmp ne ptr %13, null, !dbg !156 - br i1 %tobool18, label %land.lhs.true, label %if.end31, !dbg !158 - -land.lhs.true: ; preds = %if.end17 - %14 = load ptr, ptr %next_keyword, align 8, !dbg !159 - %call19 = call i32 @parse_opt_token(ptr noundef %14), !dbg !160 - %cmp20 = icmp eq i32 %call19, 6, !dbg !161 - br i1 %cmp20, label %if.then21, label %if.end31, !dbg !162 - -if.then21: ; preds = %land.lhs.true - %15 = load ptr, ptr %value, align 8, !dbg !163 - %call22 = call i64 @strnlen(ptr noundef %15, i64 noundef 46) #7, !dbg !166 - %cmp23 = icmp ule i64 %call22, 46, !dbg !167 - br i1 %cmp23, label %if.then24, label %if.end30, !dbg !168 - -if.then24: ; preds = %if.then21 - %16 = load ptr, ptr %parsed_info.addr, align 8, !dbg !169 - %addrlist = getelementptr inbounds %struct.parsed_mount_info, ptr %16, i32 0, i32 0, !dbg !171 - %arraydecay = getelementptr inbounds [45 x i8], ptr %addrlist, i64 0, i64 0, !dbg !169 - %17 = load ptr, ptr %value, align 8, !dbg !172 - %call25 = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef %17) #9, !dbg !173 - %18 = load ptr, ptr %parsed_info.addr, align 8, !dbg !174 - %verboseflag = getelementptr inbounds %struct.parsed_mount_info, ptr %18, i32 0, i32 1, !dbg !176 - %bf.load = load i8, ptr %verboseflag, align 1, !dbg !176 - %bf.clear = and i8 %bf.load, 1, !dbg !176 - %bf.cast = zext i8 %bf.clear to i32, !dbg !176 - %tobool26 = icmp ne i32 %bf.cast, 0, !dbg !174 - br i1 %tobool26, label %if.then27, label %if.end29, !dbg !177 - -if.then27: ; preds = %if.then24 - %19 = load ptr, ptr @stderr, align 8, !dbg !178 - %20 = load ptr, ptr %value, align 8, !dbg !179 - %call28 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %19, ptr noundef @.str.5, ptr noundef %20), !dbg !180 - br label %if.end29, !dbg !180 - -if.end29: ; preds = %if.then27, %if.then24 - br label %if.end30, !dbg !181 - -if.end30: ; preds = %if.end29, %if.then21 - br label %if.end31, !dbg !182 - -if.end31: ; preds = %if.end30, %land.lhs.true, %if.end17 - %call32 = call ptr @strtok(ptr noundef null, ptr noundef @.str.4) #9, !dbg !183 - store ptr %call32, ptr %token, align 8, !dbg !184 - br label %while.cond, !dbg !135, !llvm.loop !185 - -while.end: ; preds = %while.cond - store i32 0, ptr %retval, align 4, !dbg !188 - %21 = load ptr, ptr %saved_stack, align 8, !dbg !189 - call void @llvm.stackrestore(ptr %21), !dbg !189 - br label %return - -return: ; preds = %while.end, %if.then - %22 = load i32, ptr %retval, align 4, !dbg !189 - ret i32 %22, !dbg !189 -} - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #4 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #3 - -; Function Attrs: nocallback nofree nosync nounwind willreturn -declare ptr @llvm.stacksave() #5 - -; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #6 - -; Function Attrs: nounwind -declare ptr @strtok(ptr noundef, ptr noundef) #6 - -; Function Attrs: nounwind willreturn memory(read) -declare ptr @strchr(ptr noundef, i32 noundef) #3 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @strnlen(ptr noundef, i64 noundef) #3 - -declare i32 @fprintf(ptr noundef, ptr noundef, ...) #2 - -; Function Attrs: nocallback nofree nosync nounwind willreturn -declare void @llvm.stackrestore(ptr) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !190 { -entry: - %parsed_info = alloca %struct.parsed_mount_info, align 4 - call void @llvm.dbg.declare(metadata ptr %parsed_info, metadata !193, metadata !DIExpression()), !dbg !194 - %call = call i32 @parse_options(ptr noundef @.str.6, ptr noundef %parsed_info), !dbg !195 - ret i32 0, !dbg !196 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nocallback nofree nosync nounwind willreturn } -attributes #6 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind willreturn memory(read) } -attributes #8 = { nounwind allocsize(0) } -attributes #9 = { nounwind } - -!llvm.dbg.cu = !{!37} -!llvm.module.flags = !{!42, !43, !44, !45, !46, !47, !48} -!llvm.ident = !{!49} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 23, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/CVE-2022-27239-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "87345d07ce6c01618dd80423f5b6b0b5") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 224, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 28) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 31, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 24, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 3) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 31, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 40, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 5) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 48, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 200, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 25) -!22 = !DIGlobalVariableExpression(var: !23, expr: !DIExpression()) -!23 = distinct !DIGlobalVariable(scope: null, file: !2, line: 49, type: !24, isLocal: true, isDefinition: true) -!24 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 16, elements: !25) -!25 = !{!26} -!26 = !DISubrange(count: 2) -!27 = !DIGlobalVariableExpression(var: !28, expr: !DIExpression()) -!28 = distinct !DIGlobalVariable(scope: null, file: !2, line: 66, type: !29, isLocal: true, isDefinition: true) -!29 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 272, elements: !30) -!30 = !{!31} -!31 = !DISubrange(count: 34) -!32 = !DIGlobalVariableExpression(var: !33, expr: !DIExpression()) -!33 = distinct !DIGlobalVariable(scope: null, file: !2, line: 78, type: !34, isLocal: true, isDefinition: true) -!34 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 592, elements: !35) -!35 = !{!36} -!36 = !DISubrange(count: 74) -!37 = distinct !DICompileUnit(language: DW_LANG_C11, file: !38, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !39, globals: !41, splitDebugInlining: false, nameTableKind: None) -!38 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2022-27239-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "87345d07ce6c01618dd80423f5b6b0b5") -!39 = !{!40} -!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!41 = !{!0, !7, !12, !17, !22, !27, !32} -!42 = !{i32 7, !"Dwarf Version", i32 5} -!43 = !{i32 2, !"Debug Info Version", i32 3} -!44 = !{i32 1, !"wchar_size", i32 4} -!45 = !{i32 8, !"PIC Level", i32 2} -!46 = !{i32 7, !"PIE Level", i32 2} -!47 = !{i32 7, !"uwtable", i32 2} -!48 = !{i32 7, !"frame-pointer", i32 2} -!49 = !{!"clang version 16.0.0"} -!50 = distinct !DISubprogram(name: "parse_opt_token", scope: !2, file: !2, line: 22, type: !51, scopeLine: 22, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !37, retainedNodes: !56) -!51 = !DISubroutineType(types: !52) -!52 = !{!53, !54} -!53 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!54 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !55, size: 64) -!55 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !4) -!56 = !{} -!57 = !DILocalVariable(name: "token", arg: 1, scope: !50, file: !2, line: 22, type: !54) -!58 = !DILocation(line: 22, column: 33, scope: !50) -!59 = !DILocation(line: 23, column: 44, scope: !50) -!60 = !DILocation(line: 23, column: 5, scope: !50) -!61 = !DILocation(line: 24, column: 6, scope: !62) -!62 = distinct !DILexicalBlock(scope: !50, file: !2, line: 24, column: 6) -!63 = !DILocation(line: 24, column: 12, scope: !62) -!64 = !DILocation(line: 24, column: 6, scope: !50) -!65 = !DILocation(line: 25, column: 3, scope: !62) -!66 = !DILocation(line: 31, column: 13, scope: !67) -!67 = distinct !DILexicalBlock(scope: !50, file: !2, line: 31, column: 6) -!68 = !DILocation(line: 31, column: 6, scope: !67) -!69 = !DILocation(line: 31, column: 26, scope: !67) -!70 = !DILocation(line: 31, column: 31, scope: !67) -!71 = !DILocation(line: 31, column: 41, scope: !67) -!72 = !DILocation(line: 31, column: 34, scope: !67) -!73 = !DILocation(line: 31, column: 56, scope: !67) -!74 = !DILocation(line: 31, column: 6, scope: !50) -!75 = !DILocation(line: 32, column: 3, scope: !67) -!76 = !DILocation(line: 34, column: 2, scope: !50) -!77 = !DILocation(line: 35, column: 1, scope: !50) -!78 = distinct !DISubprogram(name: "parse_options", scope: !2, file: !2, line: 38, type: !79, scopeLine: 38, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !37, retainedNodes: !56) -!79 = !DISubroutineType(types: !80) -!80 = !{!53, !54, !81} -!81 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !82, size: 64) -!82 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "parsed_mount_info", file: !2, line: 17, size: 384, elements: !83) -!83 = !{!84, !88} -!84 = !DIDerivedType(tag: DW_TAG_member, name: "addrlist", scope: !82, file: !2, line: 18, baseType: !85, size: 360) -!85 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 360, elements: !86) -!86 = !{!87} -!87 = !DISubrange(count: 45) -!88 = !DIDerivedType(tag: DW_TAG_member, name: "verboseflag", scope: !82, file: !2, line: 19, baseType: !89, size: 1, offset: 360, flags: DIFlagBitField, extraData: i64 360) -!89 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!90 = !DILocalVariable(name: "data", arg: 1, scope: !78, file: !2, line: 38, type: !54) -!91 = !DILocation(line: 38, column: 31, scope: !78) -!92 = !DILocalVariable(name: "parsed_info", arg: 2, scope: !78, file: !2, line: 38, type: !81) -!93 = !DILocation(line: 38, column: 63, scope: !78) -!94 = !DILocalVariable(name: "value", scope: !78, file: !2, line: 39, type: !95) -!95 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!96 = !DILocation(line: 39, column: 8, scope: !78) -!97 = !DILocation(line: 39, column: 30, scope: !78) -!98 = !DILocation(line: 39, column: 23, scope: !78) -!99 = !DILocation(line: 39, column: 36, scope: !78) -!100 = !DILocation(line: 39, column: 16, scope: !78) -!101 = !DILocalVariable(name: "equals", scope: !78, file: !2, line: 40, type: !95) -!102 = !DILocation(line: 40, column: 8, scope: !78) -!103 = !DILocation(line: 40, column: 31, scope: !78) -!104 = !DILocation(line: 40, column: 24, scope: !78) -!105 = !DILocation(line: 40, column: 37, scope: !78) -!106 = !DILocation(line: 40, column: 17, scope: !78) -!107 = !DILocalVariable(name: "next_keyword", scope: !78, file: !2, line: 41, type: !95) -!108 = !DILocation(line: 41, column: 8, scope: !78) -!109 = !DILocation(line: 41, column: 37, scope: !78) -!110 = !DILocation(line: 41, column: 30, scope: !78) -!111 = !DILocation(line: 41, column: 43, scope: !78) -!112 = !DILocation(line: 41, column: 23, scope: !78) -!113 = !DILocation(line: 43, column: 7, scope: !114) -!114 = distinct !DILexicalBlock(scope: !78, file: !2, line: 43, column: 6) -!115 = !DILocation(line: 43, column: 6, scope: !78) -!116 = !DILocation(line: 44, column: 3, scope: !114) -!117 = !DILocation(line: 46, column: 24, scope: !78) -!118 = !DILocation(line: 46, column: 17, scope: !78) -!119 = !DILocation(line: 46, column: 30, scope: !78) -!120 = !DILocation(line: 46, column: 5, scope: !78) -!121 = !DILocalVariable(name: "__vla_expr0", scope: !78, type: !122, flags: DIFlagArtificial) -!122 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) -!123 = !DILocation(line: 0, scope: !78) -!124 = !DILocalVariable(name: "buffer", scope: !78, file: !2, line: 46, type: !125) -!125 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, elements: !126) -!126 = !{!127} -!127 = !DISubrange(count: !121) -!128 = !DILocation(line: 46, column: 10, scope: !78) -!129 = !DILocation(line: 47, column: 20, scope: !78) -!130 = !DILocation(line: 47, column: 5, scope: !78) -!131 = !DILocation(line: 48, column: 5, scope: !78) -!132 = !DILocalVariable(name: "token", scope: !78, file: !2, line: 49, type: !95) -!133 = !DILocation(line: 49, column: 11, scope: !78) -!134 = !DILocation(line: 49, column: 19, scope: !78) -!135 = !DILocation(line: 50, column: 5, scope: !78) -!136 = !DILocation(line: 50, column: 11, scope: !78) -!137 = !DILocation(line: 50, column: 17, scope: !78) -!138 = !DILocation(line: 51, column: 16, scope: !139) -!139 = distinct !DILexicalBlock(scope: !78, file: !2, line: 50, column: 26) -!140 = !DILocation(line: 51, column: 30, scope: !139) -!141 = !DILocation(line: 51, column: 9, scope: !139) -!142 = !DILocation(line: 54, column: 15, scope: !139) -!143 = !DILocation(line: 55, column: 24, scope: !144) -!144 = distinct !DILexicalBlock(scope: !139, file: !2, line: 55, column: 7) -!145 = !DILocation(line: 55, column: 17, scope: !144) -!146 = !DILocation(line: 55, column: 15, scope: !144) -!147 = !DILocation(line: 55, column: 44, scope: !144) -!148 = !DILocation(line: 55, column: 7, scope: !139) -!149 = !DILocation(line: 56, column: 5, scope: !150) -!150 = distinct !DILexicalBlock(scope: !144, file: !2, line: 55, column: 53) -!151 = !DILocation(line: 56, column: 12, scope: !150) -!152 = !DILocation(line: 57, column: 12, scope: !150) -!153 = !DILocation(line: 57, column: 19, scope: !150) -!154 = !DILocation(line: 57, column: 10, scope: !150) -!155 = !DILocation(line: 58, column: 3, scope: !150) -!156 = !DILocation(line: 60, column: 12, scope: !157) -!157 = distinct !DILexicalBlock(scope: !139, file: !2, line: 60, column: 12) -!158 = !DILocation(line: 60, column: 18, scope: !157) -!159 = !DILocation(line: 60, column: 37, scope: !157) -!160 = !DILocation(line: 60, column: 21, scope: !157) -!161 = !DILocation(line: 60, column: 51, scope: !157) -!162 = !DILocation(line: 60, column: 12, scope: !139) -!163 = !DILocation(line: 61, column: 16, scope: !164) -!164 = distinct !DILexicalBlock(scope: !165, file: !2, line: 61, column: 8) -!165 = distinct !DILexicalBlock(scope: !157, file: !2, line: 60, column: 62) -!166 = !DILocation(line: 61, column: 8, scope: !164) -!167 = !DILocation(line: 61, column: 40, scope: !164) -!168 = !DILocation(line: 61, column: 8, scope: !165) -!169 = !DILocation(line: 64, column: 12, scope: !170) -!170 = distinct !DILexicalBlock(scope: !164, file: !2, line: 61, column: 60) -!171 = !DILocation(line: 64, column: 25, scope: !170) -!172 = !DILocation(line: 64, column: 35, scope: !170) -!173 = !DILocation(line: 64, column: 5, scope: !170) -!174 = !DILocation(line: 65, column: 9, scope: !175) -!175 = distinct !DILexicalBlock(scope: !170, file: !2, line: 65, column: 9) -!176 = !DILocation(line: 65, column: 22, scope: !175) -!177 = !DILocation(line: 65, column: 9, scope: !170) -!178 = !DILocation(line: 66, column: 14, scope: !175) -!179 = !DILocation(line: 66, column: 60, scope: !175) -!180 = !DILocation(line: 66, column: 6, scope: !175) -!181 = !DILocation(line: 67, column: 4, scope: !170) -!182 = !DILocation(line: 68, column: 3, scope: !165) -!183 = !DILocation(line: 70, column: 17, scope: !139) -!184 = !DILocation(line: 70, column: 15, scope: !139) -!185 = distinct !{!185, !135, !186, !187} -!186 = !DILocation(line: 71, column: 5, scope: !78) -!187 = !{!"llvm.loop.mustprogress"} -!188 = !DILocation(line: 73, column: 2, scope: !78) -!189 = !DILocation(line: 74, column: 1, scope: !78) -!190 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 76, type: !191, scopeLine: 76, spFlags: DISPFlagDefinition, unit: !37, retainedNodes: !56) -!191 = !DISubroutineType(types: !192) -!192 = !{!53} -!193 = !DILocalVariable(name: "parsed_info", scope: !190, file: !2, line: 77, type: !82) -!194 = !DILocation(line: 77, column: 30, scope: !190) -!195 = !DILocation(line: 78, column: 5, scope: !190) -!196 = !DILocation(line: 79, column: 1, scope: !190) diff --git a/test_cases_bc/ae_assert_tests/CVE-2022-29023-0.c.bc b/test_cases_bc/ae_assert_tests/CVE-2022-29023-0.c.bc deleted file mode 100644 index 601adf05..00000000 --- a/test_cases_bc/ae_assert_tests/CVE-2022-29023-0.c.bc +++ /dev/null @@ -1,359 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-29023-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2022-29023-0.c" -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-unknown-linux-gnu" - -%struct.razer_report = type { [80 x i8] } - -@.str = private unnamed_addr constant [7 x i8] c"13aa45\00", align 1, !dbg !0 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @get_razer_report(ptr noalias sret(%struct.razer_report) align 1 %agg.result) #0 !dbg !24 { -entry: - call void @llvm.dbg.declare(metadata ptr %agg.result, metadata !34, metadata !DIExpression()), !dbg !35 - call void @llvm.memset.p0.i64(ptr align 1 %agg.result, i8 0, i64 80, i1 false), !dbg !35 - call void @llvm.memset.p0.i64(ptr align 1 %agg.result, i8 0, i64 80, i1 false), !dbg !36 - ret void, !dbg !37 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @razer_chroma_standard_matrix_set_custom_frame(ptr noalias sret(%struct.razer_report) align 1 %agg.result, i8 noundef zeroext %start_col, i8 noundef zeroext %stop_col, ptr noundef %rgb_data) #0 !dbg !38 { -entry: - %start_col.addr = alloca i8, align 1 - %stop_col.addr = alloca i8, align 1 - %rgb_data.addr = alloca ptr, align 8 - %row_length = alloca i64, align 8 - store i8 %start_col, ptr %start_col.addr, align 1 - call void @llvm.dbg.declare(metadata ptr %start_col.addr, metadata !41, metadata !DIExpression()), !dbg !42 - store i8 %stop_col, ptr %stop_col.addr, align 1 - call void @llvm.dbg.declare(metadata ptr %stop_col.addr, metadata !43, metadata !DIExpression()), !dbg !44 - store ptr %rgb_data, ptr %rgb_data.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %rgb_data.addr, metadata !45, metadata !DIExpression()), !dbg !46 - call void @llvm.dbg.declare(metadata ptr %row_length, metadata !47, metadata !DIExpression()), !dbg !48 - %0 = load i8, ptr %stop_col.addr, align 1, !dbg !49 - %conv = zext i8 %0 to i32, !dbg !49 - %add = add nsw i32 %conv, 1, !dbg !50 - %1 = load i8, ptr %start_col.addr, align 1, !dbg !51 - %conv1 = zext i8 %1 to i32, !dbg !51 - %sub = sub nsw i32 %add, %conv1, !dbg !52 - %mul = mul nsw i32 %sub, 3, !dbg !53 - %conv2 = sext i32 %mul to i64, !dbg !54 - store i64 %conv2, ptr %row_length, align 8, !dbg !48 - call void @llvm.dbg.declare(metadata ptr %agg.result, metadata !55, metadata !DIExpression()), !dbg !56 - call void @get_razer_report(ptr sret(%struct.razer_report) align 1 %agg.result), !dbg !57 - %arguments = getelementptr inbounds %struct.razer_report, ptr %agg.result, i32 0, i32 0, !dbg !58 - %arrayidx = getelementptr inbounds [80 x i8], ptr %arguments, i64 0, i64 4, !dbg !59 - %2 = load ptr, ptr %rgb_data.addr, align 8, !dbg !60 - %3 = load i64, ptr %row_length, align 8, !dbg !61 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %arrayidx, ptr align 1 %2, i64 %3, i1 false), !dbg !62 - ret void, !dbg !63 -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i64 @razer_attr_write_set_key_row(ptr noundef %buf, i64 noundef %count) #0 !dbg !64 { -entry: - %buf.addr = alloca ptr, align 8 - %count.addr = alloca i64, align 8 - %report = alloca %struct.razer_report, align 1 - %offset = alloca i64, align 8 - %row_id = alloca i8, align 1 - %start_col = alloca i8, align 1 - %stop_col = alloca i8, align 1 - %row_length = alloca i8, align 1 - %tmp = alloca %struct.razer_report, align 1 - store ptr %buf, ptr %buf.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %buf.addr, metadata !74, metadata !DIExpression()), !dbg !75 - store i64 %count, ptr %count.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %count.addr, metadata !76, metadata !DIExpression()), !dbg !77 - call void @llvm.dbg.declare(metadata ptr %report, metadata !78, metadata !DIExpression()), !dbg !79 - call void @llvm.memset.p0.i64(ptr align 1 %report, i8 0, i64 80, i1 false), !dbg !79 - call void @llvm.dbg.declare(metadata ptr %offset, metadata !80, metadata !DIExpression()), !dbg !81 - store i64 0, ptr %offset, align 8, !dbg !81 - call void @llvm.dbg.declare(metadata ptr %row_id, metadata !82, metadata !DIExpression()), !dbg !83 - call void @llvm.dbg.declare(metadata ptr %start_col, metadata !84, metadata !DIExpression()), !dbg !85 - call void @llvm.dbg.declare(metadata ptr %stop_col, metadata !86, metadata !DIExpression()), !dbg !87 - call void @llvm.dbg.declare(metadata ptr %row_length, metadata !88, metadata !DIExpression()), !dbg !89 - br label %while.cond, !dbg !90 - -while.cond: ; preds = %if.end24, %entry - %0 = load i64, ptr %offset, align 8, !dbg !91 - %1 = load i64, ptr %count.addr, align 8, !dbg !92 - %cmp = icmp ult i64 %0, %1, !dbg !93 - br i1 %cmp, label %while.body, label %while.end, !dbg !90 - -while.body: ; preds = %while.cond - %2 = load i64, ptr %offset, align 8, !dbg !94 - %add = add i64 %2, 3, !dbg !97 - %3 = load i64, ptr %count.addr, align 8, !dbg !98 - %cmp1 = icmp ugt i64 %add, %3, !dbg !99 - br i1 %cmp1, label %if.then, label %if.end, !dbg !100 - -if.then: ; preds = %while.body - br label %while.end, !dbg !101 - -if.end: ; preds = %while.body - %4 = load ptr, ptr %buf.addr, align 8, !dbg !103 - %5 = load i64, ptr %offset, align 8, !dbg !104 - %inc = add i64 %5, 1, !dbg !104 - store i64 %inc, ptr %offset, align 8, !dbg !104 - %arrayidx = getelementptr inbounds i8, ptr %4, i64 %5, !dbg !103 - %6 = load i8, ptr %arrayidx, align 1, !dbg !103 - store i8 %6, ptr %row_id, align 1, !dbg !105 - %7 = load ptr, ptr %buf.addr, align 8, !dbg !106 - %8 = load i64, ptr %offset, align 8, !dbg !107 - %inc2 = add i64 %8, 1, !dbg !107 - store i64 %inc2, ptr %offset, align 8, !dbg !107 - %arrayidx3 = getelementptr inbounds i8, ptr %7, i64 %8, !dbg !106 - %9 = load i8, ptr %arrayidx3, align 1, !dbg !106 - store i8 %9, ptr %start_col, align 1, !dbg !108 - %10 = load ptr, ptr %buf.addr, align 8, !dbg !109 - %11 = load i64, ptr %offset, align 8, !dbg !110 - %inc4 = add i64 %11, 1, !dbg !110 - store i64 %inc4, ptr %offset, align 8, !dbg !110 - %arrayidx5 = getelementptr inbounds i8, ptr %10, i64 %11, !dbg !109 - %12 = load i8, ptr %arrayidx5, align 1, !dbg !109 - store i8 %12, ptr %stop_col, align 1, !dbg !111 - %13 = load i8, ptr %stop_col, align 1, !dbg !112 - %conv = zext i8 %13 to i32, !dbg !112 - %add6 = add nsw i32 %conv, 1, !dbg !113 - %14 = load i8, ptr %start_col, align 1, !dbg !114 - %conv7 = zext i8 %14 to i32, !dbg !114 - %sub = sub nsw i32 %add6, %conv7, !dbg !115 - %mul = mul nsw i32 %sub, 3, !dbg !116 - %conv8 = trunc i32 %mul to i8, !dbg !117 - store i8 %conv8, ptr %row_length, align 1, !dbg !118 - %15 = load i8, ptr %start_col, align 1, !dbg !119 - %conv9 = zext i8 %15 to i32, !dbg !119 - %16 = load i8, ptr %stop_col, align 1, !dbg !121 - %conv10 = zext i8 %16 to i32, !dbg !121 - %cmp11 = icmp sgt i32 %conv9, %conv10, !dbg !122 - br i1 %cmp11, label %if.then17, label %lor.lhs.false, !dbg !123 - -lor.lhs.false: ; preds = %if.end - %17 = load i64, ptr %offset, align 8, !dbg !124 - %18 = load i8, ptr %row_length, align 1, !dbg !125 - %conv13 = zext i8 %18 to i64, !dbg !125 - %add14 = add i64 %17, %conv13, !dbg !126 - %19 = load i64, ptr %count.addr, align 8, !dbg !127 - %cmp15 = icmp ugt i64 %add14, %19, !dbg !128 - br i1 %cmp15, label %if.then17, label %if.end18, !dbg !129 - -if.then17: ; preds = %lor.lhs.false, %if.end - br label %while.end, !dbg !130 - -if.end18: ; preds = %lor.lhs.false - %20 = load i64, ptr %offset, align 8, !dbg !132 - %21 = load i8, ptr %row_length, align 1, !dbg !134 - %conv19 = zext i8 %21 to i64, !dbg !134 - %add20 = add i64 %20, %conv19, !dbg !135 - %22 = load i64, ptr %count.addr, align 8, !dbg !136 - %cmp21 = icmp ugt i64 %add20, %22, !dbg !137 - br i1 %cmp21, label %if.then23, label %if.end24, !dbg !138 - -if.then23: ; preds = %if.end18 - br label %while.end, !dbg !139 - -if.end24: ; preds = %if.end18 - %23 = load i8, ptr %start_col, align 1, !dbg !141 - %24 = load i8, ptr %stop_col, align 1, !dbg !142 - %25 = load ptr, ptr %buf.addr, align 8, !dbg !143 - %26 = load i64, ptr %offset, align 8, !dbg !144 - %arrayidx25 = getelementptr inbounds i8, ptr %25, i64 %26, !dbg !143 - call void @razer_chroma_standard_matrix_set_custom_frame(ptr sret(%struct.razer_report) align 1 %tmp, i8 noundef zeroext %23, i8 noundef zeroext %24, ptr noundef %arrayidx25), !dbg !145 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %report, ptr align 1 %tmp, i64 80, i1 false), !dbg !145 - %27 = load i8, ptr %row_length, align 1, !dbg !146 - %conv26 = zext i8 %27 to i64, !dbg !146 - %28 = load i64, ptr %offset, align 8, !dbg !147 - %add27 = add i64 %28, %conv26, !dbg !147 - store i64 %add27, ptr %offset, align 8, !dbg !147 - br label %while.cond, !dbg !90, !llvm.loop !148 - -while.end: ; preds = %if.then23, %if.then17, %if.then, %while.cond - %29 = load i64, ptr %count.addr, align 8, !dbg !151 - ret i64 %29, !dbg !152 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !153 { -entry: - %call = call i64 @razer_attr_write_set_key_row(ptr noundef @.str, i64 noundef 144), !dbg !157 - ret i32 0, !dbg !158 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } - -!llvm.dbg.cu = !{!7} -!llvm.module.flags = !{!16, !17, !18, !19, !20, !21, !22} -!llvm.ident = !{!23} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 76, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/CVE-2022-29023-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "cceef4c72d4f080f8e7aa9990265496a") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 56, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 7) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !9, globals: !15, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2022-29023-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "cceef4c72d4f080f8e7aa9990265496a") -!9 = !{!10, !13} -!10 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !11, line: 46, baseType: !12) -!11 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!12 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) -!13 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !14, size: 64) -!14 = !DIBasicType(name: "unsigned char", size: 8, encoding: DW_ATE_unsigned_char) -!15 = !{!0} -!16 = !{i32 7, !"Dwarf Version", i32 5} -!17 = !{i32 2, !"Debug Info Version", i32 3} -!18 = !{i32 1, !"wchar_size", i32 4} -!19 = !{i32 8, !"PIC Level", i32 2} -!20 = !{i32 7, !"PIE Level", i32 2} -!21 = !{i32 7, !"uwtable", i32 2} -!22 = !{i32 7, !"frame-pointer", i32 2} -!23 = !{!"clang version 16.0.0"} -!24 = distinct !DISubprogram(name: "get_razer_report", scope: !2, file: !2, line: 27, type: !25, scopeLine: 27, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !33) -!25 = !DISubroutineType(types: !26) -!26 = !{!27} -!27 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "razer_report", file: !2, line: 23, size: 640, elements: !28) -!28 = !{!29} -!29 = !DIDerivedType(tag: DW_TAG_member, name: "arguments", scope: !27, file: !2, line: 24, baseType: !30, size: 640) -!30 = !DICompositeType(tag: DW_TAG_array_type, baseType: !14, size: 640, elements: !31) -!31 = !{!32} -!32 = !DISubrange(count: 80) -!33 = !{} -!34 = !DILocalVariable(name: "new_report", scope: !24, file: !2, line: 28, type: !27) -!35 = !DILocation(line: 28, column: 25, scope: !24) -!36 = !DILocation(line: 29, column: 5, scope: !24) -!37 = !DILocation(line: 30, column: 5, scope: !24) -!38 = distinct !DISubprogram(name: "razer_chroma_standard_matrix_set_custom_frame", scope: !2, file: !2, line: 33, type: !39, scopeLine: 33, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !33) -!39 = !DISubroutineType(types: !40) -!40 = !{!27, !14, !14, !13} -!41 = !DILocalVariable(name: "start_col", arg: 1, scope: !38, file: !2, line: 33, type: !14) -!42 = !DILocation(line: 33, column: 81, scope: !38) -!43 = !DILocalVariable(name: "stop_col", arg: 2, scope: !38, file: !2, line: 33, type: !14) -!44 = !DILocation(line: 33, column: 106, scope: !38) -!45 = !DILocalVariable(name: "rgb_data", arg: 3, scope: !38, file: !2, line: 33, type: !13) -!46 = !DILocation(line: 33, column: 131, scope: !38) -!47 = !DILocalVariable(name: "row_length", scope: !38, file: !2, line: 34, type: !10) -!48 = !DILocation(line: 34, column: 12, scope: !38) -!49 = !DILocation(line: 34, column: 37, scope: !38) -!50 = !DILocation(line: 34, column: 46, scope: !38) -!51 = !DILocation(line: 34, column: 53, scope: !38) -!52 = !DILocation(line: 34, column: 51, scope: !38) -!53 = !DILocation(line: 34, column: 64, scope: !38) -!54 = !DILocation(line: 34, column: 25, scope: !38) -!55 = !DILocalVariable(name: "report", scope: !38, file: !2, line: 35, type: !27) -!56 = !DILocation(line: 35, column: 25, scope: !38) -!57 = !DILocation(line: 35, column: 34, scope: !38) -!58 = !DILocation(line: 37, column: 20, scope: !38) -!59 = !DILocation(line: 37, column: 13, scope: !38) -!60 = !DILocation(line: 37, column: 34, scope: !38) -!61 = !DILocation(line: 37, column: 44, scope: !38) -!62 = !DILocation(line: 37, column: 5, scope: !38) -!63 = !DILocation(line: 38, column: 5, scope: !38) -!64 = distinct !DISubprogram(name: "razer_attr_write_set_key_row", scope: !2, file: !2, line: 41, type: !65, scopeLine: 41, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !33) -!65 = !DISubroutineType(types: !66) -!66 = !{!67, !72, !10} -!67 = !DIDerivedType(tag: DW_TAG_typedef, name: "ssize_t", file: !68, line: 77, baseType: !69) -!68 = !DIFile(filename: "/usr/include/stdio.h", directory: "", checksumkind: CSK_MD5, checksum: "5b917eded35ce2507d1e294bf8cb74d7") -!69 = !DIDerivedType(tag: DW_TAG_typedef, name: "__ssize_t", file: !70, line: 193, baseType: !71) -!70 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "f6304b1a6dcfc6bee76e9a51043b5090") -!71 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) -!72 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !73, size: 64) -!73 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !4) -!74 = !DILocalVariable(name: "buf", arg: 1, scope: !64, file: !2, line: 41, type: !72) -!75 = !DILocation(line: 41, column: 50, scope: !64) -!76 = !DILocalVariable(name: "count", arg: 2, scope: !64, file: !2, line: 41, type: !10) -!77 = !DILocation(line: 41, column: 62, scope: !64) -!78 = !DILocalVariable(name: "report", scope: !64, file: !2, line: 42, type: !27) -!79 = !DILocation(line: 42, column: 25, scope: !64) -!80 = !DILocalVariable(name: "offset", scope: !64, file: !2, line: 43, type: !10) -!81 = !DILocation(line: 43, column: 12, scope: !64) -!82 = !DILocalVariable(name: "row_id", scope: !64, file: !2, line: 44, type: !14) -!83 = !DILocation(line: 44, column: 19, scope: !64) -!84 = !DILocalVariable(name: "start_col", scope: !64, file: !2, line: 45, type: !14) -!85 = !DILocation(line: 45, column: 19, scope: !64) -!86 = !DILocalVariable(name: "stop_col", scope: !64, file: !2, line: 46, type: !14) -!87 = !DILocation(line: 46, column: 19, scope: !64) -!88 = !DILocalVariable(name: "row_length", scope: !64, file: !2, line: 47, type: !14) -!89 = !DILocation(line: 47, column: 19, scope: !64) -!90 = !DILocation(line: 49, column: 5, scope: !64) -!91 = !DILocation(line: 49, column: 11, scope: !64) -!92 = !DILocation(line: 49, column: 20, scope: !64) -!93 = !DILocation(line: 49, column: 18, scope: !64) -!94 = !DILocation(line: 50, column: 12, scope: !95) -!95 = distinct !DILexicalBlock(scope: !96, file: !2, line: 50, column: 12) -!96 = distinct !DILexicalBlock(scope: !64, file: !2, line: 49, column: 27) -!97 = !DILocation(line: 50, column: 19, scope: !95) -!98 = !DILocation(line: 50, column: 25, scope: !95) -!99 = !DILocation(line: 50, column: 23, scope: !95) -!100 = !DILocation(line: 50, column: 12, scope: !96) -!101 = !DILocation(line: 51, column: 13, scope: !102) -!102 = distinct !DILexicalBlock(scope: !95, file: !2, line: 50, column: 32) -!103 = !DILocation(line: 54, column: 18, scope: !96) -!104 = !DILocation(line: 54, column: 28, scope: !96) -!105 = !DILocation(line: 54, column: 16, scope: !96) -!106 = !DILocation(line: 55, column: 21, scope: !96) -!107 = !DILocation(line: 55, column: 31, scope: !96) -!108 = !DILocation(line: 55, column: 19, scope: !96) -!109 = !DILocation(line: 56, column: 20, scope: !96) -!110 = !DILocation(line: 56, column: 30, scope: !96) -!111 = !DILocation(line: 56, column: 18, scope: !96) -!112 = !DILocation(line: 57, column: 24, scope: !96) -!113 = !DILocation(line: 57, column: 32, scope: !96) -!114 = !DILocation(line: 57, column: 38, scope: !96) -!115 = !DILocation(line: 57, column: 36, scope: !96) -!116 = !DILocation(line: 57, column: 49, scope: !96) -!117 = !DILocation(line: 57, column: 22, scope: !96) -!118 = !DILocation(line: 57, column: 20, scope: !96) -!119 = !DILocation(line: 62, column: 12, scope: !120) -!120 = distinct !DILexicalBlock(scope: !96, file: !2, line: 62, column: 12) -!121 = !DILocation(line: 62, column: 24, scope: !120) -!122 = !DILocation(line: 62, column: 22, scope: !120) -!123 = !DILocation(line: 62, column: 33, scope: !120) -!124 = !DILocation(line: 62, column: 36, scope: !120) -!125 = !DILocation(line: 62, column: 45, scope: !120) -!126 = !DILocation(line: 62, column: 43, scope: !120) -!127 = !DILocation(line: 62, column: 58, scope: !120) -!128 = !DILocation(line: 62, column: 56, scope: !120) -!129 = !DILocation(line: 62, column: 12, scope: !96) -!130 = !DILocation(line: 63, column: 13, scope: !131) -!131 = distinct !DILexicalBlock(scope: !120, file: !2, line: 62, column: 65) -!132 = !DILocation(line: 65, column: 12, scope: !133) -!133 = distinct !DILexicalBlock(scope: !96, file: !2, line: 65, column: 12) -!134 = !DILocation(line: 65, column: 21, scope: !133) -!135 = !DILocation(line: 65, column: 19, scope: !133) -!136 = !DILocation(line: 65, column: 34, scope: !133) -!137 = !DILocation(line: 65, column: 32, scope: !133) -!138 = !DILocation(line: 65, column: 12, scope: !96) -!139 = !DILocation(line: 66, column: 13, scope: !140) -!140 = distinct !DILexicalBlock(scope: !133, file: !2, line: 65, column: 41) -!141 = !DILocation(line: 69, column: 64, scope: !96) -!142 = !DILocation(line: 69, column: 75, scope: !96) -!143 = !DILocation(line: 69, column: 102, scope: !96) -!144 = !DILocation(line: 69, column: 106, scope: !96) -!145 = !DILocation(line: 69, column: 18, scope: !96) -!146 = !DILocation(line: 70, column: 19, scope: !96) -!147 = !DILocation(line: 70, column: 16, scope: !96) -!148 = distinct !{!148, !90, !149, !150} -!149 = !DILocation(line: 71, column: 5, scope: !64) -!150 = !{!"llvm.loop.mustprogress"} -!151 = !DILocation(line: 72, column: 12, scope: !64) -!152 = !DILocation(line: 72, column: 5, scope: !64) -!153 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 75, type: !154, scopeLine: 75, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !33) -!154 = !DISubroutineType(types: !155) -!155 = !{!156} -!156 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!157 = !DILocation(line: 76, column: 5, scope: !153) -!158 = !DILocation(line: 77, column: 1, scope: !153) diff --git a/test_cases_bc/ae_assert_tests/CVE-2022-34835-0.c.bc b/test_cases_bc/ae_assert_tests/CVE-2022-34835-0.c.bc deleted file mode 100644 index efe81132..00000000 --- a/test_cases_bc/ae_assert_tests/CVE-2022-34835-0.c.bc +++ /dev/null @@ -1,326 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-34835-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2022-34835-0.c" -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-unknown-linux-gnu" - -%struct.i2c_msg = type { ptr } - -@.str = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1, !dbg !0 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @do_i2c_md(i32 noundef %argc, ptr noundef %argv) #0 !dbg !18 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %length = alloca i32, align 4 - %nbytes = alloca i32, align 4 - %linebytes = alloca i32, align 4 - %linebuf = alloca [16 x i8], align 16 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !26, metadata !DIExpression()), !dbg !27 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !28, metadata !DIExpression()), !dbg !29 - call void @llvm.dbg.declare(metadata ptr %length, metadata !30, metadata !DIExpression()), !dbg !36 - store i32 0, ptr %length, align 4, !dbg !36 - call void @llvm.dbg.declare(metadata ptr %nbytes, metadata !37, metadata !DIExpression()), !dbg !41 - call void @llvm.dbg.declare(metadata ptr %linebytes, metadata !42, metadata !DIExpression()), !dbg !43 - %0 = load i32, ptr %argc.addr, align 4, !dbg !44 - %cmp = icmp slt i32 %0, 3, !dbg !46 - br i1 %cmp, label %if.then, label %if.end, !dbg !47 - -if.then: ; preds = %entry - store i32 -1, ptr %retval, align 4, !dbg !48 - br label %return, !dbg !48 - -if.end: ; preds = %entry - %1 = load i32, ptr %argc.addr, align 4, !dbg !50 - %cmp1 = icmp sgt i32 %1, 3, !dbg !52 - br i1 %cmp1, label %if.then2, label %if.end3, !dbg !53 - -if.then2: ; preds = %if.end - %2 = load ptr, ptr %argv.addr, align 8, !dbg !54 - %arrayidx = getelementptr inbounds ptr, ptr %2, i64 3, !dbg !54 - %3 = load ptr, ptr %arrayidx, align 8, !dbg !54 - %call = call i64 @strtol(ptr noundef %3, ptr noundef null, i32 noundef 16) #4, !dbg !56 - %conv = trunc i64 %call to i32, !dbg !56 - store i32 %conv, ptr %length, align 4, !dbg !57 - br label %if.end3, !dbg !58 - -if.end3: ; preds = %if.then2, %if.end - %4 = load i32, ptr %length, align 4, !dbg !59 - store i32 %4, ptr %nbytes, align 4, !dbg !60 - br label %do.body, !dbg !61 - -do.body: ; preds = %do.cond, %if.end3 - call void @llvm.dbg.declare(metadata ptr %linebuf, metadata !62, metadata !DIExpression()), !dbg !68 - %5 = load i32, ptr %nbytes, align 4, !dbg !69 - %cmp4 = icmp sgt i32 %5, 16, !dbg !70 - br i1 %cmp4, label %cond.true, label %cond.false, !dbg !71 - -cond.true: ; preds = %do.body - br label %cond.end, !dbg !71 - -cond.false: ; preds = %do.body - %6 = load i32, ptr %nbytes, align 4, !dbg !72 - br label %cond.end, !dbg !71 - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i32 [ 16, %cond.true ], [ %6, %cond.false ], !dbg !71 - store i32 %cond, ptr %linebytes, align 4, !dbg !73 - %7 = load i32, ptr %linebytes, align 4, !dbg !74 - %call6 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %7), !dbg !75 - %arraydecay = getelementptr inbounds [16 x i8], ptr %linebuf, i64 0, i64 0, !dbg !76 - %8 = load i32, ptr %linebytes, align 4, !dbg !77 - %call7 = call i32 @i2c_read_bytewise(ptr noundef %arraydecay, i32 noundef %8), !dbg !78 - %9 = load i32, ptr %linebytes, align 4, !dbg !79 - %10 = load i32, ptr %nbytes, align 4, !dbg !80 - %sub = sub nsw i32 %10, %9, !dbg !80 - store i32 %sub, ptr %nbytes, align 4, !dbg !80 - br label %do.cond, !dbg !81 - -do.cond: ; preds = %cond.end - %11 = load i32, ptr %nbytes, align 4, !dbg !82 - %cmp8 = icmp sgt i32 %11, 0, !dbg !83 - br i1 %cmp8, label %do.body, label %do.end, !dbg !81, !llvm.loop !84 - -do.end: ; preds = %do.cond - store i32 0, ptr %retval, align 4, !dbg !87 - br label %return, !dbg !87 - -return: ; preds = %do.end, %if.then - %12 = load i32, ptr %retval, align 4, !dbg !88 - ret i32 %12, !dbg !88 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare i64 @strtol(ptr noundef, ptr noundef, i32 noundef) #2 - -declare i32 @printf(ptr noundef, ...) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @i2c_read_bytewise(ptr noundef %buffer, i32 noundef %len) #0 !dbg !89 { -entry: - %buffer.addr = alloca ptr, align 8 - %len.addr = alloca i32, align 4 - %msg = alloca [2 x %struct.i2c_msg], align 16 - %ptr = alloca ptr, align 8 - %i = alloca i32, align 4 - store ptr %buffer, ptr %buffer.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %buffer.addr, metadata !95, metadata !DIExpression()), !dbg !96 - store i32 %len, ptr %len.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %len.addr, metadata !97, metadata !DIExpression()), !dbg !98 - call void @llvm.dbg.declare(metadata ptr %msg, metadata !99, metadata !DIExpression()), !dbg !106 - call void @llvm.dbg.declare(metadata ptr %ptr, metadata !107, metadata !DIExpression()), !dbg !109 - call void @llvm.dbg.declare(metadata ptr %i, metadata !110, metadata !DIExpression()), !dbg !111 - store i32 0, ptr %i, align 4, !dbg !112 - br label %for.cond, !dbg !114 - -for.cond: ; preds = %for.inc, %entry - %0 = load i32, ptr %i, align 4, !dbg !115 - %1 = load i32, ptr %len.addr, align 4, !dbg !117 - %cmp = icmp ult i32 %0, %1, !dbg !118 - br i1 %cmp, label %for.body, label %for.end, !dbg !119 - -for.body: ; preds = %for.cond - %arraydecay = getelementptr inbounds [2 x %struct.i2c_msg], ptr %msg, i64 0, i64 0, !dbg !120 - %add.ptr = getelementptr inbounds %struct.i2c_msg, ptr %arraydecay, i64 1, !dbg !122 - store ptr %add.ptr, ptr %ptr, align 8, !dbg !123 - %2 = load ptr, ptr %buffer.addr, align 8, !dbg !124 - %3 = load i32, ptr %i, align 4, !dbg !125 - %idxprom = sext i32 %3 to i64, !dbg !124 - %arrayidx = getelementptr inbounds i8, ptr %2, i64 %idxprom, !dbg !124 - %4 = load ptr, ptr %ptr, align 8, !dbg !126 - %buf = getelementptr inbounds %struct.i2c_msg, ptr %4, i32 0, i32 0, !dbg !127 - store ptr %arrayidx, ptr %buf, align 8, !dbg !128 - %5 = load ptr, ptr %ptr, align 8, !dbg !129 - %incdec.ptr = getelementptr inbounds %struct.i2c_msg, ptr %5, i32 1, !dbg !129 - store ptr %incdec.ptr, ptr %ptr, align 8, !dbg !129 - br label %for.inc, !dbg !130 - -for.inc: ; preds = %for.body - %6 = load i32, ptr %i, align 4, !dbg !131 - %inc = add nsw i32 %6, 1, !dbg !131 - store i32 %inc, ptr %i, align 4, !dbg !131 - br label %for.cond, !dbg !132, !llvm.loop !133 - -for.end: ; preds = %for.cond - ret i32 0, !dbg !135 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !136 { -entry: - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !140, metadata !DIExpression()), !dbg !141 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !142, metadata !DIExpression()), !dbg !143 - %0 = load i32, ptr %argc.addr, align 4, !dbg !144 - %1 = load ptr, ptr %argv.addr, align 8, !dbg !145 - %call = call i32 @do_i2c_md(i32 noundef %0, ptr noundef %1), !dbg !146 - ret i32 0, !dbg !147 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind } - -!llvm.dbg.cu = !{!7} -!llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} -!llvm.ident = !{!17} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 32, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/CVE-2022-34835-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "5027a47770fc130a84532009834ceede") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 32, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 4) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2022-34835-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "5027a47770fc130a84532009834ceede") -!9 = !{!0} -!10 = !{i32 7, !"Dwarf Version", i32 5} -!11 = !{i32 2, !"Debug Info Version", i32 3} -!12 = !{i32 1, !"wchar_size", i32 4} -!13 = !{i32 8, !"PIC Level", i32 2} -!14 = !{i32 7, !"PIE Level", i32 2} -!15 = !{i32 7, !"uwtable", i32 2} -!16 = !{i32 7, !"frame-pointer", i32 2} -!17 = !{!"clang version 16.0.0"} -!18 = distinct !DISubprogram(name: "do_i2c_md", scope: !2, file: !2, line: 15, type: !19, scopeLine: 15, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !25) -!19 = !DISubroutineType(types: !20) -!20 = !{!21, !21, !22} -!21 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!22 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !23, size: 64) -!23 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !24) -!24 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!25 = !{} -!26 = !DILocalVariable(name: "argc", arg: 1, scope: !18, file: !2, line: 15, type: !21) -!27 = !DILocation(line: 15, column: 19, scope: !18) -!28 = !DILocalVariable(name: "argv", arg: 2, scope: !18, file: !2, line: 15, type: !22) -!29 = !DILocation(line: 15, column: 37, scope: !18) -!30 = !DILocalVariable(name: "length", scope: !18, file: !2, line: 16, type: !31) -!31 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint32_t", file: !32, line: 26, baseType: !33) -!32 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h", directory: "", checksumkind: CSK_MD5, checksum: "d3ea318a915682aaf6645ec16ac9f991") -!33 = !DIDerivedType(tag: DW_TAG_typedef, name: "__uint32_t", file: !34, line: 42, baseType: !35) -!34 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "f6304b1a6dcfc6bee76e9a51043b5090") -!35 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!36 = !DILocation(line: 16, column: 11, scope: !18) -!37 = !DILocalVariable(name: "nbytes", scope: !18, file: !2, line: 17, type: !38) -!38 = !DIDerivedType(tag: DW_TAG_typedef, name: "int32_t", file: !39, line: 26, baseType: !40) -!39 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h", directory: "", checksumkind: CSK_MD5, checksum: "081edea97425b3437dded4a7fe223193") -!40 = !DIDerivedType(tag: DW_TAG_typedef, name: "__int32_t", file: !34, line: 41, baseType: !21) -!41 = !DILocation(line: 17, column: 10, scope: !18) -!42 = !DILocalVariable(name: "linebytes", scope: !18, file: !2, line: 18, type: !38) -!43 = !DILocation(line: 18, column: 10, scope: !18) -!44 = !DILocation(line: 20, column: 6, scope: !45) -!45 = distinct !DILexicalBlock(scope: !18, file: !2, line: 20, column: 6) -!46 = !DILocation(line: 20, column: 11, scope: !45) -!47 = !DILocation(line: 20, column: 6, scope: !18) -!48 = !DILocation(line: 21, column: 3, scope: !49) -!49 = distinct !DILexicalBlock(scope: !45, file: !2, line: 20, column: 16) -!50 = !DILocation(line: 24, column: 6, scope: !51) -!51 = distinct !DILexicalBlock(scope: !18, file: !2, line: 24, column: 6) -!52 = !DILocation(line: 24, column: 11, scope: !51) -!53 = !DILocation(line: 24, column: 6, scope: !18) -!54 = !DILocation(line: 25, column: 19, scope: !55) -!55 = distinct !DILexicalBlock(scope: !51, file: !2, line: 24, column: 16) -!56 = !DILocation(line: 25, column: 12, scope: !55) -!57 = !DILocation(line: 25, column: 10, scope: !55) -!58 = !DILocation(line: 26, column: 2, scope: !55) -!59 = !DILocation(line: 28, column: 11, scope: !18) -!60 = !DILocation(line: 28, column: 9, scope: !18) -!61 = !DILocation(line: 29, column: 2, scope: !18) -!62 = !DILocalVariable(name: "linebuf", scope: !63, file: !2, line: 30, type: !64) -!63 = distinct !DILexicalBlock(scope: !18, file: !2, line: 29, column: 5) -!64 = !DICompositeType(tag: DW_TAG_array_type, baseType: !65, size: 128, elements: !66) -!65 = !DIBasicType(name: "unsigned char", size: 8, encoding: DW_ATE_unsigned_char) -!66 = !{!67} -!67 = !DISubrange(count: 16) -!68 = !DILocation(line: 30, column: 17, scope: !63) -!69 = !DILocation(line: 31, column: 16, scope: !63) -!70 = !DILocation(line: 31, column: 23, scope: !63) -!71 = !DILocation(line: 31, column: 15, scope: !63) -!72 = !DILocation(line: 31, column: 58, scope: !63) -!73 = !DILocation(line: 31, column: 13, scope: !63) -!74 = !DILocation(line: 32, column: 18, scope: !63) -!75 = !DILocation(line: 32, column: 3, scope: !63) -!76 = !DILocation(line: 33, column: 21, scope: !63) -!77 = !DILocation(line: 33, column: 30, scope: !63) -!78 = !DILocation(line: 33, column: 3, scope: !63) -!79 = !DILocation(line: 34, column: 13, scope: !63) -!80 = !DILocation(line: 34, column: 10, scope: !63) -!81 = !DILocation(line: 35, column: 2, scope: !63) -!82 = !DILocation(line: 35, column: 11, scope: !18) -!83 = !DILocation(line: 35, column: 18, scope: !18) -!84 = distinct !{!84, !61, !85, !86} -!85 = !DILocation(line: 35, column: 21, scope: !18) -!86 = !{!"llvm.loop.mustprogress"} -!87 = !DILocation(line: 37, column: 2, scope: !18) -!88 = !DILocation(line: 38, column: 1, scope: !18) -!89 = distinct !DISubprogram(name: "i2c_read_bytewise", scope: !2, file: !2, line: 45, type: !90, scopeLine: 45, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !25) -!90 = !DISubroutineType(types: !91) -!91 = !{!21, !92, !31} -!92 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !93, size: 64) -!93 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint8_t", file: !32, line: 24, baseType: !94) -!94 = !DIDerivedType(tag: DW_TAG_typedef, name: "__uint8_t", file: !34, line: 38, baseType: !65) -!95 = !DILocalVariable(name: "buffer", arg: 1, scope: !89, file: !2, line: 45, type: !92) -!96 = !DILocation(line: 45, column: 32, scope: !89) -!97 = !DILocalVariable(name: "len", arg: 2, scope: !89, file: !2, line: 45, type: !31) -!98 = !DILocation(line: 45, column: 49, scope: !89) -!99 = !DILocalVariable(name: "msg", scope: !89, file: !2, line: 46, type: !100) -!100 = !DICompositeType(tag: DW_TAG_array_type, baseType: !101, size: 128, elements: !104) -!101 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "i2c_msg", file: !2, line: 40, size: 64, elements: !102) -!102 = !{!103} -!103 = !DIDerivedType(tag: DW_TAG_member, name: "buf", scope: !101, file: !2, line: 41, baseType: !92, size: 64) -!104 = !{!105} -!105 = !DISubrange(count: 2) -!106 = !DILocation(line: 46, column: 17, scope: !89) -!107 = !DILocalVariable(name: "ptr", scope: !89, file: !2, line: 46, type: !108) -!108 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !101, size: 64) -!109 = !DILocation(line: 46, column: 26, scope: !89) -!110 = !DILocalVariable(name: "i", scope: !89, file: !2, line: 47, type: !21) -!111 = !DILocation(line: 47, column: 6, scope: !89) -!112 = !DILocation(line: 50, column: 9, scope: !113) -!113 = distinct !DILexicalBlock(scope: !89, file: !2, line: 50, column: 2) -!114 = !DILocation(line: 50, column: 7, scope: !113) -!115 = !DILocation(line: 50, column: 14, scope: !116) -!116 = distinct !DILexicalBlock(scope: !113, file: !2, line: 50, column: 2) -!117 = !DILocation(line: 50, column: 18, scope: !116) -!118 = !DILocation(line: 50, column: 16, scope: !116) -!119 = !DILocation(line: 50, column: 2, scope: !113) -!120 = !DILocation(line: 51, column: 9, scope: !121) -!121 = distinct !DILexicalBlock(scope: !116, file: !2, line: 50, column: 28) -!122 = !DILocation(line: 51, column: 13, scope: !121) -!123 = !DILocation(line: 51, column: 7, scope: !121) -!124 = !DILocation(line: 53, column: 15, scope: !121) -!125 = !DILocation(line: 53, column: 22, scope: !121) -!126 = !DILocation(line: 53, column: 3, scope: !121) -!127 = !DILocation(line: 53, column: 8, scope: !121) -!128 = !DILocation(line: 53, column: 12, scope: !121) -!129 = !DILocation(line: 54, column: 6, scope: !121) -!130 = !DILocation(line: 55, column: 2, scope: !121) -!131 = !DILocation(line: 50, column: 24, scope: !116) -!132 = !DILocation(line: 50, column: 2, scope: !116) -!133 = distinct !{!133, !119, !134, !86} -!134 = !DILocation(line: 55, column: 2, scope: !113) -!135 = !DILocation(line: 57, column: 2, scope: !89) -!136 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 60, type: !137, scopeLine: 60, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !25) -!137 = !DISubroutineType(types: !138) -!138 = !{!21, !21, !139} -!139 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !24, size: 64) -!140 = !DILocalVariable(name: "argc", arg: 1, scope: !136, file: !2, line: 60, type: !21) -!141 = !DILocation(line: 60, column: 14, scope: !136) -!142 = !DILocalVariable(name: "argv", arg: 2, scope: !136, file: !2, line: 60, type: !139) -!143 = !DILocation(line: 60, column: 26, scope: !136) -!144 = !DILocation(line: 61, column: 12, scope: !136) -!145 = !DILocation(line: 61, column: 18, scope: !136) -!146 = !DILocation(line: 61, column: 2, scope: !136) -!147 = !DILocation(line: 62, column: 1, scope: !136) diff --git a/test_cases_bc/ae_assert_tests/CVE-2022-34913-0.c.bc b/test_cases_bc/ae_assert_tests/CVE-2022-34913-0.c.bc deleted file mode 100644 index dcb38622..00000000 --- a/test_cases_bc/ae_assert_tests/CVE-2022-34913-0.c.bc +++ /dev/null @@ -1,630 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-34913-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2022-34913-0.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [2 x i8] c"r\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [20 x i8] c"Unable to open '%s'\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [13 x i8] c"fseek failed\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [13 x i8] c"ftell failed\00", align 1, !dbg !17 -@.str.4 = private unnamed_addr constant [13 x i8] c"fread failed\00", align 1, !dbg !19 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @md2roff(ptr noundef %docname, ptr noundef %source) #0 !dbg !54 { -entry: - %docname.addr = alloca ptr, align 8 - %source.addr = alloca ptr, align 8 - %p = alloca ptr, align 8 - %appname = alloca [64 x i8], align 16 - store ptr %docname, ptr %docname.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %docname.addr, metadata !60, metadata !DIExpression()), !dbg !61 - store ptr %source, ptr %source.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %source.addr, metadata !62, metadata !DIExpression()), !dbg !63 - call void @llvm.dbg.declare(metadata ptr %p, metadata !64, metadata !DIExpression()), !dbg !65 - %0 = load ptr, ptr %source.addr, align 8, !dbg !66 - store ptr %0, ptr %p, align 8, !dbg !65 - call void @llvm.dbg.declare(metadata ptr %appname, metadata !67, metadata !DIExpression()), !dbg !71 - br label %while.cond, !dbg !72 - -while.cond: ; preds = %while.body, %entry - %call = call ptr @__ctype_b_loc() #7, !dbg !75 - %1 = load ptr, ptr %call, align 8, !dbg !75 - %2 = load ptr, ptr %p, align 8, !dbg !75 - %3 = load i8, ptr %2, align 1, !dbg !75 - %conv = sext i8 %3 to i32, !dbg !75 - %idxprom = sext i32 %conv to i64, !dbg !75 - %arrayidx = getelementptr inbounds i16, ptr %1, i64 %idxprom, !dbg !75 - %4 = load i16, ptr %arrayidx, align 2, !dbg !75 - %conv1 = zext i16 %4 to i32, !dbg !75 - %and = and i32 %conv1, 8192, !dbg !75 - %tobool = icmp ne i32 %and, 0, !dbg !72 - br i1 %tobool, label %while.body, label %while.end, !dbg !72 - -while.body: ; preds = %while.cond - %5 = load ptr, ptr %p, align 8, !dbg !76 - %incdec.ptr = getelementptr inbounds i8, ptr %5, i32 1, !dbg !76 - store ptr %incdec.ptr, ptr %p, align 8, !dbg !76 - br label %while.cond, !dbg !72, !llvm.loop !78 - -while.end: ; preds = %while.cond - %6 = load ptr, ptr %p, align 8, !dbg !81 - %arrayidx2 = getelementptr inbounds i8, ptr %6, i64 0, !dbg !81 - %7 = load i8, ptr %arrayidx2, align 1, !dbg !81 - %conv3 = sext i8 %7 to i32, !dbg !81 - %cmp = icmp ne i32 %conv3, 35, !dbg !83 - br i1 %cmp, label %if.then, label %lor.lhs.false, !dbg !84 - -lor.lhs.false: ; preds = %while.end - %call5 = call ptr @__ctype_b_loc() #7, !dbg !85 - %8 = load ptr, ptr %call5, align 8, !dbg !85 - %9 = load ptr, ptr %p, align 8, !dbg !85 - %arrayidx6 = getelementptr inbounds i8, ptr %9, i64 1, !dbg !85 - %10 = load i8, ptr %arrayidx6, align 1, !dbg !85 - %conv7 = sext i8 %10 to i32, !dbg !85 - %idxprom8 = sext i32 %conv7 to i64, !dbg !85 - %arrayidx9 = getelementptr inbounds i16, ptr %8, i64 %idxprom8, !dbg !85 - %11 = load i16, ptr %arrayidx9, align 2, !dbg !85 - %conv10 = zext i16 %11 to i32, !dbg !85 - %and11 = and i32 %conv10, 1, !dbg !85 - %tobool12 = icmp ne i32 %and11, 0, !dbg !85 - br i1 %tobool12, label %if.end, label %if.then, !dbg !86 - -if.then: ; preds = %lor.lhs.false, %while.end - %arraydecay = getelementptr inbounds [64 x i8], ptr %appname, i64 0, i64 0, !dbg !87 - %12 = load ptr, ptr %docname.addr, align 8, !dbg !89 - %call13 = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef %12) #8, !dbg !90 - br label %if.end, !dbg !91 - -if.end: ; preds = %if.then, %lor.lhs.false - ret void, !dbg !92 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind willreturn memory(none) -declare ptr @__ctype_b_loc() #2 - -; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @loadfile(ptr noundef %filename) #0 !dbg !93 { -entry: - %filename.addr = alloca ptr, align 8 - %len = alloca i32, align 4 - %fp = alloca ptr, align 8 - %buf = alloca ptr, align 8 - store ptr %filename, ptr %filename.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %filename.addr, metadata !96, metadata !DIExpression()), !dbg !97 - call void @llvm.dbg.declare(metadata ptr %len, metadata !98, metadata !DIExpression()), !dbg !99 - store i32 -1, ptr %len, align 4, !dbg !99 - call void @llvm.dbg.declare(metadata ptr %fp, metadata !100, metadata !DIExpression()), !dbg !156 - call void @llvm.dbg.declare(metadata ptr %buf, metadata !157, metadata !DIExpression()), !dbg !158 - store ptr null, ptr %buf, align 8, !dbg !158 - %0 = load ptr, ptr %filename.addr, align 8, !dbg !159 - %cmp = icmp ne ptr %0, null, !dbg !161 - br i1 %cmp, label %if.then, label %if.end31, !dbg !162 - -if.then: ; preds = %entry - %1 = load ptr, ptr %filename.addr, align 8, !dbg !163 - %call = call ptr @fopen(ptr noundef %1, ptr noundef @.str), !dbg !165 - store ptr %call, ptr %fp, align 8, !dbg !166 - %2 = load ptr, ptr %fp, align 8, !dbg !167 - %cmp1 = icmp eq ptr %2, null, !dbg !169 - br i1 %cmp1, label %if.then2, label %if.end, !dbg !170 - -if.then2: ; preds = %if.then - %3 = load ptr, ptr %filename.addr, align 8, !dbg !171 - %call3 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %3), !dbg !173 - call void @exit(i32 noundef 1) #9, !dbg !174 - unreachable, !dbg !174 - -if.end: ; preds = %if.then - %4 = load ptr, ptr %fp, align 8, !dbg !175 - %call4 = call i32 @fseek(ptr noundef %4, i64 noundef 0, i32 noundef 2), !dbg !177 - %cmp5 = icmp eq i32 %call4, -1, !dbg !178 - br i1 %cmp5, label %if.then6, label %if.end8, !dbg !179 - -if.then6: ; preds = %if.end - %call7 = call i32 (ptr, ...) @printf(ptr noundef @.str.2), !dbg !180 - call void @exit(i32 noundef 1) #9, !dbg !182 - unreachable, !dbg !182 - -if.end8: ; preds = %if.end - %5 = load ptr, ptr %fp, align 8, !dbg !183 - %call9 = call i64 @ftell(ptr noundef %5), !dbg !184 - %conv = trunc i64 %call9 to i32, !dbg !184 - store i32 %conv, ptr %len, align 4, !dbg !185 - %6 = load i32, ptr %len, align 4, !dbg !186 - %cmp10 = icmp eq i32 %6, -1, !dbg !188 - br i1 %cmp10, label %if.then12, label %if.end14, !dbg !189 - -if.then12: ; preds = %if.end8 - %call13 = call i32 (ptr, ...) @printf(ptr noundef @.str.3), !dbg !190 - call void @exit(i32 noundef 1) #9, !dbg !192 - unreachable, !dbg !192 - -if.end14: ; preds = %if.end8 - %7 = load ptr, ptr %fp, align 8, !dbg !193 - %call15 = call i32 @fseek(ptr noundef %7, i64 noundef 0, i32 noundef 0), !dbg !195 - %cmp16 = icmp eq i32 %call15, -1, !dbg !196 - br i1 %cmp16, label %if.then18, label %if.end20, !dbg !197 - -if.then18: ; preds = %if.end14 - %call19 = call i32 (ptr, ...) @printf(ptr noundef @.str.2), !dbg !198 - call void @exit(i32 noundef 1) #9, !dbg !200 - unreachable, !dbg !200 - -if.end20: ; preds = %if.end14 - %8 = load i32, ptr %len, align 4, !dbg !201 - %add = add nsw i32 %8, 1, !dbg !202 - %conv21 = sext i32 %add to i64, !dbg !201 - %call22 = call noalias ptr @malloc(i64 noundef %conv21) #10, !dbg !203 - store ptr %call22, ptr %buf, align 8, !dbg !204 - %9 = load ptr, ptr %buf, align 8, !dbg !205 - %10 = load i32, ptr %len, align 4, !dbg !207 - %conv23 = sext i32 %10 to i64, !dbg !207 - %11 = load ptr, ptr %fp, align 8, !dbg !208 - %call24 = call i64 @fread(ptr noundef %9, i64 noundef %conv23, i64 noundef 1, ptr noundef %11), !dbg !209 - %cmp25 = icmp eq i64 %call24, -1, !dbg !210 - br i1 %cmp25, label %if.then27, label %if.end29, !dbg !211 - -if.then27: ; preds = %if.end20 - %call28 = call i32 (ptr, ...) @printf(ptr noundef @.str.4), !dbg !212 - call void @exit(i32 noundef 1) #9, !dbg !214 - unreachable, !dbg !214 - -if.end29: ; preds = %if.end20 - %12 = load ptr, ptr %buf, align 8, !dbg !215 - %13 = load i32, ptr %len, align 4, !dbg !216 - %idxprom = sext i32 %13 to i64, !dbg !215 - %arrayidx = getelementptr inbounds i8, ptr %12, i64 %idxprom, !dbg !215 - store i8 0, ptr %arrayidx, align 1, !dbg !217 - %14 = load ptr, ptr %fp, align 8, !dbg !218 - %call30 = call i32 @fclose(ptr noundef %14), !dbg !219 - br label %if.end31, !dbg !220 - -if.end31: ; preds = %if.end29, %entry - %15 = load ptr, ptr %buf, align 8, !dbg !221 - ret ptr %15, !dbg !222 -} - -declare ptr @fopen(ptr noundef, ptr noundef) #4 - -declare i32 @printf(ptr noundef, ...) #4 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #5 - -declare i32 @fseek(ptr noundef, i64 noundef, i32 noundef) #4 - -declare i64 @ftell(ptr noundef) #4 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #6 - -declare i64 @fread(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #4 - -declare i32 @fclose(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !223 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %files = alloca [64 x i32], align 16 - %fc = alloca i32, align 4 - %i = alloca i32, align 4 - %i7 = alloca i32, align 4 - %buf = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !227, metadata !DIExpression()), !dbg !228 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !229, metadata !DIExpression()), !dbg !230 - call void @llvm.dbg.declare(metadata ptr %files, metadata !231, metadata !DIExpression()), !dbg !233 - call void @llvm.dbg.declare(metadata ptr %fc, metadata !234, metadata !DIExpression()), !dbg !235 - store i32 0, ptr %fc, align 4, !dbg !235 - call void @llvm.dbg.declare(metadata ptr %i, metadata !236, metadata !DIExpression()), !dbg !238 - store i32 1, ptr %i, align 4, !dbg !238 - br label %for.cond, !dbg !239 - -for.cond: ; preds = %for.inc, %entry - %0 = load i32, ptr %i, align 4, !dbg !240 - %1 = load i32, ptr %argc.addr, align 4, !dbg !242 - %cmp = icmp slt i32 %0, %1, !dbg !243 - br i1 %cmp, label %for.body, label %for.end, !dbg !244 - -for.body: ; preds = %for.cond - %2 = load ptr, ptr %argv.addr, align 8, !dbg !245 - %3 = load i32, ptr %i, align 4, !dbg !248 - %idxprom = sext i32 %3 to i64, !dbg !245 - %arrayidx = getelementptr inbounds ptr, ptr %2, i64 %idxprom, !dbg !245 - %4 = load ptr, ptr %arrayidx, align 8, !dbg !245 - %arrayidx1 = getelementptr inbounds i8, ptr %4, i64 0, !dbg !245 - %5 = load i8, ptr %arrayidx1, align 1, !dbg !245 - %conv = sext i8 %5 to i32, !dbg !245 - %cmp2 = icmp ne i32 %conv, 45, !dbg !249 - br i1 %cmp2, label %if.then, label %if.end, !dbg !250 - -if.then: ; preds = %for.body - %6 = load i32, ptr %i, align 4, !dbg !251 - %7 = load i32, ptr %fc, align 4, !dbg !253 - %idxprom4 = sext i32 %7 to i64, !dbg !254 - %arrayidx5 = getelementptr inbounds [64 x i32], ptr %files, i64 0, i64 %idxprom4, !dbg !254 - store i32 %6, ptr %arrayidx5, align 4, !dbg !255 - %8 = load i32, ptr %fc, align 4, !dbg !256 - %inc = add nsw i32 %8, 1, !dbg !256 - store i32 %inc, ptr %fc, align 4, !dbg !256 - br label %if.end, !dbg !257 - -if.end: ; preds = %if.then, %for.body - br label %for.inc, !dbg !258 - -for.inc: ; preds = %if.end - %9 = load i32, ptr %i, align 4, !dbg !259 - %inc6 = add nsw i32 %9, 1, !dbg !259 - store i32 %inc6, ptr %i, align 4, !dbg !259 - br label %for.cond, !dbg !260, !llvm.loop !261 - -for.end: ; preds = %for.cond - call void @llvm.dbg.declare(metadata ptr %i7, metadata !263, metadata !DIExpression()), !dbg !265 - store i32 0, ptr %i7, align 4, !dbg !265 - br label %for.cond8, !dbg !266 - -for.cond8: ; preds = %for.inc20, %for.end - %10 = load i32, ptr %i7, align 4, !dbg !267 - %11 = load i32, ptr %fc, align 4, !dbg !269 - %cmp9 = icmp slt i32 %10, %11, !dbg !270 - br i1 %cmp9, label %for.body11, label %for.end22, !dbg !271 - -for.body11: ; preds = %for.cond8 - call void @llvm.dbg.declare(metadata ptr %buf, metadata !272, metadata !DIExpression()), !dbg !274 - %12 = load ptr, ptr %argv.addr, align 8, !dbg !275 - %13 = load i32, ptr %i7, align 4, !dbg !276 - %idxprom12 = sext i32 %13 to i64, !dbg !277 - %arrayidx13 = getelementptr inbounds [64 x i32], ptr %files, i64 0, i64 %idxprom12, !dbg !277 - %14 = load i32, ptr %arrayidx13, align 4, !dbg !277 - %idxprom14 = sext i32 %14 to i64, !dbg !275 - %arrayidx15 = getelementptr inbounds ptr, ptr %12, i64 %idxprom14, !dbg !275 - %15 = load ptr, ptr %arrayidx15, align 8, !dbg !275 - %call = call ptr @loadfile(ptr noundef %15), !dbg !278 - store ptr %call, ptr %buf, align 8, !dbg !274 - %16 = load ptr, ptr %argv.addr, align 8, !dbg !279 - %17 = load i32, ptr %i7, align 4, !dbg !280 - %idxprom16 = sext i32 %17 to i64, !dbg !281 - %arrayidx17 = getelementptr inbounds [64 x i32], ptr %files, i64 0, i64 %idxprom16, !dbg !281 - %18 = load i32, ptr %arrayidx17, align 4, !dbg !281 - %idxprom18 = sext i32 %18 to i64, !dbg !279 - %arrayidx19 = getelementptr inbounds ptr, ptr %16, i64 %idxprom18, !dbg !279 - %19 = load ptr, ptr %arrayidx19, align 8, !dbg !279 - %20 = load ptr, ptr %buf, align 8, !dbg !282 - call void @md2roff(ptr noundef %19, ptr noundef %20), !dbg !283 - %21 = load ptr, ptr %buf, align 8, !dbg !284 - call void @free(ptr noundef %21) #8, !dbg !285 - br label %for.inc20, !dbg !286 - -for.inc20: ; preds = %for.body11 - %22 = load i32, ptr %i7, align 4, !dbg !287 - %inc21 = add nsw i32 %22, 1, !dbg !287 - store i32 %inc21, ptr %i7, align 4, !dbg !287 - br label %for.cond8, !dbg !288, !llvm.loop !289 - -for.end22: ; preds = %for.cond8 - %23 = load i32, ptr %retval, align 4, !dbg !291 - ret i32 %23, !dbg !291 -} - -; Function Attrs: nounwind -declare void @free(ptr noundef) #3 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind willreturn memory(none) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind willreturn memory(none) } -attributes #8 = { nounwind } -attributes #9 = { noreturn nounwind } -attributes #10 = { nounwind allocsize(0) } - -!llvm.dbg.cu = !{!21} -!llvm.module.flags = !{!46, !47, !48, !49, !50, !51, !52} -!llvm.ident = !{!53} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 40, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/CVE-2022-34913-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "bd4c591b50f6816bac29dcbbaa955cce") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 16, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 2) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 42, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 160, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 20) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 46, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 104, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 13) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 51, type: !14, isLocal: true, isDefinition: true) -!19 = !DIGlobalVariableExpression(var: !20, expr: !DIExpression()) -!20 = distinct !DIGlobalVariable(scope: null, file: !2, line: 60, type: !14, isLocal: true, isDefinition: true) -!21 = distinct !DICompileUnit(language: DW_LANG_C11, file: !22, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !23, retainedTypes: !40, globals: !45, splitDebugInlining: false, nameTableKind: None) -!22 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2022-34913-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "bd4c591b50f6816bac29dcbbaa955cce") -!23 = !{!24} -!24 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !25, line: 46, baseType: !26, size: 32, elements: !27) -!25 = !DIFile(filename: "/usr/include/ctype.h", directory: "", checksumkind: CSK_MD5, checksum: "36575f934ef4fe7e9d50a3cb17bd5c66") -!26 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!27 = !{!28, !29, !30, !31, !32, !33, !34, !35, !36, !37, !38, !39} -!28 = !DIEnumerator(name: "_ISupper", value: 256) -!29 = !DIEnumerator(name: "_ISlower", value: 512) -!30 = !DIEnumerator(name: "_ISalpha", value: 1024) -!31 = !DIEnumerator(name: "_ISdigit", value: 2048) -!32 = !DIEnumerator(name: "_ISxdigit", value: 4096) -!33 = !DIEnumerator(name: "_ISspace", value: 8192) -!34 = !DIEnumerator(name: "_ISprint", value: 16384) -!35 = !DIEnumerator(name: "_ISgraph", value: 32768) -!36 = !DIEnumerator(name: "_ISblank", value: 1) -!37 = !DIEnumerator(name: "_IScntrl", value: 2) -!38 = !DIEnumerator(name: "_ISpunct", value: 4) -!39 = !DIEnumerator(name: "_ISalnum", value: 8) -!40 = !{!41, !42, !43, !44} -!41 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!42 = !DIBasicType(name: "unsigned short", size: 16, encoding: DW_ATE_unsigned) -!43 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!44 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!45 = !{!0, !7, !12, !17, !19} -!46 = !{i32 7, !"Dwarf Version", i32 5} -!47 = !{i32 2, !"Debug Info Version", i32 3} -!48 = !{i32 1, !"wchar_size", i32 4} -!49 = !{i32 8, !"PIC Level", i32 2} -!50 = !{i32 7, !"PIE Level", i32 2} -!51 = !{i32 7, !"uwtable", i32 2} -!52 = !{i32 7, !"frame-pointer", i32 2} -!53 = !{!"clang version 16.0.0"} -!54 = distinct !DISubprogram(name: "md2roff", scope: !2, file: !2, line: 18, type: !55, scopeLine: 18, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !21, retainedNodes: !59) -!55 = !DISubroutineType(types: !56) -!56 = !{null, !57, !57} -!57 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !58, size: 64) -!58 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !4) -!59 = !{} -!60 = !DILocalVariable(name: "docname", arg: 1, scope: !54, file: !2, line: 18, type: !57) -!61 = !DILocation(line: 18, column: 26, scope: !54) -!62 = !DILocalVariable(name: "source", arg: 2, scope: !54, file: !2, line: 18, type: !57) -!63 = !DILocation(line: 18, column: 47, scope: !54) -!64 = !DILocalVariable(name: "p", scope: !54, file: !2, line: 19, type: !57) -!65 = !DILocation(line: 19, column: 14, scope: !54) -!66 = !DILocation(line: 19, column: 18, scope: !54) -!67 = !DILocalVariable(name: "appname", scope: !54, file: !2, line: 20, type: !68) -!68 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 512, elements: !69) -!69 = !{!70} -!70 = !DISubrange(count: 64) -!71 = !DILocation(line: 20, column: 7, scope: !54) -!72 = !DILocation(line: 23, column: 3, scope: !73) -!73 = distinct !DILexicalBlock(scope: !74, file: !2, line: 22, column: 12) -!74 = distinct !DILexicalBlock(scope: !54, file: !2, line: 22, column: 6) -!75 = !DILocation(line: 23, column: 11, scope: !73) -!76 = !DILocation(line: 24, column: 6, scope: !77) -!77 = distinct !DILexicalBlock(scope: !73, file: !2, line: 23, column: 25) -!78 = distinct !{!78, !72, !79, !80} -!79 = !DILocation(line: 25, column: 3, scope: !73) -!80 = !{!"llvm.loop.mustprogress"} -!81 = !DILocation(line: 27, column: 7, scope: !82) -!82 = distinct !DILexicalBlock(scope: !73, file: !2, line: 27, column: 7) -!83 = !DILocation(line: 27, column: 12, scope: !82) -!84 = !DILocation(line: 27, column: 19, scope: !82) -!85 = !DILocation(line: 27, column: 23, scope: !82) -!86 = !DILocation(line: 27, column: 7, scope: !73) -!87 = !DILocation(line: 29, column: 11, scope: !88) -!88 = distinct !DILexicalBlock(scope: !82, file: !2, line: 27, column: 39) -!89 = !DILocation(line: 29, column: 20, scope: !88) -!90 = !DILocation(line: 29, column: 4, scope: !88) -!91 = !DILocation(line: 30, column: 3, scope: !88) -!92 = !DILocation(line: 32, column: 1, scope: !54) -!93 = distinct !DISubprogram(name: "loadfile", scope: !2, file: !2, line: 34, type: !94, scopeLine: 34, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !21, retainedNodes: !59) -!94 = !DISubroutineType(types: !95) -!95 = !{!44, !57} -!96 = !DILocalVariable(name: "filename", arg: 1, scope: !93, file: !2, line: 34, type: !57) -!97 = !DILocation(line: 34, column: 28, scope: !93) -!98 = !DILocalVariable(name: "len", scope: !93, file: !2, line: 35, type: !41) -!99 = !DILocation(line: 35, column: 6, scope: !93) -!100 = !DILocalVariable(name: "fp", scope: !93, file: !2, line: 36, type: !101) -!101 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !102, size: 64) -!102 = !DIDerivedType(tag: DW_TAG_typedef, name: "FILE", file: !103, line: 7, baseType: !104) -!103 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types/FILE.h", directory: "", checksumkind: CSK_MD5, checksum: "571f9fb6223c42439075fdde11a0de5d") -!104 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_IO_FILE", file: !105, line: 49, size: 1728, elements: !106) -!105 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h", directory: "", checksumkind: CSK_MD5, checksum: "f3c970561f3408448ce03a9676ead8f4") -!106 = !{!107, !108, !109, !110, !111, !112, !113, !114, !115, !116, !117, !118, !119, !122, !124, !125, !126, !130, !131, !133, !137, !140, !142, !145, !148, !149, !150, !154, !155} -!107 = !DIDerivedType(tag: DW_TAG_member, name: "_flags", scope: !104, file: !105, line: 51, baseType: !41, size: 32) -!108 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_read_ptr", scope: !104, file: !105, line: 54, baseType: !44, size: 64, offset: 64) -!109 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_read_end", scope: !104, file: !105, line: 55, baseType: !44, size: 64, offset: 128) -!110 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_read_base", scope: !104, file: !105, line: 56, baseType: !44, size: 64, offset: 192) -!111 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_write_base", scope: !104, file: !105, line: 57, baseType: !44, size: 64, offset: 256) -!112 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_write_ptr", scope: !104, file: !105, line: 58, baseType: !44, size: 64, offset: 320) -!113 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_write_end", scope: !104, file: !105, line: 59, baseType: !44, size: 64, offset: 384) -!114 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_buf_base", scope: !104, file: !105, line: 60, baseType: !44, size: 64, offset: 448) -!115 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_buf_end", scope: !104, file: !105, line: 61, baseType: !44, size: 64, offset: 512) -!116 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_save_base", scope: !104, file: !105, line: 64, baseType: !44, size: 64, offset: 576) -!117 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_backup_base", scope: !104, file: !105, line: 65, baseType: !44, size: 64, offset: 640) -!118 = !DIDerivedType(tag: DW_TAG_member, name: "_IO_save_end", scope: !104, file: !105, line: 66, baseType: !44, size: 64, offset: 704) -!119 = !DIDerivedType(tag: DW_TAG_member, name: "_markers", scope: !104, file: !105, line: 68, baseType: !120, size: 64, offset: 768) -!120 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !121, size: 64) -!121 = !DICompositeType(tag: DW_TAG_structure_type, name: "_IO_marker", file: !105, line: 36, flags: DIFlagFwdDecl) -!122 = !DIDerivedType(tag: DW_TAG_member, name: "_chain", scope: !104, file: !105, line: 70, baseType: !123, size: 64, offset: 832) -!123 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !104, size: 64) -!124 = !DIDerivedType(tag: DW_TAG_member, name: "_fileno", scope: !104, file: !105, line: 72, baseType: !41, size: 32, offset: 896) -!125 = !DIDerivedType(tag: DW_TAG_member, name: "_flags2", scope: !104, file: !105, line: 73, baseType: !41, size: 32, offset: 928) -!126 = !DIDerivedType(tag: DW_TAG_member, name: "_old_offset", scope: !104, file: !105, line: 74, baseType: !127, size: 64, offset: 960) -!127 = !DIDerivedType(tag: DW_TAG_typedef, name: "__off_t", file: !128, line: 152, baseType: !129) -!128 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "f6304b1a6dcfc6bee76e9a51043b5090") -!129 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) -!130 = !DIDerivedType(tag: DW_TAG_member, name: "_cur_column", scope: !104, file: !105, line: 77, baseType: !42, size: 16, offset: 1024) -!131 = !DIDerivedType(tag: DW_TAG_member, name: "_vtable_offset", scope: !104, file: !105, line: 78, baseType: !132, size: 8, offset: 1040) -!132 = !DIBasicType(name: "signed char", size: 8, encoding: DW_ATE_signed_char) -!133 = !DIDerivedType(tag: DW_TAG_member, name: "_shortbuf", scope: !104, file: !105, line: 79, baseType: !134, size: 8, offset: 1048) -!134 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 8, elements: !135) -!135 = !{!136} -!136 = !DISubrange(count: 1) -!137 = !DIDerivedType(tag: DW_TAG_member, name: "_lock", scope: !104, file: !105, line: 81, baseType: !138, size: 64, offset: 1088) -!138 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !139, size: 64) -!139 = !DIDerivedType(tag: DW_TAG_typedef, name: "_IO_lock_t", file: !105, line: 43, baseType: null) -!140 = !DIDerivedType(tag: DW_TAG_member, name: "_offset", scope: !104, file: !105, line: 89, baseType: !141, size: 64, offset: 1152) -!141 = !DIDerivedType(tag: DW_TAG_typedef, name: "__off64_t", file: !128, line: 153, baseType: !129) -!142 = !DIDerivedType(tag: DW_TAG_member, name: "_codecvt", scope: !104, file: !105, line: 91, baseType: !143, size: 64, offset: 1216) -!143 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !144, size: 64) -!144 = !DICompositeType(tag: DW_TAG_structure_type, name: "_IO_codecvt", file: !105, line: 37, flags: DIFlagFwdDecl) -!145 = !DIDerivedType(tag: DW_TAG_member, name: "_wide_data", scope: !104, file: !105, line: 92, baseType: !146, size: 64, offset: 1280) -!146 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !147, size: 64) -!147 = !DICompositeType(tag: DW_TAG_structure_type, name: "_IO_wide_data", file: !105, line: 38, flags: DIFlagFwdDecl) -!148 = !DIDerivedType(tag: DW_TAG_member, name: "_freeres_list", scope: !104, file: !105, line: 93, baseType: !123, size: 64, offset: 1344) -!149 = !DIDerivedType(tag: DW_TAG_member, name: "_freeres_buf", scope: !104, file: !105, line: 94, baseType: !43, size: 64, offset: 1408) -!150 = !DIDerivedType(tag: DW_TAG_member, name: "__pad5", scope: !104, file: !105, line: 95, baseType: !151, size: 64, offset: 1472) -!151 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !152, line: 46, baseType: !153) -!152 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!153 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) -!154 = !DIDerivedType(tag: DW_TAG_member, name: "_mode", scope: !104, file: !105, line: 96, baseType: !41, size: 32, offset: 1536) -!155 = !DIDerivedType(tag: DW_TAG_member, name: "_unused2", scope: !104, file: !105, line: 98, baseType: !9, size: 160, offset: 1568) -!156 = !DILocation(line: 36, column: 8, scope: !93) -!157 = !DILocalVariable(name: "buf", scope: !93, file: !2, line: 37, type: !44) -!158 = !DILocation(line: 37, column: 8, scope: !93) -!159 = !DILocation(line: 39, column: 7, scope: !160) -!160 = distinct !DILexicalBlock(scope: !93, file: !2, line: 39, column: 7) -!161 = !DILocation(line: 39, column: 16, scope: !160) -!162 = !DILocation(line: 39, column: 7, scope: !93) -!163 = !DILocation(line: 40, column: 14, scope: !164) -!164 = distinct !DILexicalBlock(scope: !160, file: !2, line: 39, column: 26) -!165 = !DILocation(line: 40, column: 8, scope: !164) -!166 = !DILocation(line: 40, column: 6, scope: !164) -!167 = !DILocation(line: 41, column: 7, scope: !168) -!168 = distinct !DILexicalBlock(scope: !164, file: !2, line: 41, column: 7) -!169 = !DILocation(line: 41, column: 10, scope: !168) -!170 = !DILocation(line: 41, column: 7, scope: !164) -!171 = !DILocation(line: 42, column: 34, scope: !172) -!172 = distinct !DILexicalBlock(scope: !168, file: !2, line: 41, column: 19) -!173 = !DILocation(line: 42, column: 4, scope: !172) -!174 = !DILocation(line: 43, column: 4, scope: !172) -!175 = !DILocation(line: 45, column: 13, scope: !176) -!176 = distinct !DILexicalBlock(scope: !164, file: !2, line: 45, column: 7) -!177 = !DILocation(line: 45, column: 7, scope: !176) -!178 = !DILocation(line: 45, column: 31, scope: !176) -!179 = !DILocation(line: 45, column: 7, scope: !164) -!180 = !DILocation(line: 46, column: 4, scope: !181) -!181 = distinct !DILexicalBlock(scope: !176, file: !2, line: 45, column: 38) -!182 = !DILocation(line: 47, column: 4, scope: !181) -!183 = !DILocation(line: 49, column: 15, scope: !164) -!184 = !DILocation(line: 49, column: 9, scope: !164) -!185 = !DILocation(line: 49, column: 7, scope: !164) -!186 = !DILocation(line: 50, column: 7, scope: !187) -!187 = distinct !DILexicalBlock(scope: !164, file: !2, line: 50, column: 7) -!188 = !DILocation(line: 50, column: 11, scope: !187) -!189 = !DILocation(line: 50, column: 7, scope: !164) -!190 = !DILocation(line: 51, column: 4, scope: !191) -!191 = distinct !DILexicalBlock(scope: !187, file: !2, line: 50, column: 18) -!192 = !DILocation(line: 52, column: 4, scope: !191) -!193 = !DILocation(line: 54, column: 12, scope: !194) -!194 = distinct !DILexicalBlock(scope: !164, file: !2, line: 54, column: 6) -!195 = !DILocation(line: 54, column: 6, scope: !194) -!196 = !DILocation(line: 54, column: 30, scope: !194) -!197 = !DILocation(line: 54, column: 6, scope: !164) -!198 = !DILocation(line: 55, column: 4, scope: !199) -!199 = distinct !DILexicalBlock(scope: !194, file: !2, line: 54, column: 37) -!200 = !DILocation(line: 56, column: 4, scope: !199) -!201 = !DILocation(line: 58, column: 25, scope: !164) -!202 = !DILocation(line: 58, column: 28, scope: !164) -!203 = !DILocation(line: 58, column: 18, scope: !164) -!204 = !DILocation(line: 58, column: 7, scope: !164) -!205 = !DILocation(line: 59, column: 12, scope: !206) -!206 = distinct !DILexicalBlock(scope: !164, file: !2, line: 59, column: 6) -!207 = !DILocation(line: 59, column: 17, scope: !206) -!208 = !DILocation(line: 59, column: 25, scope: !206) -!209 = !DILocation(line: 59, column: 6, scope: !206) -!210 = !DILocation(line: 59, column: 29, scope: !206) -!211 = !DILocation(line: 59, column: 6, scope: !164) -!212 = !DILocation(line: 60, column: 4, scope: !213) -!213 = distinct !DILexicalBlock(scope: !206, file: !2, line: 59, column: 36) -!214 = !DILocation(line: 61, column: 4, scope: !213) -!215 = !DILocation(line: 63, column: 3, scope: !164) -!216 = !DILocation(line: 63, column: 7, scope: !164) -!217 = !DILocation(line: 63, column: 12, scope: !164) -!218 = !DILocation(line: 64, column: 10, scope: !164) -!219 = !DILocation(line: 64, column: 3, scope: !164) -!220 = !DILocation(line: 65, column: 2, scope: !164) -!221 = !DILocation(line: 67, column: 9, scope: !93) -!222 = !DILocation(line: 67, column: 2, scope: !93) -!223 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 70, type: !224, scopeLine: 70, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !21, retainedNodes: !59) -!224 = !DISubroutineType(types: !225) -!225 = !{!41, !41, !226} -!226 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !44, size: 64) -!227 = !DILocalVariable(name: "argc", arg: 1, scope: !223, file: !2, line: 70, type: !41) -!228 = !DILocation(line: 70, column: 14, scope: !223) -!229 = !DILocalVariable(name: "argv", arg: 2, scope: !223, file: !2, line: 70, type: !226) -!230 = !DILocation(line: 70, column: 26, scope: !223) -!231 = !DILocalVariable(name: "files", scope: !223, file: !2, line: 71, type: !232) -!232 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 2048, elements: !69) -!233 = !DILocation(line: 71, column: 6, scope: !223) -!234 = !DILocalVariable(name: "fc", scope: !223, file: !2, line: 72, type: !41) -!235 = !DILocation(line: 72, column: 6, scope: !223) -!236 = !DILocalVariable(name: "i", scope: !237, file: !2, line: 74, type: !41) -!237 = distinct !DILexicalBlock(scope: !223, file: !2, line: 74, column: 2) -!238 = !DILocation(line: 74, column: 12, scope: !237) -!239 = !DILocation(line: 74, column: 8, scope: !237) -!240 = !DILocation(line: 74, column: 19, scope: !241) -!241 = distinct !DILexicalBlock(scope: !237, file: !2, line: 74, column: 2) -!242 = !DILocation(line: 74, column: 23, scope: !241) -!243 = !DILocation(line: 74, column: 21, scope: !241) -!244 = !DILocation(line: 74, column: 2, scope: !237) -!245 = !DILocation(line: 75, column: 8, scope: !246) -!246 = distinct !DILexicalBlock(scope: !247, file: !2, line: 75, column: 8) -!247 = distinct !DILexicalBlock(scope: !241, file: !2, line: 74, column: 36) -!248 = !DILocation(line: 75, column: 13, scope: !246) -!249 = !DILocation(line: 75, column: 19, scope: !246) -!250 = !DILocation(line: 75, column: 8, scope: !247) -!251 = !DILocation(line: 77, column: 16, scope: !252) -!252 = distinct !DILexicalBlock(scope: !246, file: !2, line: 75, column: 28) -!253 = !DILocation(line: 77, column: 10, scope: !252) -!254 = !DILocation(line: 77, column: 4, scope: !252) -!255 = !DILocation(line: 77, column: 14, scope: !252) -!256 = !DILocation(line: 78, column: 7, scope: !252) -!257 = !DILocation(line: 79, column: 3, scope: !252) -!258 = !DILocation(line: 80, column: 2, scope: !247) -!259 = !DILocation(line: 74, column: 31, scope: !241) -!260 = !DILocation(line: 74, column: 2, scope: !241) -!261 = distinct !{!261, !244, !262, !80} -!262 = !DILocation(line: 80, column: 2, scope: !237) -!263 = !DILocalVariable(name: "i", scope: !264, file: !2, line: 82, type: !41) -!264 = distinct !DILexicalBlock(scope: !223, file: !2, line: 82, column: 2) -!265 = !DILocation(line: 82, column: 12, scope: !264) -!266 = !DILocation(line: 82, column: 8, scope: !264) -!267 = !DILocation(line: 82, column: 19, scope: !268) -!268 = distinct !DILexicalBlock(scope: !264, file: !2, line: 82, column: 2) -!269 = !DILocation(line: 82, column: 23, scope: !268) -!270 = !DILocation(line: 82, column: 21, scope: !268) -!271 = !DILocation(line: 82, column: 2, scope: !264) -!272 = !DILocalVariable(name: "buf", scope: !273, file: !2, line: 83, type: !44) -!273 = distinct !DILexicalBlock(scope: !268, file: !2, line: 82, column: 34) -!274 = !DILocation(line: 83, column: 9, scope: !273) -!275 = !DILocation(line: 83, column: 24, scope: !273) -!276 = !DILocation(line: 83, column: 35, scope: !273) -!277 = !DILocation(line: 83, column: 29, scope: !273) -!278 = !DILocation(line: 83, column: 15, scope: !273) -!279 = !DILocation(line: 84, column: 11, scope: !273) -!280 = !DILocation(line: 84, column: 22, scope: !273) -!281 = !DILocation(line: 84, column: 16, scope: !273) -!282 = !DILocation(line: 84, column: 27, scope: !273) -!283 = !DILocation(line: 84, column: 3, scope: !273) -!284 = !DILocation(line: 85, column: 8, scope: !273) -!285 = !DILocation(line: 85, column: 3, scope: !273) -!286 = !DILocation(line: 86, column: 2, scope: !273) -!287 = !DILocation(line: 82, column: 29, scope: !268) -!288 = !DILocation(line: 82, column: 2, scope: !268) -!289 = distinct !{!289, !271, !290, !80} -!290 = !DILocation(line: 86, column: 2, scope: !264) -!291 = !DILocation(line: 87, column: 1, scope: !223) diff --git a/test_cases_bc/ae_assert_tests/CVE-2022-34918-0.c.bc b/test_cases_bc/ae_assert_tests/CVE-2022-34918-0.c.bc deleted file mode 100644 index 6b74ace0..00000000 --- a/test_cases_bc/ae_assert_tests/CVE-2022-34918-0.c.bc +++ /dev/null @@ -1,433 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CVE-2022-34918-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2022-34918-0.c" -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-unknown-linux-gnu" - -%struct.nft_set = type { i32, ptr } -%struct.nft_data_desc = type { i32, i32 } -%struct.nft_data = type { ptr } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @nft_set_elem_init(ptr noundef %set, ptr noundef %data) #0 !dbg !20 { -entry: - %retval = alloca ptr, align 8 - %set.addr = alloca ptr, align 8 - %data.addr = alloca ptr, align 8 - store ptr %set, ptr %set.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %set.addr, metadata !34, metadata !DIExpression()), !dbg !35 - store ptr %data, ptr %data.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %data.addr, metadata !36, metadata !DIExpression()), !dbg !37 - %0 = load ptr, ptr %data.addr, align 8, !dbg !38 - %tobool = icmp ne ptr %0, null, !dbg !38 - br i1 %tobool, label %if.then, label %if.end, !dbg !40 - -if.then: ; preds = %entry - %1 = load ptr, ptr %data.addr, align 8, !dbg !41 - %2 = load ptr, ptr %set.addr, align 8, !dbg !42 - %data1 = getelementptr inbounds %struct.nft_set, ptr %2, i32 0, i32 1, !dbg !43 - %3 = load ptr, ptr %data1, align 8, !dbg !43 - %4 = load ptr, ptr %set.addr, align 8, !dbg !44 - %dlen = getelementptr inbounds %struct.nft_set, ptr %4, i32 0, i32 0, !dbg !45 - %5 = load i32, ptr %dlen, align 8, !dbg !45 - %conv = sext i32 %5 to i64, !dbg !44 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1, ptr align 1 %3, i64 %conv, i1 false), !dbg !46 - br label %if.end, !dbg !46 - -if.end: ; preds = %if.then, %entry - %6 = load ptr, ptr %retval, align 8, !dbg !47 - ret ptr %6, !dbg !47 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @nft_setelem_parse_data(ptr noundef %set, ptr noundef %desc, ptr noundef %data) #0 !dbg !48 { -entry: - %retval = alloca i32, align 4 - %set.addr = alloca ptr, align 8 - %desc.addr = alloca ptr, align 8 - %data.addr = alloca ptr, align 8 - %err = alloca i32, align 4 - store ptr %set, ptr %set.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %set.addr, metadata !61, metadata !DIExpression()), !dbg !62 - store ptr %desc, ptr %desc.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %desc.addr, metadata !63, metadata !DIExpression()), !dbg !64 - store ptr %data, ptr %data.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %data.addr, metadata !65, metadata !DIExpression()), !dbg !66 - call void @llvm.dbg.declare(metadata ptr %err, metadata !67, metadata !DIExpression()), !dbg !68 - %0 = load ptr, ptr %data.addr, align 8, !dbg !69 - %1 = load ptr, ptr %desc.addr, align 8, !dbg !70 - %call = call i32 @nft_data_init(ptr noundef %0, ptr noundef %1), !dbg !71 - store i32 %call, ptr %err, align 4, !dbg !72 - %2 = load i32, ptr %err, align 4, !dbg !73 - %cmp = icmp slt i32 %2, 0, !dbg !75 - br i1 %cmp, label %if.then, label %if.end, !dbg !76 - -if.then: ; preds = %entry - %3 = load i32, ptr %err, align 4, !dbg !77 - store i32 %3, ptr %retval, align 4, !dbg !78 - br label %return, !dbg !78 - -if.end: ; preds = %entry - %4 = load ptr, ptr %desc.addr, align 8, !dbg !79 - %type = getelementptr inbounds %struct.nft_data_desc, ptr %4, i32 0, i32 0, !dbg !81 - %5 = load i32, ptr %type, align 4, !dbg !81 - %cmp1 = icmp ne i32 %5, 0, !dbg !82 - br i1 %cmp1, label %land.lhs.true, label %if.end5, !dbg !83 - -land.lhs.true: ; preds = %if.end - %6 = load ptr, ptr %desc.addr, align 8, !dbg !84 - %len = getelementptr inbounds %struct.nft_data_desc, ptr %6, i32 0, i32 1, !dbg !85 - %7 = load i32, ptr %len, align 4, !dbg !85 - %8 = load ptr, ptr %set.addr, align 8, !dbg !86 - %dlen = getelementptr inbounds %struct.nft_set, ptr %8, i32 0, i32 0, !dbg !87 - %9 = load i32, ptr %dlen, align 8, !dbg !87 - %cmp2 = icmp ne i32 %7, %9, !dbg !88 - br i1 %cmp2, label %if.then3, label %if.end5, !dbg !89 - -if.then3: ; preds = %land.lhs.true - %10 = load ptr, ptr %data.addr, align 8, !dbg !90 - %11 = load ptr, ptr %desc.addr, align 8, !dbg !92 - %call4 = call i32 @nft_data_release(ptr noundef %10, ptr noundef %11), !dbg !93 - store i32 -1, ptr %retval, align 4, !dbg !94 - br label %return, !dbg !94 - -if.end5: ; preds = %land.lhs.true, %if.end - store i32 0, ptr %retval, align 4, !dbg !95 - br label %return, !dbg !95 - -return: ; preds = %if.end5, %if.then3, %if.then - %12 = load i32, ptr %retval, align 4, !dbg !96 - ret i32 %12, !dbg !96 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @nft_add_set_elem(ptr noundef %set) #0 !dbg !97 { -entry: - %retval = alloca i32, align 4 - %set.addr = alloca ptr, align 8 - %data = alloca %struct.nft_data, align 8 - %desc = alloca %struct.nft_data_desc, align 4 - store ptr %set, ptr %set.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %set.addr, metadata !100, metadata !DIExpression()), !dbg !101 - call void @llvm.dbg.declare(metadata ptr %data, metadata !102, metadata !DIExpression()), !dbg !103 - call void @llvm.dbg.declare(metadata ptr %desc, metadata !104, metadata !DIExpression()), !dbg !105 - %0 = load ptr, ptr %set.addr, align 8, !dbg !106 - %dlen = getelementptr inbounds %struct.nft_set, ptr %0, i32 0, i32 0, !dbg !107 - %1 = load i32, ptr %dlen, align 8, !dbg !107 - %len = getelementptr inbounds %struct.nft_data_desc, ptr %desc, i32 0, i32 1, !dbg !108 - store i32 %1, ptr %len, align 4, !dbg !109 - %call = call i32 @nd(), !dbg !110 - %tobool = icmp ne i32 %call, 0, !dbg !110 - br i1 %tobool, label %if.then, label %if.end, !dbg !112 - -if.then: ; preds = %entry - %2 = load ptr, ptr %set.addr, align 8, !dbg !113 - %call1 = call i32 @nft_setelem_parse_data(ptr noundef %2, ptr noundef %desc, ptr noundef %data), !dbg !115 - br label %if.end, !dbg !116 - -if.end: ; preds = %if.then, %entry - %3 = load ptr, ptr %set.addr, align 8, !dbg !117 - %data2 = getelementptr inbounds %struct.nft_data, ptr %data, i32 0, i32 0, !dbg !118 - %4 = load ptr, ptr %data2, align 8, !dbg !118 - %call3 = call ptr @nft_set_elem_init(ptr noundef %3, ptr noundef %4), !dbg !119 - %5 = load i32, ptr %retval, align 4, !dbg !120 - ret i32 %5, !dbg !120 -} - -declare i32 @nd() #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @nft_data_init(ptr noundef %data, ptr noundef %desc) #0 !dbg !121 { -entry: - %retval = alloca i32, align 4 - %data.addr = alloca ptr, align 8 - %desc.addr = alloca ptr, align 8 - store ptr %data, ptr %data.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %data.addr, metadata !124, metadata !DIExpression()), !dbg !125 - store ptr %desc, ptr %desc.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %desc.addr, metadata !126, metadata !DIExpression()), !dbg !127 - %call = call i32 @nd(), !dbg !128 - %tobool = icmp ne i32 %call, 0, !dbg !128 - br i1 %tobool, label %if.then, label %if.else, !dbg !130 - -if.then: ; preds = %entry - %0 = load ptr, ptr %desc.addr, align 8, !dbg !131 - %len = getelementptr inbounds %struct.nft_data_desc, ptr %0, i32 0, i32 1, !dbg !133 - %1 = load i32, ptr %len, align 4, !dbg !133 - %call1 = call i32 (i32, ...) @ALLOC(i32 noundef %1), !dbg !134 - %conv = sext i32 %call1 to i64, !dbg !135 - %2 = inttoptr i64 %conv to ptr, !dbg !135 - %3 = load ptr, ptr %data.addr, align 8, !dbg !136 - %data2 = getelementptr inbounds %struct.nft_data, ptr %3, i32 0, i32 0, !dbg !137 - store ptr %2, ptr %data2, align 8, !dbg !138 - %4 = load ptr, ptr %desc.addr, align 8, !dbg !139 - %type = getelementptr inbounds %struct.nft_data_desc, ptr %4, i32 0, i32 0, !dbg !140 - store i32 0, ptr %type, align 4, !dbg !141 - br label %if.end, !dbg !142 - -if.else: ; preds = %entry - %5 = load ptr, ptr %desc.addr, align 8, !dbg !143 - %len3 = getelementptr inbounds %struct.nft_data_desc, ptr %5, i32 0, i32 1, !dbg !145 - %6 = load i32, ptr %len3, align 4, !dbg !145 - %sub = sub nsw i32 %6, 2, !dbg !146 - %call4 = call i32 (i32, ...) @ALLOC(i32 noundef %sub), !dbg !147 - %conv5 = sext i32 %call4 to i64, !dbg !148 - %7 = inttoptr i64 %conv5 to ptr, !dbg !148 - %8 = load ptr, ptr %data.addr, align 8, !dbg !149 - %data6 = getelementptr inbounds %struct.nft_data, ptr %8, i32 0, i32 0, !dbg !150 - store ptr %7, ptr %data6, align 8, !dbg !151 - %9 = load ptr, ptr %desc.addr, align 8, !dbg !152 - %type7 = getelementptr inbounds %struct.nft_data_desc, ptr %9, i32 0, i32 0, !dbg !153 - store i32 0, ptr %type7, align 4, !dbg !154 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %10 = load i32, ptr %retval, align 4, !dbg !155 - ret i32 %10, !dbg !155 -} - -declare i32 @ALLOC(...) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @nft_data_release(ptr noundef %data, ptr noundef %desc) #0 !dbg !156 { -entry: - %retval = alloca i32, align 4 - %data.addr = alloca ptr, align 8 - %desc.addr = alloca ptr, align 8 - store ptr %data, ptr %data.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %data.addr, metadata !157, metadata !DIExpression()), !dbg !158 - store ptr %desc, ptr %desc.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %desc.addr, metadata !159, metadata !DIExpression()), !dbg !160 - %0 = load ptr, ptr %data.addr, align 8, !dbg !161 - %data1 = getelementptr inbounds %struct.nft_data, ptr %0, i32 0, i32 0, !dbg !162 - %1 = load ptr, ptr %data1, align 8, !dbg !162 - call void @free(ptr noundef %1) #5, !dbg !163 - %2 = load ptr, ptr %data.addr, align 8, !dbg !164 - %data2 = getelementptr inbounds %struct.nft_data, ptr %2, i32 0, i32 0, !dbg !165 - store ptr null, ptr %data2, align 8, !dbg !166 - %3 = load ptr, ptr %desc.addr, align 8, !dbg !167 - %len = getelementptr inbounds %struct.nft_data_desc, ptr %3, i32 0, i32 1, !dbg !168 - store i32 0, ptr %len, align 4, !dbg !169 - %4 = load i32, ptr %retval, align 4, !dbg !170 - ret i32 %4, !dbg !170 -} - -; Function Attrs: nounwind -declare void @free(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !171 { -entry: - %set = alloca %struct.nft_set, align 8 - call void @llvm.dbg.declare(metadata ptr %set, metadata !174, metadata !DIExpression()), !dbg !175 - %dlen = getelementptr inbounds %struct.nft_set, ptr %set, i32 0, i32 0, !dbg !176 - store i32 10, ptr %dlen, align 8, !dbg !177 - %dlen1 = getelementptr inbounds %struct.nft_set, ptr %set, i32 0, i32 0, !dbg !178 - %0 = load i32, ptr %dlen1, align 8, !dbg !178 - %conv = sext i32 %0 to i64, !dbg !178 - %1 = alloca i8, i64 %conv, align 16, !dbg !178 - %data = getelementptr inbounds %struct.nft_set, ptr %set, i32 0, i32 1, !dbg !179 - store ptr %1, ptr %data, align 8, !dbg !180 - %call = call i32 @nft_add_set_elem(ptr noundef %set), !dbg !181 - ret i32 0, !dbg !182 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!12, !13, !14, !15, !16, !17, !18} -!llvm.ident = !{!19} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !9, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CVE-2022-34918-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c8a2d66ad333035256a4fd01bc4f5bf0") -!2 = !{!3} -!3 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "TYPE", file: !4, line: 20, baseType: !5, size: 32, elements: !6) -!4 = !DIFile(filename: "src/ae_assert_tests/CVE-2022-34918-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c8a2d66ad333035256a4fd01bc4f5bf0") -!5 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!6 = !{!7, !8} -!7 = !DIEnumerator(name: "NFT_DATA_VERDICT", value: 0) -!8 = !DIEnumerator(name: "NFT_DATA_OTHER", value: 1) -!9 = !{!10} -!10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !11, size: 64) -!11 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!12 = !{i32 7, !"Dwarf Version", i32 5} -!13 = !{i32 2, !"Debug Info Version", i32 3} -!14 = !{i32 1, !"wchar_size", i32 4} -!15 = !{i32 8, !"PIC Level", i32 2} -!16 = !{i32 7, !"PIE Level", i32 2} -!17 = !{i32 7, !"uwtable", i32 2} -!18 = !{i32 7, !"frame-pointer", i32 2} -!19 = !{!"clang version 16.0.0"} -!20 = distinct !DISubprogram(name: "nft_set_elem_init", scope: !4, file: !4, line: 32, type: !21, scopeLine: 34, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !33) -!21 = !DISubroutineType(types: !22) -!22 = !{!23, !24, !31} -!23 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!24 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64) -!25 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !26) -!26 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "nft_set", file: !4, line: 14, size: 128, elements: !27) -!27 = !{!28, !30} -!28 = !DIDerivedType(tag: DW_TAG_member, name: "dlen", scope: !26, file: !4, line: 15, baseType: !29, size: 32) -!29 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!30 = !DIDerivedType(tag: DW_TAG_member, name: "data", scope: !26, file: !4, line: 16, baseType: !10, size: 64, offset: 64) -!31 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !32, size: 64) -!32 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !11) -!33 = !{} -!34 = !DILocalVariable(name: "set", arg: 1, scope: !20, file: !4, line: 32, type: !24) -!35 = !DILocation(line: 32, column: 47, scope: !20) -!36 = !DILocalVariable(name: "data", arg: 2, scope: !20, file: !4, line: 33, type: !31) -!37 = !DILocation(line: 33, column: 37, scope: !20) -!38 = !DILocation(line: 35, column: 7, scope: !39) -!39 = distinct !DILexicalBlock(scope: !20, file: !4, line: 35, column: 7) -!40 = !DILocation(line: 35, column: 7, scope: !20) -!41 = !DILocation(line: 36, column: 12, scope: !39) -!42 = !DILocation(line: 36, column: 18, scope: !39) -!43 = !DILocation(line: 36, column: 23, scope: !39) -!44 = !DILocation(line: 36, column: 29, scope: !39) -!45 = !DILocation(line: 36, column: 34, scope: !39) -!46 = !DILocation(line: 36, column: 5, scope: !39) -!47 = !DILocation(line: 37, column: 1, scope: !20) -!48 = distinct !DISubprogram(name: "nft_setelem_parse_data", scope: !4, file: !4, line: 39, type: !49, scopeLine: 42, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !33) -!49 = !DISubroutineType(types: !50) -!50 = !{!29, !51, !52, !57} -!51 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) -!52 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !53, size: 64) -!53 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "nft_data_desc", file: !4, line: 19, size: 64, elements: !54) -!54 = !{!55, !56} -!55 = !DIDerivedType(tag: DW_TAG_member, name: "type", scope: !53, file: !4, line: 24, baseType: !3, size: 32) -!56 = !DIDerivedType(tag: DW_TAG_member, name: "len", scope: !53, file: !4, line: 25, baseType: !29, size: 32, offset: 32) -!57 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !58, size: 64) -!58 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "nft_data", file: !4, line: 28, size: 64, elements: !59) -!59 = !{!60} -!60 = !DIDerivedType(tag: DW_TAG_member, name: "data", scope: !58, file: !4, line: 29, baseType: !10, size: 64) -!61 = !DILocalVariable(name: "set", arg: 1, scope: !48, file: !4, line: 39, type: !51) -!62 = !DILocation(line: 39, column: 45, scope: !48) -!63 = !DILocalVariable(name: "desc", arg: 2, scope: !48, file: !4, line: 40, type: !52) -!64 = !DILocation(line: 40, column: 50, scope: !48) -!65 = !DILocalVariable(name: "data", arg: 3, scope: !48, file: !4, line: 41, type: !57) -!66 = !DILocation(line: 41, column: 45, scope: !48) -!67 = !DILocalVariable(name: "err", scope: !48, file: !4, line: 43, type: !29) -!68 = !DILocation(line: 43, column: 7, scope: !48) -!69 = !DILocation(line: 44, column: 23, scope: !48) -!70 = !DILocation(line: 44, column: 29, scope: !48) -!71 = !DILocation(line: 44, column: 9, scope: !48) -!72 = !DILocation(line: 44, column: 7, scope: !48) -!73 = !DILocation(line: 45, column: 7, scope: !74) -!74 = distinct !DILexicalBlock(scope: !48, file: !4, line: 45, column: 7) -!75 = !DILocation(line: 45, column: 11, scope: !74) -!76 = !DILocation(line: 45, column: 7, scope: !48) -!77 = !DILocation(line: 46, column: 12, scope: !74) -!78 = !DILocation(line: 46, column: 5, scope: !74) -!79 = !DILocation(line: 48, column: 7, scope: !80) -!80 = distinct !DILexicalBlock(scope: !48, file: !4, line: 48, column: 7) -!81 = !DILocation(line: 48, column: 13, scope: !80) -!82 = !DILocation(line: 48, column: 18, scope: !80) -!83 = !DILocation(line: 48, column: 38, scope: !80) -!84 = !DILocation(line: 48, column: 41, scope: !80) -!85 = !DILocation(line: 48, column: 47, scope: !80) -!86 = !DILocation(line: 48, column: 54, scope: !80) -!87 = !DILocation(line: 48, column: 59, scope: !80) -!88 = !DILocation(line: 48, column: 51, scope: !80) -!89 = !DILocation(line: 48, column: 7, scope: !48) -!90 = !DILocation(line: 49, column: 22, scope: !91) -!91 = distinct !DILexicalBlock(scope: !80, file: !4, line: 48, column: 65) -!92 = !DILocation(line: 49, column: 28, scope: !91) -!93 = !DILocation(line: 49, column: 5, scope: !91) -!94 = !DILocation(line: 50, column: 5, scope: !91) -!95 = !DILocation(line: 53, column: 3, scope: !48) -!96 = !DILocation(line: 54, column: 1, scope: !48) -!97 = distinct !DISubprogram(name: "nft_add_set_elem", scope: !4, file: !4, line: 56, type: !98, scopeLine: 56, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !33) -!98 = !DISubroutineType(types: !99) -!99 = !{!29, !51} -!100 = !DILocalVariable(name: "set", arg: 1, scope: !97, file: !4, line: 56, type: !51) -!101 = !DILocation(line: 56, column: 38, scope: !97) -!102 = !DILocalVariable(name: "data", scope: !97, file: !4, line: 57, type: !58) -!103 = !DILocation(line: 57, column: 19, scope: !97) -!104 = !DILocalVariable(name: "desc", scope: !97, file: !4, line: 58, type: !53) -!105 = !DILocation(line: 58, column: 24, scope: !97) -!106 = !DILocation(line: 59, column: 14, scope: !97) -!107 = !DILocation(line: 59, column: 19, scope: !97) -!108 = !DILocation(line: 59, column: 8, scope: !97) -!109 = !DILocation(line: 59, column: 12, scope: !97) -!110 = !DILocation(line: 61, column: 7, scope: !111) -!111 = distinct !DILexicalBlock(scope: !97, file: !4, line: 61, column: 7) -!112 = !DILocation(line: 61, column: 7, scope: !97) -!113 = !DILocation(line: 62, column: 28, scope: !114) -!114 = distinct !DILexicalBlock(scope: !111, file: !4, line: 61, column: 13) -!115 = !DILocation(line: 62, column: 5, scope: !114) -!116 = !DILocation(line: 63, column: 3, scope: !114) -!117 = !DILocation(line: 64, column: 21, scope: !97) -!118 = !DILocation(line: 64, column: 31, scope: !97) -!119 = !DILocation(line: 64, column: 3, scope: !97) -!120 = !DILocation(line: 65, column: 1, scope: !97) -!121 = distinct !DISubprogram(name: "nft_data_init", scope: !4, file: !4, line: 67, type: !122, scopeLine: 67, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !33) -!122 = !DISubroutineType(types: !123) -!123 = !{!29, !57, !52} -!124 = !DILocalVariable(name: "data", arg: 1, scope: !121, file: !4, line: 67, type: !57) -!125 = !DILocation(line: 67, column: 36, scope: !121) -!126 = !DILocalVariable(name: "desc", arg: 2, scope: !121, file: !4, line: 67, type: !52) -!127 = !DILocation(line: 67, column: 64, scope: !121) -!128 = !DILocation(line: 68, column: 9, scope: !129) -!129 = distinct !DILexicalBlock(scope: !121, file: !4, line: 68, column: 9) -!130 = !DILocation(line: 68, column: 9, scope: !121) -!131 = !DILocation(line: 69, column: 33, scope: !132) -!132 = distinct !DILexicalBlock(scope: !129, file: !4, line: 68, column: 15) -!133 = !DILocation(line: 69, column: 39, scope: !132) -!134 = !DILocation(line: 69, column: 27, scope: !132) -!135 = !DILocation(line: 69, column: 20, scope: !132) -!136 = !DILocation(line: 69, column: 7, scope: !132) -!137 = !DILocation(line: 69, column: 13, scope: !132) -!138 = !DILocation(line: 69, column: 18, scope: !132) -!139 = !DILocation(line: 70, column: 7, scope: !132) -!140 = !DILocation(line: 70, column: 13, scope: !132) -!141 = !DILocation(line: 70, column: 18, scope: !132) -!142 = !DILocation(line: 71, column: 5, scope: !132) -!143 = !DILocation(line: 72, column: 33, scope: !144) -!144 = distinct !DILexicalBlock(scope: !129, file: !4, line: 71, column: 12) -!145 = !DILocation(line: 72, column: 39, scope: !144) -!146 = !DILocation(line: 72, column: 43, scope: !144) -!147 = !DILocation(line: 72, column: 27, scope: !144) -!148 = !DILocation(line: 72, column: 20, scope: !144) -!149 = !DILocation(line: 72, column: 7, scope: !144) -!150 = !DILocation(line: 72, column: 13, scope: !144) -!151 = !DILocation(line: 72, column: 18, scope: !144) -!152 = !DILocation(line: 73, column: 7, scope: !144) -!153 = !DILocation(line: 73, column: 13, scope: !144) -!154 = !DILocation(line: 73, column: 18, scope: !144) -!155 = !DILocation(line: 75, column: 1, scope: !121) -!156 = distinct !DISubprogram(name: "nft_data_release", scope: !4, file: !4, line: 77, type: !122, scopeLine: 77, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !33) -!157 = !DILocalVariable(name: "data", arg: 1, scope: !156, file: !4, line: 77, type: !57) -!158 = !DILocation(line: 77, column: 39, scope: !156) -!159 = !DILocalVariable(name: "desc", arg: 2, scope: !156, file: !4, line: 77, type: !52) -!160 = !DILocation(line: 77, column: 67, scope: !156) -!161 = !DILocation(line: 78, column: 9, scope: !156) -!162 = !DILocation(line: 78, column: 15, scope: !156) -!163 = !DILocation(line: 78, column: 4, scope: !156) -!164 = !DILocation(line: 79, column: 4, scope: !156) -!165 = !DILocation(line: 79, column: 10, scope: !156) -!166 = !DILocation(line: 79, column: 15, scope: !156) -!167 = !DILocation(line: 80, column: 4, scope: !156) -!168 = !DILocation(line: 80, column: 10, scope: !156) -!169 = !DILocation(line: 80, column: 14, scope: !156) -!170 = !DILocation(line: 81, column: 1, scope: !156) -!171 = distinct !DISubprogram(name: "main", scope: !4, file: !4, line: 83, type: !172, scopeLine: 83, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !33) -!172 = !DISubroutineType(types: !173) -!173 = !{!29} -!174 = !DILocalVariable(name: "set", scope: !171, file: !4, line: 84, type: !26) -!175 = !DILocation(line: 84, column: 18, scope: !171) -!176 = !DILocation(line: 85, column: 7, scope: !171) -!177 = !DILocation(line: 85, column: 12, scope: !171) -!178 = !DILocation(line: 86, column: 21, scope: !171) -!179 = !DILocation(line: 86, column: 7, scope: !171) -!180 = !DILocation(line: 86, column: 12, scope: !171) -!181 = !DILocation(line: 87, column: 3, scope: !171) -!182 = !DILocation(line: 88, column: 1, scope: !171) diff --git a/test_cases_bc/ae_assert_tests/CWE127_har_alloc-0.c.bc b/test_cases_bc/ae_assert_tests/CWE127_har_alloc-0.c.bc deleted file mode 100644 index 9d3b3d2e..00000000 --- a/test_cases_bc/ae_assert_tests/CWE127_har_alloc-0.c.bc +++ /dev/null @@ -1,106 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/CWE127_har_alloc-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CWE127_har_alloc-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !13 { -entry: - %data = alloca ptr, align 8 - %dataBuffer = alloca ptr, align 8 - %dest = alloca [4 x i8], align 1 - call void @llvm.dbg.declare(metadata ptr %data, metadata !19, metadata !DIExpression()), !dbg !20 - call void @llvm.dbg.declare(metadata ptr %dataBuffer, metadata !21, metadata !DIExpression()), !dbg !22 - %0 = alloca i8, i64 3, align 16, !dbg !23 - store ptr %0, ptr %dataBuffer, align 8, !dbg !22 - %1 = load ptr, ptr %dataBuffer, align 8, !dbg !24 - call void @llvm.memset.p0.i64(ptr align 1 %1, i8 65, i64 2, i1 false), !dbg !25 - %2 = load ptr, ptr %dataBuffer, align 8, !dbg !26 - %arrayidx = getelementptr inbounds i8, ptr %2, i64 2, !dbg !26 - store i8 0, ptr %arrayidx, align 1, !dbg !27 - %3 = load ptr, ptr %dataBuffer, align 8, !dbg !28 - store ptr %3, ptr %data, align 8, !dbg !29 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !30, metadata !DIExpression()), !dbg !34 - %arraydecay = getelementptr inbounds [4 x i8], ptr %dest, i64 0, i64 0, !dbg !35 - call void @llvm.memset.p0.i64(ptr align 1 %arraydecay, i8 67, i64 3, i1 false), !dbg !35 - %arrayidx1 = getelementptr inbounds [4 x i8], ptr %dest, i64 0, i64 3, !dbg !36 - store i8 0, ptr %arrayidx1, align 1, !dbg !37 - %arraydecay2 = getelementptr inbounds [4 x i8], ptr %dest, i64 0, i64 0, !dbg !38 - %4 = load ptr, ptr %data, align 8, !dbg !39 - %call = call ptr @strcpy(ptr noundef %arraydecay2, ptr noundef %4) #5, !dbg !40 - %5 = load ptr, ptr %data, align 8, !dbg !41 - %arrayidx3 = getelementptr inbounds i8, ptr %5, i64 0, !dbg !41 - %6 = load i8, ptr %arrayidx3, align 1, !dbg !41 - %conv = sext i8 %6 to i32, !dbg !41 - %cmp = icmp eq i32 %conv, 65, !dbg !42 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !43 - ret i32 0, !dbg !44 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #3 - -declare void @svf_assert(i1 noundef zeroext) #4 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!5, !6, !7, !8, !9, !10, !11} -!llvm.ident = !{!12} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/CWE127_har_alloc-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "815713cf07dcea5d1098fa33fd12b875") -!2 = !{!3} -!3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{i32 7, !"Dwarf Version", i32 5} -!6 = !{i32 2, !"Debug Info Version", i32 3} -!7 = !{i32 1, !"wchar_size", i32 4} -!8 = !{i32 8, !"PIC Level", i32 2} -!9 = !{i32 7, !"PIE Level", i32 2} -!10 = !{i32 7, !"uwtable", i32 2} -!11 = !{i32 7, !"frame-pointer", i32 2} -!12 = !{!"clang version 16.0.0"} -!13 = distinct !DISubprogram(name: "main", scope: !14, file: !14, line: 7, type: !15, scopeLine: 7, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !18) -!14 = !DIFile(filename: "src/ae_assert_tests/CWE127_har_alloc-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "815713cf07dcea5d1098fa33fd12b875") -!15 = !DISubroutineType(types: !16) -!16 = !{!17} -!17 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!18 = !{} -!19 = !DILocalVariable(name: "data", scope: !13, file: !14, line: 8, type: !3) -!20 = !DILocation(line: 8, column: 12, scope: !13) -!21 = !DILocalVariable(name: "dataBuffer", scope: !13, file: !14, line: 9, type: !3) -!22 = !DILocation(line: 9, column: 12, scope: !13) -!23 = !DILocation(line: 9, column: 33, scope: !13) -!24 = !DILocation(line: 10, column: 12, scope: !13) -!25 = !DILocation(line: 10, column: 5, scope: !13) -!26 = !DILocation(line: 11, column: 5, scope: !13) -!27 = !DILocation(line: 11, column: 21, scope: !13) -!28 = !DILocation(line: 13, column: 12, scope: !13) -!29 = !DILocation(line: 13, column: 10, scope: !13) -!30 = !DILocalVariable(name: "dest", scope: !13, file: !14, line: 14, type: !31) -!31 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 32, elements: !32) -!32 = !{!33} -!33 = !DISubrange(count: 4) -!34 = !DILocation(line: 14, column: 10, scope: !13) -!35 = !DILocation(line: 15, column: 5, scope: !13) -!36 = !DILocation(line: 16, column: 5, scope: !13) -!37 = !DILocation(line: 16, column: 17, scope: !13) -!38 = !DILocation(line: 18, column: 12, scope: !13) -!39 = !DILocation(line: 18, column: 18, scope: !13) -!40 = !DILocation(line: 18, column: 5, scope: !13) -!41 = !DILocation(line: 19, column: 16, scope: !13) -!42 = !DILocation(line: 19, column: 24, scope: !13) -!43 = !DILocation(line: 19, column: 5, scope: !13) -!44 = !DILocation(line: 20, column: 1, scope: !13) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_10-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_10-0.c.bc deleted file mode 100644 index dc17353c..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_10-0.c.bc +++ /dev/null @@ -1,98 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_10-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_10-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - %0 = load i32, ptr %a, align 4, !dbg !18 - %cmp = icmp sgt i32 %0, 5, !dbg !20 - br i1 %cmp, label %land.lhs.true, label %if.else, !dbg !21 - -land.lhs.true: ; preds = %entry - %1 = load i32, ptr %a, align 4, !dbg !22 - %cmp1 = icmp slt i32 %1, 7, !dbg !23 - br i1 %cmp1, label %if.then, label %if.else, !dbg !24 - -if.then: ; preds = %land.lhs.true - %2 = load i32, ptr %a, align 4, !dbg !25 - %cmp2 = icmp eq i32 %2, 6, !dbg !27 - call void @svf_assert(i1 noundef zeroext %cmp2), !dbg !28 - br label %if.end, !dbg !29 - -if.else: ; preds = %land.lhs.true, %entry - %3 = load i32, ptr %a, align 4, !dbg !30 - %cmp3 = icmp sle i32 %3, 5, !dbg !32 - br i1 %cmp3, label %lor.end, label %lor.rhs, !dbg !33 - -lor.rhs: ; preds = %if.else - %4 = load i32, ptr %a, align 4, !dbg !34 - %cmp4 = icmp sge i32 %4, 7, !dbg !35 - br label %lor.end, !dbg !33 - -lor.end: ; preds = %lor.rhs, %if.else - %5 = phi i1 [ true, %if.else ], [ %cmp4, %lor.rhs ] - call void @svf_assert(i1 noundef zeroext %5), !dbg !36 - br label %if.end - -if.end: ; preds = %lor.end, %if.then - %6 = load i32, ptr %retval, align 4, !dbg !37 - ret i32 %6, !dbg !37 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_10-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f7a3195426814ff3672b8c3d52dbe3a8") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_10-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f7a3195426814ff3672b8c3d52dbe3a8") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 6, type: !14) -!17 = !DILocation(line: 6, column: 6, scope: !10) -!18 = !DILocation(line: 7, column: 9, scope: !19) -!19 = distinct !DILexicalBlock(scope: !10, file: !11, line: 7, column: 9) -!20 = !DILocation(line: 7, column: 11, scope: !19) -!21 = !DILocation(line: 7, column: 15, scope: !19) -!22 = !DILocation(line: 7, column: 18, scope: !19) -!23 = !DILocation(line: 7, column: 20, scope: !19) -!24 = !DILocation(line: 7, column: 9, scope: !10) -!25 = !DILocation(line: 8, column: 20, scope: !26) -!26 = distinct !DILexicalBlock(scope: !19, file: !11, line: 7, column: 25) -!27 = !DILocation(line: 8, column: 22, scope: !26) -!28 = !DILocation(line: 8, column: 9, scope: !26) -!29 = !DILocation(line: 9, column: 5, scope: !26) -!30 = !DILocation(line: 11, column: 20, scope: !31) -!31 = distinct !DILexicalBlock(scope: !19, file: !11, line: 10, column: 10) -!32 = !DILocation(line: 11, column: 22, scope: !31) -!33 = !DILocation(line: 11, column: 27, scope: !31) -!34 = !DILocation(line: 11, column: 30, scope: !31) -!35 = !DILocation(line: 11, column: 32, scope: !31) -!36 = !DILocation(line: 11, column: 9, scope: !31) -!37 = !DILocation(line: 13, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_11-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_11-0.c.bc deleted file mode 100644 index 62ae4311..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_11-0.c.bc +++ /dev/null @@ -1,80 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_11-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_11-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 6, ptr %a, align 4, !dbg !17 - %0 = load i32, ptr %a, align 4, !dbg !18 - %cmp = icmp sgt i32 %0, 5, !dbg !20 - br i1 %cmp, label %land.lhs.true, label %if.else, !dbg !21 - -land.lhs.true: ; preds = %entry - %1 = load i32, ptr %a, align 4, !dbg !22 - %cmp1 = icmp slt i32 %1, 7, !dbg !23 - br i1 %cmp1, label %if.then, label %if.else, !dbg !24 - -if.then: ; preds = %land.lhs.true - %2 = load i32, ptr %a, align 4, !dbg !25 - %cmp2 = icmp eq i32 %2, 6, !dbg !27 - call void @svf_assert(i1 noundef zeroext %cmp2), !dbg !28 - br label %if.end, !dbg !29 - -if.else: ; preds = %land.lhs.true, %entry - br label %if.end - -if.end: ; preds = %if.else, %if.then - %3 = load i32, ptr %retval, align 4, !dbg !30 - ret i32 %3, !dbg !30 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_11-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7004ccd5efa2dbc064acd48763f1ede2") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_11-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7004ccd5efa2dbc064acd48763f1ede2") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 6, type: !14) -!17 = !DILocation(line: 6, column: 6, scope: !10) -!18 = !DILocation(line: 7, column: 9, scope: !19) -!19 = distinct !DILexicalBlock(scope: !10, file: !11, line: 7, column: 9) -!20 = !DILocation(line: 7, column: 11, scope: !19) -!21 = !DILocation(line: 7, column: 15, scope: !19) -!22 = !DILocation(line: 7, column: 18, scope: !19) -!23 = !DILocation(line: 7, column: 20, scope: !19) -!24 = !DILocation(line: 7, column: 9, scope: !10) -!25 = !DILocation(line: 8, column: 20, scope: !26) -!26 = distinct !DILexicalBlock(scope: !19, file: !11, line: 7, column: 25) -!27 = !DILocation(line: 8, column: 22, scope: !26) -!28 = !DILocation(line: 8, column: 9, scope: !26) -!29 = !DILocation(line: 9, column: 5, scope: !26) -!30 = !DILocation(line: 13, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_12-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_12-0.c.bc deleted file mode 100644 index 157c0828..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_12-0.c.bc +++ /dev/null @@ -1,91 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_12-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_12-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 1, ptr %b, align 4, !dbg !19 - %0 = load i32, ptr %a, align 4, !dbg !20 - %1 = load i32, ptr %b, align 4, !dbg !21 - %sub = sub nsw i32 %0, %1, !dbg !22 - store i32 %sub, ptr %b, align 4, !dbg !23 - %2 = load i32, ptr %a, align 4, !dbg !24 - %cmp = icmp sgt i32 %2, 5, !dbg !26 - br i1 %cmp, label %if.then, label %if.else, !dbg !27 - -if.then: ; preds = %entry - %3 = load i32, ptr %b, align 4, !dbg !28 - %cmp1 = icmp sle i32 %3, -5, !dbg !30 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !31 - br label %if.end, !dbg !32 - -if.else: ; preds = %entry - %4 = load i32, ptr %b, align 4, !dbg !33 - %cmp2 = icmp sgt i32 %4, -5, !dbg !35 - call void @svf_assert(i1 noundef zeroext %cmp2), !dbg !36 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %5 = load i32, ptr %retval, align 4, !dbg !37 - ret i32 %5, !dbg !37 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_12-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f3a8f8efb093c97a8180ae443d9cf5fe") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 4, type: !12, scopeLine: 4, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_12-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f3a8f8efb093c97a8180ae443d9cf5fe") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 5, type: !14) -!17 = !DILocation(line: 5, column: 9, scope: !10) -!18 = !DILocalVariable(name: "b", scope: !10, file: !11, line: 6, type: !14) -!19 = !DILocation(line: 6, column: 9, scope: !10) -!20 = !DILocation(line: 7, column: 9, scope: !10) -!21 = !DILocation(line: 7, column: 13, scope: !10) -!22 = !DILocation(line: 7, column: 11, scope: !10) -!23 = !DILocation(line: 7, column: 7, scope: !10) -!24 = !DILocation(line: 8, column: 9, scope: !25) -!25 = distinct !DILexicalBlock(scope: !10, file: !11, line: 8, column: 9) -!26 = !DILocation(line: 8, column: 11, scope: !25) -!27 = !DILocation(line: 8, column: 9, scope: !10) -!28 = !DILocation(line: 9, column: 20, scope: !29) -!29 = distinct !DILexicalBlock(scope: !25, file: !11, line: 8, column: 16) -!30 = !DILocation(line: 9, column: 22, scope: !29) -!31 = !DILocation(line: 9, column: 9, scope: !29) -!32 = !DILocation(line: 10, column: 5, scope: !29) -!33 = !DILocation(line: 12, column: 20, scope: !34) -!34 = distinct !DILexicalBlock(scope: !25, file: !11, line: 11, column: 10) -!35 = !DILocation(line: 12, column: 22, scope: !34) -!36 = !DILocation(line: 12, column: 9, scope: !34) -!37 = !DILocation(line: 14, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_13-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_13-0.c.bc deleted file mode 100644 index 59a3be70..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_13-0.c.bc +++ /dev/null @@ -1,91 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_13-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_13-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 -2, ptr %b, align 4, !dbg !19 - %0 = load i32, ptr %a, align 4, !dbg !20 - %1 = load i32, ptr %b, align 4, !dbg !21 - %mul = mul nsw i32 %0, %1, !dbg !22 - store i32 %mul, ptr %b, align 4, !dbg !23 - %2 = load i32, ptr %a, align 4, !dbg !24 - %cmp = icmp sgt i32 %2, 5, !dbg !26 - br i1 %cmp, label %if.then, label %if.else, !dbg !27 - -if.then: ; preds = %entry - %3 = load i32, ptr %b, align 4, !dbg !28 - %cmp1 = icmp sle i32 %3, -12, !dbg !30 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !31 - br label %if.end, !dbg !32 - -if.else: ; preds = %entry - %4 = load i32, ptr %b, align 4, !dbg !33 - %cmp2 = icmp sgt i32 %4, -12, !dbg !35 - call void @svf_assert(i1 noundef zeroext %cmp2), !dbg !36 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %5 = load i32, ptr %retval, align 4, !dbg !37 - ret i32 %5, !dbg !37 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_13-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f35ec5f194aab5e4172520c48995ed3f") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 4, type: !12, scopeLine: 4, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_13-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f35ec5f194aab5e4172520c48995ed3f") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 5, type: !14) -!17 = !DILocation(line: 5, column: 9, scope: !10) -!18 = !DILocalVariable(name: "b", scope: !10, file: !11, line: 6, type: !14) -!19 = !DILocation(line: 6, column: 9, scope: !10) -!20 = !DILocation(line: 7, column: 9, scope: !10) -!21 = !DILocation(line: 7, column: 13, scope: !10) -!22 = !DILocation(line: 7, column: 11, scope: !10) -!23 = !DILocation(line: 7, column: 7, scope: !10) -!24 = !DILocation(line: 8, column: 9, scope: !25) -!25 = distinct !DILexicalBlock(scope: !10, file: !11, line: 8, column: 9) -!26 = !DILocation(line: 8, column: 11, scope: !25) -!27 = !DILocation(line: 8, column: 9, scope: !10) -!28 = !DILocation(line: 9, column: 20, scope: !29) -!29 = distinct !DILexicalBlock(scope: !25, file: !11, line: 8, column: 16) -!30 = !DILocation(line: 9, column: 22, scope: !29) -!31 = !DILocation(line: 9, column: 9, scope: !29) -!32 = !DILocation(line: 10, column: 5, scope: !29) -!33 = !DILocation(line: 12, column: 20, scope: !34) -!34 = distinct !DILexicalBlock(scope: !25, file: !11, line: 11, column: 10) -!35 = !DILocation(line: 12, column: 22, scope: !34) -!36 = !DILocation(line: 12, column: 9, scope: !34) -!37 = !DILocation(line: 14, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_14-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_14-0.c.bc deleted file mode 100644 index 0166a9d9..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_14-0.c.bc +++ /dev/null @@ -1,89 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_14-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_14-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 10, ptr %b, align 4, !dbg !19 - %0 = load i32, ptr %b, align 4, !dbg !20 - %1 = load i32, ptr %a, align 4, !dbg !21 - %div = sdiv i32 %0, %1, !dbg !22 - store i32 %div, ptr %b, align 4, !dbg !23 - %2 = load i32, ptr %a, align 4, !dbg !24 - %cmp = icmp sgt i32 %2, 0, !dbg !26 - br i1 %cmp, label %land.lhs.true, label %if.end, !dbg !27 - -land.lhs.true: ; preds = %entry - %3 = load i32, ptr %a, align 4, !dbg !28 - %cmp1 = icmp sle i32 %3, 5, !dbg !29 - br i1 %cmp1, label %if.then, label %if.end, !dbg !30 - -if.then: ; preds = %land.lhs.true - %4 = load i32, ptr %b, align 4, !dbg !31 - %cmp2 = icmp sge i32 %4, 2, !dbg !33 - call void @svf_assert(i1 noundef zeroext %cmp2), !dbg !34 - br label %if.end, !dbg !35 - -if.end: ; preds = %if.then, %land.lhs.true, %entry - %5 = load i32, ptr %retval, align 4, !dbg !36 - ret i32 %5, !dbg !36 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_14-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ca4e8d117e35e6e189f2a892a5d74cfd") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 4, type: !12, scopeLine: 4, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_14-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ca4e8d117e35e6e189f2a892a5d74cfd") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 5, type: !14) -!17 = !DILocation(line: 5, column: 9, scope: !10) -!18 = !DILocalVariable(name: "b", scope: !10, file: !11, line: 6, type: !14) -!19 = !DILocation(line: 6, column: 9, scope: !10) -!20 = !DILocation(line: 7, column: 9, scope: !10) -!21 = !DILocation(line: 7, column: 13, scope: !10) -!22 = !DILocation(line: 7, column: 11, scope: !10) -!23 = !DILocation(line: 7, column: 7, scope: !10) -!24 = !DILocation(line: 8, column: 8, scope: !25) -!25 = distinct !DILexicalBlock(scope: !10, file: !11, line: 8, column: 8) -!26 = !DILocation(line: 8, column: 10, scope: !25) -!27 = !DILocation(line: 8, column: 14, scope: !25) -!28 = !DILocation(line: 8, column: 17, scope: !25) -!29 = !DILocation(line: 8, column: 19, scope: !25) -!30 = !DILocation(line: 8, column: 8, scope: !10) -!31 = !DILocation(line: 9, column: 20, scope: !32) -!32 = distinct !DILexicalBlock(scope: !25, file: !11, line: 8, column: 25) -!33 = !DILocation(line: 9, column: 22, scope: !32) -!34 = !DILocation(line: 9, column: 9, scope: !32) -!35 = !DILocation(line: 10, column: 5, scope: !32) -!36 = !DILocation(line: 11, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_15-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_15-0.c.bc deleted file mode 100644 index d04d23ec..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_15-0.c.bc +++ /dev/null @@ -1,87 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_15-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_15-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - %0 = load i32, ptr %a, align 4, !dbg !18 - %rem = srem i32 %0, 5, !dbg !19 - store i32 %rem, ptr %a, align 4, !dbg !20 - %1 = load i32, ptr %a, align 4, !dbg !21 - %cmp = icmp sge i32 %1, 0, !dbg !23 - br i1 %cmp, label %if.then, label %if.end, !dbg !24 - -if.then: ; preds = %entry - %2 = load i32, ptr %a, align 4, !dbg !25 - %cmp1 = icmp sge i32 %2, 0, !dbg !27 - br i1 %cmp1, label %land.rhs, label %land.end, !dbg !28 - -land.rhs: ; preds = %if.then - %3 = load i32, ptr %a, align 4, !dbg !29 - %cmp2 = icmp slt i32 %3, 5, !dbg !30 - br label %land.end - -land.end: ; preds = %land.rhs, %if.then - %4 = phi i1 [ false, %if.then ], [ %cmp2, %land.rhs ], !dbg !31 - call void @svf_assert(i1 noundef zeroext %4), !dbg !32 - br label %if.end, !dbg !33 - -if.end: ; preds = %land.end, %entry - %5 = load i32, ptr %retval, align 4, !dbg !34 - ret i32 %5, !dbg !34 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_15-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "4c398f40db7ce5c4550842fc7798a36a") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 4, type: !12, scopeLine: 4, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_15-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "4c398f40db7ce5c4550842fc7798a36a") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 5, type: !14) -!17 = !DILocation(line: 5, column: 9, scope: !10) -!18 = !DILocation(line: 6, column: 9, scope: !10) -!19 = !DILocation(line: 6, column: 11, scope: !10) -!20 = !DILocation(line: 6, column: 7, scope: !10) -!21 = !DILocation(line: 7, column: 9, scope: !22) -!22 = distinct !DILexicalBlock(scope: !10, file: !11, line: 7, column: 9) -!23 = !DILocation(line: 7, column: 11, scope: !22) -!24 = !DILocation(line: 7, column: 9, scope: !10) -!25 = !DILocation(line: 8, column: 20, scope: !26) -!26 = distinct !DILexicalBlock(scope: !22, file: !11, line: 7, column: 17) -!27 = !DILocation(line: 8, column: 22, scope: !26) -!28 = !DILocation(line: 8, column: 27, scope: !26) -!29 = !DILocation(line: 8, column: 30, scope: !26) -!30 = !DILocation(line: 8, column: 32, scope: !26) -!31 = !DILocation(line: 0, scope: !26) -!32 = !DILocation(line: 8, column: 9, scope: !26) -!33 = !DILocation(line: 9, column: 5, scope: !26) -!34 = !DILocation(line: 10, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_16-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_16-0.c.bc deleted file mode 100644 index 32a27868..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_16-0.c.bc +++ /dev/null @@ -1,99 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_16-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_16-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @foo(ptr noundef %i) #0 !dbg !10 { -entry: - %i.addr = alloca ptr, align 8 - store ptr %i, ptr %i.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !17, metadata !DIExpression()), !dbg !18 - %0 = load ptr, ptr %i.addr, align 8, !dbg !19 - %1 = load i32, ptr %0, align 4, !dbg !20 - %add = add nsw i32 %1, 1, !dbg !21 - %2 = load ptr, ptr %i.addr, align 8, !dbg !22 - store i32 %add, ptr %2, align 4, !dbg !23 - %3 = load ptr, ptr %i.addr, align 8, !dbg !24 - %4 = load i32, ptr %3, align 4, !dbg !26 - %cmp = icmp slt i32 %4, 10, !dbg !27 - br i1 %cmp, label %if.then, label %if.end, !dbg !28 - -if.then: ; preds = %entry - %5 = load ptr, ptr %i.addr, align 8, !dbg !29 - call void @foo(ptr noundef %5), !dbg !31 - br label %if.end, !dbg !32 - -if.end: ; preds = %if.then, %entry - ret void, !dbg !33 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !34 { -entry: - %i = alloca i32, align 4 - call void @llvm.dbg.declare(metadata ptr %i, metadata !37, metadata !DIExpression()), !dbg !38 - call void @foo(ptr noundef %i), !dbg !39 - %0 = load i32, ptr %i, align 4, !dbg !40 - %cmp = icmp sge i32 %0, 10, !dbg !41 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !42 - ret i32 0, !dbg !43 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_16-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d8feceb828971d8c88c479cf9763ad13") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "foo", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_16-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d8feceb828971d8c88c479cf9763ad13") -!12 = !DISubroutineType(types: !13) -!13 = !{null, !14} -!14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) -!15 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!16 = !{} -!17 = !DILocalVariable(name: "i", arg: 1, scope: !10, file: !11, line: 5, type: !14) -!18 = !DILocation(line: 5, column: 15, scope: !10) -!19 = !DILocation(line: 6, column: 11, scope: !10) -!20 = !DILocation(line: 6, column: 10, scope: !10) -!21 = !DILocation(line: 6, column: 13, scope: !10) -!22 = !DILocation(line: 6, column: 6, scope: !10) -!23 = !DILocation(line: 6, column: 8, scope: !10) -!24 = !DILocation(line: 7, column: 9, scope: !25) -!25 = distinct !DILexicalBlock(scope: !10, file: !11, line: 7, column: 8) -!26 = !DILocation(line: 7, column: 8, scope: !25) -!27 = !DILocation(line: 7, column: 11, scope: !25) -!28 = !DILocation(line: 7, column: 8, scope: !10) -!29 = !DILocation(line: 8, column: 13, scope: !30) -!30 = distinct !DILexicalBlock(scope: !25, file: !11, line: 7, column: 17) -!31 = !DILocation(line: 8, column: 9, scope: !30) -!32 = !DILocation(line: 9, column: 5, scope: !30) -!33 = !DILocation(line: 10, column: 1, scope: !10) -!34 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 12, type: !35, scopeLine: 12, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!35 = !DISubroutineType(types: !36) -!36 = !{!15} -!37 = !DILocalVariable(name: "i", scope: !34, file: !11, line: 13, type: !15) -!38 = !DILocation(line: 13, column: 9, scope: !34) -!39 = !DILocation(line: 14, column: 5, scope: !34) -!40 = !DILocation(line: 15, column: 16, scope: !34) -!41 = !DILocation(line: 15, column: 18, scope: !34) -!42 = !DILocation(line: 15, column: 5, scope: !34) -!43 = !DILocation(line: 16, column: 1, scope: !34) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_17-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_17-0.c.bc deleted file mode 100644 index 160b96ef..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_17-0.c.bc +++ /dev/null @@ -1,184 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_17-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_17-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @loop(i32 noundef %a) #0 !dbg !10 { -entry: - %a.addr = alloca i32, align 4 - %result = alloca i32, align 4 - %output = alloca i32, align 4 - %i = alloca i32, align 4 - store i32 %a, ptr %a.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %result, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 0, ptr %result, align 4, !dbg !19 - call void @llvm.dbg.declare(metadata ptr %output, metadata !20, metadata !DIExpression()), !dbg !21 - store i32 0, ptr %output, align 4, !dbg !21 - call void @llvm.dbg.declare(metadata ptr %i, metadata !22, metadata !DIExpression()), !dbg !24 - store i32 1, ptr %i, align 4, !dbg !24 - br label %for.cond, !dbg !25 - -for.cond: ; preds = %for.inc, %entry - %0 = load i32, ptr %i, align 4, !dbg !26 - %1 = load i32, ptr %a.addr, align 4, !dbg !28 - %cmp = icmp sle i32 %0, %1, !dbg !29 - br i1 %cmp, label %for.body, label %for.end, !dbg !30 - -for.body: ; preds = %for.cond - %2 = load i32, ptr %i, align 4, !dbg !31 - %rem = srem i32 %2, 2, !dbg !34 - %cmp1 = icmp eq i32 %rem, 0, !dbg !35 - br i1 %cmp1, label %if.then, label %if.end, !dbg !36 - -if.then: ; preds = %for.body - %3 = load i32, ptr %output, align 4, !dbg !37 - %inc = add nsw i32 %3, 1, !dbg !37 - store i32 %inc, ptr %output, align 4, !dbg !37 - br label %if.end, !dbg !39 - -if.end: ; preds = %if.then, %for.body - br label %for.inc, !dbg !40 - -for.inc: ; preds = %if.end - %4 = load i32, ptr %i, align 4, !dbg !41 - %inc2 = add nsw i32 %4, 1, !dbg !41 - store i32 %inc2, ptr %i, align 4, !dbg !41 - br label %for.cond, !dbg !42, !llvm.loop !43 - -for.end: ; preds = %for.cond - %5 = load i32, ptr %output, align 4, !dbg !46 - ret i32 %5, !dbg !47 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !48 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %output = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !51, metadata !DIExpression()), !dbg !52 - call void @llvm.dbg.declare(metadata ptr %b, metadata !53, metadata !DIExpression()), !dbg !54 - %0 = load i32, ptr %a, align 4, !dbg !55 - store i32 %0, ptr %b, align 4, !dbg !54 - call void @llvm.dbg.declare(metadata ptr %output, metadata !56, metadata !DIExpression()), !dbg !57 - store i32 0, ptr %output, align 4, !dbg !57 - %1 = load i32, ptr %a, align 4, !dbg !58 - %cmp = icmp sgt i32 %1, 0, !dbg !60 - br i1 %cmp, label %if.then, label %if.else, !dbg !61 - -if.then: ; preds = %entry - %2 = load i32, ptr %a, align 4, !dbg !62 - %call = call i32 @loop(i32 noundef %2), !dbg !64 - store i32 %call, ptr %output, align 4, !dbg !65 - %3 = load i32, ptr %output, align 4, !dbg !66 - %4 = load i32, ptr %b, align 4, !dbg !67 - %div = sdiv i32 %4, 2, !dbg !68 - %cmp1 = icmp eq i32 %3, %div, !dbg !69 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !70 - br label %if.end, !dbg !71 - -if.else: ; preds = %entry - %5 = load i32, ptr %output, align 4, !dbg !72 - %cmp2 = icmp eq i32 %5, 0, !dbg !74 - call void @svf_assert(i1 noundef zeroext %cmp2), !dbg !75 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %6 = load i32, ptr %retval, align 4, !dbg !76 - ret i32 %6, !dbg !76 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_17-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "19954cf1789cf46b29d75b78434d7132") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "loop", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_17-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "19954cf1789cf46b29d75b78434d7132") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", arg: 1, scope: !10, file: !11, line: 5, type: !14) -!17 = !DILocation(line: 5, column: 14, scope: !10) -!18 = !DILocalVariable(name: "result", scope: !10, file: !11, line: 6, type: !14) -!19 = !DILocation(line: 6, column: 9, scope: !10) -!20 = !DILocalVariable(name: "output", scope: !10, file: !11, line: 7, type: !14) -!21 = !DILocation(line: 7, column: 9, scope: !10) -!22 = !DILocalVariable(name: "i", scope: !23, file: !11, line: 8, type: !14) -!23 = distinct !DILexicalBlock(scope: !10, file: !11, line: 8, column: 5) -!24 = !DILocation(line: 8, column: 13, scope: !23) -!25 = !DILocation(line: 8, column: 9, scope: !23) -!26 = !DILocation(line: 8, column: 20, scope: !27) -!27 = distinct !DILexicalBlock(scope: !23, file: !11, line: 8, column: 5) -!28 = !DILocation(line: 8, column: 25, scope: !27) -!29 = !DILocation(line: 8, column: 22, scope: !27) -!30 = !DILocation(line: 8, column: 5, scope: !23) -!31 = !DILocation(line: 9, column: 12, scope: !32) -!32 = distinct !DILexicalBlock(scope: !33, file: !11, line: 9, column: 12) -!33 = distinct !DILexicalBlock(scope: !27, file: !11, line: 8, column: 33) -!34 = !DILocation(line: 9, column: 14, scope: !32) -!35 = !DILocation(line: 9, column: 18, scope: !32) -!36 = !DILocation(line: 9, column: 12, scope: !33) -!37 = !DILocation(line: 10, column: 19, scope: !38) -!38 = distinct !DILexicalBlock(scope: !32, file: !11, line: 9, column: 24) -!39 = !DILocation(line: 11, column: 9, scope: !38) -!40 = !DILocation(line: 12, column: 5, scope: !33) -!41 = !DILocation(line: 8, column: 29, scope: !27) -!42 = !DILocation(line: 8, column: 5, scope: !27) -!43 = distinct !{!43, !30, !44, !45} -!44 = !DILocation(line: 12, column: 5, scope: !23) -!45 = !{!"llvm.loop.mustprogress"} -!46 = !DILocation(line: 13, column: 12, scope: !10) -!47 = !DILocation(line: 13, column: 5, scope: !10) -!48 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 16, type: !49, scopeLine: 16, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!49 = !DISubroutineType(types: !50) -!50 = !{!14} -!51 = !DILocalVariable(name: "a", scope: !48, file: !11, line: 17, type: !14) -!52 = !DILocation(line: 17, column: 9, scope: !48) -!53 = !DILocalVariable(name: "b", scope: !48, file: !11, line: 18, type: !14) -!54 = !DILocation(line: 18, column: 9, scope: !48) -!55 = !DILocation(line: 18, column: 13, scope: !48) -!56 = !DILocalVariable(name: "output", scope: !48, file: !11, line: 19, type: !14) -!57 = !DILocation(line: 19, column: 9, scope: !48) -!58 = !DILocation(line: 20, column: 8, scope: !59) -!59 = distinct !DILexicalBlock(scope: !48, file: !11, line: 20, column: 8) -!60 = !DILocation(line: 20, column: 10, scope: !59) -!61 = !DILocation(line: 20, column: 8, scope: !48) -!62 = !DILocation(line: 21, column: 23, scope: !63) -!63 = distinct !DILexicalBlock(scope: !59, file: !11, line: 20, column: 15) -!64 = !DILocation(line: 21, column: 18, scope: !63) -!65 = !DILocation(line: 21, column: 16, scope: !63) -!66 = !DILocation(line: 22, column: 20, scope: !63) -!67 = !DILocation(line: 22, column: 30, scope: !63) -!68 = !DILocation(line: 22, column: 31, scope: !63) -!69 = !DILocation(line: 22, column: 27, scope: !63) -!70 = !DILocation(line: 22, column: 9, scope: !63) -!71 = !DILocation(line: 23, column: 5, scope: !63) -!72 = !DILocation(line: 25, column: 20, scope: !73) -!73 = distinct !DILexicalBlock(scope: !59, file: !11, line: 24, column: 10) -!74 = !DILocation(line: 25, column: 27, scope: !73) -!75 = !DILocation(line: 25, column: 9, scope: !73) -!76 = !DILocation(line: 27, column: 1, scope: !48) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_18-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_18-0.c.bc deleted file mode 100644 index 2e40b964..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_18-0.c.bc +++ /dev/null @@ -1,184 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_18-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_18-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @loop(i32 noundef %a) #0 !dbg !10 { -entry: - %a.addr = alloca i32, align 4 - %result = alloca i32, align 4 - %output = alloca i32, align 4 - %i = alloca i32, align 4 - store i32 %a, ptr %a.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %result, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 0, ptr %result, align 4, !dbg !19 - call void @llvm.dbg.declare(metadata ptr %output, metadata !20, metadata !DIExpression()), !dbg !21 - store i32 0, ptr %output, align 4, !dbg !21 - call void @llvm.dbg.declare(metadata ptr %i, metadata !22, metadata !DIExpression()), !dbg !24 - store i32 1, ptr %i, align 4, !dbg !24 - br label %for.cond, !dbg !25 - -for.cond: ; preds = %for.inc, %entry - %0 = load i32, ptr %i, align 4, !dbg !26 - %1 = load i32, ptr %a.addr, align 4, !dbg !28 - %cmp = icmp sle i32 %0, %1, !dbg !29 - br i1 %cmp, label %for.body, label %for.end, !dbg !30 - -for.body: ; preds = %for.cond - %2 = load i32, ptr %i, align 4, !dbg !31 - %rem = srem i32 %2, 2, !dbg !34 - %cmp1 = icmp ne i32 %rem, 0, !dbg !35 - br i1 %cmp1, label %if.then, label %if.end, !dbg !36 - -if.then: ; preds = %for.body - br label %for.inc, !dbg !37 - -if.end: ; preds = %for.body - %3 = load i32, ptr %output, align 4, !dbg !39 - %inc = add nsw i32 %3, 1, !dbg !39 - store i32 %inc, ptr %output, align 4, !dbg !39 - br label %for.inc, !dbg !40 - -for.inc: ; preds = %if.end, %if.then - %4 = load i32, ptr %i, align 4, !dbg !41 - %inc2 = add nsw i32 %4, 1, !dbg !41 - store i32 %inc2, ptr %i, align 4, !dbg !41 - br label %for.cond, !dbg !42, !llvm.loop !43 - -for.end: ; preds = %for.cond - %5 = load i32, ptr %output, align 4, !dbg !46 - ret i32 %5, !dbg !47 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !48 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %output = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !51, metadata !DIExpression()), !dbg !52 - call void @llvm.dbg.declare(metadata ptr %b, metadata !53, metadata !DIExpression()), !dbg !54 - %0 = load i32, ptr %a, align 4, !dbg !55 - store i32 %0, ptr %b, align 4, !dbg !54 - call void @llvm.dbg.declare(metadata ptr %output, metadata !56, metadata !DIExpression()), !dbg !57 - store i32 0, ptr %output, align 4, !dbg !57 - %1 = load i32, ptr %a, align 4, !dbg !58 - %cmp = icmp sgt i32 %1, 0, !dbg !60 - br i1 %cmp, label %if.then, label %if.else, !dbg !61 - -if.then: ; preds = %entry - %2 = load i32, ptr %a, align 4, !dbg !62 - %call = call i32 @loop(i32 noundef %2), !dbg !64 - store i32 %call, ptr %output, align 4, !dbg !65 - %3 = load i32, ptr %output, align 4, !dbg !66 - %4 = load i32, ptr %b, align 4, !dbg !67 - %div = sdiv i32 %4, 2, !dbg !68 - %cmp1 = icmp eq i32 %3, %div, !dbg !69 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !70 - br label %if.end, !dbg !71 - -if.else: ; preds = %entry - %5 = load i32, ptr %output, align 4, !dbg !72 - %cmp2 = icmp eq i32 %5, 0, !dbg !74 - call void @svf_assert(i1 noundef zeroext %cmp2), !dbg !75 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %6 = load i32, ptr %retval, align 4, !dbg !76 - ret i32 %6, !dbg !76 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_18-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3844f71490403f6a830e58824633aedb") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "loop", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_18-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3844f71490403f6a830e58824633aedb") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", arg: 1, scope: !10, file: !11, line: 5, type: !14) -!17 = !DILocation(line: 5, column: 14, scope: !10) -!18 = !DILocalVariable(name: "result", scope: !10, file: !11, line: 6, type: !14) -!19 = !DILocation(line: 6, column: 9, scope: !10) -!20 = !DILocalVariable(name: "output", scope: !10, file: !11, line: 7, type: !14) -!21 = !DILocation(line: 7, column: 9, scope: !10) -!22 = !DILocalVariable(name: "i", scope: !23, file: !11, line: 8, type: !14) -!23 = distinct !DILexicalBlock(scope: !10, file: !11, line: 8, column: 5) -!24 = !DILocation(line: 8, column: 13, scope: !23) -!25 = !DILocation(line: 8, column: 9, scope: !23) -!26 = !DILocation(line: 8, column: 20, scope: !27) -!27 = distinct !DILexicalBlock(scope: !23, file: !11, line: 8, column: 5) -!28 = !DILocation(line: 8, column: 25, scope: !27) -!29 = !DILocation(line: 8, column: 22, scope: !27) -!30 = !DILocation(line: 8, column: 5, scope: !23) -!31 = !DILocation(line: 9, column: 12, scope: !32) -!32 = distinct !DILexicalBlock(scope: !33, file: !11, line: 9, column: 12) -!33 = distinct !DILexicalBlock(scope: !27, file: !11, line: 8, column: 33) -!34 = !DILocation(line: 9, column: 14, scope: !32) -!35 = !DILocation(line: 9, column: 18, scope: !32) -!36 = !DILocation(line: 9, column: 12, scope: !33) -!37 = !DILocation(line: 10, column: 13, scope: !38) -!38 = distinct !DILexicalBlock(scope: !32, file: !11, line: 9, column: 24) -!39 = !DILocation(line: 12, column: 15, scope: !33) -!40 = !DILocation(line: 13, column: 5, scope: !33) -!41 = !DILocation(line: 8, column: 29, scope: !27) -!42 = !DILocation(line: 8, column: 5, scope: !27) -!43 = distinct !{!43, !30, !44, !45} -!44 = !DILocation(line: 13, column: 5, scope: !23) -!45 = !{!"llvm.loop.mustprogress"} -!46 = !DILocation(line: 14, column: 12, scope: !10) -!47 = !DILocation(line: 14, column: 5, scope: !10) -!48 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 17, type: !49, scopeLine: 17, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!49 = !DISubroutineType(types: !50) -!50 = !{!14} -!51 = !DILocalVariable(name: "a", scope: !48, file: !11, line: 18, type: !14) -!52 = !DILocation(line: 18, column: 9, scope: !48) -!53 = !DILocalVariable(name: "b", scope: !48, file: !11, line: 19, type: !14) -!54 = !DILocation(line: 19, column: 9, scope: !48) -!55 = !DILocation(line: 19, column: 13, scope: !48) -!56 = !DILocalVariable(name: "output", scope: !48, file: !11, line: 20, type: !14) -!57 = !DILocation(line: 20, column: 9, scope: !48) -!58 = !DILocation(line: 21, column: 8, scope: !59) -!59 = distinct !DILexicalBlock(scope: !48, file: !11, line: 21, column: 8) -!60 = !DILocation(line: 21, column: 10, scope: !59) -!61 = !DILocation(line: 21, column: 8, scope: !48) -!62 = !DILocation(line: 22, column: 23, scope: !63) -!63 = distinct !DILexicalBlock(scope: !59, file: !11, line: 21, column: 15) -!64 = !DILocation(line: 22, column: 18, scope: !63) -!65 = !DILocation(line: 22, column: 16, scope: !63) -!66 = !DILocation(line: 23, column: 20, scope: !63) -!67 = !DILocation(line: 23, column: 30, scope: !63) -!68 = !DILocation(line: 23, column: 31, scope: !63) -!69 = !DILocation(line: 23, column: 27, scope: !63) -!70 = !DILocation(line: 23, column: 9, scope: !63) -!71 = !DILocation(line: 24, column: 5, scope: !63) -!72 = !DILocation(line: 26, column: 20, scope: !73) -!73 = distinct !DILexicalBlock(scope: !59, file: !11, line: 25, column: 10) -!74 = !DILocation(line: 26, column: 27, scope: !73) -!75 = !DILocation(line: 26, column: 9, scope: !73) -!76 = !DILocation(line: 28, column: 1, scope: !48) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_19-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_19-0.c.bc deleted file mode 100644 index 3832f217..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_19-0.c.bc +++ /dev/null @@ -1,141 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_19-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_19-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @foo(ptr noundef %i) #0 !dbg !10 { -entry: - %i.addr = alloca ptr, align 8 - %a = alloca i32, align 4 - store ptr %i, ptr %i.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !17, metadata !DIExpression()), !dbg !18 - call void @llvm.dbg.declare(metadata ptr %a, metadata !19, metadata !DIExpression()), !dbg !20 - %0 = load ptr, ptr %i.addr, align 8, !dbg !21 - %1 = load i32, ptr %0, align 4, !dbg !22 - %rem = srem i32 %1, 2, !dbg !23 - store i32 %rem, ptr %a, align 4, !dbg !20 - %2 = load i32, ptr %a, align 4, !dbg !24 - switch i32 %2, label %sw.default [ - i32 0, label %sw.bb - i32 1, label %sw.bb1 - ], !dbg !25 - -sw.bb: ; preds = %entry - br label %sw.epilog, !dbg !26 - -sw.bb1: ; preds = %entry - %3 = load ptr, ptr %i.addr, align 8, !dbg !28 - %4 = load i32, ptr %3, align 4, !dbg !29 - %add = add nsw i32 %4, 1, !dbg !30 - %5 = load ptr, ptr %i.addr, align 8, !dbg !31 - store i32 %add, ptr %5, align 4, !dbg !32 - br label %sw.epilog, !dbg !33 - -sw.default: ; preds = %entry - %6 = load ptr, ptr %i.addr, align 8, !dbg !34 - %7 = load i32, ptr %6, align 4, !dbg !35 - %add2 = add nsw i32 %7, 3, !dbg !36 - %8 = load ptr, ptr %i.addr, align 8, !dbg !37 - store i32 %add2, ptr %8, align 4, !dbg !38 - br label %sw.epilog, !dbg !39 - -sw.epilog: ; preds = %sw.default, %sw.bb1, %sw.bb - ret void, !dbg !40 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !41 { -entry: - %retval = alloca i32, align 4 - %i = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %i, metadata !44, metadata !DIExpression()), !dbg !45 - %0 = load i32, ptr %i, align 4, !dbg !46 - %cmp = icmp sge i32 %0, 0, !dbg !48 - br i1 %cmp, label %if.then, label %if.end, !dbg !49 - -if.then: ; preds = %entry - call void @foo(ptr noundef %i), !dbg !50 - %1 = load i32, ptr %i, align 4, !dbg !52 - %rem = srem i32 %1, 2, !dbg !53 - %cmp1 = icmp eq i32 %rem, 0, !dbg !54 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !55 - br label %if.end, !dbg !56 - -if.end: ; preds = %if.then, %entry - %2 = load i32, ptr %retval, align 4, !dbg !57 - ret i32 %2, !dbg !57 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_19-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8f9daf60f85c0ddcaf06e66b27dcab0b") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "foo", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_19-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8f9daf60f85c0ddcaf06e66b27dcab0b") -!12 = !DISubroutineType(types: !13) -!13 = !{null, !14} -!14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) -!15 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!16 = !{} -!17 = !DILocalVariable(name: "i", arg: 1, scope: !10, file: !11, line: 5, type: !14) -!18 = !DILocation(line: 5, column: 15, scope: !10) -!19 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 6, type: !15) -!20 = !DILocation(line: 6, column: 9, scope: !10) -!21 = !DILocation(line: 6, column: 14, scope: !10) -!22 = !DILocation(line: 6, column: 13, scope: !10) -!23 = !DILocation(line: 6, column: 16, scope: !10) -!24 = !DILocation(line: 7, column: 13, scope: !10) -!25 = !DILocation(line: 7, column: 5, scope: !10) -!26 = !DILocation(line: 10, column: 13, scope: !27) -!27 = distinct !DILexicalBlock(scope: !10, file: !11, line: 8, column: 5) -!28 = !DILocation(line: 12, column: 19, scope: !27) -!29 = !DILocation(line: 12, column: 18, scope: !27) -!30 = !DILocation(line: 12, column: 21, scope: !27) -!31 = !DILocation(line: 12, column: 14, scope: !27) -!32 = !DILocation(line: 12, column: 16, scope: !27) -!33 = !DILocation(line: 13, column: 13, scope: !27) -!34 = !DILocation(line: 15, column: 19, scope: !27) -!35 = !DILocation(line: 15, column: 18, scope: !27) -!36 = !DILocation(line: 15, column: 21, scope: !27) -!37 = !DILocation(line: 15, column: 14, scope: !27) -!38 = !DILocation(line: 15, column: 16, scope: !27) -!39 = !DILocation(line: 16, column: 13, scope: !27) -!40 = !DILocation(line: 18, column: 1, scope: !10) -!41 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 20, type: !42, scopeLine: 20, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!42 = !DISubroutineType(types: !43) -!43 = !{!15} -!44 = !DILocalVariable(name: "i", scope: !41, file: !11, line: 21, type: !15) -!45 = !DILocation(line: 21, column: 9, scope: !41) -!46 = !DILocation(line: 22, column: 9, scope: !47) -!47 = distinct !DILexicalBlock(scope: !41, file: !11, line: 22, column: 9) -!48 = !DILocation(line: 22, column: 11, scope: !47) -!49 = !DILocation(line: 22, column: 9, scope: !41) -!50 = !DILocation(line: 23, column: 9, scope: !51) -!51 = distinct !DILexicalBlock(scope: !47, file: !11, line: 22, column: 17) -!52 = !DILocation(line: 24, column: 20, scope: !51) -!53 = !DILocation(line: 24, column: 22, scope: !51) -!54 = !DILocation(line: 24, column: 26, scope: !51) -!55 = !DILocation(line: 24, column: 9, scope: !51) -!56 = !DILocation(line: 25, column: 5, scope: !51) -!57 = !DILocation(line: 26, column: 1, scope: !41) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_2-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_2-0.c.bc deleted file mode 100644 index 251eb790..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_2-0.c.bc +++ /dev/null @@ -1,104 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_2-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_2-0.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [3 x i8] c"%d\00", align 1, !dbg !0 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !18 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !23, metadata !DIExpression()), !dbg !24 - call void @llvm.dbg.declare(metadata ptr %b, metadata !25, metadata !DIExpression()), !dbg !26 - store i32 1, ptr %b, align 4, !dbg !26 - %call = call i32 (ptr, ...) @scanf(ptr noundef @.str, ptr noundef %a), !dbg !27 - %0 = load i32, ptr %a, align 4, !dbg !28 - %1 = load i32, ptr %b, align 4, !dbg !29 - %add = add nsw i32 %0, %1, !dbg !30 - store i32 %add, ptr %b, align 4, !dbg !31 - %2 = load i32, ptr %a, align 4, !dbg !32 - %cmp = icmp sgt i32 %2, 5, !dbg !34 - br i1 %cmp, label %if.then, label %if.else, !dbg !35 - -if.then: ; preds = %entry - %3 = load i32, ptr %b, align 4, !dbg !36 - %cmp1 = icmp sgt i32 %3, 6, !dbg !38 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !39 - br label %if.end, !dbg !40 - -if.else: ; preds = %entry - %4 = load i32, ptr %b, align 4, !dbg !41 - %cmp2 = icmp sle i32 %4, 5, !dbg !43 - call void @svf_assert(i1 noundef zeroext %cmp2), !dbg !44 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %5 = load i32, ptr %retval, align 4, !dbg !45 - ret i32 %5, !dbg !45 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare i32 @scanf(ptr noundef, ...) #2 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!7} -!llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} -!llvm.ident = !{!17} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 8, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3666d51fed64fda896b8ff2b993919c8") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 24, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 3) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_2-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3666d51fed64fda896b8ff2b993919c8") -!9 = !{!0} -!10 = !{i32 7, !"Dwarf Version", i32 5} -!11 = !{i32 2, !"Debug Info Version", i32 3} -!12 = !{i32 1, !"wchar_size", i32 4} -!13 = !{i32 8, !"PIC Level", i32 2} -!14 = !{i32 7, !"PIE Level", i32 2} -!15 = !{i32 7, !"uwtable", i32 2} -!16 = !{i32 7, !"frame-pointer", i32 2} -!17 = !{!"clang version 16.0.0"} -!18 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 4, type: !19, scopeLine: 4, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !22) -!19 = !DISubroutineType(types: !20) -!20 = !{!21} -!21 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!22 = !{} -!23 = !DILocalVariable(name: "a", scope: !18, file: !2, line: 6, type: !21) -!24 = !DILocation(line: 6, column: 9, scope: !18) -!25 = !DILocalVariable(name: "b", scope: !18, file: !2, line: 7, type: !21) -!26 = !DILocation(line: 7, column: 9, scope: !18) -!27 = !DILocation(line: 8, column: 5, scope: !18) -!28 = !DILocation(line: 9, column: 9, scope: !18) -!29 = !DILocation(line: 9, column: 13, scope: !18) -!30 = !DILocation(line: 9, column: 11, scope: !18) -!31 = !DILocation(line: 9, column: 7, scope: !18) -!32 = !DILocation(line: 10, column: 9, scope: !33) -!33 = distinct !DILexicalBlock(scope: !18, file: !2, line: 10, column: 9) -!34 = !DILocation(line: 10, column: 11, scope: !33) -!35 = !DILocation(line: 10, column: 9, scope: !18) -!36 = !DILocation(line: 11, column: 20, scope: !37) -!37 = distinct !DILexicalBlock(scope: !33, file: !2, line: 10, column: 16) -!38 = !DILocation(line: 11, column: 22, scope: !37) -!39 = !DILocation(line: 11, column: 9, scope: !37) -!40 = !DILocation(line: 12, column: 5, scope: !37) -!41 = !DILocation(line: 14, column: 20, scope: !42) -!42 = distinct !DILexicalBlock(scope: !33, file: !2, line: 13, column: 10) -!43 = !DILocation(line: 14, column: 22, scope: !42) -!44 = !DILocation(line: 14, column: 9, scope: !42) -!45 = !DILocation(line: 16, column: 1, scope: !18) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_20-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_20-0.c.bc deleted file mode 100644 index 36cc90c9..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_20-0.c.bc +++ /dev/null @@ -1,130 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_20-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_20-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !13 { -entry: - %retval = alloca i32, align 4 - %r = alloca i32, align 4 - %a = alloca i8, align 1 - %a_as_int = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %call = call i32 (i32, ...) @time(i32 noundef 0), !dbg !18 - call void @srand(i32 noundef %call) #4, !dbg !19 - call void @llvm.dbg.declare(metadata ptr %r, metadata !20, metadata !DIExpression()), !dbg !21 - %call1 = call i32 @rand() #4, !dbg !22 - %rem = srem i32 %call1, 128, !dbg !23 - store i32 %rem, ptr %r, align 4, !dbg !21 - call void @llvm.dbg.declare(metadata ptr %a, metadata !24, metadata !DIExpression()), !dbg !25 - %0 = load i32, ptr %r, align 4, !dbg !26 - %conv = trunc i32 %0 to i8, !dbg !27 - store i8 %conv, ptr %a, align 1, !dbg !25 - call void @llvm.dbg.declare(metadata ptr %a_as_int, metadata !28, metadata !DIExpression()), !dbg !29 - %1 = load i8, ptr %a, align 1, !dbg !30 - %conv2 = sext i8 %1 to i32, !dbg !31 - store i32 %conv2, ptr %a_as_int, align 4, !dbg !29 - %2 = load i8, ptr %a, align 1, !dbg !32 - %conv3 = sext i8 %2 to i32, !dbg !32 - %cmp = icmp sge i32 %conv3, 97, !dbg !34 - br i1 %cmp, label %land.lhs.true, label %if.end, !dbg !35 - -land.lhs.true: ; preds = %entry - %3 = load i8, ptr %a, align 1, !dbg !36 - %conv5 = sext i8 %3 to i32, !dbg !36 - %cmp6 = icmp sle i32 %conv5, 122, !dbg !37 - br i1 %cmp6, label %if.then, label %if.end, !dbg !38 - -if.then: ; preds = %land.lhs.true - %4 = load i32, ptr %a_as_int, align 4, !dbg !39 - %cmp8 = icmp sge i32 %4, 97, !dbg !41 - br i1 %cmp8, label %land.rhs, label %land.end, !dbg !42 - -land.rhs: ; preds = %if.then - %5 = load i32, ptr %a_as_int, align 4, !dbg !43 - %cmp10 = icmp sle i32 %5, 122, !dbg !44 - br label %land.end - -land.end: ; preds = %land.rhs, %if.then - %6 = phi i1 [ false, %if.then ], [ %cmp10, %land.rhs ], !dbg !45 - call void @svf_assert(i1 noundef zeroext %6), !dbg !46 - br label %if.end, !dbg !47 - -if.end: ; preds = %land.end, %land.lhs.true, %entry - %7 = load i32, ptr %retval, align 4, !dbg !48 - ret i32 %7, !dbg !48 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #1 - -declare i32 @time(...) #2 - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #3 - -; Function Attrs: nounwind -declare i32 @rand() #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #4 = { nounwind } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!5, !6, !7, !8, !9, !10, !11} -!llvm.ident = !{!12} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_20-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a6d43d5ef79129fca67cfa72c6a21dbb") -!2 = !{!3, !4} -!3 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!4 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!5 = !{i32 7, !"Dwarf Version", i32 5} -!6 = !{i32 2, !"Debug Info Version", i32 3} -!7 = !{i32 1, !"wchar_size", i32 4} -!8 = !{i32 8, !"PIC Level", i32 2} -!9 = !{i32 7, !"PIE Level", i32 2} -!10 = !{i32 7, !"uwtable", i32 2} -!11 = !{i32 7, !"frame-pointer", i32 2} -!12 = !{!"clang version 16.0.0"} -!13 = distinct !DISubprogram(name: "main", scope: !14, file: !14, line: 7, type: !15, scopeLine: 7, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) -!14 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_20-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a6d43d5ef79129fca67cfa72c6a21dbb") -!15 = !DISubroutineType(types: !16) -!16 = !{!4} -!17 = !{} -!18 = !DILocation(line: 8, column: 11, scope: !13) -!19 = !DILocation(line: 8, column: 5, scope: !13) -!20 = !DILocalVariable(name: "r", scope: !13, file: !14, line: 9, type: !4) -!21 = !DILocation(line: 9, column: 6, scope: !13) -!22 = !DILocation(line: 9, column: 10, scope: !13) -!23 = !DILocation(line: 9, column: 17, scope: !13) -!24 = !DILocalVariable(name: "a", scope: !13, file: !14, line: 10, type: !3) -!25 = !DILocation(line: 10, column: 10, scope: !13) -!26 = !DILocation(line: 10, column: 20, scope: !13) -!27 = !DILocation(line: 10, column: 14, scope: !13) -!28 = !DILocalVariable(name: "a_as_int", scope: !13, file: !14, line: 11, type: !4) -!29 = !DILocation(line: 11, column: 9, scope: !13) -!30 = !DILocation(line: 11, column: 25, scope: !13) -!31 = !DILocation(line: 11, column: 20, scope: !13) -!32 = !DILocation(line: 12, column: 9, scope: !33) -!33 = distinct !DILexicalBlock(scope: !13, file: !14, line: 12, column: 9) -!34 = !DILocation(line: 12, column: 11, scope: !33) -!35 = !DILocation(line: 12, column: 18, scope: !33) -!36 = !DILocation(line: 12, column: 21, scope: !33) -!37 = !DILocation(line: 12, column: 23, scope: !33) -!38 = !DILocation(line: 12, column: 9, scope: !13) -!39 = !DILocation(line: 13, column: 20, scope: !40) -!40 = distinct !DILexicalBlock(scope: !33, file: !14, line: 12, column: 31) -!41 = !DILocation(line: 13, column: 29, scope: !40) -!42 = !DILocation(line: 13, column: 35, scope: !40) -!43 = !DILocation(line: 13, column: 38, scope: !40) -!44 = !DILocation(line: 13, column: 47, scope: !40) -!45 = !DILocation(line: 0, scope: !40) -!46 = !DILocation(line: 13, column: 9, scope: !40) -!47 = !DILocation(line: 14, column: 5, scope: !40) -!48 = !DILocation(line: 15, column: 1, scope: !13) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_21-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_21-0.c.bc deleted file mode 100644 index c7fc7e91..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_21-0.c.bc +++ /dev/null @@ -1,150 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_21-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_21-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %i = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !18, metadata !DIExpression()), !dbg !19 - %0 = load i32, ptr %a, align 4, !dbg !20 - store i32 %0, ptr %b, align 4, !dbg !19 - call void @llvm.dbg.declare(metadata ptr %i, metadata !21, metadata !DIExpression()), !dbg !23 - store i32 0, ptr %i, align 4, !dbg !23 - br label %for.cond, !dbg !24 - -for.cond: ; preds = %for.inc, %entry - %1 = load i32, ptr %i, align 4, !dbg !25 - %cmp = icmp slt i32 %1, 10, !dbg !27 - br i1 %cmp, label %for.body, label %for.end, !dbg !28 - -for.body: ; preds = %for.cond - %2 = load i32, ptr %a, align 4, !dbg !29 - %cmp1 = icmp eq i32 %2, 10, !dbg !32 - br i1 %cmp1, label %if.then, label %if.end, !dbg !33 - -if.then: ; preds = %for.body - br label %for.end, !dbg !34 - -if.end: ; preds = %for.body - %3 = load i32, ptr %a, align 4, !dbg !36 - %inc = add nsw i32 %3, 1, !dbg !36 - store i32 %inc, ptr %a, align 4, !dbg !36 - br label %for.inc, !dbg !37 - -for.inc: ; preds = %if.end - %4 = load i32, ptr %i, align 4, !dbg !38 - %inc2 = add nsw i32 %4, 1, !dbg !38 - store i32 %inc2, ptr %i, align 4, !dbg !38 - br label %for.cond, !dbg !39, !llvm.loop !40 - -for.end: ; preds = %if.then, %for.cond - %5 = load i32, ptr %b, align 4, !dbg !43 - %cmp3 = icmp sge i32 %5, 0, !dbg !45 - br i1 %cmp3, label %land.lhs.true, label %if.else, !dbg !46 - -land.lhs.true: ; preds = %for.end - %6 = load i32, ptr %b, align 4, !dbg !47 - %cmp4 = icmp sle i32 %6, 10, !dbg !48 - br i1 %cmp4, label %if.then5, label %if.else, !dbg !49 - -if.then5: ; preds = %land.lhs.true - %7 = load i32, ptr %a, align 4, !dbg !50 - %cmp6 = icmp eq i32 %7, 10, !dbg !52 - call void @svf_assert(i1 noundef zeroext %cmp6), !dbg !53 - br label %if.end7, !dbg !54 - -if.else: ; preds = %land.lhs.true, %for.end - %8 = load i32, ptr %b, align 4, !dbg !55 - %add = add nsw i32 %8, 10, !dbg !57 - store i32 %add, ptr %a, align 4, !dbg !58 - %tobool = icmp ne i32 %add, 0, !dbg !59 - call void @svf_assert(i1 noundef zeroext %tobool), !dbg !60 - br label %if.end7 - -if.end7: ; preds = %if.else, %if.then5 - %9 = load i32, ptr %retval, align 4, !dbg !61 - ret i32 %9, !dbg !61 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_21-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b96937626265a22c7fdbd06d2fdfbbd6") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_21-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b96937626265a22c7fdbd06d2fdfbbd6") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 6, type: !14) -!17 = !DILocation(line: 6, column: 9, scope: !10) -!18 = !DILocalVariable(name: "b", scope: !10, file: !11, line: 7, type: !14) -!19 = !DILocation(line: 7, column: 9, scope: !10) -!20 = !DILocation(line: 7, column: 13, scope: !10) -!21 = !DILocalVariable(name: "i", scope: !22, file: !11, line: 8, type: !14) -!22 = distinct !DILexicalBlock(scope: !10, file: !11, line: 8, column: 5) -!23 = !DILocation(line: 8, column: 13, scope: !22) -!24 = !DILocation(line: 8, column: 9, scope: !22) -!25 = !DILocation(line: 8, column: 20, scope: !26) -!26 = distinct !DILexicalBlock(scope: !22, file: !11, line: 8, column: 5) -!27 = !DILocation(line: 8, column: 22, scope: !26) -!28 = !DILocation(line: 8, column: 5, scope: !22) -!29 = !DILocation(line: 9, column: 12, scope: !30) -!30 = distinct !DILexicalBlock(scope: !31, file: !11, line: 9, column: 12) -!31 = distinct !DILexicalBlock(scope: !26, file: !11, line: 8, column: 33) -!32 = !DILocation(line: 9, column: 14, scope: !30) -!33 = !DILocation(line: 9, column: 12, scope: !31) -!34 = !DILocation(line: 10, column: 13, scope: !35) -!35 = distinct !DILexicalBlock(scope: !30, file: !11, line: 9, column: 21) -!36 = !DILocation(line: 12, column: 10, scope: !31) -!37 = !DILocation(line: 13, column: 5, scope: !31) -!38 = !DILocation(line: 8, column: 29, scope: !26) -!39 = !DILocation(line: 8, column: 5, scope: !26) -!40 = distinct !{!40, !28, !41, !42} -!41 = !DILocation(line: 13, column: 5, scope: !22) -!42 = !{!"llvm.loop.mustprogress"} -!43 = !DILocation(line: 14, column: 8, scope: !44) -!44 = distinct !DILexicalBlock(scope: !10, file: !11, line: 14, column: 8) -!45 = !DILocation(line: 14, column: 10, scope: !44) -!46 = !DILocation(line: 14, column: 15, scope: !44) -!47 = !DILocation(line: 14, column: 18, scope: !44) -!48 = !DILocation(line: 14, column: 20, scope: !44) -!49 = !DILocation(line: 14, column: 8, scope: !10) -!50 = !DILocation(line: 15, column: 20, scope: !51) -!51 = distinct !DILexicalBlock(scope: !44, file: !11, line: 14, column: 27) -!52 = !DILocation(line: 15, column: 22, scope: !51) -!53 = !DILocation(line: 15, column: 9, scope: !51) -!54 = !DILocation(line: 16, column: 5, scope: !51) -!55 = !DILocation(line: 18, column: 24, scope: !56) -!56 = distinct !DILexicalBlock(scope: !44, file: !11, line: 17, column: 10) -!57 = !DILocation(line: 18, column: 26, scope: !56) -!58 = !DILocation(line: 18, column: 22, scope: !56) -!59 = !DILocation(line: 18, column: 20, scope: !56) -!60 = !DILocation(line: 18, column: 9, scope: !56) -!61 = !DILocation(line: 21, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_22-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_22-0.c.bc deleted file mode 100644 index 3a771168..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_22-0.c.bc +++ /dev/null @@ -1,104 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_22-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_22-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %i = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !18, metadata !DIExpression()), !dbg !19 - %0 = load i32, ptr %a, align 4, !dbg !20 - store i32 %0, ptr %b, align 4, !dbg !19 - call void @llvm.dbg.declare(metadata ptr %i, metadata !21, metadata !DIExpression()), !dbg !23 - store i32 0, ptr %i, align 4, !dbg !23 - br label %for.cond, !dbg !24 - -for.cond: ; preds = %for.inc, %entry - %1 = load i32, ptr %i, align 4, !dbg !25 - %cmp = icmp slt i32 %1, 3, !dbg !27 - br i1 %cmp, label %for.body, label %for.end, !dbg !28 - -for.body: ; preds = %for.cond - %2 = load i32, ptr %b, align 4, !dbg !29 - %3 = load i32, ptr %a, align 4, !dbg !31 - %mul = mul nsw i32 %2, %3, !dbg !32 - store i32 %mul, ptr %b, align 4, !dbg !33 - br label %for.inc, !dbg !34 - -for.inc: ; preds = %for.body - %4 = load i32, ptr %i, align 4, !dbg !35 - %inc = add nsw i32 %4, 1, !dbg !35 - store i32 %inc, ptr %i, align 4, !dbg !35 - br label %for.cond, !dbg !36, !llvm.loop !37 - -for.end: ; preds = %for.cond - %5 = load i32, ptr %b, align 4, !dbg !40 - %cmp1 = icmp sge i32 %5, 0, !dbg !41 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !42 - %6 = load i32, ptr %retval, align 4, !dbg !43 - ret i32 %6, !dbg !43 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_22-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "67de2157a33589c747e3256589ee30bc") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_22-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "67de2157a33589c747e3256589ee30bc") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 6, type: !14) -!17 = !DILocation(line: 6, column: 9, scope: !10) -!18 = !DILocalVariable(name: "b", scope: !10, file: !11, line: 7, type: !14) -!19 = !DILocation(line: 7, column: 9, scope: !10) -!20 = !DILocation(line: 7, column: 13, scope: !10) -!21 = !DILocalVariable(name: "i", scope: !22, file: !11, line: 8, type: !14) -!22 = distinct !DILexicalBlock(scope: !10, file: !11, line: 8, column: 5) -!23 = !DILocation(line: 8, column: 13, scope: !22) -!24 = !DILocation(line: 8, column: 9, scope: !22) -!25 = !DILocation(line: 8, column: 20, scope: !26) -!26 = distinct !DILexicalBlock(scope: !22, file: !11, line: 8, column: 5) -!27 = !DILocation(line: 8, column: 22, scope: !26) -!28 = !DILocation(line: 8, column: 5, scope: !22) -!29 = !DILocation(line: 9, column: 13, scope: !30) -!30 = distinct !DILexicalBlock(scope: !26, file: !11, line: 8, column: 32) -!31 = !DILocation(line: 9, column: 17, scope: !30) -!32 = !DILocation(line: 9, column: 15, scope: !30) -!33 = !DILocation(line: 9, column: 11, scope: !30) -!34 = !DILocation(line: 10, column: 5, scope: !30) -!35 = !DILocation(line: 8, column: 28, scope: !26) -!36 = !DILocation(line: 8, column: 5, scope: !26) -!37 = distinct !{!37, !28, !38, !39} -!38 = !DILocation(line: 10, column: 5, scope: !22) -!39 = !{!"llvm.loop.mustprogress"} -!40 = !DILocation(line: 11, column: 16, scope: !10) -!41 = !DILocation(line: 11, column: 18, scope: !10) -!42 = !DILocation(line: 11, column: 5, scope: !10) -!43 = !DILocation(line: 12, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_23-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_23-0.c.bc deleted file mode 100644 index 11f1fa39..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_23-0.c.bc +++ /dev/null @@ -1,101 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_23-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_23-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %input = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %input, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %a, metadata !18, metadata !DIExpression()), !dbg !19 - %0 = load i32, ptr %input, align 4, !dbg !20 - store i32 %0, ptr %a, align 4, !dbg !19 - call void @llvm.dbg.declare(metadata ptr %b, metadata !21, metadata !DIExpression()), !dbg !22 - %1 = load i32, ptr %b, align 4, !dbg !23 - %cmp = icmp ne i32 %1, 0, !dbg !25 - br i1 %cmp, label %if.then, label %if.end, !dbg !26 - -if.then: ; preds = %entry - %2 = load i32, ptr %a, align 4, !dbg !27 - %3 = load i32, ptr %b, align 4, !dbg !29 - %div = sdiv i32 %2, %3, !dbg !30 - %4 = load i32, ptr %b, align 4, !dbg !31 - %mul = mul nsw i32 %div, %4, !dbg !32 - %5 = load i32, ptr %a, align 4, !dbg !33 - %6 = load i32, ptr %b, align 4, !dbg !34 - %rem = srem i32 %5, %6, !dbg !35 - %add = add nsw i32 %mul, %rem, !dbg !36 - store i32 %add, ptr %a, align 4, !dbg !37 - %7 = load i32, ptr %a, align 4, !dbg !38 - %8 = load i32, ptr %input, align 4, !dbg !39 - %cmp1 = icmp eq i32 %7, %8, !dbg !40 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !41 - br label %if.end, !dbg !42 - -if.end: ; preds = %if.then, %entry - %9 = load i32, ptr %retval, align 4, !dbg !43 - ret i32 %9, !dbg !43 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_23-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a628319e4f932c28a4270e20ad7cccf9") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_23-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a628319e4f932c28a4270e20ad7cccf9") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "input", scope: !10, file: !11, line: 6, type: !14) -!17 = !DILocation(line: 6, column: 9, scope: !10) -!18 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 7, type: !14) -!19 = !DILocation(line: 7, column: 9, scope: !10) -!20 = !DILocation(line: 7, column: 13, scope: !10) -!21 = !DILocalVariable(name: "b", scope: !10, file: !11, line: 8, type: !14) -!22 = !DILocation(line: 8, column: 9, scope: !10) -!23 = !DILocation(line: 9, column: 8, scope: !24) -!24 = distinct !DILexicalBlock(scope: !10, file: !11, line: 9, column: 8) -!25 = !DILocation(line: 9, column: 10, scope: !24) -!26 = !DILocation(line: 9, column: 8, scope: !10) -!27 = !DILocation(line: 11, column: 14, scope: !28) -!28 = distinct !DILexicalBlock(scope: !24, file: !11, line: 9, column: 16) -!29 = !DILocation(line: 11, column: 18, scope: !28) -!30 = !DILocation(line: 11, column: 16, scope: !28) -!31 = !DILocation(line: 11, column: 23, scope: !28) -!32 = !DILocation(line: 11, column: 21, scope: !28) -!33 = !DILocation(line: 11, column: 27, scope: !28) -!34 = !DILocation(line: 11, column: 31, scope: !28) -!35 = !DILocation(line: 11, column: 29, scope: !28) -!36 = !DILocation(line: 11, column: 25, scope: !28) -!37 = !DILocation(line: 11, column: 11, scope: !28) -!38 = !DILocation(line: 12, column: 20, scope: !28) -!39 = !DILocation(line: 12, column: 25, scope: !28) -!40 = !DILocation(line: 12, column: 22, scope: !28) -!41 = !DILocation(line: 12, column: 9, scope: !28) -!42 = !DILocation(line: 13, column: 5, scope: !28) -!43 = !DILocation(line: 14, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_25-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_25-0.c.bc deleted file mode 100644 index e4fc522b..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_25-0.c.bc +++ /dev/null @@ -1,229 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_25-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_25-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @foo() #0 !dbg !10 { -entry: - %i = alloca i32, align 4 - %a = alloca i8, align 1 - call void @llvm.dbg.declare(metadata ptr %i, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 0, ptr %i, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %a, metadata !18, metadata !DIExpression()), !dbg !20 - store i8 1, ptr %a, align 1, !dbg !20 - br label %do.body, !dbg !21 - -do.body: ; preds = %land.end, %entry - %0 = load i32, ptr %i, align 4, !dbg !22 - %inc = add nsw i32 %0, 1, !dbg !22 - store i32 %inc, ptr %i, align 4, !dbg !22 - br label %do.cond, !dbg !24 - -do.cond: ; preds = %do.body - %1 = load i32, ptr %i, align 4, !dbg !25 - %cmp = icmp slt i32 %1, 5, !dbg !26 - br i1 %cmp, label %land.rhs, label %land.end, !dbg !27 - -land.rhs: ; preds = %do.cond - %2 = load i8, ptr %a, align 1, !dbg !28 - %tobool = trunc i8 %2 to i1, !dbg !28 - br label %land.end - -land.end: ; preds = %land.rhs, %do.cond - %3 = phi i1 [ false, %do.cond ], [ %tobool, %land.rhs ], !dbg !29 - br i1 %3, label %do.body, label %do.end, !dbg !24, !llvm.loop !30 - -do.end: ; preds = %land.end - %4 = load i32, ptr %i, align 4, !dbg !33 - ret i32 %4, !dbg !34 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @bar() #0 !dbg !35 { -entry: - %i = alloca i32, align 4 - %a = alloca i8, align 1 - call void @llvm.dbg.declare(metadata ptr %i, metadata !36, metadata !DIExpression()), !dbg !37 - store i32 0, ptr %i, align 4, !dbg !37 - call void @llvm.dbg.declare(metadata ptr %a, metadata !38, metadata !DIExpression()), !dbg !39 - store i8 0, ptr %a, align 1, !dbg !39 - br label %do.body, !dbg !40 - -do.body: ; preds = %land.end, %entry - %0 = load i32, ptr %i, align 4, !dbg !41 - %inc = add nsw i32 %0, 1, !dbg !41 - store i32 %inc, ptr %i, align 4, !dbg !41 - br label %do.cond, !dbg !43 - -do.cond: ; preds = %do.body - %1 = load i32, ptr %i, align 4, !dbg !44 - %cmp = icmp slt i32 %1, 5, !dbg !45 - br i1 %cmp, label %land.rhs, label %land.end, !dbg !46 - -land.rhs: ; preds = %do.cond - %2 = load i8, ptr %a, align 1, !dbg !47 - %tobool = trunc i8 %2 to i1, !dbg !47 - br label %land.end - -land.end: ; preds = %land.rhs, %do.cond - %3 = phi i1 [ false, %do.cond ], [ %tobool, %land.rhs ], !dbg !48 - br i1 %3, label %do.body, label %do.end, !dbg !43, !llvm.loop !49 - -do.end: ; preds = %land.end - %4 = load i32, ptr %i, align 4, !dbg !51 - ret i32 %4, !dbg !52 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !53 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %call = call i32 (i32, ...) @time(i32 noundef 0), !dbg !54 - call void @srand(i32 noundef %call) #4, !dbg !55 - call void @llvm.dbg.declare(metadata ptr %a, metadata !56, metadata !DIExpression()), !dbg !57 - %call1 = call i32 @rand() #4, !dbg !58 - %rem = srem i32 %call1, 2, !dbg !59 - store i32 %rem, ptr %a, align 4, !dbg !57 - call void @llvm.dbg.declare(metadata ptr %b, metadata !60, metadata !DIExpression()), !dbg !61 - %0 = load i32, ptr %a, align 4, !dbg !62 - %tobool = icmp ne i32 %0, 0, !dbg !63 - br i1 %tobool, label %cond.true, label %cond.false, !dbg !63 - -cond.true: ; preds = %entry - %call2 = call i32 @foo(), !dbg !64 - br label %cond.end, !dbg !63 - -cond.false: ; preds = %entry - %call3 = call i32 @bar(), !dbg !65 - br label %cond.end, !dbg !63 - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i32 [ %call2, %cond.true ], [ %call3, %cond.false ], !dbg !63 - store i32 %cond, ptr %b, align 4, !dbg !61 - %1 = load i32, ptr %a, align 4, !dbg !66 - %tobool4 = icmp ne i32 %1, 0, !dbg !66 - br i1 %tobool4, label %if.then, label %if.else, !dbg !68 - -if.then: ; preds = %cond.end - %2 = load i32, ptr %b, align 4, !dbg !69 - %cmp = icmp eq i32 %2, 5, !dbg !71 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !72 - br label %if.end, !dbg !73 - -if.else: ; preds = %cond.end - %3 = load i32, ptr %b, align 4, !dbg !74 - %cmp5 = icmp eq i32 %3, 1, !dbg !76 - call void @svf_assert(i1 noundef zeroext %cmp5), !dbg !77 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %4 = load i32, ptr %retval, align 4, !dbg !78 - ret i32 %4, !dbg !78 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -declare i32 @time(...) #3 - -; Function Attrs: nounwind -declare i32 @rand() #2 - -declare void @svf_assert(i1 noundef zeroext) #3 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_25-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "2dae8315ed920f40afab70bf069c8ba4") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "foo", scope: !11, file: !11, line: 7, type: !12, scopeLine: 7, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_25-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "2dae8315ed920f40afab70bf069c8ba4") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "i", scope: !10, file: !11, line: 8, type: !14) -!17 = !DILocation(line: 8, column: 9, scope: !10) -!18 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 9, type: !19) -!19 = !DIBasicType(name: "_Bool", size: 8, encoding: DW_ATE_boolean) -!20 = !DILocation(line: 9, column: 10, scope: !10) -!21 = !DILocation(line: 10, column: 5, scope: !10) -!22 = !DILocation(line: 11, column: 10, scope: !23) -!23 = distinct !DILexicalBlock(scope: !10, file: !11, line: 10, column: 8) -!24 = !DILocation(line: 12, column: 5, scope: !23) -!25 = !DILocation(line: 12, column: 13, scope: !10) -!26 = !DILocation(line: 12, column: 15, scope: !10) -!27 = !DILocation(line: 12, column: 19, scope: !10) -!28 = !DILocation(line: 12, column: 22, scope: !10) -!29 = !DILocation(line: 0, scope: !10) -!30 = distinct !{!30, !21, !31, !32} -!31 = !DILocation(line: 12, column: 23, scope: !10) -!32 = !{!"llvm.loop.mustprogress"} -!33 = !DILocation(line: 13, column: 12, scope: !10) -!34 = !DILocation(line: 13, column: 5, scope: !10) -!35 = distinct !DISubprogram(name: "bar", scope: !11, file: !11, line: 16, type: !12, scopeLine: 16, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!36 = !DILocalVariable(name: "i", scope: !35, file: !11, line: 17, type: !14) -!37 = !DILocation(line: 17, column: 9, scope: !35) -!38 = !DILocalVariable(name: "a", scope: !35, file: !11, line: 18, type: !19) -!39 = !DILocation(line: 18, column: 10, scope: !35) -!40 = !DILocation(line: 19, column: 5, scope: !35) -!41 = !DILocation(line: 20, column: 10, scope: !42) -!42 = distinct !DILexicalBlock(scope: !35, file: !11, line: 19, column: 8) -!43 = !DILocation(line: 21, column: 5, scope: !42) -!44 = !DILocation(line: 21, column: 13, scope: !35) -!45 = !DILocation(line: 21, column: 15, scope: !35) -!46 = !DILocation(line: 21, column: 19, scope: !35) -!47 = !DILocation(line: 21, column: 22, scope: !35) -!48 = !DILocation(line: 0, scope: !35) -!49 = distinct !{!49, !40, !50, !32} -!50 = !DILocation(line: 21, column: 23, scope: !35) -!51 = !DILocation(line: 22, column: 12, scope: !35) -!52 = !DILocation(line: 22, column: 5, scope: !35) -!53 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 25, type: !12, scopeLine: 25, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!54 = !DILocation(line: 26, column: 8, scope: !53) -!55 = !DILocation(line: 26, column: 2, scope: !53) -!56 = !DILocalVariable(name: "a", scope: !53, file: !11, line: 27, type: !14) -!57 = !DILocation(line: 27, column: 6, scope: !53) -!58 = !DILocation(line: 27, column: 10, scope: !53) -!59 = !DILocation(line: 27, column: 17, scope: !53) -!60 = !DILocalVariable(name: "b", scope: !53, file: !11, line: 28, type: !14) -!61 = !DILocation(line: 28, column: 9, scope: !53) -!62 = !DILocation(line: 28, column: 14, scope: !53) -!63 = !DILocation(line: 28, column: 13, scope: !53) -!64 = !DILocation(line: 28, column: 19, scope: !53) -!65 = !DILocation(line: 28, column: 27, scope: !53) -!66 = !DILocation(line: 29, column: 8, scope: !67) -!67 = distinct !DILexicalBlock(scope: !53, file: !11, line: 29, column: 8) -!68 = !DILocation(line: 29, column: 8, scope: !53) -!69 = !DILocation(line: 30, column: 20, scope: !70) -!70 = distinct !DILexicalBlock(scope: !67, file: !11, line: 29, column: 11) -!71 = !DILocation(line: 30, column: 22, scope: !70) -!72 = !DILocation(line: 30, column: 9, scope: !70) -!73 = !DILocation(line: 31, column: 5, scope: !70) -!74 = !DILocation(line: 33, column: 20, scope: !75) -!75 = distinct !DILexicalBlock(scope: !67, file: !11, line: 32, column: 10) -!76 = !DILocation(line: 33, column: 22, scope: !75) -!77 = !DILocation(line: 33, column: 9, scope: !75) -!78 = !DILocation(line: 35, column: 1, scope: !53) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_26-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_26-0.c.bc deleted file mode 100644 index d78870ca..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_26-0.c.bc +++ /dev/null @@ -1,73 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_26-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_26-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - %0 = load i32, ptr %a, align 4, !dbg !18 - %rem = srem i32 %0, 5, !dbg !19 - store i32 %rem, ptr %a, align 4, !dbg !20 - %1 = load i32, ptr %a, align 4, !dbg !21 - %cmp = icmp sge i32 %1, 0, !dbg !22 - br i1 %cmp, label %land.rhs, label %land.end, !dbg !23 - -land.rhs: ; preds = %entry - %2 = load i32, ptr %a, align 4, !dbg !24 - %cmp1 = icmp slt i32 %2, 5, !dbg !25 - br label %land.end - -land.end: ; preds = %land.rhs, %entry - %3 = phi i1 [ false, %entry ], [ %cmp1, %land.rhs ], !dbg !26 - call void @svf_assert(i1 noundef zeroext %3), !dbg !27 - %4 = load i32, ptr %retval, align 4, !dbg !28 - ret i32 %4, !dbg !28 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_26-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3fafae0de351d01c5fcd36cf166605cc") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_26-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3fafae0de351d01c5fcd36cf166605cc") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 6, type: !14) -!17 = !DILocation(line: 6, column: 9, scope: !10) -!18 = !DILocation(line: 7, column: 9, scope: !10) -!19 = !DILocation(line: 7, column: 11, scope: !10) -!20 = !DILocation(line: 7, column: 7, scope: !10) -!21 = !DILocation(line: 8, column: 16, scope: !10) -!22 = !DILocation(line: 8, column: 18, scope: !10) -!23 = !DILocation(line: 8, column: 23, scope: !10) -!24 = !DILocation(line: 8, column: 26, scope: !10) -!25 = !DILocation(line: 8, column: 28, scope: !10) -!26 = !DILocation(line: 0, scope: !10) -!27 = !DILocation(line: 8, column: 5, scope: !10) -!28 = !DILocation(line: 9, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_27-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_27-0.c.bc deleted file mode 100644 index b8825a74..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_27-0.c.bc +++ /dev/null @@ -1,162 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_27-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_27-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !30 { -entry: - %retval = alloca i32, align 4 - %randomNumber = alloca i32, align 4 - %ch = alloca i8, align 1 - store i32 0, ptr %retval, align 4 - %call = call i32 (i32, ...) @time(i32 noundef 0), !dbg !35 - call void @srand(i32 noundef %call) #5, !dbg !36 - call void @llvm.dbg.declare(metadata ptr %randomNumber, metadata !37, metadata !DIExpression()), !dbg !38 - %call1 = call i32 @rand() #5, !dbg !39 - %rem = srem i32 %call1, 128, !dbg !40 - store i32 %rem, ptr %randomNumber, align 4, !dbg !38 - call void @llvm.dbg.declare(metadata ptr %ch, metadata !41, metadata !DIExpression()), !dbg !43 - %0 = load i32, ptr %randomNumber, align 4, !dbg !44 - %conv = trunc i32 %0 to i8, !dbg !44 - store i8 %conv, ptr %ch, align 1, !dbg !43 - %call2 = call ptr @__ctype_b_loc() #6, !dbg !45 - %1 = load ptr, ptr %call2, align 8, !dbg !45 - %2 = load i8, ptr %ch, align 1, !dbg !45 - %conv3 = sext i8 %2 to i32, !dbg !45 - %idxprom = sext i32 %conv3 to i64, !dbg !45 - %arrayidx = getelementptr inbounds i16, ptr %1, i64 %idxprom, !dbg !45 - %3 = load i16, ptr %arrayidx, align 2, !dbg !45 - %conv4 = zext i16 %3 to i32, !dbg !45 - %and = and i32 %conv4, 2048, !dbg !45 - %tobool = icmp ne i32 %and, 0, !dbg !45 - br i1 %tobool, label %if.then, label %if.else, !dbg !47 - -if.then: ; preds = %entry - %4 = load i32, ptr %randomNumber, align 4, !dbg !48 - %cmp = icmp sge i32 %4, 48, !dbg !50 - br i1 %cmp, label %land.rhs, label %land.end, !dbg !51 - -land.rhs: ; preds = %if.then - %5 = load i32, ptr %randomNumber, align 4, !dbg !52 - %cmp6 = icmp sle i32 %5, 57, !dbg !53 - br label %land.end - -land.end: ; preds = %land.rhs, %if.then - %6 = phi i1 [ false, %if.then ], [ %cmp6, %land.rhs ], !dbg !54 - call void @svf_assert(i1 noundef zeroext %6), !dbg !55 - br label %if.end, !dbg !56 - -if.else: ; preds = %entry - %7 = load i32, ptr %randomNumber, align 4, !dbg !57 - %cmp8 = icmp slt i32 %7, 48, !dbg !59 - br i1 %cmp8, label %lor.end, label %lor.rhs, !dbg !60 - -lor.rhs: ; preds = %if.else - %8 = load i32, ptr %randomNumber, align 4, !dbg !61 - %cmp10 = icmp sgt i32 %8, 57, !dbg !62 - br label %lor.end, !dbg !60 - -lor.end: ; preds = %lor.rhs, %if.else - %9 = phi i1 [ true, %if.else ], [ %cmp10, %lor.rhs ] - call void @svf_assert(i1 noundef zeroext %9), !dbg !63 - br label %if.end - -if.end: ; preds = %lor.end, %land.end - %10 = load i32, ptr %retval, align 4, !dbg !64 - ret i32 %10, !dbg !64 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #1 - -declare i32 @time(...) #2 - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #3 - -; Function Attrs: nounwind -declare i32 @rand() #1 - -; Function Attrs: nounwind willreturn memory(none) -declare ptr @__ctype_b_loc() #4 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #4 = { nounwind willreturn memory(none) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { nounwind willreturn memory(none) } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!22, !23, !24, !25, !26, !27, !28} -!llvm.ident = !{!29} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !19, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_27-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3c0300265501008af03ce1f49cf4c1fe") -!2 = !{!3} -!3 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !4, line: 46, baseType: !5, size: 32, elements: !6) -!4 = !DIFile(filename: "/usr/include/ctype.h", directory: "", checksumkind: CSK_MD5, checksum: "36575f934ef4fe7e9d50a3cb17bd5c66") -!5 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!6 = !{!7, !8, !9, !10, !11, !12, !13, !14, !15, !16, !17, !18} -!7 = !DIEnumerator(name: "_ISupper", value: 256) -!8 = !DIEnumerator(name: "_ISlower", value: 512) -!9 = !DIEnumerator(name: "_ISalpha", value: 1024) -!10 = !DIEnumerator(name: "_ISdigit", value: 2048) -!11 = !DIEnumerator(name: "_ISxdigit", value: 4096) -!12 = !DIEnumerator(name: "_ISspace", value: 8192) -!13 = !DIEnumerator(name: "_ISprint", value: 16384) -!14 = !DIEnumerator(name: "_ISgraph", value: 32768) -!15 = !DIEnumerator(name: "_ISblank", value: 1) -!16 = !DIEnumerator(name: "_IScntrl", value: 2) -!17 = !DIEnumerator(name: "_ISpunct", value: 4) -!18 = !DIEnumerator(name: "_ISalnum", value: 8) -!19 = !{!20, !21} -!20 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!21 = !DIBasicType(name: "unsigned short", size: 16, encoding: DW_ATE_unsigned) -!22 = !{i32 7, !"Dwarf Version", i32 5} -!23 = !{i32 2, !"Debug Info Version", i32 3} -!24 = !{i32 1, !"wchar_size", i32 4} -!25 = !{i32 8, !"PIC Level", i32 2} -!26 = !{i32 7, !"PIE Level", i32 2} -!27 = !{i32 7, !"uwtable", i32 2} -!28 = !{i32 7, !"frame-pointer", i32 2} -!29 = !{!"clang version 16.0.0"} -!30 = distinct !DISubprogram(name: "main", scope: !31, file: !31, line: 7, type: !32, scopeLine: 7, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !34) -!31 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_27-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3c0300265501008af03ce1f49cf4c1fe") -!32 = !DISubroutineType(types: !33) -!33 = !{!20} -!34 = !{} -!35 = !DILocation(line: 8, column: 11, scope: !30) -!36 = !DILocation(line: 8, column: 5, scope: !30) -!37 = !DILocalVariable(name: "randomNumber", scope: !30, file: !31, line: 9, type: !20) -!38 = !DILocation(line: 9, column: 6, scope: !30) -!39 = !DILocation(line: 9, column: 21, scope: !30) -!40 = !DILocation(line: 9, column: 28, scope: !30) -!41 = !DILocalVariable(name: "ch", scope: !30, file: !31, line: 10, type: !42) -!42 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!43 = !DILocation(line: 10, column: 10, scope: !30) -!44 = !DILocation(line: 10, column: 15, scope: !30) -!45 = !DILocation(line: 11, column: 9, scope: !46) -!46 = distinct !DILexicalBlock(scope: !30, file: !31, line: 11, column: 9) -!47 = !DILocation(line: 11, column: 9, scope: !30) -!48 = !DILocation(line: 12, column: 14, scope: !49) -!49 = distinct !DILexicalBlock(scope: !46, file: !31, line: 11, column: 22) -!50 = !DILocation(line: 12, column: 27, scope: !49) -!51 = !DILocation(line: 12, column: 33, scope: !49) -!52 = !DILocation(line: 12, column: 36, scope: !49) -!53 = !DILocation(line: 12, column: 49, scope: !49) -!54 = !DILocation(line: 0, scope: !49) -!55 = !DILocation(line: 12, column: 3, scope: !49) -!56 = !DILocation(line: 13, column: 5, scope: !49) -!57 = !DILocation(line: 15, column: 14, scope: !58) -!58 = distinct !DILexicalBlock(scope: !46, file: !31, line: 14, column: 10) -!59 = !DILocation(line: 15, column: 27, scope: !58) -!60 = !DILocation(line: 15, column: 32, scope: !58) -!61 = !DILocation(line: 15, column: 35, scope: !58) -!62 = !DILocation(line: 15, column: 48, scope: !58) -!63 = !DILocation(line: 15, column: 3, scope: !58) -!64 = !DILocation(line: 17, column: 1, scope: !30) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_29-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_29-0.c.bc deleted file mode 100644 index a4303d93..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_29-0.c.bc +++ /dev/null @@ -1,100 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_29-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_29-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %ch = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %ch, metadata !16, metadata !DIExpression()), !dbg !17 - %0 = load i32, ptr %ch, align 4, !dbg !18 - %cmp = icmp sge i32 %0, 97, !dbg !20 - br i1 %cmp, label %land.lhs.true, label %if.end, !dbg !21 - -land.lhs.true: ; preds = %entry - %1 = load i32, ptr %ch, align 4, !dbg !22 - %cmp1 = icmp sle i32 %1, 122, !dbg !23 - br i1 %cmp1, label %if.then, label %if.end, !dbg !24 - -if.then: ; preds = %land.lhs.true - %2 = load i32, ptr %ch, align 4, !dbg !25 - %call = call i32 @toupper(i32 noundef %2) #4, !dbg !27 - store i32 %call, ptr %ch, align 4, !dbg !28 - %3 = load i32, ptr %ch, align 4, !dbg !29 - %cmp2 = icmp sge i32 %3, 65, !dbg !30 - br i1 %cmp2, label %land.rhs, label %land.end, !dbg !31 - -land.rhs: ; preds = %if.then - %4 = load i32, ptr %ch, align 4, !dbg !32 - %cmp3 = icmp sle i32 %4, 90, !dbg !33 - br label %land.end - -land.end: ; preds = %land.rhs, %if.then - %5 = phi i1 [ false, %if.then ], [ %cmp3, %land.rhs ], !dbg !34 - call void @svf_assert(i1 noundef zeroext %5), !dbg !35 - br label %if.end, !dbg !36 - -if.end: ; preds = %land.end, %land.lhs.true, %entry - %6 = load i32, ptr %retval, align 4, !dbg !37 - ret i32 %6, !dbg !37 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind willreturn memory(read) -declare i32 @toupper(i32 noundef) #2 - -declare void @svf_assert(i1 noundef zeroext) #3 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind willreturn memory(read) } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_29-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7659936f8f2c44336980a16f016090d9") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 7, type: !12, scopeLine: 7, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_29-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7659936f8f2c44336980a16f016090d9") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "ch", scope: !10, file: !11, line: 8, type: !14) -!17 = !DILocation(line: 8, column: 6, scope: !10) -!18 = !DILocation(line: 9, column: 6, scope: !19) -!19 = distinct !DILexicalBlock(scope: !10, file: !11, line: 9, column: 6) -!20 = !DILocation(line: 9, column: 9, scope: !19) -!21 = !DILocation(line: 9, column: 15, scope: !19) -!22 = !DILocation(line: 9, column: 18, scope: !19) -!23 = !DILocation(line: 9, column: 21, scope: !19) -!24 = !DILocation(line: 9, column: 6, scope: !10) -!25 = !DILocation(line: 10, column: 16, scope: !26) -!26 = distinct !DILexicalBlock(scope: !19, file: !11, line: 9, column: 29) -!27 = !DILocation(line: 10, column: 8, scope: !26) -!28 = !DILocation(line: 10, column: 6, scope: !26) -!29 = !DILocation(line: 11, column: 14, scope: !26) -!30 = !DILocation(line: 11, column: 17, scope: !26) -!31 = !DILocation(line: 11, column: 23, scope: !26) -!32 = !DILocation(line: 11, column: 26, scope: !26) -!33 = !DILocation(line: 11, column: 29, scope: !26) -!34 = !DILocation(line: 0, scope: !26) -!35 = !DILocation(line: 11, column: 3, scope: !26) -!36 = !DILocation(line: 12, column: 2, scope: !26) -!37 = !DILocation(line: 13, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_30-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_30-0.c.bc deleted file mode 100644 index e2d9da5b..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_30-0.c.bc +++ /dev/null @@ -1,106 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_30-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_30-0.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [9 x i8] c"Value:%d\00", align 1, !dbg !0 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !18 { -entry: - %retval = alloca i32, align 4 - %randomNumber = alloca i32, align 4 - %i = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %call = call i32 (i32, ...) @time(i32 noundef 0), !dbg !23 - call void @srand(i32 noundef %call) #4, !dbg !24 - call void @llvm.dbg.declare(metadata ptr %randomNumber, metadata !25, metadata !DIExpression()), !dbg !26 - %call1 = call i32 @rand() #4, !dbg !27 - %rem = srem i32 %call1, 999, !dbg !28 - store i32 %rem, ptr %randomNumber, align 4, !dbg !26 - call void @llvm.dbg.declare(metadata ptr %i, metadata !29, metadata !DIExpression()), !dbg !30 - %0 = load i32, ptr %randomNumber, align 4, !dbg !31 - %call2 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %0), !dbg !32 - store i32 %call2, ptr %i, align 4, !dbg !30 - %1 = load i32, ptr %i, align 4, !dbg !33 - %cmp = icmp sge i32 %1, 7, !dbg !34 - br i1 %cmp, label %land.rhs, label %land.end, !dbg !35 - -land.rhs: ; preds = %entry - %2 = load i32, ptr %i, align 4, !dbg !36 - %cmp3 = icmp sle i32 %2, 9, !dbg !37 - br label %land.end - -land.end: ; preds = %land.rhs, %entry - %3 = phi i1 [ false, %entry ], [ %cmp3, %land.rhs ], !dbg !38 - call void @svf_assert(i1 noundef zeroext %3), !dbg !39 - %4 = load i32, ptr %retval, align 4, !dbg !40 - ret i32 %4, !dbg !40 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #1 - -declare i32 @time(...) #2 - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #3 - -; Function Attrs: nounwind -declare i32 @rand() #1 - -declare i32 @printf(ptr noundef, ...) #2 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #4 = { nounwind } - -!llvm.dbg.cu = !{!7} -!llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} -!llvm.ident = !{!17} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 10, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_30-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d11ac7b5f7720321357f77e13061dcc3") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 72, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 9) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_30-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d11ac7b5f7720321357f77e13061dcc3") -!9 = !{!0} -!10 = !{i32 7, !"Dwarf Version", i32 5} -!11 = !{i32 2, !"Debug Info Version", i32 3} -!12 = !{i32 1, !"wchar_size", i32 4} -!13 = !{i32 8, !"PIC Level", i32 2} -!14 = !{i32 7, !"PIE Level", i32 2} -!15 = !{i32 7, !"uwtable", i32 2} -!16 = !{i32 7, !"frame-pointer", i32 2} -!17 = !{!"clang version 16.0.0"} -!18 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 7, type: !19, scopeLine: 7, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !22) -!19 = !DISubroutineType(types: !20) -!20 = !{!21} -!21 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!22 = !{} -!23 = !DILocation(line: 8, column: 11, scope: !18) -!24 = !DILocation(line: 8, column: 5, scope: !18) -!25 = !DILocalVariable(name: "randomNumber", scope: !18, file: !2, line: 9, type: !21) -!26 = !DILocation(line: 9, column: 6, scope: !18) -!27 = !DILocation(line: 9, column: 21, scope: !18) -!28 = !DILocation(line: 9, column: 28, scope: !18) -!29 = !DILocalVariable(name: "i", scope: !18, file: !2, line: 10, type: !21) -!30 = !DILocation(line: 10, column: 6, scope: !18) -!31 = !DILocation(line: 10, column: 29, scope: !18) -!32 = !DILocation(line: 10, column: 10, scope: !18) -!33 = !DILocation(line: 11, column: 13, scope: !18) -!34 = !DILocation(line: 11, column: 15, scope: !18) -!35 = !DILocation(line: 11, column: 20, scope: !18) -!36 = !DILocation(line: 11, column: 23, scope: !18) -!37 = !DILocation(line: 11, column: 25, scope: !18) -!38 = !DILocation(line: 0, scope: !18) -!39 = !DILocation(line: 11, column: 2, scope: !18) -!40 = !DILocation(line: 12, column: 1, scope: !18) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_31-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_31-0.c.bc deleted file mode 100644 index b173fe26..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_31-0.c.bc +++ /dev/null @@ -1,135 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_31-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_31-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !18, metadata !DIExpression()), !dbg !19 - %0 = load i32, ptr %a, align 4, !dbg !20 - store i32 %0, ptr %b, align 4, !dbg !19 - br label %loopStart, !dbg !21 - -loopStart: ; preds = %if.then, %entry - call void @llvm.dbg.label(metadata !22), !dbg !23 - br label %do.body, !dbg !24 - -do.body: ; preds = %do.cond, %loopStart - %1 = load i32, ptr %a, align 4, !dbg !25 - %2 = load i32, ptr %b, align 4, !dbg !28 - %cmp = icmp eq i32 %1, %2, !dbg !29 - br i1 %cmp, label %if.then, label %if.end, !dbg !30 - -if.then: ; preds = %do.body - %3 = load i32, ptr %a, align 4, !dbg !31 - %inc = add nsw i32 %3, 1, !dbg !31 - store i32 %inc, ptr %a, align 4, !dbg !31 - br label %loopStart, !dbg !33 - -if.end: ; preds = %do.body - %4 = load i32, ptr %a, align 4, !dbg !34 - %inc1 = add nsw i32 %4, 1, !dbg !34 - store i32 %inc1, ptr %a, align 4, !dbg !34 - %5 = load i32, ptr %b, align 4, !dbg !35 - %inc2 = add nsw i32 %5, 1, !dbg !35 - store i32 %inc2, ptr %b, align 4, !dbg !35 - br label %do.cond, !dbg !36 - -do.cond: ; preds = %if.end - %6 = load i32, ptr %a, align 4, !dbg !37 - %cmp3 = icmp slt i32 %6, 15, !dbg !38 - br i1 %cmp3, label %do.body, label %do.end, !dbg !36, !llvm.loop !39 - -do.end: ; preds = %do.cond - %7 = load i32, ptr %b, align 4, !dbg !42 - %8 = load i32, ptr %a, align 4, !dbg !43 - %sub = sub nsw i32 %8, 1, !dbg !44 - %cmp4 = icmp eq i32 %7, %sub, !dbg !45 - br i1 %cmp4, label %land.rhs, label %land.end, !dbg !46 - -land.rhs: ; preds = %do.end - %9 = load i32, ptr %a, align 4, !dbg !47 - %cmp5 = icmp sge i32 %9, 15, !dbg !48 - br label %land.end - -land.end: ; preds = %land.rhs, %do.end - %10 = phi i1 [ false, %do.end ], [ %cmp5, %land.rhs ], !dbg !49 - call void @svf_assert(i1 noundef zeroext %10), !dbg !50 - %11 = load i32, ptr %retval, align 4, !dbg !51 - ret i32 %11, !dbg !51 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.label(metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_31-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fa89b90d7214b120c0459251f561b039") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_31-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fa89b90d7214b120c0459251f561b039") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 6, type: !14) -!17 = !DILocation(line: 6, column: 8, scope: !10) -!18 = !DILocalVariable(name: "b", scope: !10, file: !11, line: 7, type: !14) -!19 = !DILocation(line: 7, column: 8, scope: !10) -!20 = !DILocation(line: 7, column: 12, scope: !10) -!21 = !DILocation(line: 7, column: 4, scope: !10) -!22 = !DILabel(scope: !10, name: "loopStart", file: !11, line: 8) -!23 = !DILocation(line: 8, column: 4, scope: !10) -!24 = !DILocation(line: 8, column: 15, scope: !10) -!25 = !DILocation(line: 9, column: 10, scope: !26) -!26 = distinct !DILexicalBlock(scope: !27, file: !11, line: 9, column: 10) -!27 = distinct !DILexicalBlock(scope: !10, file: !11, line: 8, column: 18) -!28 = !DILocation(line: 9, column: 15, scope: !26) -!29 = !DILocation(line: 9, column: 12, scope: !26) -!30 = !DILocation(line: 9, column: 10, scope: !27) -!31 = !DILocation(line: 10, column: 11, scope: !32) -!32 = distinct !DILexicalBlock(scope: !26, file: !11, line: 9, column: 18) -!33 = !DILocation(line: 11, column: 10, scope: !32) -!34 = !DILocation(line: 13, column: 8, scope: !27) -!35 = !DILocation(line: 14, column: 8, scope: !27) -!36 = !DILocation(line: 15, column: 4, scope: !27) -!37 = !DILocation(line: 15, column: 12, scope: !10) -!38 = !DILocation(line: 15, column: 14, scope: !10) -!39 = distinct !{!39, !24, !40, !41} -!40 = !DILocation(line: 15, column: 18, scope: !10) -!41 = !{!"llvm.loop.mustprogress"} -!42 = !DILocation(line: 16, column: 15, scope: !10) -!43 = !DILocation(line: 16, column: 20, scope: !10) -!44 = !DILocation(line: 16, column: 22, scope: !10) -!45 = !DILocation(line: 16, column: 17, scope: !10) -!46 = !DILocation(line: 16, column: 26, scope: !10) -!47 = !DILocation(line: 16, column: 29, scope: !10) -!48 = !DILocation(line: 16, column: 31, scope: !10) -!49 = !DILocation(line: 0, scope: !10) -!50 = !DILocation(line: 16, column: 4, scope: !10) -!51 = !DILocation(line: 17, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_32-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_32-0.c.bc deleted file mode 100644 index 03e2e3fe..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_32-0.c.bc +++ /dev/null @@ -1,146 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_32-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_32-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @digitCount(i32 noundef %i) #0 !dbg !10 { -entry: - %i.addr = alloca i32, align 4 - %counter = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %counter, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 0, ptr %counter, align 4, !dbg !19 - br label %do.body, !dbg !20 - -do.body: ; preds = %do.cond, %entry - %0 = load i32, ptr %i.addr, align 4, !dbg !21 - %div = sdiv i32 %0, 10, !dbg !23 - store i32 %div, ptr %i.addr, align 4, !dbg !24 - %1 = load i32, ptr %counter, align 4, !dbg !25 - %inc = add nsw i32 %1, 1, !dbg !25 - store i32 %inc, ptr %counter, align 4, !dbg !25 - br label %do.cond, !dbg !26 - -do.cond: ; preds = %do.body - %2 = load i32, ptr %i.addr, align 4, !dbg !27 - %cmp = icmp ne i32 %2, 0, !dbg !28 - br i1 %cmp, label %do.body, label %do.end, !dbg !26, !llvm.loop !29 - -do.end: ; preds = %do.cond - %3 = load i32, ptr %counter, align 4, !dbg !32 - ret i32 %3, !dbg !33 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !34 { -entry: - %retval = alloca i32, align 4 - %randomNumber = alloca i32, align 4 - %counter = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %call = call i32 (i32, ...) @time(i32 noundef 0), !dbg !37 - call void @srand(i32 noundef %call) #4, !dbg !38 - call void @llvm.dbg.declare(metadata ptr %randomNumber, metadata !39, metadata !DIExpression()), !dbg !40 - %call1 = call i32 @rand() #4, !dbg !41 - %rem = srem i32 %call1, 999, !dbg !42 - store i32 %rem, ptr %randomNumber, align 4, !dbg !40 - call void @llvm.dbg.declare(metadata ptr %counter, metadata !43, metadata !DIExpression()), !dbg !44 - %0 = load i32, ptr %randomNumber, align 4, !dbg !45 - %call2 = call i32 @digitCount(i32 noundef %0), !dbg !46 - store i32 %call2, ptr %counter, align 4, !dbg !44 - %1 = load i32, ptr %counter, align 4, !dbg !47 - %cmp = icmp sge i32 %1, 1, !dbg !48 - br i1 %cmp, label %land.rhs, label %land.end, !dbg !49 - -land.rhs: ; preds = %entry - %2 = load i32, ptr %counter, align 4, !dbg !50 - %cmp3 = icmp sle i32 %2, 3, !dbg !51 - br label %land.end - -land.end: ; preds = %land.rhs, %entry - %3 = phi i1 [ false, %entry ], [ %cmp3, %land.rhs ], !dbg !52 - call void @svf_assert(i1 noundef zeroext %3), !dbg !53 - %4 = load i32, ptr %retval, align 4, !dbg !54 - ret i32 %4, !dbg !54 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -declare i32 @time(...) #3 - -; Function Attrs: nounwind -declare i32 @rand() #2 - -declare void @svf_assert(i1 noundef zeroext) #3 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_32-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "be950e0e2521203d218d0cbfe78365f5") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "digitCount", scope: !11, file: !11, line: 7, type: !12, scopeLine: 7, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_32-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "be950e0e2521203d218d0cbfe78365f5") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "i", arg: 1, scope: !10, file: !11, line: 7, type: !14) -!17 = !DILocation(line: 7, column: 20, scope: !10) -!18 = !DILocalVariable(name: "counter", scope: !10, file: !11, line: 8, type: !14) -!19 = !DILocation(line: 8, column: 9, scope: !10) -!20 = !DILocation(line: 9, column: 5, scope: !10) -!21 = !DILocation(line: 10, column: 13, scope: !22) -!22 = distinct !DILexicalBlock(scope: !10, file: !11, line: 9, column: 8) -!23 = !DILocation(line: 10, column: 14, scope: !22) -!24 = !DILocation(line: 10, column: 11, scope: !22) -!25 = !DILocation(line: 11, column: 16, scope: !22) -!26 = !DILocation(line: 12, column: 5, scope: !22) -!27 = !DILocation(line: 12, column: 13, scope: !10) -!28 = !DILocation(line: 12, column: 15, scope: !10) -!29 = distinct !{!29, !20, !30, !31} -!30 = !DILocation(line: 12, column: 19, scope: !10) -!31 = !{!"llvm.loop.mustprogress"} -!32 = !DILocation(line: 13, column: 12, scope: !10) -!33 = !DILocation(line: 13, column: 5, scope: !10) -!34 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 16, type: !35, scopeLine: 16, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!35 = !DISubroutineType(types: !36) -!36 = !{!14} -!37 = !DILocation(line: 17, column: 11, scope: !34) -!38 = !DILocation(line: 17, column: 5, scope: !34) -!39 = !DILocalVariable(name: "randomNumber", scope: !34, file: !11, line: 18, type: !14) -!40 = !DILocation(line: 18, column: 6, scope: !34) -!41 = !DILocation(line: 18, column: 21, scope: !34) -!42 = !DILocation(line: 18, column: 28, scope: !34) -!43 = !DILocalVariable(name: "counter", scope: !34, file: !11, line: 19, type: !14) -!44 = !DILocation(line: 19, column: 9, scope: !34) -!45 = !DILocation(line: 19, column: 30, scope: !34) -!46 = !DILocation(line: 19, column: 19, scope: !34) -!47 = !DILocation(line: 20, column: 16, scope: !34) -!48 = !DILocation(line: 20, column: 24, scope: !34) -!49 = !DILocation(line: 20, column: 29, scope: !34) -!50 = !DILocation(line: 20, column: 32, scope: !34) -!51 = !DILocation(line: 20, column: 40, scope: !34) -!52 = !DILocation(line: 0, scope: !34) -!53 = !DILocation(line: 20, column: 5, scope: !34) -!54 = !DILocation(line: 21, column: 1, scope: !34) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_33-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_33-0.c.bc deleted file mode 100644 index 425168ac..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_33-0.c.bc +++ /dev/null @@ -1,145 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_33-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_33-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @digitCount(i32 noundef %i) #0 !dbg !10 { -entry: - %i.addr = alloca i32, align 4 - %counter = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %counter, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 0, ptr %counter, align 4, !dbg !19 - %0 = load i32, ptr %i.addr, align 4, !dbg !20 - %cmp = icmp eq i32 %0, 0, !dbg !21 - br i1 %cmp, label %cond.true, label %cond.false, !dbg !22 - -cond.true: ; preds = %entry - br label %cond.end, !dbg !22 - -cond.false: ; preds = %entry - %1 = load i32, ptr %i.addr, align 4, !dbg !23 - %conv = sitofp i32 %1 to double, !dbg !23 - %call = call double @log10(double noundef %conv) #4, !dbg !24 - %add = fadd double %call, 1.000000e+00, !dbg !25 - br label %cond.end, !dbg !22 - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi double [ 1.000000e+00, %cond.true ], [ %add, %cond.false ], !dbg !22 - %conv1 = fptosi double %cond to i32, !dbg !22 - store i32 %conv1, ptr %counter, align 4, !dbg !26 - %2 = load i32, ptr %counter, align 4, !dbg !27 - ret i32 %2, !dbg !28 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare double @log10(double noundef) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !29 { -entry: - %retval = alloca i32, align 4 - %randomNumber = alloca i32, align 4 - %counter = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %call = call i32 (i32, ...) @time(i32 noundef 0), !dbg !32 - call void @srand(i32 noundef %call) #4, !dbg !33 - call void @llvm.dbg.declare(metadata ptr %randomNumber, metadata !34, metadata !DIExpression()), !dbg !35 - %call1 = call i32 @rand() #4, !dbg !36 - %rem = srem i32 %call1, 999, !dbg !37 - store i32 %rem, ptr %randomNumber, align 4, !dbg !35 - call void @llvm.dbg.declare(metadata ptr %counter, metadata !38, metadata !DIExpression()), !dbg !39 - %0 = load i32, ptr %randomNumber, align 4, !dbg !40 - %call2 = call i32 @digitCount(i32 noundef %0), !dbg !41 - store i32 %call2, ptr %counter, align 4, !dbg !39 - %1 = load i32, ptr %counter, align 4, !dbg !42 - %cmp = icmp sge i32 %1, 1, !dbg !43 - br i1 %cmp, label %land.rhs, label %land.end, !dbg !44 - -land.rhs: ; preds = %entry - %2 = load i32, ptr %counter, align 4, !dbg !45 - %cmp3 = icmp sle i32 %2, 3, !dbg !46 - br label %land.end - -land.end: ; preds = %land.rhs, %entry - %3 = phi i1 [ false, %entry ], [ %cmp3, %land.rhs ], !dbg !47 - call void @svf_assert(i1 noundef zeroext %3), !dbg !48 - %4 = load i32, ptr %retval, align 4, !dbg !49 - ret i32 %4, !dbg !49 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -declare i32 @time(...) #3 - -; Function Attrs: nounwind -declare i32 @rand() #2 - -declare void @svf_assert(i1 noundef zeroext) #3 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_33-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7407c8115a64fbb0e9226627deba8b69") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "digitCount", scope: !11, file: !11, line: 8, type: !12, scopeLine: 8, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_33-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7407c8115a64fbb0e9226627deba8b69") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "i", arg: 1, scope: !10, file: !11, line: 8, type: !14) -!17 = !DILocation(line: 8, column: 20, scope: !10) -!18 = !DILocalVariable(name: "counter", scope: !10, file: !11, line: 9, type: !14) -!19 = !DILocation(line: 9, column: 9, scope: !10) -!20 = !DILocation(line: 10, column: 16, scope: !10) -!21 = !DILocation(line: 10, column: 18, scope: !10) -!22 = !DILocation(line: 10, column: 15, scope: !10) -!23 = !DILocation(line: 10, column: 35, scope: !10) -!24 = !DILocation(line: 10, column: 29, scope: !10) -!25 = !DILocation(line: 10, column: 38, scope: !10) -!26 = !DILocation(line: 10, column: 13, scope: !10) -!27 = !DILocation(line: 11, column: 12, scope: !10) -!28 = !DILocation(line: 11, column: 5, scope: !10) -!29 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 14, type: !30, scopeLine: 14, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!30 = !DISubroutineType(types: !31) -!31 = !{!14} -!32 = !DILocation(line: 15, column: 11, scope: !29) -!33 = !DILocation(line: 15, column: 5, scope: !29) -!34 = !DILocalVariable(name: "randomNumber", scope: !29, file: !11, line: 16, type: !14) -!35 = !DILocation(line: 16, column: 6, scope: !29) -!36 = !DILocation(line: 16, column: 21, scope: !29) -!37 = !DILocation(line: 16, column: 28, scope: !29) -!38 = !DILocalVariable(name: "counter", scope: !29, file: !11, line: 17, type: !14) -!39 = !DILocation(line: 17, column: 9, scope: !29) -!40 = !DILocation(line: 17, column: 30, scope: !29) -!41 = !DILocation(line: 17, column: 19, scope: !29) -!42 = !DILocation(line: 18, column: 16, scope: !29) -!43 = !DILocation(line: 18, column: 24, scope: !29) -!44 = !DILocation(line: 18, column: 29, scope: !29) -!45 = !DILocation(line: 18, column: 32, scope: !29) -!46 = !DILocation(line: 18, column: 40, scope: !29) -!47 = !DILocation(line: 0, scope: !29) -!48 = !DILocation(line: 18, column: 5, scope: !29) -!49 = !DILocation(line: 19, column: 1, scope: !29) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_35-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_35-0.c.bc deleted file mode 100644 index 9a6e8634..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_35-0.c.bc +++ /dev/null @@ -1,120 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_35-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_35-0.c" -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-unknown-linux-gnu" - -@counter = dso_local global i32 0, align 4, !dbg !0 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i64 @factorial(i32 noundef %i) #0 !dbg !15 { -entry: - %retval = alloca i64, align 8 - %i.addr = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !20, metadata !DIExpression()), !dbg !21 - %0 = load i32, ptr @counter, align 4, !dbg !22 - %inc = add nsw i32 %0, 1, !dbg !22 - store i32 %inc, ptr @counter, align 4, !dbg !22 - %1 = load i32, ptr %i.addr, align 4, !dbg !23 - %cmp = icmp sle i32 %1, 1, !dbg !25 - br i1 %cmp, label %if.then, label %if.end, !dbg !26 - -if.then: ; preds = %entry - store i64 1, ptr %retval, align 8, !dbg !27 - br label %return, !dbg !27 - -if.end: ; preds = %entry - %2 = load i32, ptr %i.addr, align 4, !dbg !29 - %conv = sext i32 %2 to i64, !dbg !29 - %3 = load i32, ptr %i.addr, align 4, !dbg !30 - %sub = sub nsw i32 %3, 1, !dbg !31 - %call = call i64 @factorial(i32 noundef %sub), !dbg !32 - %mul = mul nsw i64 %conv, %call, !dbg !33 - store i64 %mul, ptr %retval, align 8, !dbg !34 - br label %return, !dbg !34 - -return: ; preds = %if.end, %if.then - %4 = load i64, ptr %retval, align 8, !dbg !35 - ret i64 %4, !dbg !35 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !36 { -entry: - %i = alloca i32, align 4 - %f = alloca i64, align 8 - call void @llvm.dbg.declare(metadata ptr %i, metadata !39, metadata !DIExpression()), !dbg !40 - call void @llvm.dbg.declare(metadata ptr %f, metadata !41, metadata !DIExpression()), !dbg !42 - %0 = load i32, ptr %i, align 4, !dbg !43 - %call = call i64 @factorial(i32 noundef %0), !dbg !44 - store i64 %call, ptr %f, align 8, !dbg !42 - %1 = load i32, ptr @counter, align 4, !dbg !45 - %2 = load i32, ptr %i, align 4, !dbg !46 - %cmp = icmp eq i32 %1, %2, !dbg !47 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !48 - ret i32 0, !dbg !49 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!2} -!llvm.module.flags = !{!7, !8, !9, !10, !11, !12, !13} -!llvm.ident = !{!14} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(name: "counter", scope: !2, file: !5, line: 7, type: !6, isLocal: false, isDefinition: true) -!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None) -!3 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_35-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "5aa5965e7da30130abab6c6ddb7fa4a5") -!4 = !{!0} -!5 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_35-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "5aa5965e7da30130abab6c6ddb7fa4a5") -!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!7 = !{i32 7, !"Dwarf Version", i32 5} -!8 = !{i32 2, !"Debug Info Version", i32 3} -!9 = !{i32 1, !"wchar_size", i32 4} -!10 = !{i32 8, !"PIC Level", i32 2} -!11 = !{i32 7, !"PIE Level", i32 2} -!12 = !{i32 7, !"uwtable", i32 2} -!13 = !{i32 7, !"frame-pointer", i32 2} -!14 = !{!"clang version 16.0.0"} -!15 = distinct !DISubprogram(name: "factorial", scope: !5, file: !5, line: 9, type: !16, scopeLine: 9, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !19) -!16 = !DISubroutineType(types: !17) -!17 = !{!18, !6} -!18 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) -!19 = !{} -!20 = !DILocalVariable(name: "i", arg: 1, scope: !15, file: !5, line: 9, type: !6) -!21 = !DILocation(line: 9, column: 20, scope: !15) -!22 = !DILocation(line: 10, column: 12, scope: !15) -!23 = !DILocation(line: 11, column: 8, scope: !24) -!24 = distinct !DILexicalBlock(scope: !15, file: !5, line: 11, column: 8) -!25 = !DILocation(line: 11, column: 10, scope: !24) -!26 = !DILocation(line: 11, column: 8, scope: !15) -!27 = !DILocation(line: 12, column: 9, scope: !28) -!28 = distinct !DILexicalBlock(scope: !24, file: !5, line: 11, column: 16) -!29 = !DILocation(line: 14, column: 12, scope: !15) -!30 = !DILocation(line: 14, column: 26, scope: !15) -!31 = !DILocation(line: 14, column: 28, scope: !15) -!32 = !DILocation(line: 14, column: 16, scope: !15) -!33 = !DILocation(line: 14, column: 14, scope: !15) -!34 = !DILocation(line: 14, column: 5, scope: !15) -!35 = !DILocation(line: 15, column: 1, scope: !15) -!36 = distinct !DISubprogram(name: "main", scope: !5, file: !5, line: 17, type: !37, scopeLine: 17, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !19) -!37 = !DISubroutineType(types: !38) -!38 = !{!6} -!39 = !DILocalVariable(name: "i", scope: !36, file: !5, line: 18, type: !6) -!40 = !DILocation(line: 18, column: 9, scope: !36) -!41 = !DILocalVariable(name: "f", scope: !36, file: !5, line: 19, type: !18) -!42 = !DILocation(line: 19, column: 10, scope: !36) -!43 = !DILocation(line: 19, column: 24, scope: !36) -!44 = !DILocation(line: 19, column: 14, scope: !36) -!45 = !DILocation(line: 20, column: 16, scope: !36) -!46 = !DILocation(line: 20, column: 27, scope: !36) -!47 = !DILocation(line: 20, column: 24, scope: !36) -!48 = !DILocation(line: 20, column: 5, scope: !36) -!49 = !DILocation(line: 21, column: 1, scope: !36) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_36-1-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_36-1-0.c.bc deleted file mode 100644 index b126348b..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_36-1-0.c.bc +++ /dev/null @@ -1,130 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_36-1-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_36-1-0.c" -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-unknown-linux-gnu" - -@__const.main.ar = private unnamed_addr constant [4 x i32] [i32 1, i32 2, i32 3, i32 5], align 16 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %i = alloca ptr, align 8 - %ar = alloca [4 x i32], align 16 - %a = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %i, metadata !16, metadata !DIExpression()), !dbg !18 - %call = call noalias ptr @malloc(i64 noundef 16) #6, !dbg !19 - store ptr %call, ptr %i, align 8, !dbg !18 - call void @llvm.dbg.declare(metadata ptr %ar, metadata !20, metadata !DIExpression()), !dbg !24 - call void @llvm.memcpy.p0.p0.i64(ptr align 16 %ar, ptr align 16 @__const.main.ar, i64 16, i1 false), !dbg !24 - call void @llvm.dbg.declare(metadata ptr %a, metadata !25, metadata !DIExpression()), !dbg !26 - %call1 = call i32 @rand() #7, !dbg !27 - store i32 %call1, ptr %a, align 4, !dbg !26 - %0 = load i32, ptr %a, align 4, !dbg !28 - %arrayidx = getelementptr inbounds [4 x i32], ptr %ar, i64 0, i64 3, !dbg !29 - store i32 %0, ptr %arrayidx, align 4, !dbg !30 - %1 = load ptr, ptr %i, align 8, !dbg !31 - %arraydecay = getelementptr inbounds [4 x i32], ptr %ar, i64 0, i64 0, !dbg !32 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1, ptr align 16 %arraydecay, i64 16, i1 false), !dbg !32 - %2 = load ptr, ptr %i, align 8, !dbg !33 - %arrayidx2 = getelementptr inbounds i32, ptr %2, i64 3, !dbg !33 - %3 = load i32, ptr %arrayidx2, align 4, !dbg !33 - %cmp = icmp sgt i32 %3, 5, !dbg !35 - br i1 %cmp, label %if.then, label %if.else, !dbg !36 - -if.then: ; preds = %entry - %4 = load ptr, ptr %i, align 8, !dbg !37 - %arrayidx3 = getelementptr inbounds i32, ptr %4, i64 3, !dbg !37 - %5 = load i32, ptr %arrayidx3, align 4, !dbg !37 - %cmp4 = icmp sgt i32 %5, 5, !dbg !39 - call void @svf_assert(i1 noundef zeroext %cmp4), !dbg !40 - br label %if.end, !dbg !41 - -if.else: ; preds = %entry - %6 = load ptr, ptr %i, align 8, !dbg !42 - %arrayidx5 = getelementptr inbounds i32, ptr %6, i64 3, !dbg !42 - %7 = load i32, ptr %arrayidx5, align 4, !dbg !42 - %cmp6 = icmp sle i32 %7, 5, !dbg !44 - call void @svf_assert(i1 noundef zeroext %cmp6), !dbg !45 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %8 = load i32, ptr %retval, align 4, !dbg !46 - ret i32 %8, !dbg !46 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3 - -; Function Attrs: nounwind -declare i32 @rand() #4 - -declare void @svf_assert(i1 noundef zeroext) #5 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind allocsize(0) } -attributes #7 = { nounwind } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_36-1-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3f7567881349e7f5ed0cc5b27e002f64") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 8, type: !12, scopeLine: 8, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_36-1-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3f7567881349e7f5ed0cc5b27e002f64") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "i", scope: !10, file: !11, line: 9, type: !17) -!17 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !14, size: 64) -!18 = !DILocation(line: 9, column: 10, scope: !10) -!19 = !DILocation(line: 9, column: 14, scope: !10) -!20 = !DILocalVariable(name: "ar", scope: !10, file: !11, line: 10, type: !21) -!21 = !DICompositeType(tag: DW_TAG_array_type, baseType: !14, size: 128, elements: !22) -!22 = !{!23} -!23 = !DISubrange(count: 4) -!24 = !DILocation(line: 10, column: 9, scope: !10) -!25 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 11, type: !14) -!26 = !DILocation(line: 11, column: 9, scope: !10) -!27 = !DILocation(line: 11, column: 13, scope: !10) -!28 = !DILocation(line: 12, column: 13, scope: !10) -!29 = !DILocation(line: 12, column: 5, scope: !10) -!30 = !DILocation(line: 12, column: 11, scope: !10) -!31 = !DILocation(line: 13, column: 12, scope: !10) -!32 = !DILocation(line: 13, column: 5, scope: !10) -!33 = !DILocation(line: 14, column: 9, scope: !34) -!34 = distinct !DILexicalBlock(scope: !10, file: !11, line: 14, column: 9) -!35 = !DILocation(line: 14, column: 14, scope: !34) -!36 = !DILocation(line: 14, column: 9, scope: !10) -!37 = !DILocation(line: 15, column: 20, scope: !38) -!38 = distinct !DILexicalBlock(scope: !34, file: !11, line: 14, column: 19) -!39 = !DILocation(line: 15, column: 25, scope: !38) -!40 = !DILocation(line: 15, column: 9, scope: !38) -!41 = !DILocation(line: 16, column: 5, scope: !38) -!42 = !DILocation(line: 18, column: 20, scope: !43) -!43 = distinct !DILexicalBlock(scope: !34, file: !11, line: 17, column: 10) -!44 = !DILocation(line: 18, column: 25, scope: !43) -!45 = !DILocation(line: 18, column: 9, scope: !43) -!46 = !DILocation(line: 20, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_37-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_37-0.c.bc deleted file mode 100644 index 3fbb6bce..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_37-0.c.bc +++ /dev/null @@ -1,104 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_37-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_37-0.c" -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-unknown-linux-gnu" - -%struct.testStruct = type { i32 } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %i = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %i, metadata !16, metadata !DIExpression()), !dbg !21 - %call = call noalias ptr @malloc(i64 noundef 16) #4, !dbg !22 - store ptr %call, ptr %i, align 8, !dbg !21 - %0 = load ptr, ptr %i, align 8, !dbg !23 - %arrayidx = getelementptr inbounds %struct.testStruct, ptr %0, i64 3, !dbg !23 - %a = getelementptr inbounds %struct.testStruct, ptr %arrayidx, i32 0, i32 0, !dbg !25 - %1 = load i32, ptr %a, align 4, !dbg !25 - %cmp = icmp sgt i32 %1, 5, !dbg !26 - br i1 %cmp, label %if.then, label %if.else, !dbg !27 - -if.then: ; preds = %entry - %2 = load ptr, ptr %i, align 8, !dbg !28 - %arrayidx1 = getelementptr inbounds %struct.testStruct, ptr %2, i64 3, !dbg !28 - %a2 = getelementptr inbounds %struct.testStruct, ptr %arrayidx1, i32 0, i32 0, !dbg !30 - %3 = load i32, ptr %a2, align 4, !dbg !30 - %cmp3 = icmp sgt i32 %3, 5, !dbg !31 - call void @svf_assert(i1 noundef zeroext %cmp3), !dbg !32 - br label %if.end, !dbg !33 - -if.else: ; preds = %entry - %4 = load ptr, ptr %i, align 8, !dbg !34 - %arrayidx4 = getelementptr inbounds %struct.testStruct, ptr %4, i64 3, !dbg !34 - %a5 = getelementptr inbounds %struct.testStruct, ptr %arrayidx4, i32 0, i32 0, !dbg !36 - %5 = load i32, ptr %a5, align 4, !dbg !36 - %cmp6 = icmp sle i32 %5, 5, !dbg !37 - call void @svf_assert(i1 noundef zeroext %cmp6), !dbg !38 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %6 = load i32, ptr %retval, align 4, !dbg !39 - ret i32 %6, !dbg !39 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -declare void @svf_assert(i1 noundef zeroext) #3 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind allocsize(0) } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_37-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f08ee25388c9fec29f0a0a72db2c13d6") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 12, type: !12, scopeLine: 12, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_37-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f08ee25388c9fec29f0a0a72db2c13d6") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "i", scope: !10, file: !11, line: 13, type: !17) -!17 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !18, size: 64) -!18 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "testStruct", file: !11, line: 8, size: 32, elements: !19) -!19 = !{!20} -!20 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !18, file: !11, line: 9, baseType: !14, size: 32) -!21 = !DILocation(line: 13, column: 24, scope: !10) -!22 = !DILocation(line: 13, column: 28, scope: !10) -!23 = !DILocation(line: 14, column: 9, scope: !24) -!24 = distinct !DILexicalBlock(scope: !10, file: !11, line: 14, column: 9) -!25 = !DILocation(line: 14, column: 14, scope: !24) -!26 = !DILocation(line: 14, column: 16, scope: !24) -!27 = !DILocation(line: 14, column: 9, scope: !10) -!28 = !DILocation(line: 15, column: 20, scope: !29) -!29 = distinct !DILexicalBlock(scope: !24, file: !11, line: 14, column: 21) -!30 = !DILocation(line: 15, column: 25, scope: !29) -!31 = !DILocation(line: 15, column: 27, scope: !29) -!32 = !DILocation(line: 15, column: 9, scope: !29) -!33 = !DILocation(line: 16, column: 5, scope: !29) -!34 = !DILocation(line: 18, column: 20, scope: !35) -!35 = distinct !DILexicalBlock(scope: !24, file: !11, line: 17, column: 10) -!36 = !DILocation(line: 18, column: 25, scope: !35) -!37 = !DILocation(line: 18, column: 27, scope: !35) -!38 = !DILocation(line: 18, column: 9, scope: !35) -!39 = !DILocation(line: 20, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_39-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_39-0.c.bc deleted file mode 100644 index 36120385..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_39-0.c.bc +++ /dev/null @@ -1,157 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_39-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_39-0.c" -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-unknown-linux-gnu" - -@count = dso_local global i32 0, align 4, !dbg !0 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @fib(i32 noundef %i) #0 !dbg !15 { -entry: - %retval = alloca i32, align 4 - %i.addr = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !19, metadata !DIExpression()), !dbg !20 - %0 = load i32, ptr @count, align 4, !dbg !21 - %inc = add nsw i32 %0, 1, !dbg !21 - store i32 %inc, ptr @count, align 4, !dbg !21 - %1 = load i32, ptr %i.addr, align 4, !dbg !22 - %cmp = icmp eq i32 %1, 0, !dbg !24 - br i1 %cmp, label %if.then, label %if.end, !dbg !25 - -if.then: ; preds = %entry - store i32 0, ptr %retval, align 4, !dbg !26 - br label %return, !dbg !26 - -if.end: ; preds = %entry - %2 = load i32, ptr %i.addr, align 4, !dbg !28 - %cmp1 = icmp eq i32 %2, 1, !dbg !30 - br i1 %cmp1, label %if.then2, label %if.end3, !dbg !31 - -if.then2: ; preds = %if.end - store i32 1, ptr %retval, align 4, !dbg !32 - br label %return, !dbg !32 - -if.end3: ; preds = %if.end - %3 = load i32, ptr %i.addr, align 4, !dbg !34 - %sub = sub nsw i32 %3, 1, !dbg !35 - %call = call i32 @fib(i32 noundef %sub), !dbg !36 - %4 = load i32, ptr %i.addr, align 4, !dbg !37 - %sub4 = sub nsw i32 %4, 2, !dbg !38 - %call5 = call i32 @fib(i32 noundef %sub4), !dbg !39 - %add = add nsw i32 %call, %call5, !dbg !40 - store i32 %add, ptr %retval, align 4, !dbg !41 - br label %return, !dbg !41 - -return: ; preds = %if.end3, %if.then2, %if.then - %5 = load i32, ptr %retval, align 4, !dbg !42 - ret i32 %5, !dbg !42 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !43 { -entry: - %retval = alloca i32, align 4 - %i = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %i, metadata !46, metadata !DIExpression()), !dbg !47 - %0 = load i32, ptr %i, align 4, !dbg !48 - %cmp = icmp sge i32 %0, 0, !dbg !50 - br i1 %cmp, label %if.then, label %if.end, !dbg !51 - -if.then: ; preds = %entry - %1 = load i32, ptr %i, align 4, !dbg !52 - %call = call i32 @fib(i32 noundef %1), !dbg !54 - %2 = load i32, ptr @count, align 4, !dbg !55 - %3 = load i32, ptr %i, align 4, !dbg !56 - %add = add nsw i32 %3, 1, !dbg !57 - %call1 = call i32 @fib(i32 noundef %add), !dbg !58 - %mul = mul nsw i32 2, %call1, !dbg !59 - %sub = sub nsw i32 %mul, 1, !dbg !60 - %cmp2 = icmp eq i32 %2, %sub, !dbg !61 - call void @svf_assert(i1 noundef zeroext %cmp2), !dbg !62 - br label %if.end, !dbg !63 - -if.end: ; preds = %if.then, %entry - %4 = load i32, ptr %retval, align 4, !dbg !64 - ret i32 %4, !dbg !64 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!2} -!llvm.module.flags = !{!7, !8, !9, !10, !11, !12, !13} -!llvm.ident = !{!14} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(name: "count", scope: !2, file: !5, line: 8, type: !6, isLocal: false, isDefinition: true) -!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None) -!3 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_39-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "0c23149e97666d42c0914df349186879") -!4 = !{!0} -!5 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_39-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "0c23149e97666d42c0914df349186879") -!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!7 = !{i32 7, !"Dwarf Version", i32 5} -!8 = !{i32 2, !"Debug Info Version", i32 3} -!9 = !{i32 1, !"wchar_size", i32 4} -!10 = !{i32 8, !"PIC Level", i32 2} -!11 = !{i32 7, !"PIE Level", i32 2} -!12 = !{i32 7, !"uwtable", i32 2} -!13 = !{i32 7, !"frame-pointer", i32 2} -!14 = !{!"clang version 16.0.0"} -!15 = distinct !DISubprogram(name: "fib", scope: !5, file: !5, line: 10, type: !16, scopeLine: 10, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !18) -!16 = !DISubroutineType(types: !17) -!17 = !{!6, !6} -!18 = !{} -!19 = !DILocalVariable(name: "i", arg: 1, scope: !15, file: !5, line: 10, type: !6) -!20 = !DILocation(line: 10, column: 13, scope: !15) -!21 = !DILocation(line: 11, column: 10, scope: !15) -!22 = !DILocation(line: 12, column: 8, scope: !23) -!23 = distinct !DILexicalBlock(scope: !15, file: !5, line: 12, column: 8) -!24 = !DILocation(line: 12, column: 10, scope: !23) -!25 = !DILocation(line: 12, column: 8, scope: !15) -!26 = !DILocation(line: 13, column: 9, scope: !27) -!27 = distinct !DILexicalBlock(scope: !23, file: !5, line: 12, column: 16) -!28 = !DILocation(line: 15, column: 8, scope: !29) -!29 = distinct !DILexicalBlock(scope: !15, file: !5, line: 15, column: 8) -!30 = !DILocation(line: 15, column: 10, scope: !29) -!31 = !DILocation(line: 15, column: 8, scope: !15) -!32 = !DILocation(line: 16, column: 9, scope: !33) -!33 = distinct !DILexicalBlock(scope: !29, file: !5, line: 15, column: 16) -!34 = !DILocation(line: 18, column: 16, scope: !15) -!35 = !DILocation(line: 18, column: 18, scope: !15) -!36 = !DILocation(line: 18, column: 12, scope: !15) -!37 = !DILocation(line: 18, column: 29, scope: !15) -!38 = !DILocation(line: 18, column: 31, scope: !15) -!39 = !DILocation(line: 18, column: 25, scope: !15) -!40 = !DILocation(line: 18, column: 23, scope: !15) -!41 = !DILocation(line: 18, column: 5, scope: !15) -!42 = !DILocation(line: 19, column: 1, scope: !15) -!43 = distinct !DISubprogram(name: "main", scope: !5, file: !5, line: 21, type: !44, scopeLine: 21, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !18) -!44 = !DISubroutineType(types: !45) -!45 = !{!6} -!46 = !DILocalVariable(name: "i", scope: !43, file: !5, line: 22, type: !6) -!47 = !DILocation(line: 22, column: 9, scope: !43) -!48 = !DILocation(line: 23, column: 8, scope: !49) -!49 = distinct !DILexicalBlock(scope: !43, file: !5, line: 23, column: 8) -!50 = !DILocation(line: 23, column: 10, scope: !49) -!51 = !DILocation(line: 23, column: 8, scope: !43) -!52 = !DILocation(line: 24, column: 13, scope: !53) -!53 = distinct !DILexicalBlock(scope: !49, file: !5, line: 23, column: 16) -!54 = !DILocation(line: 24, column: 9, scope: !53) -!55 = !DILocation(line: 25, column: 20, scope: !53) -!56 = !DILocation(line: 25, column: 37, scope: !53) -!57 = !DILocation(line: 25, column: 39, scope: !53) -!58 = !DILocation(line: 25, column: 33, scope: !53) -!59 = !DILocation(line: 25, column: 31, scope: !53) -!60 = !DILocation(line: 25, column: 44, scope: !53) -!61 = !DILocation(line: 25, column: 26, scope: !53) -!62 = !DILocation(line: 25, column: 9, scope: !53) -!63 = !DILocation(line: 26, column: 5, scope: !53) -!64 = !DILocation(line: 27, column: 1, scope: !43) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_4-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_4-0.c.bc deleted file mode 100644 index c8ee1997..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_4-0.c.bc +++ /dev/null @@ -1,142 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_4-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_4-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %c = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %call = call i32 (i32, ...) @time(i32 noundef 0), !dbg !16 - call void @srand(i32 noundef %call) #4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %a, metadata !18, metadata !DIExpression()), !dbg !19 - %call1 = call i32 @rand() #4, !dbg !20 - %rem = srem i32 %call1, 5, !dbg !21 - store i32 %rem, ptr %a, align 4, !dbg !19 - call void @llvm.dbg.declare(metadata ptr %b, metadata !22, metadata !DIExpression()), !dbg !23 - %call2 = call i32 @rand() #4, !dbg !24 - %rem3 = srem i32 %call2, 5, !dbg !25 - store i32 %rem3, ptr %b, align 4, !dbg !23 - call void @llvm.dbg.declare(metadata ptr %c, metadata !26, metadata !DIExpression()), !dbg !27 - %0 = load i32, ptr %a, align 4, !dbg !28 - %1 = load i32, ptr %b, align 4, !dbg !29 - %mul = mul nsw i32 %0, %1, !dbg !30 - store i32 %mul, ptr %c, align 4, !dbg !27 - %2 = load i32, ptr %c, align 4, !dbg !31 - %cmp = icmp eq i32 %2, 16, !dbg !33 - br i1 %cmp, label %if.then, label %if.else, !dbg !34 - -if.then: ; preds = %entry - %3 = load i32, ptr %a, align 4, !dbg !35 - %cmp4 = icmp eq i32 %3, 4, !dbg !37 - br i1 %cmp4, label %land.rhs, label %land.end, !dbg !38 - -land.rhs: ; preds = %if.then - %4 = load i32, ptr %b, align 4, !dbg !39 - %cmp5 = icmp eq i32 %4, 4, !dbg !40 - br label %land.end - -land.end: ; preds = %land.rhs, %if.then - %5 = phi i1 [ false, %if.then ], [ %cmp5, %land.rhs ], !dbg !41 - call void @svf_assert(i1 noundef zeroext %5), !dbg !42 - br label %if.end, !dbg !43 - -if.else: ; preds = %entry - %6 = load i32, ptr %a, align 4, !dbg !44 - %cmp6 = icmp slt i32 %6, 4, !dbg !46 - br i1 %cmp6, label %lor.end, label %lor.rhs, !dbg !47 - -lor.rhs: ; preds = %if.else - %7 = load i32, ptr %b, align 4, !dbg !48 - %cmp7 = icmp slt i32 %7, 4, !dbg !49 - br label %lor.end, !dbg !47 - -lor.end: ; preds = %lor.rhs, %if.else - %8 = phi i1 [ true, %if.else ], [ %cmp7, %lor.rhs ] - call void @svf_assert(i1 noundef zeroext %8), !dbg !50 - br label %if.end - -if.end: ; preds = %lor.end, %land.end - %9 = load i32, ptr %retval, align 4, !dbg !51 - ret i32 %9, !dbg !51 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #1 - -declare i32 @time(...) #2 - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #3 - -; Function Attrs: nounwind -declare i32 @rand() #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #4 = { nounwind } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_4-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f2524f3dd6ffb699bc80f17ed22efdc5") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_4-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f2524f3dd6ffb699bc80f17ed22efdc5") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocation(line: 6, column: 8, scope: !10) -!17 = !DILocation(line: 6, column: 2, scope: !10) -!18 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 7, type: !14) -!19 = !DILocation(line: 7, column: 6, scope: !10) -!20 = !DILocation(line: 7, column: 10, scope: !10) -!21 = !DILocation(line: 7, column: 17, scope: !10) -!22 = !DILocalVariable(name: "b", scope: !10, file: !11, line: 8, type: !14) -!23 = !DILocation(line: 8, column: 9, scope: !10) -!24 = !DILocation(line: 8, column: 13, scope: !10) -!25 = !DILocation(line: 8, column: 20, scope: !10) -!26 = !DILocalVariable(name: "c", scope: !10, file: !11, line: 9, type: !14) -!27 = !DILocation(line: 9, column: 9, scope: !10) -!28 = !DILocation(line: 9, column: 13, scope: !10) -!29 = !DILocation(line: 9, column: 17, scope: !10) -!30 = !DILocation(line: 9, column: 15, scope: !10) -!31 = !DILocation(line: 10, column: 9, scope: !32) -!32 = distinct !DILexicalBlock(scope: !10, file: !11, line: 10, column: 9) -!33 = !DILocation(line: 10, column: 11, scope: !32) -!34 = !DILocation(line: 10, column: 9, scope: !10) -!35 = !DILocation(line: 11, column: 20, scope: !36) -!36 = distinct !DILexicalBlock(scope: !32, file: !11, line: 10, column: 18) -!37 = !DILocation(line: 11, column: 22, scope: !36) -!38 = !DILocation(line: 11, column: 27, scope: !36) -!39 = !DILocation(line: 11, column: 30, scope: !36) -!40 = !DILocation(line: 11, column: 32, scope: !36) -!41 = !DILocation(line: 0, scope: !36) -!42 = !DILocation(line: 11, column: 9, scope: !36) -!43 = !DILocation(line: 12, column: 5, scope: !36) -!44 = !DILocation(line: 14, column: 20, scope: !45) -!45 = distinct !DILexicalBlock(scope: !32, file: !11, line: 13, column: 10) -!46 = !DILocation(line: 14, column: 22, scope: !45) -!47 = !DILocation(line: 14, column: 26, scope: !45) -!48 = !DILocation(line: 14, column: 29, scope: !45) -!49 = !DILocation(line: 14, column: 31, scope: !45) -!50 = !DILocation(line: 14, column: 9, scope: !45) -!51 = !DILocation(line: 16, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_40-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_40-0.c.bc deleted file mode 100644 index 1f0426b6..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_40-0.c.bc +++ /dev/null @@ -1,135 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_40-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_40-0.c" -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-unknown-linux-gnu" - -@count = dso_local global i32 0, align 4, !dbg !0 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @sum(i32 noundef %i) #0 !dbg !15 { -entry: - %retval = alloca i32, align 4 - %i.addr = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !19, metadata !DIExpression()), !dbg !20 - %0 = load i32, ptr @count, align 4, !dbg !21 - %inc = add nsw i32 %0, 1, !dbg !21 - store i32 %inc, ptr @count, align 4, !dbg !21 - %1 = load i32, ptr %i.addr, align 4, !dbg !22 - %cmp = icmp ne i32 %1, 0, !dbg !24 - br i1 %cmp, label %if.then, label %if.else, !dbg !25 - -if.then: ; preds = %entry - %2 = load i32, ptr %i.addr, align 4, !dbg !26 - %3 = load i32, ptr %i.addr, align 4, !dbg !28 - %sub = sub nsw i32 %3, 1, !dbg !29 - %call = call i32 @sum(i32 noundef %sub), !dbg !30 - %add = add nsw i32 %2, %call, !dbg !31 - store i32 %add, ptr %retval, align 4, !dbg !32 - br label %return, !dbg !32 - -if.else: ; preds = %entry - %4 = load i32, ptr %i.addr, align 4, !dbg !33 - store i32 %4, ptr %retval, align 4, !dbg !35 - br label %return, !dbg !35 - -return: ; preds = %if.else, %if.then - %5 = load i32, ptr %retval, align 4, !dbg !36 - ret i32 %5, !dbg !36 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !37 { -entry: - %retval = alloca i32, align 4 - %i = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %i, metadata !40, metadata !DIExpression()), !dbg !41 - %0 = load i32, ptr %i, align 4, !dbg !42 - %cmp = icmp sge i32 %0, 0, !dbg !44 - br i1 %cmp, label %if.then, label %if.end, !dbg !45 - -if.then: ; preds = %entry - %1 = load i32, ptr %i, align 4, !dbg !46 - %call = call i32 @sum(i32 noundef %1), !dbg !48 - %2 = load i32, ptr @count, align 4, !dbg !49 - %3 = load i32, ptr %i, align 4, !dbg !50 - %add = add nsw i32 %3, 1, !dbg !51 - %cmp1 = icmp eq i32 %2, %add, !dbg !52 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !53 - br label %if.end, !dbg !54 - -if.end: ; preds = %if.then, %entry - %4 = load i32, ptr %retval, align 4, !dbg !55 - ret i32 %4, !dbg !55 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!2} -!llvm.module.flags = !{!7, !8, !9, !10, !11, !12, !13} -!llvm.ident = !{!14} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(name: "count", scope: !2, file: !5, line: 8, type: !6, isLocal: false, isDefinition: true) -!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None) -!3 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_40-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "faef5803d566dbb2ddccc223b463c03d") -!4 = !{!0} -!5 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_40-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "faef5803d566dbb2ddccc223b463c03d") -!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!7 = !{i32 7, !"Dwarf Version", i32 5} -!8 = !{i32 2, !"Debug Info Version", i32 3} -!9 = !{i32 1, !"wchar_size", i32 4} -!10 = !{i32 8, !"PIC Level", i32 2} -!11 = !{i32 7, !"PIE Level", i32 2} -!12 = !{i32 7, !"uwtable", i32 2} -!13 = !{i32 7, !"frame-pointer", i32 2} -!14 = !{!"clang version 16.0.0"} -!15 = distinct !DISubprogram(name: "sum", scope: !5, file: !5, line: 10, type: !16, scopeLine: 10, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !18) -!16 = !DISubroutineType(types: !17) -!17 = !{!6, !6} -!18 = !{} -!19 = !DILocalVariable(name: "i", arg: 1, scope: !15, file: !5, line: 10, type: !6) -!20 = !DILocation(line: 10, column: 13, scope: !15) -!21 = !DILocation(line: 11, column: 10, scope: !15) -!22 = !DILocation(line: 12, column: 9, scope: !23) -!23 = distinct !DILexicalBlock(scope: !15, file: !5, line: 12, column: 9) -!24 = !DILocation(line: 12, column: 11, scope: !23) -!25 = !DILocation(line: 12, column: 9, scope: !15) -!26 = !DILocation(line: 13, column: 16, scope: !27) -!27 = distinct !DILexicalBlock(scope: !23, file: !5, line: 12, column: 17) -!28 = !DILocation(line: 13, column: 24, scope: !27) -!29 = !DILocation(line: 13, column: 26, scope: !27) -!30 = !DILocation(line: 13, column: 20, scope: !27) -!31 = !DILocation(line: 13, column: 18, scope: !27) -!32 = !DILocation(line: 13, column: 9, scope: !27) -!33 = !DILocation(line: 16, column: 16, scope: !34) -!34 = distinct !DILexicalBlock(scope: !23, file: !5, line: 15, column: 10) -!35 = !DILocation(line: 16, column: 9, scope: !34) -!36 = !DILocation(line: 18, column: 1, scope: !15) -!37 = distinct !DISubprogram(name: "main", scope: !5, file: !5, line: 20, type: !38, scopeLine: 20, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !18) -!38 = !DISubroutineType(types: !39) -!39 = !{!6} -!40 = !DILocalVariable(name: "i", scope: !37, file: !5, line: 21, type: !6) -!41 = !DILocation(line: 21, column: 9, scope: !37) -!42 = !DILocation(line: 22, column: 8, scope: !43) -!43 = distinct !DILexicalBlock(scope: !37, file: !5, line: 22, column: 8) -!44 = !DILocation(line: 22, column: 10, scope: !43) -!45 = !DILocation(line: 22, column: 8, scope: !37) -!46 = !DILocation(line: 23, column: 13, scope: !47) -!47 = distinct !DILexicalBlock(scope: !43, file: !5, line: 22, column: 16) -!48 = !DILocation(line: 23, column: 9, scope: !47) -!49 = !DILocation(line: 24, column: 20, scope: !47) -!50 = !DILocation(line: 24, column: 29, scope: !47) -!51 = !DILocation(line: 24, column: 31, scope: !47) -!52 = !DILocation(line: 24, column: 26, scope: !47) -!53 = !DILocation(line: 24, column: 9, scope: !47) -!54 = !DILocation(line: 25, column: 5, scope: !47) -!55 = !DILocation(line: 26, column: 1, scope: !37) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_41-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_41-0.c.bc deleted file mode 100644 index d8931a6d..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_41-0.c.bc +++ /dev/null @@ -1,146 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_41-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_41-0.c" -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-unknown-linux-gnu" - -@count = dso_local global i32 0, align 4, !dbg !0 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @foo(i32 noundef %i) #0 !dbg !15 { -entry: - %retval = alloca i32, align 4 - %i.addr = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !19, metadata !DIExpression()), !dbg !20 - %0 = load i32, ptr @count, align 4, !dbg !21 - %inc = add nsw i32 %0, 1, !dbg !21 - store i32 %inc, ptr @count, align 4, !dbg !21 - %1 = load i32, ptr %i.addr, align 4, !dbg !22 - %cmp = icmp eq i32 %1, 0, !dbg !24 - br i1 %cmp, label %if.then, label %if.else, !dbg !25 - -if.then: ; preds = %entry - store i32 0, ptr %retval, align 4, !dbg !26 - br label %return, !dbg !26 - -if.else: ; preds = %entry - %2 = load i32, ptr %i.addr, align 4, !dbg !28 - %call = call i32 @bar(i32 noundef %2), !dbg !30 - store i32 %call, ptr %retval, align 4, !dbg !31 - br label %return, !dbg !31 - -return: ; preds = %if.else, %if.then - %3 = load i32, ptr %retval, align 4, !dbg !32 - ret i32 %3, !dbg !32 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @bar(i32 noundef %i) #0 !dbg !33 { -entry: - %i.addr = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !34, metadata !DIExpression()), !dbg !35 - %0 = load i32, ptr %i.addr, align 4, !dbg !36 - %sub = sub nsw i32 %0, 1, !dbg !37 - %call = call i32 @foo(i32 noundef %sub), !dbg !38 - ret i32 %call, !dbg !39 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !40 { -entry: - %retval = alloca i32, align 4 - %i = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %i, metadata !43, metadata !DIExpression()), !dbg !44 - %0 = load i32, ptr %i, align 4, !dbg !45 - %cmp = icmp sge i32 %0, 0, !dbg !47 - br i1 %cmp, label %if.then, label %if.end, !dbg !48 - -if.then: ; preds = %entry - %1 = load i32, ptr %i, align 4, !dbg !49 - %call = call i32 @foo(i32 noundef %1), !dbg !51 - %2 = load i32, ptr @count, align 4, !dbg !52 - %3 = load i32, ptr %i, align 4, !dbg !53 - %add = add nsw i32 %3, 1, !dbg !54 - %cmp1 = icmp eq i32 %2, %add, !dbg !55 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !56 - br label %if.end, !dbg !57 - -if.end: ; preds = %if.then, %entry - %4 = load i32, ptr %retval, align 4, !dbg !58 - ret i32 %4, !dbg !58 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!2} -!llvm.module.flags = !{!7, !8, !9, !10, !11, !12, !13} -!llvm.ident = !{!14} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(name: "count", scope: !2, file: !5, line: 8, type: !6, isLocal: false, isDefinition: true) -!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None) -!3 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_41-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ecaf1bdc3bf6b6713b28c71bfc51c098") -!4 = !{!0} -!5 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_41-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ecaf1bdc3bf6b6713b28c71bfc51c098") -!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!7 = !{i32 7, !"Dwarf Version", i32 5} -!8 = !{i32 2, !"Debug Info Version", i32 3} -!9 = !{i32 1, !"wchar_size", i32 4} -!10 = !{i32 8, !"PIC Level", i32 2} -!11 = !{i32 7, !"PIE Level", i32 2} -!12 = !{i32 7, !"uwtable", i32 2} -!13 = !{i32 7, !"frame-pointer", i32 2} -!14 = !{!"clang version 16.0.0"} -!15 = distinct !DISubprogram(name: "foo", scope: !5, file: !5, line: 11, type: !16, scopeLine: 11, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !18) -!16 = !DISubroutineType(types: !17) -!17 = !{!6, !6} -!18 = !{} -!19 = !DILocalVariable(name: "i", arg: 1, scope: !15, file: !5, line: 11, type: !6) -!20 = !DILocation(line: 11, column: 13, scope: !15) -!21 = !DILocation(line: 12, column: 10, scope: !15) -!22 = !DILocation(line: 13, column: 8, scope: !23) -!23 = distinct !DILexicalBlock(scope: !15, file: !5, line: 13, column: 8) -!24 = !DILocation(line: 13, column: 10, scope: !23) -!25 = !DILocation(line: 13, column: 8, scope: !15) -!26 = !DILocation(line: 14, column: 9, scope: !27) -!27 = distinct !DILexicalBlock(scope: !23, file: !5, line: 13, column: 16) -!28 = !DILocation(line: 17, column: 20, scope: !29) -!29 = distinct !DILexicalBlock(scope: !23, file: !5, line: 16, column: 10) -!30 = !DILocation(line: 17, column: 16, scope: !29) -!31 = !DILocation(line: 17, column: 9, scope: !29) -!32 = !DILocation(line: 19, column: 1, scope: !15) -!33 = distinct !DISubprogram(name: "bar", scope: !5, file: !5, line: 21, type: !16, scopeLine: 21, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !18) -!34 = !DILocalVariable(name: "i", arg: 1, scope: !33, file: !5, line: 21, type: !6) -!35 = !DILocation(line: 21, column: 13, scope: !33) -!36 = !DILocation(line: 22, column: 16, scope: !33) -!37 = !DILocation(line: 22, column: 18, scope: !33) -!38 = !DILocation(line: 22, column: 12, scope: !33) -!39 = !DILocation(line: 22, column: 5, scope: !33) -!40 = distinct !DISubprogram(name: "main", scope: !5, file: !5, line: 25, type: !41, scopeLine: 25, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !18) -!41 = !DISubroutineType(types: !42) -!42 = !{!6} -!43 = !DILocalVariable(name: "i", scope: !40, file: !5, line: 26, type: !6) -!44 = !DILocation(line: 26, column: 9, scope: !40) -!45 = !DILocation(line: 27, column: 8, scope: !46) -!46 = distinct !DILexicalBlock(scope: !40, file: !5, line: 27, column: 8) -!47 = !DILocation(line: 27, column: 10, scope: !46) -!48 = !DILocation(line: 27, column: 8, scope: !40) -!49 = !DILocation(line: 28, column: 13, scope: !50) -!50 = distinct !DILexicalBlock(scope: !46, file: !5, line: 27, column: 16) -!51 = !DILocation(line: 28, column: 9, scope: !50) -!52 = !DILocation(line: 29, column: 20, scope: !50) -!53 = !DILocation(line: 29, column: 29, scope: !50) -!54 = !DILocation(line: 29, column: 31, scope: !50) -!55 = !DILocation(line: 29, column: 26, scope: !50) -!56 = !DILocation(line: 29, column: 9, scope: !50) -!57 = !DILocation(line: 30, column: 5, scope: !50) -!58 = !DILocation(line: 31, column: 1, scope: !40) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_42-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_42-0.c.bc deleted file mode 100644 index 2bec40b7..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_42-0.c.bc +++ /dev/null @@ -1,129 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_42-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_42-0.c" -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-unknown-linux-gnu" - -@count = dso_local global i32 0, align 4, !dbg !0 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @foo(i32 noundef %i) #0 !dbg !15 { -entry: - %retval = alloca i32, align 4 - %i.addr = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !19, metadata !DIExpression()), !dbg !20 - %0 = load i32, ptr @count, align 4, !dbg !21 - %inc = add nsw i32 %0, 1, !dbg !21 - store i32 %inc, ptr @count, align 4, !dbg !21 - %1 = load i32, ptr %i.addr, align 4, !dbg !22 - %cmp = icmp eq i32 %1, 0, !dbg !24 - br i1 %cmp, label %if.then, label %if.else, !dbg !25 - -if.then: ; preds = %entry - store i32 0, ptr %retval, align 4, !dbg !26 - br label %return, !dbg !26 - -if.else: ; preds = %entry - %2 = load i32, ptr %i.addr, align 4, !dbg !28 - %sub = sub nsw i32 %2, 1, !dbg !30 - %call = call i32 @foo(i32 noundef %sub), !dbg !31 - store i32 %call, ptr %retval, align 4, !dbg !32 - br label %return, !dbg !32 - -return: ; preds = %if.else, %if.then - %3 = load i32, ptr %retval, align 4, !dbg !33 - ret i32 %3, !dbg !33 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !34 { -entry: - %retval = alloca i32, align 4 - %i = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %i, metadata !37, metadata !DIExpression()), !dbg !38 - %0 = load i32, ptr %i, align 4, !dbg !39 - %cmp = icmp sge i32 %0, 0, !dbg !41 - br i1 %cmp, label %if.then, label %if.end, !dbg !42 - -if.then: ; preds = %entry - %1 = load i32, ptr %i, align 4, !dbg !43 - %call = call i32 @foo(i32 noundef %1), !dbg !45 - %2 = load i32, ptr @count, align 4, !dbg !46 - %3 = load i32, ptr %i, align 4, !dbg !47 - %add = add nsw i32 %3, 1, !dbg !48 - %cmp1 = icmp eq i32 %2, %add, !dbg !49 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !50 - br label %if.end, !dbg !51 - -if.end: ; preds = %if.then, %entry - %4 = load i32, ptr %retval, align 4, !dbg !52 - ret i32 %4, !dbg !52 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!2} -!llvm.module.flags = !{!7, !8, !9, !10, !11, !12, !13} -!llvm.ident = !{!14} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(name: "count", scope: !2, file: !5, line: 8, type: !6, isLocal: false, isDefinition: true) -!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None) -!3 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_42-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e25e7e7fa1000b041288ed942c3325f2") -!4 = !{!0} -!5 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_42-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e25e7e7fa1000b041288ed942c3325f2") -!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!7 = !{i32 7, !"Dwarf Version", i32 5} -!8 = !{i32 2, !"Debug Info Version", i32 3} -!9 = !{i32 1, !"wchar_size", i32 4} -!10 = !{i32 8, !"PIC Level", i32 2} -!11 = !{i32 7, !"PIE Level", i32 2} -!12 = !{i32 7, !"uwtable", i32 2} -!13 = !{i32 7, !"frame-pointer", i32 2} -!14 = !{!"clang version 16.0.0"} -!15 = distinct !DISubprogram(name: "foo", scope: !5, file: !5, line: 10, type: !16, scopeLine: 10, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !18) -!16 = !DISubroutineType(types: !17) -!17 = !{!6, !6} -!18 = !{} -!19 = !DILocalVariable(name: "i", arg: 1, scope: !15, file: !5, line: 10, type: !6) -!20 = !DILocation(line: 10, column: 13, scope: !15) -!21 = !DILocation(line: 11, column: 10, scope: !15) -!22 = !DILocation(line: 12, column: 8, scope: !23) -!23 = distinct !DILexicalBlock(scope: !15, file: !5, line: 12, column: 8) -!24 = !DILocation(line: 12, column: 10, scope: !23) -!25 = !DILocation(line: 12, column: 8, scope: !15) -!26 = !DILocation(line: 13, column: 9, scope: !27) -!27 = distinct !DILexicalBlock(scope: !23, file: !5, line: 12, column: 16) -!28 = !DILocation(line: 16, column: 20, scope: !29) -!29 = distinct !DILexicalBlock(scope: !23, file: !5, line: 15, column: 10) -!30 = !DILocation(line: 16, column: 22, scope: !29) -!31 = !DILocation(line: 16, column: 16, scope: !29) -!32 = !DILocation(line: 16, column: 9, scope: !29) -!33 = !DILocation(line: 18, column: 1, scope: !15) -!34 = distinct !DISubprogram(name: "main", scope: !5, file: !5, line: 20, type: !35, scopeLine: 20, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !18) -!35 = !DISubroutineType(types: !36) -!36 = !{!6} -!37 = !DILocalVariable(name: "i", scope: !34, file: !5, line: 21, type: !6) -!38 = !DILocation(line: 21, column: 9, scope: !34) -!39 = !DILocation(line: 22, column: 8, scope: !40) -!40 = distinct !DILexicalBlock(scope: !34, file: !5, line: 22, column: 8) -!41 = !DILocation(line: 22, column: 10, scope: !40) -!42 = !DILocation(line: 22, column: 8, scope: !34) -!43 = !DILocation(line: 23, column: 13, scope: !44) -!44 = distinct !DILexicalBlock(scope: !40, file: !5, line: 22, column: 16) -!45 = !DILocation(line: 23, column: 9, scope: !44) -!46 = !DILocation(line: 24, column: 20, scope: !44) -!47 = !DILocation(line: 24, column: 29, scope: !44) -!48 = !DILocation(line: 24, column: 31, scope: !44) -!49 = !DILocation(line: 24, column: 26, scope: !44) -!50 = !DILocation(line: 24, column: 9, scope: !44) -!51 = !DILocation(line: 25, column: 5, scope: !44) -!52 = !DILocation(line: 26, column: 1, scope: !34) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_44-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_44-0.c.bc deleted file mode 100644 index fd40c1ba..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_44-0.c.bc +++ /dev/null @@ -1,147 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_44-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_44-0.c" -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-unknown-linux-gnu" - -@sumDigits.sum = internal global i32 0, align 4, !dbg !0 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @sumDigits(i32 noundef %i) #0 !dbg !2 { -entry: - %i.addr = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !19, metadata !DIExpression()), !dbg !20 - %0 = load i32, ptr %i.addr, align 4, !dbg !21 - %cmp = icmp ne i32 %0, 0, !dbg !23 - br i1 %cmp, label %if.then, label %if.end, !dbg !24 - -if.then: ; preds = %entry - %1 = load i32, ptr @sumDigits.sum, align 4, !dbg !25 - %2 = load i32, ptr %i.addr, align 4, !dbg !27 - %rem = srem i32 %2, 10, !dbg !28 - %add = add nsw i32 %1, %rem, !dbg !29 - store i32 %add, ptr @sumDigits.sum, align 4, !dbg !30 - %3 = load i32, ptr %i.addr, align 4, !dbg !31 - %div = sdiv i32 %3, 10, !dbg !32 - %call = call i32 @sumDigits(i32 noundef %div), !dbg !33 - br label %if.end, !dbg !34 - -if.end: ; preds = %if.then, %entry - %4 = load i32, ptr @sumDigits.sum, align 4, !dbg !35 - ret i32 %4, !dbg !36 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !37 { -entry: - %retval = alloca i32, align 4 - %randomNumber = alloca i32, align 4 - %i = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %call = call i32 (i32, ...) @time(i32 noundef 0), !dbg !40 - call void @srand(i32 noundef %call) #4, !dbg !41 - call void @llvm.dbg.declare(metadata ptr %randomNumber, metadata !42, metadata !DIExpression()), !dbg !43 - %call1 = call i32 @rand() #4, !dbg !44 - %rem = srem i32 %call1, 999, !dbg !45 - store i32 %rem, ptr %randomNumber, align 4, !dbg !43 - call void @llvm.dbg.declare(metadata ptr %i, metadata !46, metadata !DIExpression()), !dbg !47 - %0 = load i32, ptr %randomNumber, align 4, !dbg !48 - %call2 = call i32 @sumDigits(i32 noundef %0), !dbg !49 - store i32 %call2, ptr %i, align 4, !dbg !47 - %1 = load i32, ptr %i, align 4, !dbg !50 - %cmp = icmp sge i32 %1, 0, !dbg !51 - br i1 %cmp, label %land.rhs, label %land.end, !dbg !52 - -land.rhs: ; preds = %entry - %2 = load i32, ptr %i, align 4, !dbg !53 - %cmp3 = icmp sle i32 %2, 26, !dbg !54 - br label %land.end - -land.end: ; preds = %land.rhs, %entry - %3 = phi i1 [ false, %entry ], [ %cmp3, %land.rhs ], !dbg !55 - call void @svf_assert(i1 noundef zeroext %3), !dbg !56 - %4 = load i32, ptr %retval, align 4, !dbg !57 - ret i32 %4, !dbg !57 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -declare i32 @time(...) #3 - -; Function Attrs: nounwind -declare i32 @rand() #2 - -declare void @svf_assert(i1 noundef zeroext) #3 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind } - -!llvm.dbg.cu = !{!7} -!llvm.module.flags = !{!11, !12, !13, !14, !15, !16, !17} -!llvm.ident = !{!18} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(name: "sum", scope: !2, file: !3, line: 9, type: !6, isLocal: true, isDefinition: true) -!2 = distinct !DISubprogram(name: "sumDigits", scope: !3, file: !3, line: 8, type: !4, scopeLine: 8, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !10) -!3 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_44-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d8c4429c503b18a31d71bad5edbde9d9") -!4 = !DISubroutineType(types: !5) -!5 = !{!6, !6} -!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_44-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d8c4429c503b18a31d71bad5edbde9d9") -!9 = !{!0} -!10 = !{} -!11 = !{i32 7, !"Dwarf Version", i32 5} -!12 = !{i32 2, !"Debug Info Version", i32 3} -!13 = !{i32 1, !"wchar_size", i32 4} -!14 = !{i32 8, !"PIC Level", i32 2} -!15 = !{i32 7, !"PIE Level", i32 2} -!16 = !{i32 7, !"uwtable", i32 2} -!17 = !{i32 7, !"frame-pointer", i32 2} -!18 = !{!"clang version 16.0.0"} -!19 = !DILocalVariable(name: "i", arg: 1, scope: !2, file: !3, line: 8, type: !6) -!20 = !DILocation(line: 8, column: 19, scope: !2) -!21 = !DILocation(line: 10, column: 8, scope: !22) -!22 = distinct !DILexicalBlock(scope: !2, file: !3, line: 10, column: 8) -!23 = !DILocation(line: 10, column: 9, scope: !22) -!24 = !DILocation(line: 10, column: 8, scope: !2) -!25 = !DILocation(line: 11, column: 15, scope: !26) -!26 = distinct !DILexicalBlock(scope: !22, file: !3, line: 10, column: 14) -!27 = !DILocation(line: 11, column: 22, scope: !26) -!28 = !DILocation(line: 11, column: 24, scope: !26) -!29 = !DILocation(line: 11, column: 19, scope: !26) -!30 = !DILocation(line: 11, column: 13, scope: !26) -!31 = !DILocation(line: 12, column: 19, scope: !26) -!32 = !DILocation(line: 12, column: 20, scope: !26) -!33 = !DILocation(line: 12, column: 9, scope: !26) -!34 = !DILocation(line: 13, column: 5, scope: !26) -!35 = !DILocation(line: 14, column: 12, scope: !2) -!36 = !DILocation(line: 14, column: 5, scope: !2) -!37 = distinct !DISubprogram(name: "main", scope: !3, file: !3, line: 17, type: !38, scopeLine: 17, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !10) -!38 = !DISubroutineType(types: !39) -!39 = !{!6} -!40 = !DILocation(line: 18, column: 11, scope: !37) -!41 = !DILocation(line: 18, column: 5, scope: !37) -!42 = !DILocalVariable(name: "randomNumber", scope: !37, file: !3, line: 19, type: !6) -!43 = !DILocation(line: 19, column: 6, scope: !37) -!44 = !DILocation(line: 19, column: 21, scope: !37) -!45 = !DILocation(line: 19, column: 28, scope: !37) -!46 = !DILocalVariable(name: "i", scope: !37, file: !3, line: 20, type: !6) -!47 = !DILocation(line: 20, column: 9, scope: !37) -!48 = !DILocation(line: 20, column: 23, scope: !37) -!49 = !DILocation(line: 20, column: 13, scope: !37) -!50 = !DILocation(line: 21, column: 16, scope: !37) -!51 = !DILocation(line: 21, column: 18, scope: !37) -!52 = !DILocation(line: 21, column: 23, scope: !37) -!53 = !DILocation(line: 21, column: 26, scope: !37) -!54 = !DILocation(line: 21, column: 28, scope: !37) -!55 = !DILocation(line: 0, scope: !37) -!56 = !DILocation(line: 21, column: 5, scope: !37) -!57 = !DILocation(line: 22, column: 1, scope: !37) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_45-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_45-0.c.bc deleted file mode 100644 index 7675b912..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_45-0.c.bc +++ /dev/null @@ -1,157 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_45-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_45-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @baseConversion(i32 noundef %i, i32 noundef %base) #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %i.addr = alloca i32, align 4 - %base.addr = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 %base, ptr %base.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %base.addr, metadata !18, metadata !DIExpression()), !dbg !19 - %0 = load i32, ptr %i.addr, align 4, !dbg !20 - %cmp = icmp eq i32 %0, 0, !dbg !22 - br i1 %cmp, label %if.then, label %if.end, !dbg !23 - -if.then: ; preds = %entry - store i32 0, ptr %retval, align 4, !dbg !24 - br label %return, !dbg !24 - -if.end: ; preds = %entry - %1 = load i32, ptr %i.addr, align 4, !dbg !26 - %2 = load i32, ptr %base.addr, align 4, !dbg !27 - %rem = srem i32 %1, %2, !dbg !28 - %3 = load i32, ptr %i.addr, align 4, !dbg !29 - %4 = load i32, ptr %base.addr, align 4, !dbg !30 - %div = sdiv i32 %3, %4, !dbg !31 - %5 = load i32, ptr %base.addr, align 4, !dbg !32 - %call = call i32 @baseConversion(i32 noundef %div, i32 noundef %5), !dbg !33 - %mul = mul nsw i32 10, %call, !dbg !34 - %add = add nsw i32 %rem, %mul, !dbg !35 - store i32 %add, ptr %retval, align 4, !dbg !36 - br label %return, !dbg !36 - -return: ; preds = %if.end, %if.then - %6 = load i32, ptr %retval, align 4, !dbg !37 - ret i32 %6, !dbg !37 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !38 { -entry: - %retval = alloca i32, align 4 - %randomNumber = alloca i32, align 4 - %i = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %call = call i32 (i32, ...) @time(i32 noundef 0), !dbg !41 - call void @srand(i32 noundef %call) #4, !dbg !42 - call void @llvm.dbg.declare(metadata ptr %randomNumber, metadata !43, metadata !DIExpression()), !dbg !44 - %call1 = call i32 @rand() #4, !dbg !45 - %rem = srem i32 %call1, 999, !dbg !46 - store i32 %rem, ptr %randomNumber, align 4, !dbg !44 - call void @llvm.dbg.declare(metadata ptr %i, metadata !47, metadata !DIExpression()), !dbg !48 - %0 = load i32, ptr %randomNumber, align 4, !dbg !49 - %call2 = call i32 @baseConversion(i32 noundef %0, i32 noundef 8), !dbg !50 - store i32 %call2, ptr %i, align 4, !dbg !48 - %1 = load i32, ptr %i, align 4, !dbg !51 - %cmp = icmp sge i32 %1, 0, !dbg !52 - br i1 %cmp, label %land.rhs, label %land.end, !dbg !53 - -land.rhs: ; preds = %entry - %2 = load i32, ptr %i, align 4, !dbg !54 - %cmp3 = icmp sle i32 %2, 1746, !dbg !55 - br label %land.end - -land.end: ; preds = %land.rhs, %entry - %3 = phi i1 [ false, %entry ], [ %cmp3, %land.rhs ], !dbg !56 - call void @svf_assert(i1 noundef zeroext %3), !dbg !57 - %4 = load i32, ptr %retval, align 4, !dbg !58 - ret i32 %4, !dbg !58 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -declare i32 @time(...) #3 - -; Function Attrs: nounwind -declare i32 @rand() #2 - -declare void @svf_assert(i1 noundef zeroext) #3 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_45-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7add5c699f52eab7ad265d2b7bc971f7") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "baseConversion", scope: !11, file: !11, line: 8, type: !12, scopeLine: 8, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_45-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7add5c699f52eab7ad265d2b7bc971f7") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !14, !14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "i", arg: 1, scope: !10, file: !11, line: 8, type: !14) -!17 = !DILocation(line: 8, column: 24, scope: !10) -!18 = !DILocalVariable(name: "base", arg: 2, scope: !10, file: !11, line: 8, type: !14) -!19 = !DILocation(line: 8, column: 31, scope: !10) -!20 = !DILocation(line: 9, column: 8, scope: !21) -!21 = distinct !DILexicalBlock(scope: !10, file: !11, line: 9, column: 8) -!22 = !DILocation(line: 9, column: 10, scope: !21) -!23 = !DILocation(line: 9, column: 8, scope: !10) -!24 = !DILocation(line: 10, column: 9, scope: !25) -!25 = distinct !DILexicalBlock(scope: !21, file: !11, line: 9, column: 16) -!26 = !DILocation(line: 12, column: 12, scope: !10) -!27 = !DILocation(line: 12, column: 16, scope: !10) -!28 = !DILocation(line: 12, column: 14, scope: !10) -!29 = !DILocation(line: 12, column: 43, scope: !10) -!30 = !DILocation(line: 12, column: 47, scope: !10) -!31 = !DILocation(line: 12, column: 45, scope: !10) -!32 = !DILocation(line: 12, column: 53, scope: !10) -!33 = !DILocation(line: 12, column: 28, scope: !10) -!34 = !DILocation(line: 12, column: 26, scope: !10) -!35 = !DILocation(line: 12, column: 21, scope: !10) -!36 = !DILocation(line: 12, column: 5, scope: !10) -!37 = !DILocation(line: 13, column: 1, scope: !10) -!38 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 15, type: !39, scopeLine: 15, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!39 = !DISubroutineType(types: !40) -!40 = !{!14} -!41 = !DILocation(line: 16, column: 11, scope: !38) -!42 = !DILocation(line: 16, column: 5, scope: !38) -!43 = !DILocalVariable(name: "randomNumber", scope: !38, file: !11, line: 17, type: !14) -!44 = !DILocation(line: 17, column: 9, scope: !38) -!45 = !DILocation(line: 17, column: 24, scope: !38) -!46 = !DILocation(line: 17, column: 31, scope: !38) -!47 = !DILocalVariable(name: "i", scope: !38, file: !11, line: 19, type: !14) -!48 = !DILocation(line: 19, column: 9, scope: !38) -!49 = !DILocation(line: 19, column: 28, scope: !38) -!50 = !DILocation(line: 19, column: 13, scope: !38) -!51 = !DILocation(line: 20, column: 16, scope: !38) -!52 = !DILocation(line: 20, column: 18, scope: !38) -!53 = !DILocation(line: 20, column: 23, scope: !38) -!54 = !DILocation(line: 20, column: 26, scope: !38) -!55 = !DILocation(line: 20, column: 28, scope: !38) -!56 = !DILocation(line: 0, scope: !38) -!57 = !DILocation(line: 20, column: 5, scope: !38) -!58 = !DILocation(line: 21, column: 1, scope: !38) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_46-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_46-0.c.bc deleted file mode 100644 index ea4d42dc..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_46-0.c.bc +++ /dev/null @@ -1,210 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_46-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_46-0.c" -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-unknown-linux-gnu" - -@count = dso_local global i32 0, align 4, !dbg !0 -@result = dso_local global i32 0, align 4, !dbg !5 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @foo(i32 noundef %limit) #0 !dbg !17 { -entry: - %limit.addr = alloca i32, align 4 - store i32 %limit, ptr %limit.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %limit.addr, metadata !21, metadata !DIExpression()), !dbg !22 - %0 = load i32, ptr @count, align 4, !dbg !23 - %1 = load i32, ptr %limit.addr, align 4, !dbg !25 - %cmp = icmp slt i32 %0, %1, !dbg !26 - br i1 %cmp, label %if.then, label %if.end, !dbg !27 - -if.then: ; preds = %entry - %2 = load i32, ptr @count, align 4, !dbg !28 - %add = add nsw i32 %2, 1, !dbg !30 - store i32 %add, ptr @result, align 4, !dbg !31 - %3 = load i32, ptr @count, align 4, !dbg !32 - %inc = add nsw i32 %3, 1, !dbg !32 - store i32 %inc, ptr @count, align 4, !dbg !32 - %4 = load i32, ptr %limit.addr, align 4, !dbg !33 - call void @bar(i32 noundef %4), !dbg !34 - br label %if.end, !dbg !35 - -if.end: ; preds = %if.then, %entry - ret void, !dbg !36 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @bar(i32 noundef %limit) #0 !dbg !37 { -entry: - %limit.addr = alloca i32, align 4 - store i32 %limit, ptr %limit.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %limit.addr, metadata !38, metadata !DIExpression()), !dbg !39 - %0 = load i32, ptr @count, align 4, !dbg !40 - %1 = load i32, ptr %limit.addr, align 4, !dbg !42 - %cmp = icmp slt i32 %0, %1, !dbg !43 - br i1 %cmp, label %if.then, label %if.end, !dbg !44 - -if.then: ; preds = %entry - %2 = load i32, ptr @count, align 4, !dbg !45 - %sub = sub nsw i32 %2, 1, !dbg !47 - store i32 %sub, ptr @result, align 4, !dbg !48 - %3 = load i32, ptr @count, align 4, !dbg !49 - %inc = add nsw i32 %3, 1, !dbg !49 - store i32 %inc, ptr @count, align 4, !dbg !49 - %4 = load i32, ptr %limit.addr, align 4, !dbg !50 - call void @foo(i32 noundef %4), !dbg !51 - br label %if.end, !dbg !52 - -if.end: ; preds = %if.then, %entry - ret void, !dbg !53 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !54 { -entry: - %retval = alloca i32, align 4 - %limit = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %limit, metadata !57, metadata !DIExpression()), !dbg !58 - %0 = load i32, ptr %limit, align 4, !dbg !59 - %cmp = icmp sgt i32 %0, 0, !dbg !61 - br i1 %cmp, label %if.then, label %if.else5, !dbg !62 - -if.then: ; preds = %entry - %1 = load i32, ptr %limit, align 4, !dbg !63 - call void @foo(i32 noundef %1), !dbg !65 - %2 = load i32, ptr %limit, align 4, !dbg !66 - %rem = srem i32 %2, 2, !dbg !68 - %cmp1 = icmp eq i32 %rem, 1, !dbg !69 - br i1 %cmp1, label %if.then2, label %if.else, !dbg !70 - -if.then2: ; preds = %if.then - %3 = load i32, ptr @result, align 4, !dbg !71 - %4 = load i32, ptr %limit, align 4, !dbg !73 - %cmp3 = icmp eq i32 %3, %4, !dbg !74 - call void @svf_assert(i1 noundef zeroext %cmp3), !dbg !75 - br label %if.end, !dbg !76 - -if.else: ; preds = %if.then - %5 = load i32, ptr @result, align 4, !dbg !77 - %6 = load i32, ptr %limit, align 4, !dbg !79 - %sub = sub nsw i32 %6, 2, !dbg !80 - %cmp4 = icmp eq i32 %5, %sub, !dbg !81 - call void @svf_assert(i1 noundef zeroext %cmp4), !dbg !82 - br label %if.end - -if.end: ; preds = %if.else, %if.then2 - br label %if.end7, !dbg !83 - -if.else5: ; preds = %entry - %7 = load i32, ptr @result, align 4, !dbg !84 - %cmp6 = icmp eq i32 %7, 0, !dbg !86 - call void @svf_assert(i1 noundef zeroext %cmp6), !dbg !87 - br label %if.end7 - -if.end7: ; preds = %if.else5, %if.end - %8 = load i32, ptr %retval, align 4, !dbg !88 - ret i32 %8, !dbg !88 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!2} -!llvm.module.flags = !{!9, !10, !11, !12, !13, !14, !15} -!llvm.ident = !{!16} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(name: "count", scope: !2, file: !7, line: 8, type: !8, isLocal: false, isDefinition: true) -!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None) -!3 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_46-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "31f0d44e8593397567fa2e799d49f1e7") -!4 = !{!0, !5} -!5 = !DIGlobalVariableExpression(var: !6, expr: !DIExpression()) -!6 = distinct !DIGlobalVariable(name: "result", scope: !2, file: !7, line: 9, type: !8, isLocal: false, isDefinition: true) -!7 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_46-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "31f0d44e8593397567fa2e799d49f1e7") -!8 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!9 = !{i32 7, !"Dwarf Version", i32 5} -!10 = !{i32 2, !"Debug Info Version", i32 3} -!11 = !{i32 1, !"wchar_size", i32 4} -!12 = !{i32 8, !"PIC Level", i32 2} -!13 = !{i32 7, !"PIE Level", i32 2} -!14 = !{i32 7, !"uwtable", i32 2} -!15 = !{i32 7, !"frame-pointer", i32 2} -!16 = !{!"clang version 16.0.0"} -!17 = distinct !DISubprogram(name: "foo", scope: !7, file: !7, line: 14, type: !18, scopeLine: 14, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !20) -!18 = !DISubroutineType(types: !19) -!19 = !{null, !8} -!20 = !{} -!21 = !DILocalVariable(name: "limit", arg: 1, scope: !17, file: !7, line: 14, type: !8) -!22 = !DILocation(line: 14, column: 14, scope: !17) -!23 = !DILocation(line: 15, column: 8, scope: !24) -!24 = distinct !DILexicalBlock(scope: !17, file: !7, line: 15, column: 8) -!25 = !DILocation(line: 15, column: 16, scope: !24) -!26 = !DILocation(line: 15, column: 14, scope: !24) -!27 = !DILocation(line: 15, column: 8, scope: !17) -!28 = !DILocation(line: 16, column: 18, scope: !29) -!29 = distinct !DILexicalBlock(scope: !24, file: !7, line: 15, column: 23) -!30 = !DILocation(line: 16, column: 24, scope: !29) -!31 = !DILocation(line: 16, column: 16, scope: !29) -!32 = !DILocation(line: 17, column: 14, scope: !29) -!33 = !DILocation(line: 18, column: 13, scope: !29) -!34 = !DILocation(line: 18, column: 9, scope: !29) -!35 = !DILocation(line: 19, column: 5, scope: !29) -!36 = !DILocation(line: 20, column: 5, scope: !17) -!37 = distinct !DISubprogram(name: "bar", scope: !7, file: !7, line: 23, type: !18, scopeLine: 23, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !20) -!38 = !DILocalVariable(name: "limit", arg: 1, scope: !37, file: !7, line: 23, type: !8) -!39 = !DILocation(line: 23, column: 14, scope: !37) -!40 = !DILocation(line: 24, column: 8, scope: !41) -!41 = distinct !DILexicalBlock(scope: !37, file: !7, line: 24, column: 8) -!42 = !DILocation(line: 24, column: 16, scope: !41) -!43 = !DILocation(line: 24, column: 14, scope: !41) -!44 = !DILocation(line: 24, column: 8, scope: !37) -!45 = !DILocation(line: 25, column: 18, scope: !46) -!46 = distinct !DILexicalBlock(scope: !41, file: !7, line: 24, column: 23) -!47 = !DILocation(line: 25, column: 24, scope: !46) -!48 = !DILocation(line: 25, column: 16, scope: !46) -!49 = !DILocation(line: 26, column: 14, scope: !46) -!50 = !DILocation(line: 27, column: 13, scope: !46) -!51 = !DILocation(line: 27, column: 9, scope: !46) -!52 = !DILocation(line: 28, column: 5, scope: !46) -!53 = !DILocation(line: 29, column: 5, scope: !37) -!54 = distinct !DISubprogram(name: "main", scope: !7, file: !7, line: 32, type: !55, scopeLine: 32, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !20) -!55 = !DISubroutineType(types: !56) -!56 = !{!8} -!57 = !DILocalVariable(name: "limit", scope: !54, file: !7, line: 33, type: !8) -!58 = !DILocation(line: 33, column: 9, scope: !54) -!59 = !DILocation(line: 34, column: 8, scope: !60) -!60 = distinct !DILexicalBlock(scope: !54, file: !7, line: 34, column: 8) -!61 = !DILocation(line: 34, column: 14, scope: !60) -!62 = !DILocation(line: 34, column: 8, scope: !54) -!63 = !DILocation(line: 35, column: 13, scope: !64) -!64 = distinct !DILexicalBlock(scope: !60, file: !7, line: 34, column: 19) -!65 = !DILocation(line: 35, column: 9, scope: !64) -!66 = !DILocation(line: 36, column: 12, scope: !67) -!67 = distinct !DILexicalBlock(scope: !64, file: !7, line: 36, column: 12) -!68 = !DILocation(line: 36, column: 18, scope: !67) -!69 = !DILocation(line: 36, column: 22, scope: !67) -!70 = !DILocation(line: 36, column: 12, scope: !64) -!71 = !DILocation(line: 37, column: 24, scope: !72) -!72 = distinct !DILexicalBlock(scope: !67, file: !7, line: 36, column: 28) -!73 = !DILocation(line: 37, column: 34, scope: !72) -!74 = !DILocation(line: 37, column: 31, scope: !72) -!75 = !DILocation(line: 37, column: 13, scope: !72) -!76 = !DILocation(line: 38, column: 9, scope: !72) -!77 = !DILocation(line: 40, column: 24, scope: !78) -!78 = distinct !DILexicalBlock(scope: !67, file: !7, line: 39, column: 14) -!79 = !DILocation(line: 40, column: 34, scope: !78) -!80 = !DILocation(line: 40, column: 40, scope: !78) -!81 = !DILocation(line: 40, column: 31, scope: !78) -!82 = !DILocation(line: 40, column: 13, scope: !78) -!83 = !DILocation(line: 42, column: 5, scope: !64) -!84 = !DILocation(line: 44, column: 20, scope: !85) -!85 = distinct !DILexicalBlock(scope: !60, file: !7, line: 43, column: 10) -!86 = !DILocation(line: 44, column: 27, scope: !85) -!87 = !DILocation(line: 44, column: 9, scope: !85) -!88 = !DILocation(line: 46, column: 1, scope: !54) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_47-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_47-0.c.bc deleted file mode 100644 index 1c037c20..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_47-0.c.bc +++ /dev/null @@ -1,246 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_47-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_47-0.c" -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-unknown-linux-gnu" - -@count = dso_local global i32 0, align 4, !dbg !0 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local zeroext i1 @isPalindrome(ptr noundef %word, i32 noundef %index) #0 !dbg !15 { -entry: - %retval = alloca i1, align 1 - %word.addr = alloca ptr, align 8 - %index.addr = alloca i32, align 4 - %length = alloca i32, align 4 - store ptr %word, ptr %word.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %word.addr, metadata !22, metadata !DIExpression()), !dbg !23 - store i32 %index, ptr %index.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %index.addr, metadata !24, metadata !DIExpression()), !dbg !25 - %0 = load i32, ptr @count, align 4, !dbg !26 - %inc = add nsw i32 %0, 1, !dbg !26 - store i32 %inc, ptr @count, align 4, !dbg !26 - call void @llvm.dbg.declare(metadata ptr %length, metadata !27, metadata !DIExpression()), !dbg !28 - %1 = load ptr, ptr %word.addr, align 8, !dbg !29 - %call = call i64 @strlen(ptr noundef %1) #4, !dbg !30 - %2 = load i32, ptr %index.addr, align 4, !dbg !31 - %add = add nsw i32 %2, 1, !dbg !32 - %conv = sext i32 %add to i64, !dbg !33 - %sub = sub i64 %call, %conv, !dbg !34 - %conv1 = trunc i64 %sub to i32, !dbg !30 - store i32 %conv1, ptr %length, align 4, !dbg !28 - %3 = load ptr, ptr %word.addr, align 8, !dbg !35 - %4 = load i32, ptr %index.addr, align 4, !dbg !37 - %idxprom = sext i32 %4 to i64, !dbg !35 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 %idxprom, !dbg !35 - %5 = load i8, ptr %arrayidx, align 1, !dbg !35 - %conv2 = sext i8 %5 to i32, !dbg !35 - %6 = load ptr, ptr %word.addr, align 8, !dbg !38 - %7 = load i32, ptr %length, align 4, !dbg !39 - %idxprom3 = sext i32 %7 to i64, !dbg !38 - %arrayidx4 = getelementptr inbounds i8, ptr %6, i64 %idxprom3, !dbg !38 - %8 = load i8, ptr %arrayidx4, align 1, !dbg !38 - %conv5 = sext i8 %8 to i32, !dbg !38 - %cmp = icmp eq i32 %conv2, %conv5, !dbg !40 - br i1 %cmp, label %if.then, label %if.else, !dbg !41 - -if.then: ; preds = %entry - %9 = load i32, ptr %index.addr, align 4, !dbg !42 - %add7 = add nsw i32 %9, 1, !dbg !45 - %10 = load i32, ptr %length, align 4, !dbg !46 - %cmp8 = icmp eq i32 %add7, %10, !dbg !47 - br i1 %cmp8, label %if.then12, label %lor.lhs.false, !dbg !48 - -lor.lhs.false: ; preds = %if.then - %11 = load i32, ptr %index.addr, align 4, !dbg !49 - %12 = load i32, ptr %length, align 4, !dbg !50 - %cmp10 = icmp eq i32 %11, %12, !dbg !51 - br i1 %cmp10, label %if.then12, label %if.end, !dbg !52 - -if.then12: ; preds = %lor.lhs.false, %if.then - store i1 true, ptr %retval, align 1, !dbg !53 - br label %if.end15, !dbg !53 - -if.end: ; preds = %lor.lhs.false - %13 = load ptr, ptr %word.addr, align 8, !dbg !55 - %14 = load i32, ptr %index.addr, align 4, !dbg !56 - %add13 = add nsw i32 %14, 1, !dbg !57 - %call14 = call zeroext i1 @isPalindrome(ptr noundef %13, i32 noundef %add13), !dbg !58 - br label %if.end15, !dbg !59 - -if.else: ; preds = %entry - store i1 false, ptr %retval, align 1, !dbg !60 - br label %if.end15, !dbg !60 - -if.end15: ; preds = %if.else, %if.end, %if.then12 - %15 = load i1, ptr %retval, align 1, !dbg !62 - ret i1 %15, !dbg !62 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !63 { -entry: - %retval = alloca i32, align 4 - %word = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %word, metadata !66, metadata !DIExpression()), !dbg !67 - %0 = load ptr, ptr %word, align 8, !dbg !68 - %call = call i64 @strlen(ptr noundef %0) #4, !dbg !70 - %cmp = icmp ugt i64 %call, 0, !dbg !71 - br i1 %cmp, label %if.then, label %if.end13, !dbg !72 - -if.then: ; preds = %entry - %1 = load ptr, ptr %word, align 8, !dbg !73 - %call1 = call zeroext i1 @isPalindrome(ptr noundef %1, i32 noundef 0), !dbg !75 - %2 = load ptr, ptr %word, align 8, !dbg !76 - %call2 = call i64 @strlen(ptr noundef %2) #4, !dbg !78 - %rem = urem i64 %call2, 2, !dbg !79 - %cmp3 = icmp eq i64 %rem, 0, !dbg !80 - br i1 %cmp3, label %if.then4, label %if.else, !dbg !81 - -if.then4: ; preds = %if.then - %3 = load i32, ptr @count, align 4, !dbg !82 - %conv = sext i32 %3 to i64, !dbg !82 - %4 = load ptr, ptr %word, align 8, !dbg !84 - %call5 = call i64 @strlen(ptr noundef %4) #4, !dbg !85 - %div = udiv i64 %call5, 2, !dbg !86 - %cmp6 = icmp eq i64 %conv, %div, !dbg !87 - call void @svf_assert(i1 noundef zeroext %cmp6), !dbg !88 - br label %if.end, !dbg !89 - -if.else: ; preds = %if.then - %5 = load i32, ptr @count, align 4, !dbg !90 - %conv8 = sext i32 %5 to i64, !dbg !90 - %6 = load ptr, ptr %word, align 8, !dbg !92 - %call9 = call i64 @strlen(ptr noundef %6) #4, !dbg !93 - %add = add i64 %call9, 1, !dbg !94 - %div10 = udiv i64 %add, 2, !dbg !95 - %cmp11 = icmp eq i64 %conv8, %div10, !dbg !96 - call void @svf_assert(i1 noundef zeroext %cmp11), !dbg !97 - br label %if.end - -if.end: ; preds = %if.else, %if.then4 - br label %if.end13, !dbg !98 - -if.end13: ; preds = %if.end, %entry - %7 = load i32, ptr %retval, align 4, !dbg !99 - ret i32 %7, !dbg !99 -} - -declare void @svf_assert(i1 noundef zeroext) #3 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind willreturn memory(read) } - -!llvm.dbg.cu = !{!2} -!llvm.module.flags = !{!7, !8, !9, !10, !11, !12, !13} -!llvm.ident = !{!14} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(name: "count", scope: !2, file: !5, line: 8, type: !6, isLocal: false, isDefinition: true) -!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None) -!3 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_47-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "eb13a52284cb354bd0e7e49e54c2f100") -!4 = !{!0} -!5 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_47-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "eb13a52284cb354bd0e7e49e54c2f100") -!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!7 = !{i32 7, !"Dwarf Version", i32 5} -!8 = !{i32 2, !"Debug Info Version", i32 3} -!9 = !{i32 1, !"wchar_size", i32 4} -!10 = !{i32 8, !"PIC Level", i32 2} -!11 = !{i32 7, !"PIE Level", i32 2} -!12 = !{i32 7, !"uwtable", i32 2} -!13 = !{i32 7, !"frame-pointer", i32 2} -!14 = !{!"clang version 16.0.0"} -!15 = distinct !DISubprogram(name: "isPalindrome", scope: !5, file: !5, line: 10, type: !16, scopeLine: 10, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !21) -!16 = !DISubroutineType(types: !17) -!17 = !{!18, !19, !6} -!18 = !DIBasicType(name: "_Bool", size: 8, encoding: DW_ATE_boolean) -!19 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !20, size: 64) -!20 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!21 = !{} -!22 = !DILocalVariable(name: "word", arg: 1, scope: !15, file: !5, line: 10, type: !19) -!23 = !DILocation(line: 10, column: 25, scope: !15) -!24 = !DILocalVariable(name: "index", arg: 2, scope: !15, file: !5, line: 10, type: !6) -!25 = !DILocation(line: 10, column: 35, scope: !15) -!26 = !DILocation(line: 11, column: 10, scope: !15) -!27 = !DILocalVariable(name: "length", scope: !15, file: !5, line: 12, type: !6) -!28 = !DILocation(line: 12, column: 9, scope: !15) -!29 = !DILocation(line: 12, column: 25, scope: !15) -!30 = !DILocation(line: 12, column: 18, scope: !15) -!31 = !DILocation(line: 12, column: 34, scope: !15) -!32 = !DILocation(line: 12, column: 40, scope: !15) -!33 = !DILocation(line: 12, column: 33, scope: !15) -!34 = !DILocation(line: 12, column: 31, scope: !15) -!35 = !DILocation(line: 13, column: 9, scope: !36) -!36 = distinct !DILexicalBlock(scope: !15, file: !5, line: 13, column: 9) -!37 = !DILocation(line: 13, column: 14, scope: !36) -!38 = !DILocation(line: 13, column: 24, scope: !36) -!39 = !DILocation(line: 13, column: 29, scope: !36) -!40 = !DILocation(line: 13, column: 21, scope: !36) -!41 = !DILocation(line: 13, column: 9, scope: !15) -!42 = !DILocation(line: 14, column: 13, scope: !43) -!43 = distinct !DILexicalBlock(scope: !44, file: !5, line: 14, column: 13) -!44 = distinct !DILexicalBlock(scope: !36, file: !5, line: 13, column: 38) -!45 = !DILocation(line: 14, column: 19, scope: !43) -!46 = !DILocation(line: 14, column: 26, scope: !43) -!47 = !DILocation(line: 14, column: 23, scope: !43) -!48 = !DILocation(line: 14, column: 33, scope: !43) -!49 = !DILocation(line: 14, column: 36, scope: !43) -!50 = !DILocation(line: 14, column: 45, scope: !43) -!51 = !DILocation(line: 14, column: 42, scope: !43) -!52 = !DILocation(line: 14, column: 13, scope: !44) -!53 = !DILocation(line: 15, column: 13, scope: !54) -!54 = distinct !DILexicalBlock(scope: !43, file: !5, line: 14, column: 53) -!55 = !DILocation(line: 17, column: 22, scope: !44) -!56 = !DILocation(line: 17, column: 28, scope: !44) -!57 = !DILocation(line: 17, column: 34, scope: !44) -!58 = !DILocation(line: 17, column: 9, scope: !44) -!59 = !DILocation(line: 18, column: 5, scope: !44) -!60 = !DILocation(line: 20, column: 9, scope: !61) -!61 = distinct !DILexicalBlock(scope: !36, file: !5, line: 19, column: 10) -!62 = !DILocation(line: 22, column: 1, scope: !15) -!63 = distinct !DISubprogram(name: "main", scope: !5, file: !5, line: 24, type: !64, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !21) -!64 = !DISubroutineType(types: !65) -!65 = !{!6} -!66 = !DILocalVariable(name: "word", scope: !63, file: !5, line: 25, type: !19) -!67 = !DILocation(line: 25, column: 11, scope: !63) -!68 = !DILocation(line: 26, column: 15, scope: !69) -!69 = distinct !DILexicalBlock(scope: !63, file: !5, line: 26, column: 8) -!70 = !DILocation(line: 26, column: 8, scope: !69) -!71 = !DILocation(line: 26, column: 21, scope: !69) -!72 = !DILocation(line: 26, column: 8, scope: !63) -!73 = !DILocation(line: 27, column: 22, scope: !74) -!74 = distinct !DILexicalBlock(scope: !69, file: !5, line: 26, column: 26) -!75 = !DILocation(line: 27, column: 9, scope: !74) -!76 = !DILocation(line: 28, column: 19, scope: !77) -!77 = distinct !DILexicalBlock(scope: !74, file: !5, line: 28, column: 12) -!78 = !DILocation(line: 28, column: 12, scope: !77) -!79 = !DILocation(line: 28, column: 25, scope: !77) -!80 = !DILocation(line: 28, column: 29, scope: !77) -!81 = !DILocation(line: 28, column: 12, scope: !74) -!82 = !DILocation(line: 29, column: 24, scope: !83) -!83 = distinct !DILexicalBlock(scope: !77, file: !5, line: 28, column: 35) -!84 = !DILocation(line: 29, column: 40, scope: !83) -!85 = !DILocation(line: 29, column: 33, scope: !83) -!86 = !DILocation(line: 29, column: 45, scope: !83) -!87 = !DILocation(line: 29, column: 30, scope: !83) -!88 = !DILocation(line: 29, column: 13, scope: !83) -!89 = !DILocation(line: 30, column: 9, scope: !83) -!90 = !DILocation(line: 32, column: 24, scope: !91) -!91 = distinct !DILexicalBlock(scope: !77, file: !5, line: 31, column: 14) -!92 = !DILocation(line: 32, column: 41, scope: !91) -!93 = !DILocation(line: 32, column: 34, scope: !91) -!94 = !DILocation(line: 32, column: 47, scope: !91) -!95 = !DILocation(line: 32, column: 51, scope: !91) -!96 = !DILocation(line: 32, column: 30, scope: !91) -!97 = !DILocation(line: 32, column: 13, scope: !91) -!98 = !DILocation(line: 34, column: 5, scope: !74) -!99 = !DILocation(line: 35, column: 1, scope: !63) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_48-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_48-0.c.bc deleted file mode 100644 index b8981557..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_48-0.c.bc +++ /dev/null @@ -1,112 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_48-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_48-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %c = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 0, ptr %a, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 0, ptr %b, align 4, !dbg !19 - call void @llvm.dbg.declare(metadata ptr %c, metadata !20, metadata !DIExpression()), !dbg !21 - br label %LOOP, !dbg !22 - -LOOP: ; preds = %if.then, %entry - call void @llvm.dbg.label(metadata !23), !dbg !24 - %0 = load i32, ptr %a, align 4, !dbg !25 - %1 = load i32, ptr %c, align 4, !dbg !27 - %cmp = icmp slt i32 %0, %1, !dbg !28 - br i1 %cmp, label %if.then, label %if.end, !dbg !29 - -if.then: ; preds = %LOOP - %2 = load i32, ptr %a, align 4, !dbg !30 - %inc = add nsw i32 %2, 1, !dbg !30 - store i32 %inc, ptr %a, align 4, !dbg !30 - %3 = load i32, ptr %b, align 4, !dbg !32 - %add = add nsw i32 %3, 2, !dbg !33 - store i32 %add, ptr %b, align 4, !dbg !34 - br label %LOOP, !dbg !35 - -if.end: ; preds = %LOOP - %4 = load i32, ptr %a, align 4, !dbg !36 - %5 = load i32, ptr %c, align 4, !dbg !37 - %cmp1 = icmp eq i32 %4, %5, !dbg !38 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !39 - %6 = load i32, ptr %b, align 4, !dbg !40 - %7 = load i32, ptr %a, align 4, !dbg !41 - %mul = mul nsw i32 %7, 2, !dbg !42 - %cmp2 = icmp eq i32 %6, %mul, !dbg !43 - call void @svf_assert(i1 noundef zeroext %cmp2), !dbg !44 - %8 = load i32, ptr %retval, align 4, !dbg !45 - ret i32 %8, !dbg !45 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.label(metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_48-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "30835e56fb2e05d1f71b4554b1d67c87") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 8, type: !12, scopeLine: 8, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_48-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "30835e56fb2e05d1f71b4554b1d67c87") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 9, type: !14) -!17 = !DILocation(line: 9, column: 6, scope: !10) -!18 = !DILocalVariable(name: "b", scope: !10, file: !11, line: 10, type: !14) -!19 = !DILocation(line: 10, column: 9, scope: !10) -!20 = !DILocalVariable(name: "c", scope: !10, file: !11, line: 11, type: !14) -!21 = !DILocation(line: 11, column: 9, scope: !10) -!22 = !DILocation(line: 11, column: 5, scope: !10) -!23 = !DILabel(scope: !10, name: "LOOP", file: !11, line: 12) -!24 = !DILocation(line: 12, column: 5, scope: !10) -!25 = !DILocation(line: 13, column: 8, scope: !26) -!26 = distinct !DILexicalBlock(scope: !10, file: !11, line: 13, column: 8) -!27 = !DILocation(line: 13, column: 12, scope: !26) -!28 = !DILocation(line: 13, column: 10, scope: !26) -!29 = !DILocation(line: 13, column: 8, scope: !10) -!30 = !DILocation(line: 14, column: 10, scope: !31) -!31 = distinct !DILexicalBlock(scope: !26, file: !11, line: 13, column: 15) -!32 = !DILocation(line: 15, column: 13, scope: !31) -!33 = !DILocation(line: 15, column: 15, scope: !31) -!34 = !DILocation(line: 15, column: 11, scope: !31) -!35 = !DILocation(line: 16, column: 9, scope: !31) -!36 = !DILocation(line: 18, column: 16, scope: !10) -!37 = !DILocation(line: 18, column: 21, scope: !10) -!38 = !DILocation(line: 18, column: 18, scope: !10) -!39 = !DILocation(line: 18, column: 5, scope: !10) -!40 = !DILocation(line: 19, column: 16, scope: !10) -!41 = !DILocation(line: 19, column: 21, scope: !10) -!42 = !DILocation(line: 19, column: 23, scope: !10) -!43 = !DILocation(line: 19, column: 18, scope: !10) -!44 = !DILocation(line: 19, column: 5, scope: !10) -!45 = !DILocation(line: 20, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_49-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_49-0.c.bc deleted file mode 100644 index cfa87355..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_49-0.c.bc +++ /dev/null @@ -1,105 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_49-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_49-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @foo(ptr noundef %i) #0 !dbg !10 { -entry: - %i.addr = alloca ptr, align 8 - store ptr %i, ptr %i.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !17, metadata !DIExpression()), !dbg !18 - br label %LOOP, !dbg !19 - -LOOP: ; preds = %if.then, %entry - call void @llvm.dbg.label(metadata !20), !dbg !21 - %0 = load ptr, ptr %i.addr, align 8, !dbg !22 - %1 = load i32, ptr %0, align 4, !dbg !23 - %add = add nsw i32 %1, 1, !dbg !24 - %2 = load ptr, ptr %i.addr, align 8, !dbg !25 - store i32 %add, ptr %2, align 4, !dbg !26 - %3 = load ptr, ptr %i.addr, align 8, !dbg !27 - %4 = load i32, ptr %3, align 4, !dbg !29 - %cmp = icmp slt i32 %4, 10, !dbg !30 - br i1 %cmp, label %if.then, label %if.end, !dbg !31 - -if.then: ; preds = %LOOP - br label %LOOP, !dbg !32 - -if.end: ; preds = %LOOP - ret void, !dbg !34 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.label(metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !35 { -entry: - %i = alloca i32, align 4 - call void @llvm.dbg.declare(metadata ptr %i, metadata !38, metadata !DIExpression()), !dbg !39 - call void @foo(ptr noundef %i), !dbg !40 - %0 = load i32, ptr %i, align 4, !dbg !41 - %cmp = icmp sge i32 %0, 10, !dbg !42 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !43 - ret i32 0, !dbg !44 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_49-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "93ac1bedd0f516a5ec04032f23489235") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "foo", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_49-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "93ac1bedd0f516a5ec04032f23489235") -!12 = !DISubroutineType(types: !13) -!13 = !{null, !14} -!14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) -!15 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!16 = !{} -!17 = !DILocalVariable(name: "i", arg: 1, scope: !10, file: !11, line: 5, type: !14) -!18 = !DILocation(line: 5, column: 15, scope: !10) -!19 = !DILocation(line: 5, column: 18, scope: !10) -!20 = !DILabel(scope: !10, name: "LOOP", file: !11, line: 6) -!21 = !DILocation(line: 6, column: 5, scope: !10) -!22 = !DILocation(line: 7, column: 11, scope: !10) -!23 = !DILocation(line: 7, column: 10, scope: !10) -!24 = !DILocation(line: 7, column: 13, scope: !10) -!25 = !DILocation(line: 7, column: 6, scope: !10) -!26 = !DILocation(line: 7, column: 8, scope: !10) -!27 = !DILocation(line: 8, column: 9, scope: !28) -!28 = distinct !DILexicalBlock(scope: !10, file: !11, line: 8, column: 8) -!29 = !DILocation(line: 8, column: 8, scope: !28) -!30 = !DILocation(line: 8, column: 11, scope: !28) -!31 = !DILocation(line: 8, column: 8, scope: !10) -!32 = !DILocation(line: 9, column: 9, scope: !33) -!33 = distinct !DILexicalBlock(scope: !28, file: !11, line: 8, column: 17) -!34 = !DILocation(line: 11, column: 1, scope: !10) -!35 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 13, type: !36, scopeLine: 13, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!36 = !DISubroutineType(types: !37) -!37 = !{!15} -!38 = !DILocalVariable(name: "i", scope: !35, file: !11, line: 14, type: !15) -!39 = !DILocation(line: 14, column: 9, scope: !35) -!40 = !DILocation(line: 15, column: 5, scope: !35) -!41 = !DILocation(line: 16, column: 16, scope: !35) -!42 = !DILocation(line: 16, column: 18, scope: !35) -!43 = !DILocation(line: 16, column: 5, scope: !35) -!44 = !DILocation(line: 17, column: 1, scope: !35) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_50-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_50-0.c.bc deleted file mode 100644 index 4d164e12..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_50-0.c.bc +++ /dev/null @@ -1,170 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_50-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_50-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @loop(i32 noundef %a) #0 !dbg !10 { -entry: - %a.addr = alloca i32, align 4 - %output = alloca i32, align 4 - %i = alloca i32, align 4 - store i32 %a, ptr %a.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %output, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 0, ptr %output, align 4, !dbg !19 - call void @llvm.dbg.declare(metadata ptr %i, metadata !20, metadata !DIExpression()), !dbg !21 - store i32 1, ptr %i, align 4, !dbg !21 - br label %while.body, !dbg !22 - -while.body: ; preds = %if.end3, %entry - %0 = load i32, ptr %i, align 4, !dbg !23 - %rem = srem i32 %0, 2, !dbg !26 - %cmp = icmp eq i32 %rem, 0, !dbg !27 - br i1 %cmp, label %if.then, label %if.end, !dbg !28 - -if.then: ; preds = %while.body - %1 = load i32, ptr %output, align 4, !dbg !29 - %inc = add nsw i32 %1, 1, !dbg !29 - store i32 %inc, ptr %output, align 4, !dbg !29 - br label %if.end, !dbg !31 - -if.end: ; preds = %if.then, %while.body - %2 = load i32, ptr %i, align 4, !dbg !32 - %3 = load i32, ptr %a.addr, align 4, !dbg !34 - %cmp1 = icmp eq i32 %2, %3, !dbg !35 - br i1 %cmp1, label %if.then2, label %if.end3, !dbg !36 - -if.then2: ; preds = %if.end - br label %while.end, !dbg !37 - -if.end3: ; preds = %if.end - %4 = load i32, ptr %i, align 4, !dbg !39 - %inc4 = add nsw i32 %4, 1, !dbg !39 - store i32 %inc4, ptr %i, align 4, !dbg !39 - br label %while.body, !dbg !22, !llvm.loop !40 - -while.end: ; preds = %if.then2 - %5 = load i32, ptr %output, align 4, !dbg !42 - ret i32 %5, !dbg !43 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !44 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %output = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !47, metadata !DIExpression()), !dbg !48 - call void @llvm.dbg.declare(metadata ptr %output, metadata !49, metadata !DIExpression()), !dbg !50 - store i32 0, ptr %output, align 4, !dbg !50 - %0 = load i32, ptr %a, align 4, !dbg !51 - %cmp = icmp sgt i32 %0, 0, !dbg !53 - br i1 %cmp, label %if.then, label %if.else, !dbg !54 - -if.then: ; preds = %entry - %1 = load i32, ptr %a, align 4, !dbg !55 - %call = call i32 @loop(i32 noundef %1), !dbg !57 - store i32 %call, ptr %output, align 4, !dbg !58 - %2 = load i32, ptr %output, align 4, !dbg !59 - %3 = load i32, ptr %a, align 4, !dbg !60 - %div = sdiv i32 %3, 2, !dbg !61 - %cmp1 = icmp eq i32 %2, %div, !dbg !62 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !63 - br label %if.end, !dbg !64 - -if.else: ; preds = %entry - %4 = load i32, ptr %output, align 4, !dbg !65 - %cmp2 = icmp eq i32 %4, 0, !dbg !67 - call void @svf_assert(i1 noundef zeroext %cmp2), !dbg !68 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %5 = load i32, ptr %retval, align 4, !dbg !69 - ret i32 %5, !dbg !69 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_50-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e96c3fbe1c74c7ab4d61f76bad33d29c") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "loop", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_50-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e96c3fbe1c74c7ab4d61f76bad33d29c") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", arg: 1, scope: !10, file: !11, line: 5, type: !14) -!17 = !DILocation(line: 5, column: 14, scope: !10) -!18 = !DILocalVariable(name: "output", scope: !10, file: !11, line: 6, type: !14) -!19 = !DILocation(line: 6, column: 9, scope: !10) -!20 = !DILocalVariable(name: "i", scope: !10, file: !11, line: 7, type: !14) -!21 = !DILocation(line: 7, column: 9, scope: !10) -!22 = !DILocation(line: 8, column: 5, scope: !10) -!23 = !DILocation(line: 9, column: 12, scope: !24) -!24 = distinct !DILexicalBlock(scope: !25, file: !11, line: 9, column: 12) -!25 = distinct !DILexicalBlock(scope: !10, file: !11, line: 8, column: 17) -!26 = !DILocation(line: 9, column: 14, scope: !24) -!27 = !DILocation(line: 9, column: 18, scope: !24) -!28 = !DILocation(line: 9, column: 12, scope: !25) -!29 = !DILocation(line: 10, column: 19, scope: !30) -!30 = distinct !DILexicalBlock(scope: !24, file: !11, line: 9, column: 24) -!31 = !DILocation(line: 11, column: 9, scope: !30) -!32 = !DILocation(line: 12, column: 12, scope: !33) -!33 = distinct !DILexicalBlock(scope: !25, file: !11, line: 12, column: 12) -!34 = !DILocation(line: 12, column: 17, scope: !33) -!35 = !DILocation(line: 12, column: 14, scope: !33) -!36 = !DILocation(line: 12, column: 12, scope: !25) -!37 = !DILocation(line: 13, column: 13, scope: !38) -!38 = distinct !DILexicalBlock(scope: !33, file: !11, line: 12, column: 20) -!39 = !DILocation(line: 15, column: 10, scope: !25) -!40 = distinct !{!40, !22, !41} -!41 = !DILocation(line: 16, column: 5, scope: !10) -!42 = !DILocation(line: 17, column: 12, scope: !10) -!43 = !DILocation(line: 17, column: 5, scope: !10) -!44 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 20, type: !45, scopeLine: 20, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!45 = !DISubroutineType(types: !46) -!46 = !{!14} -!47 = !DILocalVariable(name: "a", scope: !44, file: !11, line: 21, type: !14) -!48 = !DILocation(line: 21, column: 9, scope: !44) -!49 = !DILocalVariable(name: "output", scope: !44, file: !11, line: 22, type: !14) -!50 = !DILocation(line: 22, column: 9, scope: !44) -!51 = !DILocation(line: 23, column: 8, scope: !52) -!52 = distinct !DILexicalBlock(scope: !44, file: !11, line: 23, column: 8) -!53 = !DILocation(line: 23, column: 10, scope: !52) -!54 = !DILocation(line: 23, column: 8, scope: !44) -!55 = !DILocation(line: 24, column: 23, scope: !56) -!56 = distinct !DILexicalBlock(scope: !52, file: !11, line: 23, column: 15) -!57 = !DILocation(line: 24, column: 18, scope: !56) -!58 = !DILocation(line: 24, column: 16, scope: !56) -!59 = !DILocation(line: 25, column: 20, scope: !56) -!60 = !DILocation(line: 25, column: 30, scope: !56) -!61 = !DILocation(line: 25, column: 31, scope: !56) -!62 = !DILocation(line: 25, column: 27, scope: !56) -!63 = !DILocation(line: 25, column: 9, scope: !56) -!64 = !DILocation(line: 26, column: 5, scope: !56) -!65 = !DILocation(line: 28, column: 20, scope: !66) -!66 = distinct !DILexicalBlock(scope: !52, file: !11, line: 27, column: 10) -!67 = !DILocation(line: 28, column: 27, scope: !66) -!68 = !DILocation(line: 28, column: 9, scope: !66) -!69 = !DILocation(line: 30, column: 1, scope: !44) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_51-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_51-0.c.bc deleted file mode 100644 index 413bea0c..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_51-0.c.bc +++ /dev/null @@ -1,151 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_51-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_51-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @digitCount(i32 noundef %i) #0 !dbg !10 { -entry: - %i.addr = alloca i32, align 4 - %counter = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %counter, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 0, ptr %counter, align 4, !dbg !19 - br label %LOOP, !dbg !20 - -LOOP: ; preds = %if.then, %entry - call void @llvm.dbg.label(metadata !21), !dbg !22 - %0 = load i32, ptr %i.addr, align 4, !dbg !23 - %div = sdiv i32 %0, 10, !dbg !24 - store i32 %div, ptr %i.addr, align 4, !dbg !25 - %1 = load i32, ptr %counter, align 4, !dbg !26 - %inc = add nsw i32 %1, 1, !dbg !26 - store i32 %inc, ptr %counter, align 4, !dbg !26 - %2 = load i32, ptr %i.addr, align 4, !dbg !27 - %cmp = icmp ne i32 %2, 0, !dbg !29 - br i1 %cmp, label %if.then, label %if.end, !dbg !30 - -if.then: ; preds = %LOOP - br label %LOOP, !dbg !31 - -if.end: ; preds = %LOOP - %3 = load i32, ptr %counter, align 4, !dbg !33 - ret i32 %3, !dbg !34 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.label(metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !35 { -entry: - %retval = alloca i32, align 4 - %randomNumber = alloca i32, align 4 - %counter = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %call = call i32 (i32, ...) @time(i32 noundef 0), !dbg !38 - call void @srand(i32 noundef %call) #4, !dbg !39 - call void @llvm.dbg.declare(metadata ptr %randomNumber, metadata !40, metadata !DIExpression()), !dbg !41 - %call1 = call i32 @rand() #4, !dbg !42 - %rem = srem i32 %call1, 999, !dbg !43 - store i32 %rem, ptr %randomNumber, align 4, !dbg !41 - call void @llvm.dbg.declare(metadata ptr %counter, metadata !44, metadata !DIExpression()), !dbg !45 - %0 = load i32, ptr %randomNumber, align 4, !dbg !46 - %call2 = call i32 @digitCount(i32 noundef %0), !dbg !47 - store i32 %call2, ptr %counter, align 4, !dbg !45 - %1 = load i32, ptr %counter, align 4, !dbg !48 - %cmp = icmp sge i32 %1, 1, !dbg !49 - br i1 %cmp, label %land.rhs, label %land.end, !dbg !50 - -land.rhs: ; preds = %entry - %2 = load i32, ptr %counter, align 4, !dbg !51 - %cmp3 = icmp sle i32 %2, 3, !dbg !52 - br label %land.end - -land.end: ; preds = %land.rhs, %entry - %3 = phi i1 [ false, %entry ], [ %cmp3, %land.rhs ], !dbg !53 - call void @svf_assert(i1 noundef zeroext %3), !dbg !54 - %4 = load i32, ptr %retval, align 4, !dbg !55 - ret i32 %4, !dbg !55 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -declare i32 @time(...) #3 - -; Function Attrs: nounwind -declare i32 @rand() #2 - -declare void @svf_assert(i1 noundef zeroext) #3 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_51-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "487c5fd3a66d3d7944fd6b5380a10a46") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "digitCount", scope: !11, file: !11, line: 7, type: !12, scopeLine: 7, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_51-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "487c5fd3a66d3d7944fd6b5380a10a46") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "i", arg: 1, scope: !10, file: !11, line: 7, type: !14) -!17 = !DILocation(line: 7, column: 20, scope: !10) -!18 = !DILocalVariable(name: "counter", scope: !10, file: !11, line: 8, type: !14) -!19 = !DILocation(line: 8, column: 9, scope: !10) -!20 = !DILocation(line: 8, column: 5, scope: !10) -!21 = !DILabel(scope: !10, name: "LOOP", file: !11, line: 9) -!22 = !DILocation(line: 9, column: 5, scope: !10) -!23 = !DILocation(line: 10, column: 9, scope: !10) -!24 = !DILocation(line: 10, column: 10, scope: !10) -!25 = !DILocation(line: 10, column: 7, scope: !10) -!26 = !DILocation(line: 11, column: 12, scope: !10) -!27 = !DILocation(line: 12, column: 8, scope: !28) -!28 = distinct !DILexicalBlock(scope: !10, file: !11, line: 12, column: 8) -!29 = !DILocation(line: 12, column: 10, scope: !28) -!30 = !DILocation(line: 12, column: 8, scope: !10) -!31 = !DILocation(line: 13, column: 9, scope: !32) -!32 = distinct !DILexicalBlock(scope: !28, file: !11, line: 12, column: 16) -!33 = !DILocation(line: 15, column: 12, scope: !10) -!34 = !DILocation(line: 15, column: 5, scope: !10) -!35 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 18, type: !36, scopeLine: 18, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!36 = !DISubroutineType(types: !37) -!37 = !{!14} -!38 = !DILocation(line: 19, column: 11, scope: !35) -!39 = !DILocation(line: 19, column: 5, scope: !35) -!40 = !DILocalVariable(name: "randomNumber", scope: !35, file: !11, line: 20, type: !14) -!41 = !DILocation(line: 20, column: 6, scope: !35) -!42 = !DILocation(line: 20, column: 21, scope: !35) -!43 = !DILocation(line: 20, column: 28, scope: !35) -!44 = !DILocalVariable(name: "counter", scope: !35, file: !11, line: 21, type: !14) -!45 = !DILocation(line: 21, column: 9, scope: !35) -!46 = !DILocation(line: 21, column: 30, scope: !35) -!47 = !DILocation(line: 21, column: 19, scope: !35) -!48 = !DILocation(line: 22, column: 16, scope: !35) -!49 = !DILocation(line: 22, column: 24, scope: !35) -!50 = !DILocation(line: 22, column: 29, scope: !35) -!51 = !DILocation(line: 22, column: 32, scope: !35) -!52 = !DILocation(line: 22, column: 40, scope: !35) -!53 = !DILocation(line: 0, scope: !35) -!54 = !DILocation(line: 22, column: 5, scope: !35) -!55 = !DILocation(line: 23, column: 1, scope: !35) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_52-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_52-0.c.bc deleted file mode 100644 index 004fe72d..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_52-0.c.bc +++ /dev/null @@ -1,151 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_52-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_52-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @digitCount(i32 noundef %i) #0 !dbg !10 { -entry: - %i.addr = alloca i32, align 4 - %counter = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %i.addr, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %counter, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 0, ptr %counter, align 4, !dbg !19 - br label %while.body, !dbg !20 - -while.body: ; preds = %if.end, %entry - %0 = load i32, ptr %i.addr, align 4, !dbg !21 - %div = sdiv i32 %0, 10, !dbg !23 - store i32 %div, ptr %i.addr, align 4, !dbg !24 - %1 = load i32, ptr %counter, align 4, !dbg !25 - %inc = add nsw i32 %1, 1, !dbg !25 - store i32 %inc, ptr %counter, align 4, !dbg !25 - %2 = load i32, ptr %i.addr, align 4, !dbg !26 - %cmp = icmp eq i32 %2, 0, !dbg !28 - br i1 %cmp, label %if.then, label %if.end, !dbg !29 - -if.then: ; preds = %while.body - br label %while.end, !dbg !30 - -if.end: ; preds = %while.body - br label %while.body, !dbg !20, !llvm.loop !32 - -while.end: ; preds = %if.then - %3 = load i32, ptr %counter, align 4, !dbg !34 - ret i32 %3, !dbg !35 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !36 { -entry: - %retval = alloca i32, align 4 - %randomNumber = alloca i32, align 4 - %counter = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %call = call i32 (i32, ...) @time(i32 noundef 0), !dbg !39 - call void @srand(i32 noundef %call) #4, !dbg !40 - call void @llvm.dbg.declare(metadata ptr %randomNumber, metadata !41, metadata !DIExpression()), !dbg !42 - %call1 = call i32 @rand() #4, !dbg !43 - %rem = srem i32 %call1, 999, !dbg !44 - store i32 %rem, ptr %randomNumber, align 4, !dbg !42 - call void @llvm.dbg.declare(metadata ptr %counter, metadata !45, metadata !DIExpression()), !dbg !46 - %0 = load i32, ptr %randomNumber, align 4, !dbg !47 - %call2 = call i32 @digitCount(i32 noundef %0), !dbg !48 - store i32 %call2, ptr %counter, align 4, !dbg !46 - %1 = load i32, ptr %counter, align 4, !dbg !49 - %cmp = icmp sge i32 %1, 1, !dbg !50 - br i1 %cmp, label %land.rhs, label %land.end, !dbg !51 - -land.rhs: ; preds = %entry - %2 = load i32, ptr %counter, align 4, !dbg !52 - %cmp3 = icmp sle i32 %2, 3, !dbg !53 - br label %land.end - -land.end: ; preds = %land.rhs, %entry - %3 = phi i1 [ false, %entry ], [ %cmp3, %land.rhs ], !dbg !54 - call void @svf_assert(i1 noundef zeroext %3), !dbg !55 - %4 = load i32, ptr %retval, align 4, !dbg !56 - ret i32 %4, !dbg !56 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -declare i32 @time(...) #3 - -; Function Attrs: nounwind -declare i32 @rand() #2 - -declare void @svf_assert(i1 noundef zeroext) #3 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_52-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "35ac9e2519f80213036d42179fe8bedc") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "digitCount", scope: !11, file: !11, line: 7, type: !12, scopeLine: 7, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_52-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "35ac9e2519f80213036d42179fe8bedc") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "i", arg: 1, scope: !10, file: !11, line: 7, type: !14) -!17 = !DILocation(line: 7, column: 20, scope: !10) -!18 = !DILocalVariable(name: "counter", scope: !10, file: !11, line: 8, type: !14) -!19 = !DILocation(line: 8, column: 9, scope: !10) -!20 = !DILocation(line: 9, column: 5, scope: !10) -!21 = !DILocation(line: 10, column: 13, scope: !22) -!22 = distinct !DILexicalBlock(scope: !10, file: !11, line: 9, column: 17) -!23 = !DILocation(line: 10, column: 14, scope: !22) -!24 = !DILocation(line: 10, column: 11, scope: !22) -!25 = !DILocation(line: 11, column: 16, scope: !22) -!26 = !DILocation(line: 12, column: 12, scope: !27) -!27 = distinct !DILexicalBlock(scope: !22, file: !11, line: 12, column: 12) -!28 = !DILocation(line: 12, column: 14, scope: !27) -!29 = !DILocation(line: 12, column: 12, scope: !22) -!30 = !DILocation(line: 13, column: 13, scope: !31) -!31 = distinct !DILexicalBlock(scope: !27, file: !11, line: 12, column: 20) -!32 = distinct !{!32, !20, !33} -!33 = !DILocation(line: 15, column: 5, scope: !10) -!34 = !DILocation(line: 16, column: 12, scope: !10) -!35 = !DILocation(line: 16, column: 5, scope: !10) -!36 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 19, type: !37, scopeLine: 19, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!37 = !DISubroutineType(types: !38) -!38 = !{!14} -!39 = !DILocation(line: 20, column: 11, scope: !36) -!40 = !DILocation(line: 20, column: 5, scope: !36) -!41 = !DILocalVariable(name: "randomNumber", scope: !36, file: !11, line: 21, type: !14) -!42 = !DILocation(line: 21, column: 6, scope: !36) -!43 = !DILocation(line: 21, column: 21, scope: !36) -!44 = !DILocation(line: 21, column: 28, scope: !36) -!45 = !DILocalVariable(name: "counter", scope: !36, file: !11, line: 22, type: !14) -!46 = !DILocation(line: 22, column: 9, scope: !36) -!47 = !DILocation(line: 22, column: 30, scope: !36) -!48 = !DILocation(line: 22, column: 19, scope: !36) -!49 = !DILocation(line: 23, column: 16, scope: !36) -!50 = !DILocation(line: 23, column: 24, scope: !36) -!51 = !DILocation(line: 23, column: 29, scope: !36) -!52 = !DILocation(line: 23, column: 32, scope: !36) -!53 = !DILocation(line: 23, column: 40, scope: !36) -!54 = !DILocation(line: 0, scope: !36) -!55 = !DILocation(line: 23, column: 5, scope: !36) -!56 = !DILocation(line: 24, column: 1, scope: !36) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_57-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_57-0.c.bc deleted file mode 100644 index 9085980d..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_57-0.c.bc +++ /dev/null @@ -1,235 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_57-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_57-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @a(i32 noundef %x) #0 !dbg !10 { -entry: - %x.addr = alloca i32, align 4 - store i32 %x, ptr %x.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !16, metadata !DIExpression()), !dbg !17 - %0 = load i32, ptr %x.addr, align 4, !dbg !18 - %call = call i32 @b(i32 noundef %0), !dbg !19 - %mul = mul nsw i32 %call, 2, !dbg !20 - ret i32 %mul, !dbg !21 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @b(i32 noundef %x) #0 !dbg !22 { -entry: - %x.addr = alloca i32, align 4 - store i32 %x, ptr %x.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !23, metadata !DIExpression()), !dbg !24 - %0 = load i32, ptr %x.addr, align 4, !dbg !25 - %call = call i32 @c(i32 noundef %0), !dbg !26 - %mul = mul nsw i32 %call, 2, !dbg !27 - ret i32 %mul, !dbg !28 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @c(i32 noundef %x) #0 !dbg !29 { -entry: - %x.addr = alloca i32, align 4 - store i32 %x, ptr %x.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !30, metadata !DIExpression()), !dbg !31 - %0 = load i32, ptr %x.addr, align 4, !dbg !32 - %call = call i32 @d(i32 noundef %0), !dbg !33 - %mul = mul nsw i32 %call, 2, !dbg !34 - ret i32 %mul, !dbg !35 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @d(i32 noundef %x) #0 !dbg !36 { -entry: - %x.addr = alloca i32, align 4 - store i32 %x, ptr %x.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !37, metadata !DIExpression()), !dbg !38 - %0 = load i32, ptr %x.addr, align 4, !dbg !39 - %call = call i32 @e(i32 noundef %0), !dbg !40 - %mul = mul nsw i32 %call, 2, !dbg !41 - ret i32 %mul, !dbg !42 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @e(i32 noundef %x) #0 !dbg !43 { -entry: - %x.addr = alloca i32, align 4 - store i32 %x, ptr %x.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !44, metadata !DIExpression()), !dbg !45 - %0 = load i32, ptr %x.addr, align 4, !dbg !46 - %call = call i32 @f(i32 noundef %0), !dbg !47 - %mul = mul nsw i32 %call, 2, !dbg !48 - ret i32 %mul, !dbg !49 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @f(i32 noundef %x) #0 !dbg !50 { -entry: - %x.addr = alloca i32, align 4 - store i32 %x, ptr %x.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !51, metadata !DIExpression()), !dbg !52 - %0 = load i32, ptr %x.addr, align 4, !dbg !53 - %call = call i32 @g(i32 noundef %0), !dbg !54 - %mul = mul nsw i32 %call, 2, !dbg !55 - ret i32 %mul, !dbg !56 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @g(i32 noundef %x) #0 !dbg !57 { -entry: - %x.addr = alloca i32, align 4 - store i32 %x, ptr %x.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !58, metadata !DIExpression()), !dbg !59 - %0 = load i32, ptr %x.addr, align 4, !dbg !60 - %call = call i32 @h(i32 noundef %0), !dbg !61 - %mul = mul nsw i32 %call, 2, !dbg !62 - ret i32 %mul, !dbg !63 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @h(i32 noundef %x) #0 !dbg !64 { -entry: - %x.addr = alloca i32, align 4 - store i32 %x, ptr %x.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !65, metadata !DIExpression()), !dbg !66 - %0 = load i32, ptr %x.addr, align 4, !dbg !67 - %call = call i32 @z(i32 noundef %0), !dbg !68 - %mul = mul nsw i32 %call, 2, !dbg !69 - ret i32 %mul, !dbg !70 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @z(i32 noundef %x) #0 !dbg !71 { -entry: - %x.addr = alloca i32, align 4 - store i32 %x, ptr %x.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %x.addr, metadata !72, metadata !DIExpression()), !dbg !73 - %0 = load i32, ptr %x.addr, align 4, !dbg !74 - %mul = mul nsw i32 %0, 2, !dbg !75 - ret i32 %mul, !dbg !76 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !77 { -entry: - %input = alloca i32, align 4 - %result = alloca i32, align 4 - call void @llvm.dbg.declare(metadata ptr %input, metadata !80, metadata !DIExpression()), !dbg !81 - call void @llvm.dbg.declare(metadata ptr %result, metadata !82, metadata !DIExpression()), !dbg !83 - %0 = load i32, ptr %input, align 4, !dbg !84 - %call = call i32 @a(i32 noundef %0), !dbg !85 - store i32 %call, ptr %result, align 4, !dbg !83 - %1 = load i32, ptr %result, align 4, !dbg !86 - %2 = load i32, ptr %input, align 4, !dbg !87 - %mul = mul nsw i32 %2, 512, !dbg !88 - %cmp = icmp eq i32 %1, %mul, !dbg !89 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !90 - ret i32 0, !dbg !91 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_57-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d1785b8b94f2e2804f5ecf33aea5a54c") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "a", scope: !11, file: !11, line: 18, type: !12, scopeLine: 18, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_57-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d1785b8b94f2e2804f5ecf33aea5a54c") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "x", arg: 1, scope: !10, file: !11, line: 18, type: !14) -!17 = !DILocation(line: 18, column: 11, scope: !10) -!18 = !DILocation(line: 19, column: 11, scope: !10) -!19 = !DILocation(line: 19, column: 9, scope: !10) -!20 = !DILocation(line: 19, column: 14, scope: !10) -!21 = !DILocation(line: 19, column: 2, scope: !10) -!22 = distinct !DISubprogram(name: "b", scope: !11, file: !11, line: 22, type: !12, scopeLine: 22, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!23 = !DILocalVariable(name: "x", arg: 1, scope: !22, file: !11, line: 22, type: !14) -!24 = !DILocation(line: 22, column: 11, scope: !22) -!25 = !DILocation(line: 23, column: 11, scope: !22) -!26 = !DILocation(line: 23, column: 9, scope: !22) -!27 = !DILocation(line: 23, column: 14, scope: !22) -!28 = !DILocation(line: 23, column: 2, scope: !22) -!29 = distinct !DISubprogram(name: "c", scope: !11, file: !11, line: 26, type: !12, scopeLine: 26, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!30 = !DILocalVariable(name: "x", arg: 1, scope: !29, file: !11, line: 26, type: !14) -!31 = !DILocation(line: 26, column: 11, scope: !29) -!32 = !DILocation(line: 27, column: 11, scope: !29) -!33 = !DILocation(line: 27, column: 9, scope: !29) -!34 = !DILocation(line: 27, column: 14, scope: !29) -!35 = !DILocation(line: 27, column: 2, scope: !29) -!36 = distinct !DISubprogram(name: "d", scope: !11, file: !11, line: 30, type: !12, scopeLine: 30, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!37 = !DILocalVariable(name: "x", arg: 1, scope: !36, file: !11, line: 30, type: !14) -!38 = !DILocation(line: 30, column: 11, scope: !36) -!39 = !DILocation(line: 31, column: 11, scope: !36) -!40 = !DILocation(line: 31, column: 9, scope: !36) -!41 = !DILocation(line: 31, column: 14, scope: !36) -!42 = !DILocation(line: 31, column: 2, scope: !36) -!43 = distinct !DISubprogram(name: "e", scope: !11, file: !11, line: 34, type: !12, scopeLine: 34, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!44 = !DILocalVariable(name: "x", arg: 1, scope: !43, file: !11, line: 34, type: !14) -!45 = !DILocation(line: 34, column: 11, scope: !43) -!46 = !DILocation(line: 35, column: 11, scope: !43) -!47 = !DILocation(line: 35, column: 9, scope: !43) -!48 = !DILocation(line: 35, column: 14, scope: !43) -!49 = !DILocation(line: 35, column: 2, scope: !43) -!50 = distinct !DISubprogram(name: "f", scope: !11, file: !11, line: 38, type: !12, scopeLine: 38, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!51 = !DILocalVariable(name: "x", arg: 1, scope: !50, file: !11, line: 38, type: !14) -!52 = !DILocation(line: 38, column: 11, scope: !50) -!53 = !DILocation(line: 39, column: 11, scope: !50) -!54 = !DILocation(line: 39, column: 9, scope: !50) -!55 = !DILocation(line: 39, column: 14, scope: !50) -!56 = !DILocation(line: 39, column: 2, scope: !50) -!57 = distinct !DISubprogram(name: "g", scope: !11, file: !11, line: 42, type: !12, scopeLine: 42, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!58 = !DILocalVariable(name: "x", arg: 1, scope: !57, file: !11, line: 42, type: !14) -!59 = !DILocation(line: 42, column: 11, scope: !57) -!60 = !DILocation(line: 43, column: 11, scope: !57) -!61 = !DILocation(line: 43, column: 9, scope: !57) -!62 = !DILocation(line: 43, column: 14, scope: !57) -!63 = !DILocation(line: 43, column: 2, scope: !57) -!64 = distinct !DISubprogram(name: "h", scope: !11, file: !11, line: 46, type: !12, scopeLine: 46, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!65 = !DILocalVariable(name: "x", arg: 1, scope: !64, file: !11, line: 46, type: !14) -!66 = !DILocation(line: 46, column: 11, scope: !64) -!67 = !DILocation(line: 47, column: 11, scope: !64) -!68 = !DILocation(line: 47, column: 9, scope: !64) -!69 = !DILocation(line: 47, column: 14, scope: !64) -!70 = !DILocation(line: 47, column: 2, scope: !64) -!71 = distinct !DISubprogram(name: "z", scope: !11, file: !11, line: 50, type: !12, scopeLine: 50, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!72 = !DILocalVariable(name: "x", arg: 1, scope: !71, file: !11, line: 50, type: !14) -!73 = !DILocation(line: 50, column: 11, scope: !71) -!74 = !DILocation(line: 51, column: 9, scope: !71) -!75 = !DILocation(line: 51, column: 11, scope: !71) -!76 = !DILocation(line: 51, column: 2, scope: !71) -!77 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 54, type: !78, scopeLine: 54, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!78 = !DISubroutineType(types: !79) -!79 = !{!14} -!80 = !DILocalVariable(name: "input", scope: !77, file: !11, line: 55, type: !14) -!81 = !DILocation(line: 55, column: 6, scope: !77) -!82 = !DILocalVariable(name: "result", scope: !77, file: !11, line: 56, type: !14) -!83 = !DILocation(line: 56, column: 6, scope: !77) -!84 = !DILocation(line: 56, column: 17, scope: !77) -!85 = !DILocation(line: 56, column: 15, scope: !77) -!86 = !DILocation(line: 57, column: 13, scope: !77) -!87 = !DILocation(line: 57, column: 23, scope: !77) -!88 = !DILocation(line: 57, column: 29, scope: !77) -!89 = !DILocation(line: 57, column: 20, scope: !77) -!90 = !DILocation(line: 57, column: 2, scope: !77) -!91 = !DILocation(line: 58, column: 1, scope: !77) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_58-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_58-0.c.bc deleted file mode 100644 index 6c5f65f1..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_58-0.c.bc +++ /dev/null @@ -1,179 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_58-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_58-0.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [12 x i8] c"%d is even\0A\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [11 x i8] c"%d is odd\0A\00", align 1, !dbg !12 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !28 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %i = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !33, metadata !DIExpression()), !dbg !34 - call void @llvm.dbg.declare(metadata ptr %b, metadata !35, metadata !DIExpression()), !dbg !36 - %0 = load i32, ptr %a, align 4, !dbg !37 - %cmp = icmp sge i32 %0, 0, !dbg !39 - br i1 %cmp, label %if.then, label %if.end7, !dbg !40 - -if.then: ; preds = %entry - br label %do.body, !dbg !41 - -do.body: ; preds = %do.cond, %if.then - %1 = load i32, ptr %a, align 4, !dbg !43 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %1), !dbg !45 - call void @llvm.dbg.declare(metadata ptr %i, metadata !46, metadata !DIExpression()), !dbg !48 - %2 = load i32, ptr %b, align 4, !dbg !49 - store i32 %2, ptr %i, align 4, !dbg !48 - br label %for.cond, !dbg !50 - -for.cond: ; preds = %for.inc, %do.body - %3 = load i32, ptr %i, align 4, !dbg !51 - %4 = load i32, ptr %a, align 4, !dbg !53 - %cmp1 = icmp sgt i32 %3, %4, !dbg !54 - br i1 %cmp1, label %for.body, label %for.end, !dbg !55 - -for.body: ; preds = %for.cond - %5 = load i32, ptr %i, align 4, !dbg !56 - %rem = srem i32 %5, 2, !dbg !59 - %cmp2 = icmp eq i32 %rem, 0, !dbg !60 - br i1 %cmp2, label %if.then3, label %if.else, !dbg !61 - -if.then3: ; preds = %for.body - %6 = load i32, ptr %i, align 4, !dbg !62 - %call4 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, i32 noundef %6), !dbg !64 - br label %if.end, !dbg !65 - -if.else: ; preds = %for.body - %7 = load i32, ptr %i, align 4, !dbg !66 - %call5 = call i32 (ptr, ...) @printf(ptr noundef @.str.2, i32 noundef %7), !dbg !68 - br label %if.end - -if.end: ; preds = %if.else, %if.then3 - br label %for.inc, !dbg !69 - -for.inc: ; preds = %if.end - %8 = load i32, ptr %i, align 4, !dbg !70 - %dec = add nsw i32 %8, -1, !dbg !70 - store i32 %dec, ptr %i, align 4, !dbg !70 - br label %for.cond, !dbg !71, !llvm.loop !72 - -for.end: ; preds = %for.cond - %9 = load i32, ptr %a, align 4, !dbg !75 - %dec6 = add nsw i32 %9, -1, !dbg !75 - store i32 %dec6, ptr %a, align 4, !dbg !75 - br label %do.cond, !dbg !76 - -do.cond: ; preds = %for.end - %10 = load i32, ptr %a, align 4, !dbg !77 - %tobool = icmp ne i32 %10, 0, !dbg !76 - br i1 %tobool, label %do.body, label %do.end, !dbg !76, !llvm.loop !78 - -do.end: ; preds = %do.cond - br label %if.end7, !dbg !80 - -if.end7: ; preds = %do.end, %entry - %11 = load i32, ptr %retval, align 4, !dbg !81 - ret i32 %11, !dbg !81 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare i32 @printf(ptr noundef, ...) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!17} -!llvm.module.flags = !{!20, !21, !22, !23, !24, !25, !26} -!llvm.ident = !{!27} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 13, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_58-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c29199770e9c363da6a70cc4e3d90e83") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 32, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 4) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 16, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 96, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 12) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 19, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 88, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 11) -!17 = distinct !DICompileUnit(language: DW_LANG_C11, file: !18, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !19, splitDebugInlining: false, nameTableKind: None) -!18 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_58-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c29199770e9c363da6a70cc4e3d90e83") -!19 = !{!0, !7, !12} -!20 = !{i32 7, !"Dwarf Version", i32 5} -!21 = !{i32 2, !"Debug Info Version", i32 3} -!22 = !{i32 1, !"wchar_size", i32 4} -!23 = !{i32 8, !"PIC Level", i32 2} -!24 = !{i32 7, !"PIE Level", i32 2} -!25 = !{i32 7, !"uwtable", i32 2} -!26 = !{i32 7, !"frame-pointer", i32 2} -!27 = !{!"clang version 16.0.0"} -!28 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 8, type: !29, scopeLine: 8, spFlags: DISPFlagDefinition, unit: !17, retainedNodes: !32) -!29 = !DISubroutineType(types: !30) -!30 = !{!31} -!31 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!32 = !{} -!33 = !DILocalVariable(name: "a", scope: !28, file: !2, line: 9, type: !31) -!34 = !DILocation(line: 9, column: 6, scope: !28) -!35 = !DILocalVariable(name: "b", scope: !28, file: !2, line: 10, type: !31) -!36 = !DILocation(line: 10, column: 6, scope: !28) -!37 = !DILocation(line: 11, column: 5, scope: !38) -!38 = distinct !DILexicalBlock(scope: !28, file: !2, line: 11, column: 5) -!39 = !DILocation(line: 11, column: 7, scope: !38) -!40 = !DILocation(line: 11, column: 5, scope: !28) -!41 = !DILocation(line: 12, column: 3, scope: !42) -!42 = distinct !DILexicalBlock(scope: !38, file: !2, line: 11, column: 13) -!43 = !DILocation(line: 13, column: 22, scope: !44) -!44 = distinct !DILexicalBlock(scope: !42, file: !2, line: 12, column: 6) -!45 = !DILocation(line: 13, column: 7, scope: !44) -!46 = !DILocalVariable(name: "i", scope: !47, file: !2, line: 14, type: !31) -!47 = distinct !DILexicalBlock(scope: !44, file: !2, line: 14, column: 4) -!48 = !DILocation(line: 14, column: 12, scope: !47) -!49 = !DILocation(line: 14, column: 16, scope: !47) -!50 = !DILocation(line: 14, column: 8, scope: !47) -!51 = !DILocation(line: 14, column: 19, scope: !52) -!52 = distinct !DILexicalBlock(scope: !47, file: !2, line: 14, column: 4) -!53 = !DILocation(line: 14, column: 23, scope: !52) -!54 = !DILocation(line: 14, column: 21, scope: !52) -!55 = !DILocation(line: 14, column: 4, scope: !47) -!56 = !DILocation(line: 15, column: 8, scope: !57) -!57 = distinct !DILexicalBlock(scope: !58, file: !2, line: 15, column: 8) -!58 = distinct !DILexicalBlock(scope: !52, file: !2, line: 14, column: 31) -!59 = !DILocation(line: 15, column: 10, scope: !57) -!60 = !DILocation(line: 15, column: 14, scope: !57) -!61 = !DILocation(line: 15, column: 8, scope: !58) -!62 = !DILocation(line: 16, column: 29, scope: !63) -!63 = distinct !DILexicalBlock(scope: !57, file: !2, line: 15, column: 20) -!64 = !DILocation(line: 16, column: 6, scope: !63) -!65 = !DILocation(line: 17, column: 5, scope: !63) -!66 = !DILocation(line: 19, column: 28, scope: !67) -!67 = distinct !DILexicalBlock(scope: !57, file: !2, line: 18, column: 10) -!68 = !DILocation(line: 19, column: 6, scope: !67) -!69 = !DILocation(line: 21, column: 4, scope: !58) -!70 = !DILocation(line: 14, column: 27, scope: !52) -!71 = !DILocation(line: 14, column: 4, scope: !52) -!72 = distinct !{!72, !55, !73, !74} -!73 = !DILocation(line: 21, column: 4, scope: !47) -!74 = !{!"llvm.loop.mustprogress"} -!75 = !DILocation(line: 22, column: 5, scope: !44) -!76 = !DILocation(line: 23, column: 3, scope: !44) -!77 = !DILocation(line: 23, column: 11, scope: !42) -!78 = distinct !{!78, !41, !79, !74} -!79 = !DILocation(line: 23, column: 12, scope: !42) -!80 = !DILocation(line: 24, column: 2, scope: !42) -!81 = !DILocation(line: 25, column: 1, scope: !28) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_59-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_59-0.c.bc deleted file mode 100644 index db5a39db..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_59-0.c.bc +++ /dev/null @@ -1,131 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_59-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_59-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @recursive(i32 noundef %a) #0 !dbg !10 { -entry: - %a.addr = alloca i32, align 4 - store i32 %a, ptr %a.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !16, metadata !DIExpression()), !dbg !17 - %0 = load i32, ptr %a.addr, align 4, !dbg !18 - %dec = add nsw i32 %0, -1, !dbg !18 - store i32 %dec, ptr %a.addr, align 4, !dbg !18 - %1 = load i32, ptr %a.addr, align 4, !dbg !19 - %tobool = icmp ne i32 %1, 0, !dbg !19 - br i1 %tobool, label %if.then, label %if.end, !dbg !21 - -if.then: ; preds = %entry - %2 = load i32, ptr %a.addr, align 4, !dbg !22 - %call = call i32 @recursive(i32 noundef %2), !dbg !24 - store i32 %call, ptr %a.addr, align 4, !dbg !25 - br label %if.end, !dbg !26 - -if.end: ; preds = %if.then, %entry - %3 = load i32, ptr %a.addr, align 4, !dbg !27 - ret i32 %3, !dbg !28 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !29 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !32, metadata !DIExpression()), !dbg !33 - %0 = load i32, ptr %a, align 4, !dbg !34 - %cmp = icmp sgt i32 %0, 0, !dbg !36 - br i1 %cmp, label %if.then, label %if.else, !dbg !37 - -if.then: ; preds = %entry - %1 = load i32, ptr %a, align 4, !dbg !38 - %call = call i32 @recursive(i32 noundef %1), !dbg !40 - store i32 %call, ptr %a, align 4, !dbg !41 - br label %if.end, !dbg !42 - -if.else: ; preds = %entry - %2 = load i32, ptr %a, align 4, !dbg !43 - %call1 = call i32 @abs(i32 noundef %2) #4, !dbg !45 - %call2 = call i32 @recursive(i32 noundef %call1), !dbg !46 - store i32 %call2, ptr %a, align 4, !dbg !47 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %3 = load i32, ptr %a, align 4, !dbg !48 - %cmp3 = icmp eq i32 %3, 0, !dbg !49 - call void @svf_assert(i1 noundef zeroext %cmp3), !dbg !50 - %4 = load i32, ptr %retval, align 4, !dbg !51 - ret i32 %4, !dbg !51 -} - -; Function Attrs: nounwind willreturn memory(none) -declare i32 @abs(i32 noundef) #2 - -declare void @svf_assert(i1 noundef zeroext) #3 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind willreturn memory(none) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind willreturn memory(none) } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_59-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "1e0fb4e520bd69587c75dd0b4371dcf0") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "recursive", scope: !11, file: !11, line: 8, type: !12, scopeLine: 8, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_59-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "1e0fb4e520bd69587c75dd0b4371dcf0") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", arg: 1, scope: !10, file: !11, line: 8, type: !14) -!17 = !DILocation(line: 8, column: 19, scope: !10) -!18 = !DILocation(line: 9, column: 3, scope: !10) -!19 = !DILocation(line: 10, column: 5, scope: !20) -!20 = distinct !DILexicalBlock(scope: !10, file: !11, line: 10, column: 5) -!21 = !DILocation(line: 10, column: 5, scope: !10) -!22 = !DILocation(line: 11, column: 17, scope: !23) -!23 = distinct !DILexicalBlock(scope: !20, file: !11, line: 10, column: 8) -!24 = !DILocation(line: 11, column: 7, scope: !23) -!25 = !DILocation(line: 11, column: 5, scope: !23) -!26 = !DILocation(line: 12, column: 2, scope: !23) -!27 = !DILocation(line: 13, column: 9, scope: !10) -!28 = !DILocation(line: 13, column: 2, scope: !10) -!29 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 16, type: !30, scopeLine: 16, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!30 = !DISubroutineType(types: !31) -!31 = !{!14} -!32 = !DILocalVariable(name: "a", scope: !29, file: !11, line: 17, type: !14) -!33 = !DILocation(line: 17, column: 6, scope: !29) -!34 = !DILocation(line: 18, column: 5, scope: !35) -!35 = distinct !DILexicalBlock(scope: !29, file: !11, line: 18, column: 5) -!36 = !DILocation(line: 18, column: 7, scope: !35) -!37 = !DILocation(line: 18, column: 5, scope: !29) -!38 = !DILocation(line: 19, column: 17, scope: !39) -!39 = distinct !DILexicalBlock(scope: !35, file: !11, line: 18, column: 12) -!40 = !DILocation(line: 19, column: 7, scope: !39) -!41 = !DILocation(line: 19, column: 5, scope: !39) -!42 = !DILocation(line: 20, column: 2, scope: !39) -!43 = !DILocation(line: 22, column: 21, scope: !44) -!44 = distinct !DILexicalBlock(scope: !35, file: !11, line: 21, column: 7) -!45 = !DILocation(line: 22, column: 17, scope: !44) -!46 = !DILocation(line: 22, column: 7, scope: !44) -!47 = !DILocation(line: 22, column: 5, scope: !44) -!48 = !DILocation(line: 24, column: 13, scope: !29) -!49 = !DILocation(line: 24, column: 15, scope: !29) -!50 = !DILocation(line: 24, column: 2, scope: !29) -!51 = !DILocation(line: 25, column: 1, scope: !29) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_6-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_6-0.c.bc deleted file mode 100644 index 70247f26..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_6-0.c.bc +++ /dev/null @@ -1,77 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_6-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_6-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 0, ptr %a, align 4, !dbg !17 - br label %while.cond, !dbg !18 - -while.cond: ; preds = %while.body, %entry - %0 = load i32, ptr %a, align 4, !dbg !19 - %cmp = icmp slt i32 %0, 10, !dbg !20 - br i1 %cmp, label %while.body, label %while.end, !dbg !18 - -while.body: ; preds = %while.cond - %1 = load i32, ptr %a, align 4, !dbg !21 - %inc = add nsw i32 %1, 1, !dbg !21 - store i32 %inc, ptr %a, align 4, !dbg !21 - br label %while.cond, !dbg !18, !llvm.loop !23 - -while.end: ; preds = %while.cond - %2 = load i32, ptr %a, align 4, !dbg !26 - %cmp1 = icmp eq i32 %2, 10, !dbg !27 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !28 - %3 = load i32, ptr %retval, align 4, !dbg !29 - ret i32 %3, !dbg !29 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_6-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d282f6036e18c06d8db4a9683d5f4fca") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_6-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d282f6036e18c06d8db4a9683d5f4fca") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 6, type: !14) -!17 = !DILocation(line: 6, column: 6, scope: !10) -!18 = !DILocation(line: 7, column: 5, scope: !10) -!19 = !DILocation(line: 7, column: 11, scope: !10) -!20 = !DILocation(line: 7, column: 13, scope: !10) -!21 = !DILocation(line: 8, column: 10, scope: !22) -!22 = distinct !DILexicalBlock(scope: !10, file: !11, line: 7, column: 19) -!23 = distinct !{!23, !18, !24, !25} -!24 = !DILocation(line: 9, column: 5, scope: !10) -!25 = !{!"llvm.loop.mustprogress"} -!26 = !DILocation(line: 10, column: 16, scope: !10) -!27 = !DILocation(line: 10, column: 18, scope: !10) -!28 = !DILocation(line: 10, column: 5, scope: !10) -!29 = !DILocation(line: 11, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_60-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_60-0.c.bc deleted file mode 100644 index 3a05e164..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_60-0.c.bc +++ /dev/null @@ -1,109 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_60-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_60-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !18, metadata !DIExpression()), !dbg !19 - %0 = load i32, ptr %a, align 4, !dbg !20 - %1 = load i32, ptr %a, align 4, !dbg !20 - %mul = mul nsw i32 %0, %1, !dbg !20 - %2 = load i32, ptr %a, align 4, !dbg !20 - %mul1 = mul nsw i32 %mul, %2, !dbg !20 - %3 = load i32, ptr %a, align 4, !dbg !20 - %cmp = icmp slt i32 %mul1, %3, !dbg !20 - br i1 %cmp, label %cond.true, label %cond.false, !dbg !20 - -cond.true: ; preds = %entry - %4 = load i32, ptr %a, align 4, !dbg !20 - %5 = load i32, ptr %a, align 4, !dbg !20 - %mul2 = mul nsw i32 %4, %5, !dbg !20 - %6 = load i32, ptr %a, align 4, !dbg !20 - %mul3 = mul nsw i32 %mul2, %6, !dbg !20 - br label %cond.end, !dbg !20 - -cond.false: ; preds = %entry - %7 = load i32, ptr %a, align 4, !dbg !20 - br label %cond.end, !dbg !20 - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i32 [ %mul3, %cond.true ], [ %7, %cond.false ], !dbg !20 - store i32 %cond, ptr %b, align 4, !dbg !19 - %8 = load i32, ptr %b, align 4, !dbg !21 - %9 = load i32, ptr %a, align 4, !dbg !23 - %cmp4 = icmp eq i32 %8, %9, !dbg !24 - br i1 %cmp4, label %if.then, label %if.else, !dbg !25 - -if.then: ; preds = %cond.end - %10 = load i32, ptr %a, align 4, !dbg !26 - %cmp5 = icmp sge i32 %10, 0, !dbg !28 - call void @svf_assert(i1 noundef zeroext %cmp5), !dbg !29 - br label %if.end, !dbg !30 - -if.else: ; preds = %cond.end - %11 = load i32, ptr %a, align 4, !dbg !31 - %cmp6 = icmp slt i32 %11, 0, !dbg !33 - call void @svf_assert(i1 noundef zeroext %cmp6), !dbg !34 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %12 = load i32, ptr %retval, align 4, !dbg !35 - ret i32 %12, !dbg !35 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_60-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "594a9eff93d36b3ab90e6929288255d3") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 10, type: !12, scopeLine: 10, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_60-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "594a9eff93d36b3ab90e6929288255d3") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 11, type: !14) -!17 = !DILocation(line: 11, column: 6, scope: !10) -!18 = !DILocalVariable(name: "b", scope: !10, file: !11, line: 12, type: !14) -!19 = !DILocation(line: 12, column: 6, scope: !10) -!20 = !DILocation(line: 12, column: 10, scope: !10) -!21 = !DILocation(line: 13, column: 5, scope: !22) -!22 = distinct !DILexicalBlock(scope: !10, file: !11, line: 13, column: 5) -!23 = !DILocation(line: 13, column: 10, scope: !22) -!24 = !DILocation(line: 13, column: 7, scope: !22) -!25 = !DILocation(line: 13, column: 5, scope: !10) -!26 = !DILocation(line: 14, column: 14, scope: !27) -!27 = distinct !DILexicalBlock(scope: !22, file: !11, line: 13, column: 13) -!28 = !DILocation(line: 14, column: 16, scope: !27) -!29 = !DILocation(line: 14, column: 3, scope: !27) -!30 = !DILocation(line: 15, column: 2, scope: !27) -!31 = !DILocation(line: 17, column: 14, scope: !32) -!32 = distinct !DILexicalBlock(scope: !22, file: !11, line: 16, column: 7) -!33 = !DILocation(line: 17, column: 16, scope: !32) -!34 = !DILocation(line: 17, column: 3, scope: !32) -!35 = !DILocation(line: 19, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_61-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_61-0.c.bc deleted file mode 100644 index bfbce8d3..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_61-0.c.bc +++ /dev/null @@ -1,106 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_61-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_61-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - br label %while.body, !dbg !18 - -while.body: ; preds = %if.end, %entry - %0 = load i32, ptr %a, align 4, !dbg !19 - %tobool = icmp ne i32 %0, 0, !dbg !19 - br i1 %tobool, label %if.then, label %if.else, !dbg !22 - -if.then: ; preds = %while.body - %1 = load i32, ptr %a, align 4, !dbg !23 - %cmp = icmp ne i32 %1, 0, !dbg !25 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !26 - call void @exit(i32 noundef 0) #4, !dbg !27 - unreachable, !dbg !27 - -if.else: ; preds = %while.body - %2 = load i32, ptr %a, align 4, !dbg !28 - %cmp1 = icmp sgt i32 %2, 0, !dbg !31 - br i1 %cmp1, label %if.then2, label %if.else3, !dbg !32 - -if.then2: ; preds = %if.else - %3 = load i32, ptr %a, align 4, !dbg !33 - %dec = add nsw i32 %3, -1, !dbg !33 - store i32 %dec, ptr %a, align 4, !dbg !33 - br label %if.end, !dbg !35 - -if.else3: ; preds = %if.else - %4 = load i32, ptr %a, align 4, !dbg !36 - %inc = add nsw i32 %4, 1, !dbg !36 - store i32 %inc, ptr %a, align 4, !dbg !36 - br label %if.end - -if.end: ; preds = %if.else3, %if.then2 - br label %while.body, !dbg !38, !llvm.loop !39 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { noreturn nounwind } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_61-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b62b40cbb934c93a4292c0503b0bed76") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_61-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b62b40cbb934c93a4292c0503b0bed76") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 10, type: !14) -!17 = !DILocation(line: 10, column: 6, scope: !10) -!18 = !DILocation(line: 11, column: 2, scope: !10) -!19 = !DILocation(line: 12, column: 6, scope: !20) -!20 = distinct !DILexicalBlock(scope: !21, file: !11, line: 12, column: 6) -!21 = distinct !DILexicalBlock(scope: !10, file: !11, line: 11, column: 14) -!22 = !DILocation(line: 12, column: 6, scope: !21) -!23 = !DILocation(line: 13, column: 15, scope: !24) -!24 = distinct !DILexicalBlock(scope: !20, file: !11, line: 12, column: 9) -!25 = !DILocation(line: 13, column: 17, scope: !24) -!26 = !DILocation(line: 13, column: 4, scope: !24) -!27 = !DILocation(line: 14, column: 4, scope: !24) -!28 = !DILocation(line: 17, column: 7, scope: !29) -!29 = distinct !DILexicalBlock(scope: !30, file: !11, line: 17, column: 7) -!30 = distinct !DILexicalBlock(scope: !20, file: !11, line: 16, column: 8) -!31 = !DILocation(line: 17, column: 9, scope: !29) -!32 = !DILocation(line: 17, column: 7, scope: !30) -!33 = !DILocation(line: 18, column: 6, scope: !34) -!34 = distinct !DILexicalBlock(scope: !29, file: !11, line: 17, column: 14) -!35 = !DILocation(line: 19, column: 4, scope: !34) -!36 = !DILocation(line: 21, column: 6, scope: !37) -!37 = distinct !DILexicalBlock(scope: !29, file: !11, line: 20, column: 9) -!38 = !DILocation(line: 23, column: 4, scope: !30) -!39 = distinct !{!39, !18, !40} -!40 = !DILocation(line: 25, column: 2, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_62-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_62-0.c.bc deleted file mode 100644 index e50b8254..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_62-0.c.bc +++ /dev/null @@ -1,106 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_62-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_62-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - br label %while.body, !dbg !18 - -while.body: ; preds = %if.end, %entry - %0 = load i32, ptr %a, align 4, !dbg !19 - %tobool = icmp ne i32 %0, 0, !dbg !19 - br i1 %tobool, label %if.then, label %if.else, !dbg !22 - -if.then: ; preds = %while.body - %1 = load i32, ptr %a, align 4, !dbg !23 - %cmp = icmp ne i32 %1, 0, !dbg !25 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !26 - call void @abort() #4, !dbg !27 - unreachable, !dbg !27 - -if.else: ; preds = %while.body - %2 = load i32, ptr %a, align 4, !dbg !28 - %cmp1 = icmp sgt i32 %2, 0, !dbg !31 - br i1 %cmp1, label %if.then2, label %if.else3, !dbg !32 - -if.then2: ; preds = %if.else - %3 = load i32, ptr %a, align 4, !dbg !33 - %dec = add nsw i32 %3, -1, !dbg !33 - store i32 %dec, ptr %a, align 4, !dbg !33 - br label %if.end, !dbg !35 - -if.else3: ; preds = %if.else - %4 = load i32, ptr %a, align 4, !dbg !36 - %inc = add nsw i32 %4, 1, !dbg !36 - store i32 %inc, ptr %a, align 4, !dbg !36 - br label %if.end - -if.end: ; preds = %if.else3, %if.then2 - br label %while.body, !dbg !38, !llvm.loop !39 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -; Function Attrs: noreturn nounwind -declare void @abort() #3 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { noreturn nounwind } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_62-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d6a0aaff2ea5e4ad384f6a2cf4ebfbb4") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_62-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d6a0aaff2ea5e4ad384f6a2cf4ebfbb4") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 10, type: !14) -!17 = !DILocation(line: 10, column: 6, scope: !10) -!18 = !DILocation(line: 11, column: 2, scope: !10) -!19 = !DILocation(line: 12, column: 6, scope: !20) -!20 = distinct !DILexicalBlock(scope: !21, file: !11, line: 12, column: 6) -!21 = distinct !DILexicalBlock(scope: !10, file: !11, line: 11, column: 14) -!22 = !DILocation(line: 12, column: 6, scope: !21) -!23 = !DILocation(line: 13, column: 15, scope: !24) -!24 = distinct !DILexicalBlock(scope: !20, file: !11, line: 12, column: 9) -!25 = !DILocation(line: 13, column: 17, scope: !24) -!26 = !DILocation(line: 13, column: 4, scope: !24) -!27 = !DILocation(line: 14, column: 4, scope: !24) -!28 = !DILocation(line: 17, column: 7, scope: !29) -!29 = distinct !DILexicalBlock(scope: !30, file: !11, line: 17, column: 7) -!30 = distinct !DILexicalBlock(scope: !20, file: !11, line: 16, column: 8) -!31 = !DILocation(line: 17, column: 9, scope: !29) -!32 = !DILocation(line: 17, column: 7, scope: !30) -!33 = !DILocation(line: 18, column: 6, scope: !34) -!34 = distinct !DILexicalBlock(scope: !29, file: !11, line: 17, column: 14) -!35 = !DILocation(line: 19, column: 4, scope: !34) -!36 = !DILocation(line: 21, column: 6, scope: !37) -!37 = distinct !DILexicalBlock(scope: !29, file: !11, line: 20, column: 9) -!38 = !DILocation(line: 23, column: 4, scope: !30) -!39 = distinct !{!39, !18, !40} -!40 = !DILocation(line: 25, column: 2, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_63-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_63-0.c.bc deleted file mode 100644 index f79c5be2..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_63-0.c.bc +++ /dev/null @@ -1,252 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_63-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_63-0.c" -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-unknown-linux-gnu" - -@a = dso_local global i32 0, align 4, !dbg !0 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @foo(i32 noundef %input) #0 !dbg !15 { -entry: - %input.addr = alloca i32, align 4 - %output = alloca i32, align 4 - %i = alloca i32, align 4 - store i32 %input, ptr %input.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %input.addr, metadata !19, metadata !DIExpression()), !dbg !20 - call void @llvm.dbg.declare(metadata ptr %output, metadata !21, metadata !DIExpression()), !dbg !22 - store i32 0, ptr %output, align 4, !dbg !22 - call void @llvm.dbg.declare(metadata ptr %i, metadata !23, metadata !DIExpression()), !dbg !25 - store i32 0, ptr %i, align 4, !dbg !25 - br label %for.cond, !dbg !26 - -for.cond: ; preds = %for.inc, %entry - %0 = load i32, ptr %i, align 4, !dbg !27 - %1 = load i32, ptr %input.addr, align 4, !dbg !29 - %cmp = icmp slt i32 %0, %1, !dbg !30 - br i1 %cmp, label %for.body, label %for.end, !dbg !31 - -for.body: ; preds = %for.cond - %2 = load i32, ptr %output, align 4, !dbg !32 - %inc = add nsw i32 %2, 1, !dbg !32 - store i32 %inc, ptr %output, align 4, !dbg !32 - br label %for.inc, !dbg !34 - -for.inc: ; preds = %for.body - %3 = load i32, ptr %i, align 4, !dbg !35 - %inc1 = add nsw i32 %3, 1, !dbg !35 - store i32 %inc1, ptr %i, align 4, !dbg !35 - br label %for.cond, !dbg !36, !llvm.loop !37 - -for.end: ; preds = %for.cond - %4 = load i32, ptr %output, align 4, !dbg !40 - ret i32 %4, !dbg !41 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !42 { -entry: - %retval = alloca i32, align 4 - %b = alloca i32, align 4 - %i = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %call = call i32 @rand() #5, !dbg !45 - store i32 %call, ptr @a, align 4, !dbg !46 - call void @llvm.dbg.declare(metadata ptr %b, metadata !47, metadata !DIExpression()), !dbg !48 - %0 = load i32, ptr @a, align 4, !dbg !49 - store i32 %0, ptr %b, align 4, !dbg !48 - %1 = load i32, ptr @a, align 4, !dbg !50 - %cmp = icmp sgt i32 %1, 0, !dbg !52 - br i1 %cmp, label %if.then, label %if.end, !dbg !53 - -if.then: ; preds = %entry - call void @llvm.dbg.declare(metadata ptr %i, metadata !54, metadata !DIExpression()), !dbg !57 - store i32 0, ptr %i, align 4, !dbg !57 - br label %for.cond, !dbg !58 - -for.cond: ; preds = %for.inc, %if.then - %2 = load i32, ptr %i, align 4, !dbg !59 - %3 = load i32, ptr %b, align 4, !dbg !61 - %cmp1 = icmp slt i32 %2, %3, !dbg !62 - br i1 %cmp1, label %for.body, label %for.end, !dbg !63 - -for.body: ; preds = %for.cond - %4 = load i32, ptr @a, align 4, !dbg !64 - %5 = load i32, ptr @a, align 4, !dbg !66 - %call2 = call i32 @foo(i32 noundef %5), !dbg !67 - %add = add nsw i32 %4, %call2, !dbg !68 - store i32 %add, ptr @a, align 4, !dbg !69 - br label %for.inc, !dbg !70 - -for.inc: ; preds = %for.body - %6 = load i32, ptr %i, align 4, !dbg !71 - %inc = add nsw i32 %6, 1, !dbg !71 - store i32 %inc, ptr %i, align 4, !dbg !71 - br label %for.cond, !dbg !72, !llvm.loop !73 - -for.end: ; preds = %for.cond - %7 = load i32, ptr @a, align 4, !dbg !75 - %conv = sitofp i32 %7 to double, !dbg !75 - %8 = load i32, ptr %b, align 4, !dbg !76 - %conv3 = sitofp i32 %8 to double, !dbg !76 - %9 = load i32, ptr %b, align 4, !dbg !77 - %conv4 = sitofp i32 %9 to double, !dbg !77 - %call5 = call double @pow(double noundef 2.000000e+00, double noundef %conv4) #5, !dbg !78 - %mul = fmul double %conv3, %call5, !dbg !79 - %cmp6 = fcmp oeq double %conv, %mul, !dbg !80 - call void @svf_assert(i1 noundef zeroext %cmp6), !dbg !81 - br label %if.end, !dbg !82 - -if.end: ; preds = %for.end, %entry - br label %while.body, !dbg !83 - -while.body: ; preds = %if.end - br label %LOOP, !dbg !84 - -LOOP: ; preds = %if.then12, %while.body - call void @llvm.dbg.label(metadata !85), !dbg !87 - %10 = load i32, ptr %b, align 4, !dbg !88 - %conv8 = sitofp i32 %10 to double, !dbg !88 - %call9 = call double @pow(double noundef 2.000000e+00, double noundef %conv8) #5, !dbg !89 - %11 = load i32, ptr @a, align 4, !dbg !90 - %conv10 = sitofp i32 %11 to double, !dbg !90 - %sub = fsub double %conv10, %call9, !dbg !90 - %conv11 = fptosi double %sub to i32, !dbg !90 - store i32 %conv11, ptr @a, align 4, !dbg !90 - %12 = load i32, ptr @a, align 4, !dbg !91 - %tobool = icmp ne i32 %12, 0, !dbg !91 - br i1 %tobool, label %if.then12, label %if.end13, !dbg !93 - -if.then12: ; preds = %LOOP - br label %LOOP, !dbg !94 - -if.end13: ; preds = %LOOP - call void @exit(i32 noundef 0) #6, !dbg !96 - unreachable, !dbg !96 -} - -; Function Attrs: nounwind -declare i32 @rand() #2 - -declare void @svf_assert(i1 noundef zeroext) #3 - -; Function Attrs: nounwind -declare double @pow(double noundef, double noundef) #2 - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.label(metadata) #1 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #4 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { noreturn nounwind } - -!llvm.dbg.cu = !{!2} -!llvm.module.flags = !{!7, !8, !9, !10, !11, !12, !13} -!llvm.ident = !{!14} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(name: "a", scope: !2, file: !5, line: 10, type: !6, isLocal: false, isDefinition: true) -!2 = distinct !DICompileUnit(language: DW_LANG_C11, file: !3, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: None) -!3 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_63-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "42ee7e86ace56ca1a351e60c7cc47f5c") -!4 = !{!0} -!5 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_63-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "42ee7e86ace56ca1a351e60c7cc47f5c") -!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!7 = !{i32 7, !"Dwarf Version", i32 5} -!8 = !{i32 2, !"Debug Info Version", i32 3} -!9 = !{i32 1, !"wchar_size", i32 4} -!10 = !{i32 8, !"PIC Level", i32 2} -!11 = !{i32 7, !"PIE Level", i32 2} -!12 = !{i32 7, !"uwtable", i32 2} -!13 = !{i32 7, !"frame-pointer", i32 2} -!14 = !{!"clang version 16.0.0"} -!15 = distinct !DISubprogram(name: "foo", scope: !5, file: !5, line: 12, type: !16, scopeLine: 12, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !18) -!16 = !DISubroutineType(types: !17) -!17 = !{!6, !6} -!18 = !{} -!19 = !DILocalVariable(name: "input", arg: 1, scope: !15, file: !5, line: 12, type: !6) -!20 = !DILocation(line: 12, column: 13, scope: !15) -!21 = !DILocalVariable(name: "output", scope: !15, file: !5, line: 13, type: !6) -!22 = !DILocation(line: 13, column: 6, scope: !15) -!23 = !DILocalVariable(name: "i", scope: !24, file: !5, line: 14, type: !6) -!24 = distinct !DILexicalBlock(scope: !15, file: !5, line: 14, column: 2) -!25 = !DILocation(line: 14, column: 10, scope: !24) -!26 = !DILocation(line: 14, column: 6, scope: !24) -!27 = !DILocation(line: 14, column: 17, scope: !28) -!28 = distinct !DILexicalBlock(scope: !24, file: !5, line: 14, column: 2) -!29 = !DILocation(line: 14, column: 21, scope: !28) -!30 = !DILocation(line: 14, column: 19, scope: !28) -!31 = !DILocation(line: 14, column: 2, scope: !24) -!32 = !DILocation(line: 15, column: 9, scope: !33) -!33 = distinct !DILexicalBlock(scope: !28, file: !5, line: 14, column: 33) -!34 = !DILocation(line: 16, column: 2, scope: !33) -!35 = !DILocation(line: 14, column: 29, scope: !28) -!36 = !DILocation(line: 14, column: 2, scope: !28) -!37 = distinct !{!37, !31, !38, !39} -!38 = !DILocation(line: 16, column: 2, scope: !24) -!39 = !{!"llvm.loop.mustprogress"} -!40 = !DILocation(line: 17, column: 9, scope: !15) -!41 = !DILocation(line: 17, column: 2, scope: !15) -!42 = distinct !DISubprogram(name: "main", scope: !5, file: !5, line: 20, type: !43, scopeLine: 20, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !18) -!43 = !DISubroutineType(types: !44) -!44 = !{!6} -!45 = !DILocation(line: 21, column: 9, scope: !42) -!46 = !DILocation(line: 21, column: 7, scope: !42) -!47 = !DILocalVariable(name: "b", scope: !42, file: !5, line: 22, type: !6) -!48 = !DILocation(line: 22, column: 9, scope: !42) -!49 = !DILocation(line: 22, column: 13, scope: !42) -!50 = !DILocation(line: 23, column: 5, scope: !51) -!51 = distinct !DILexicalBlock(scope: !42, file: !5, line: 23, column: 5) -!52 = !DILocation(line: 23, column: 7, scope: !51) -!53 = !DILocation(line: 23, column: 5, scope: !42) -!54 = !DILocalVariable(name: "i", scope: !55, file: !5, line: 24, type: !6) -!55 = distinct !DILexicalBlock(scope: !56, file: !5, line: 24, column: 3) -!56 = distinct !DILexicalBlock(scope: !51, file: !5, line: 23, column: 12) -!57 = !DILocation(line: 24, column: 11, scope: !55) -!58 = !DILocation(line: 24, column: 7, scope: !55) -!59 = !DILocation(line: 24, column: 18, scope: !60) -!60 = distinct !DILexicalBlock(scope: !55, file: !5, line: 24, column: 3) -!61 = !DILocation(line: 24, column: 22, scope: !60) -!62 = !DILocation(line: 24, column: 20, scope: !60) -!63 = !DILocation(line: 24, column: 3, scope: !55) -!64 = !DILocation(line: 25, column: 8, scope: !65) -!65 = distinct !DILexicalBlock(scope: !60, file: !5, line: 24, column: 30) -!66 = !DILocation(line: 25, column: 16, scope: !65) -!67 = !DILocation(line: 25, column: 12, scope: !65) -!68 = !DILocation(line: 25, column: 10, scope: !65) -!69 = !DILocation(line: 25, column: 6, scope: !65) -!70 = !DILocation(line: 26, column: 3, scope: !65) -!71 = !DILocation(line: 24, column: 26, scope: !60) -!72 = !DILocation(line: 24, column: 3, scope: !60) -!73 = distinct !{!73, !63, !74, !39} -!74 = !DILocation(line: 26, column: 3, scope: !55) -!75 = !DILocation(line: 27, column: 17, scope: !56) -!76 = !DILocation(line: 27, column: 22, scope: !56) -!77 = !DILocation(line: 27, column: 33, scope: !56) -!78 = !DILocation(line: 27, column: 26, scope: !56) -!79 = !DILocation(line: 27, column: 24, scope: !56) -!80 = !DILocation(line: 27, column: 19, scope: !56) -!81 = !DILocation(line: 27, column: 6, scope: !56) -!82 = !DILocation(line: 28, column: 2, scope: !56) -!83 = !DILocation(line: 29, column: 2, scope: !42) -!84 = !DILocation(line: 29, column: 14, scope: !42) -!85 = !DILabel(scope: !86, name: "LOOP", file: !5, line: 30) -!86 = distinct !DILexicalBlock(scope: !42, file: !5, line: 29, column: 14) -!87 = !DILocation(line: 30, column: 3, scope: !86) -!88 = !DILocation(line: 31, column: 15, scope: !86) -!89 = !DILocation(line: 31, column: 8, scope: !86) -!90 = !DILocation(line: 31, column: 5, scope: !86) -!91 = !DILocation(line: 32, column: 6, scope: !92) -!92 = distinct !DILexicalBlock(scope: !86, file: !5, line: 32, column: 6) -!93 = !DILocation(line: 32, column: 6, scope: !86) -!94 = !DILocation(line: 33, column: 4, scope: !95) -!95 = distinct !DILexicalBlock(scope: !92, file: !5, line: 32, column: 9) -!96 = !DILocation(line: 35, column: 3, scope: !86) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_64-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_64-0.c.bc deleted file mode 100644 index 53fb333f..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_64-0.c.bc +++ /dev/null @@ -1,211 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_64-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_64-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @increment(ptr noundef %a) #0 !dbg !10 { -entry: - %a.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !17, metadata !DIExpression()), !dbg !18 - %0 = load ptr, ptr %a.addr, align 8, !dbg !19 - %1 = load i32, ptr %0, align 4, !dbg !20 - %add = add nsw i32 %1, 1, !dbg !21 - %2 = load ptr, ptr %a.addr, align 8, !dbg !22 - store i32 %add, ptr %2, align 4, !dbg !23 - ret void, !dbg !24 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @recursive(i32 noundef %a) #0 !dbg !25 { -entry: - %a.addr = alloca i32, align 4 - store i32 %a, ptr %a.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !28, metadata !DIExpression()), !dbg !29 - %0 = load i32, ptr %a.addr, align 4, !dbg !30 - %dec = add nsw i32 %0, -1, !dbg !30 - store i32 %dec, ptr %a.addr, align 4, !dbg !30 - %1 = load i32, ptr %a.addr, align 4, !dbg !31 - %tobool = icmp ne i32 %1, 0, !dbg !31 - br i1 %tobool, label %if.then, label %if.end, !dbg !33 - -if.then: ; preds = %entry - %2 = load i32, ptr %a.addr, align 4, !dbg !34 - %call = call i32 @recursive(i32 noundef %2), !dbg !36 - store i32 %call, ptr %a.addr, align 4, !dbg !37 - br label %if.end, !dbg !38 - -if.end: ; preds = %if.then, %entry - %3 = load i32, ptr %a.addr, align 4, !dbg !39 - ret i32 %3, !dbg !40 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !41 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !44, metadata !DIExpression()), !dbg !45 - br label %LOOP, !dbg !46 - -LOOP: ; preds = %if.then5, %entry - call void @llvm.dbg.label(metadata !47), !dbg !48 - %0 = load i32, ptr %a, align 4, !dbg !49 - %cmp = icmp sgt i32 %0, 5, !dbg !51 - br i1 %cmp, label %if.then, label %if.else, !dbg !52 - -if.then: ; preds = %LOOP - %1 = load i32, ptr %a, align 4, !dbg !53 - %dec = add nsw i32 %1, -1, !dbg !53 - store i32 %dec, ptr %a, align 4, !dbg !53 - br label %if.end3, !dbg !55 - -if.else: ; preds = %LOOP - %2 = load i32, ptr %a, align 4, !dbg !56 - %cmp1 = icmp slt i32 %2, 5, !dbg !58 - br i1 %cmp1, label %if.then2, label %if.end, !dbg !59 - -if.then2: ; preds = %if.else - %3 = load i32, ptr %a, align 4, !dbg !60 - %inc = add nsw i32 %3, 1, !dbg !60 - store i32 %inc, ptr %a, align 4, !dbg !60 - br label %if.end, !dbg !62 - -if.end: ; preds = %if.then2, %if.else - br label %if.end3 - -if.end3: ; preds = %if.end, %if.then - %4 = load i32, ptr %a, align 4, !dbg !63 - %cmp4 = icmp ne i32 %4, 5, !dbg !65 - br i1 %cmp4, label %if.then5, label %if.else6, !dbg !66 - -if.then5: ; preds = %if.end3 - br label %LOOP, !dbg !67 - -if.else6: ; preds = %if.end3 - %5 = load i32, ptr %a, align 4, !dbg !69 - %call = call i32 @recursive(i32 noundef %5), !dbg !71 - store i32 %call, ptr %a, align 4, !dbg !72 - br label %if.end7 - -if.end7: ; preds = %if.else6 - br label %while.body, !dbg !73 - -while.body: ; preds = %if.end10, %if.end7 - call void @increment(ptr noundef %a), !dbg !74 - %6 = load i32, ptr %a, align 4, !dbg !76 - %cmp8 = icmp eq i32 %6, 10, !dbg !78 - br i1 %cmp8, label %if.then9, label %if.end10, !dbg !79 - -if.then9: ; preds = %while.body - call void @exit(i32 noundef 0) #3, !dbg !80 - unreachable, !dbg !80 - -if.end10: ; preds = %while.body - br label %while.body, !dbg !73, !llvm.loop !82 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.label(metadata) #1 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noreturn nounwind } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_64-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e19c5df3ee58bf593f3fa39eb8472508") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "increment", scope: !11, file: !11, line: 9, type: !12, scopeLine: 9, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_64-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e19c5df3ee58bf593f3fa39eb8472508") -!12 = !DISubroutineType(types: !13) -!13 = !{null, !14} -!14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64) -!15 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!16 = !{} -!17 = !DILocalVariable(name: "a", arg: 1, scope: !10, file: !11, line: 9, type: !14) -!18 = !DILocation(line: 9, column: 21, scope: !10) -!19 = !DILocation(line: 10, column: 8, scope: !10) -!20 = !DILocation(line: 10, column: 7, scope: !10) -!21 = !DILocation(line: 10, column: 10, scope: !10) -!22 = !DILocation(line: 10, column: 3, scope: !10) -!23 = !DILocation(line: 10, column: 5, scope: !10) -!24 = !DILocation(line: 11, column: 1, scope: !10) -!25 = distinct !DISubprogram(name: "recursive", scope: !11, file: !11, line: 13, type: !26, scopeLine: 13, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!26 = !DISubroutineType(types: !27) -!27 = !{!15, !15} -!28 = !DILocalVariable(name: "a", arg: 1, scope: !25, file: !11, line: 13, type: !15) -!29 = !DILocation(line: 13, column: 19, scope: !25) -!30 = !DILocation(line: 14, column: 3, scope: !25) -!31 = !DILocation(line: 15, column: 5, scope: !32) -!32 = distinct !DILexicalBlock(scope: !25, file: !11, line: 15, column: 5) -!33 = !DILocation(line: 15, column: 5, scope: !25) -!34 = !DILocation(line: 16, column: 17, scope: !35) -!35 = distinct !DILexicalBlock(scope: !32, file: !11, line: 15, column: 8) -!36 = !DILocation(line: 16, column: 7, scope: !35) -!37 = !DILocation(line: 16, column: 5, scope: !35) -!38 = !DILocation(line: 17, column: 2, scope: !35) -!39 = !DILocation(line: 18, column: 9, scope: !25) -!40 = !DILocation(line: 18, column: 2, scope: !25) -!41 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 21, type: !42, scopeLine: 21, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !16) -!42 = !DISubroutineType(types: !43) -!43 = !{!15} -!44 = !DILocalVariable(name: "a", scope: !41, file: !11, line: 22, type: !15) -!45 = !DILocation(line: 22, column: 6, scope: !41) -!46 = !DILocation(line: 22, column: 2, scope: !41) -!47 = !DILabel(scope: !41, name: "LOOP", file: !11, line: 23) -!48 = !DILocation(line: 23, column: 2, scope: !41) -!49 = !DILocation(line: 24, column: 5, scope: !50) -!50 = distinct !DILexicalBlock(scope: !41, file: !11, line: 24, column: 5) -!51 = !DILocation(line: 24, column: 7, scope: !50) -!52 = !DILocation(line: 24, column: 5, scope: !41) -!53 = !DILocation(line: 25, column: 4, scope: !54) -!54 = distinct !DILexicalBlock(scope: !50, file: !11, line: 24, column: 12) -!55 = !DILocation(line: 26, column: 2, scope: !54) -!56 = !DILocation(line: 27, column: 10, scope: !57) -!57 = distinct !DILexicalBlock(scope: !50, file: !11, line: 27, column: 10) -!58 = !DILocation(line: 27, column: 12, scope: !57) -!59 = !DILocation(line: 27, column: 10, scope: !50) -!60 = !DILocation(line: 28, column: 4, scope: !61) -!61 = distinct !DILexicalBlock(scope: !57, file: !11, line: 27, column: 17) -!62 = !DILocation(line: 29, column: 2, scope: !61) -!63 = !DILocation(line: 31, column: 5, scope: !64) -!64 = distinct !DILexicalBlock(scope: !41, file: !11, line: 31, column: 5) -!65 = !DILocation(line: 31, column: 7, scope: !64) -!66 = !DILocation(line: 31, column: 5, scope: !41) -!67 = !DILocation(line: 32, column: 3, scope: !68) -!68 = distinct !DILexicalBlock(scope: !64, file: !11, line: 31, column: 13) -!69 = !DILocation(line: 35, column: 17, scope: !70) -!70 = distinct !DILexicalBlock(scope: !64, file: !11, line: 34, column: 7) -!71 = !DILocation(line: 35, column: 7, scope: !70) -!72 = !DILocation(line: 35, column: 5, scope: !70) -!73 = !DILocation(line: 37, column: 2, scope: !41) -!74 = !DILocation(line: 38, column: 3, scope: !75) -!75 = distinct !DILexicalBlock(scope: !41, file: !11, line: 37, column: 14) -!76 = !DILocation(line: 39, column: 6, scope: !77) -!77 = distinct !DILexicalBlock(scope: !75, file: !11, line: 39, column: 6) -!78 = !DILocation(line: 39, column: 8, scope: !77) -!79 = !DILocation(line: 39, column: 6, scope: !75) -!80 = !DILocation(line: 40, column: 4, scope: !81) -!81 = distinct !DILexicalBlock(scope: !77, file: !11, line: 39, column: 15) -!82 = distinct !{!82, !73, !83} -!83 = !DILocation(line: 42, column: 2, scope: !41) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_7-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_7-0.c.bc deleted file mode 100644 index 05eae671..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_7-0.c.bc +++ /dev/null @@ -1,94 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_7-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_7-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 0, ptr %a, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 0, ptr %b, align 4, !dbg !19 - br label %while.cond, !dbg !20 - -while.cond: ; preds = %while.body, %entry - %0 = load i32, ptr %a, align 4, !dbg !21 - %cmp = icmp slt i32 %0, 10, !dbg !22 - br i1 %cmp, label %while.body, label %while.end, !dbg !20 - -while.body: ; preds = %while.cond - %1 = load i32, ptr %a, align 4, !dbg !23 - %inc = add nsw i32 %1, 1, !dbg !23 - store i32 %inc, ptr %a, align 4, !dbg !23 - %2 = load i32, ptr %b, align 4, !dbg !25 - %add = add nsw i32 %2, 2, !dbg !26 - store i32 %add, ptr %b, align 4, !dbg !27 - br label %while.cond, !dbg !20, !llvm.loop !28 - -while.end: ; preds = %while.cond - %3 = load i32, ptr %a, align 4, !dbg !31 - %cmp1 = icmp eq i32 %3, 10, !dbg !32 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !33 - %4 = load i32, ptr %b, align 4, !dbg !34 - %cmp2 = icmp eq i32 %4, 20, !dbg !35 - call void @svf_assert(i1 noundef zeroext %cmp2), !dbg !36 - %5 = load i32, ptr %retval, align 4, !dbg !37 - ret i32 %5, !dbg !37 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_7-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8d857f8d1755f735297d1828dcfb6a81") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_7-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8d857f8d1755f735297d1828dcfb6a81") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 6, type: !14) -!17 = !DILocation(line: 6, column: 6, scope: !10) -!18 = !DILocalVariable(name: "b", scope: !10, file: !11, line: 7, type: !14) -!19 = !DILocation(line: 7, column: 9, scope: !10) -!20 = !DILocation(line: 8, column: 5, scope: !10) -!21 = !DILocation(line: 8, column: 11, scope: !10) -!22 = !DILocation(line: 8, column: 13, scope: !10) -!23 = !DILocation(line: 9, column: 10, scope: !24) -!24 = distinct !DILexicalBlock(scope: !10, file: !11, line: 8, column: 19) -!25 = !DILocation(line: 10, column: 13, scope: !24) -!26 = !DILocation(line: 10, column: 15, scope: !24) -!27 = !DILocation(line: 10, column: 11, scope: !24) -!28 = distinct !{!28, !20, !29, !30} -!29 = !DILocation(line: 11, column: 5, scope: !10) -!30 = !{!"llvm.loop.mustprogress"} -!31 = !DILocation(line: 12, column: 16, scope: !10) -!32 = !DILocation(line: 12, column: 18, scope: !10) -!33 = !DILocation(line: 12, column: 5, scope: !10) -!34 = !DILocation(line: 13, column: 16, scope: !10) -!35 = !DILocation(line: 13, column: 18, scope: !10) -!36 = !DILocation(line: 13, column: 5, scope: !10) -!37 = !DILocation(line: 14, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_8-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_8-0.c.bc deleted file mode 100644 index 660eabda..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_8-0.c.bc +++ /dev/null @@ -1,76 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_8-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_8-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - br label %while.cond, !dbg !18 - -while.cond: ; preds = %while.body, %entry - %0 = load i32, ptr %a, align 4, !dbg !19 - %cmp = icmp slt i32 %0, 10, !dbg !20 - br i1 %cmp, label %while.body, label %while.end, !dbg !18 - -while.body: ; preds = %while.cond - %1 = load i32, ptr %a, align 4, !dbg !21 - %inc = add nsw i32 %1, 1, !dbg !21 - store i32 %inc, ptr %a, align 4, !dbg !21 - br label %while.cond, !dbg !18, !llvm.loop !23 - -while.end: ; preds = %while.cond - %2 = load i32, ptr %a, align 4, !dbg !26 - %cmp1 = icmp eq i32 %2, 10, !dbg !27 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !28 - %3 = load i32, ptr %retval, align 4, !dbg !29 - ret i32 %3, !dbg !29 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_8-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "cc7a51a76d13f217c12b6f642f6fdf26") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 5, type: !12, scopeLine: 5, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_8-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "cc7a51a76d13f217c12b6f642f6fdf26") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 6, type: !14) -!17 = !DILocation(line: 6, column: 6, scope: !10) -!18 = !DILocation(line: 7, column: 5, scope: !10) -!19 = !DILocation(line: 7, column: 11, scope: !10) -!20 = !DILocation(line: 7, column: 13, scope: !10) -!21 = !DILocation(line: 8, column: 10, scope: !22) -!22 = distinct !DILexicalBlock(scope: !10, file: !11, line: 7, column: 19) -!23 = distinct !{!23, !18, !24, !25} -!24 = !DILocation(line: 9, column: 5, scope: !10) -!25 = !{!"llvm.loop.mustprogress"} -!26 = !DILocation(line: 10, column: 16, scope: !10) -!27 = !DILocation(line: 10, column: 18, scope: !10) -!28 = !DILocation(line: 10, column: 5, scope: !10) -!29 = !DILocation(line: 11, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/INTERVAL_test_9-0.c.bc b/test_cases_bc/ae_assert_tests/INTERVAL_test_9-0.c.bc deleted file mode 100644 index fbe8d360..00000000 --- a/test_cases_bc/ae_assert_tests/INTERVAL_test_9-0.c.bc +++ /dev/null @@ -1,91 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/INTERVAL_test_9-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_9-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %b, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 1, ptr %b, align 4, !dbg !19 - %0 = load i32, ptr %a, align 4, !dbg !20 - %1 = load i32, ptr %b, align 4, !dbg !21 - %add = add nsw i32 %0, %1, !dbg !22 - store i32 %add, ptr %b, align 4, !dbg !23 - %2 = load i32, ptr %a, align 4, !dbg !24 - %cmp = icmp sgt i32 %2, 5, !dbg !26 - br i1 %cmp, label %if.then, label %if.else, !dbg !27 - -if.then: ; preds = %entry - %3 = load i32, ptr %b, align 4, !dbg !28 - %cmp1 = icmp sgt i32 %3, 6, !dbg !30 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !31 - br label %if.end, !dbg !32 - -if.else: ; preds = %entry - %4 = load i32, ptr %b, align 4, !dbg !33 - %cmp2 = icmp sle i32 %4, 5, !dbg !35 - call void @svf_assert(i1 noundef zeroext %cmp2), !dbg !36 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %5 = load i32, ptr %retval, align 4, !dbg !37 - ret i32 %5, !dbg !37 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/INTERVAL_test_9-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "5f5e6ba54b9f55b02173e2c12c0100bb") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 4, type: !12, scopeLine: 4, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/INTERVAL_test_9-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "5f5e6ba54b9f55b02173e2c12c0100bb") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", scope: !10, file: !11, line: 5, type: !14) -!17 = !DILocation(line: 5, column: 9, scope: !10) -!18 = !DILocalVariable(name: "b", scope: !10, file: !11, line: 6, type: !14) -!19 = !DILocation(line: 6, column: 9, scope: !10) -!20 = !DILocation(line: 7, column: 9, scope: !10) -!21 = !DILocation(line: 7, column: 13, scope: !10) -!22 = !DILocation(line: 7, column: 11, scope: !10) -!23 = !DILocation(line: 7, column: 7, scope: !10) -!24 = !DILocation(line: 8, column: 9, scope: !25) -!25 = distinct !DILexicalBlock(scope: !10, file: !11, line: 8, column: 9) -!26 = !DILocation(line: 8, column: 11, scope: !25) -!27 = !DILocation(line: 8, column: 9, scope: !10) -!28 = !DILocation(line: 9, column: 20, scope: !29) -!29 = distinct !DILexicalBlock(scope: !25, file: !11, line: 8, column: 16) -!30 = !DILocation(line: 9, column: 22, scope: !29) -!31 = !DILocation(line: 9, column: 9, scope: !29) -!32 = !DILocation(line: 10, column: 5, scope: !29) -!33 = !DILocation(line: 12, column: 20, scope: !34) -!34 = distinct !DILexicalBlock(scope: !25, file: !11, line: 11, column: 10) -!35 = !DILocation(line: 12, column: 22, scope: !34) -!36 = !DILocation(line: 12, column: 9, scope: !34) -!37 = !DILocation(line: 14, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/LOOP_for01-0.c.bc b/test_cases_bc/ae_assert_tests/LOOP_for01-0.c.bc deleted file mode 100644 index b70abc04..00000000 --- a/test_cases_bc/ae_assert_tests/LOOP_for01-0.c.bc +++ /dev/null @@ -1,109 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/LOOP_for01-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/LOOP_for01-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %i = alloca i32, align 4 - %j = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %i, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 0, ptr %i, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %j, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 0, ptr %j, align 4, !dbg !19 - store i32 0, ptr %i, align 4, !dbg !20 - br label %for.cond, !dbg !22 - -for.cond: ; preds = %for.inc, %entry - %0 = load i32, ptr %i, align 4, !dbg !23 - %cmp = icmp slt i32 %0, 5, !dbg !25 - br i1 %cmp, label %for.body, label %for.end, !dbg !26 - -for.body: ; preds = %for.cond - %1 = load i32, ptr %j, align 4, !dbg !27 - %inc = add nsw i32 %1, 1, !dbg !27 - store i32 %inc, ptr %j, align 4, !dbg !27 - br label %for.inc, !dbg !29 - -for.inc: ; preds = %for.body - %2 = load i32, ptr %i, align 4, !dbg !30 - %inc1 = add nsw i32 %2, 1, !dbg !30 - store i32 %inc1, ptr %i, align 4, !dbg !30 - br label %for.cond, !dbg !31, !llvm.loop !32 - -for.end: ; preds = %for.cond - %3 = load i32, ptr %i, align 4, !dbg !35 - %cmp2 = icmp eq i32 %3, 5, !dbg !36 - br i1 %cmp2, label %land.rhs, label %land.end, !dbg !37 - -land.rhs: ; preds = %for.end - %4 = load i32, ptr %j, align 4, !dbg !38 - %cmp3 = icmp eq i32 %4, 5, !dbg !39 - br label %land.end - -land.end: ; preds = %land.rhs, %for.end - %5 = phi i1 [ false, %for.end ], [ %cmp3, %land.rhs ], !dbg !40 - call void @svf_assert(i1 noundef zeroext %5), !dbg !41 - %6 = load i32, ptr %retval, align 4, !dbg !42 - ret i32 %6, !dbg !42 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/LOOP_for01-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "4edaca05dc789535929e25584b815baa") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 7, type: !12, scopeLine: 7, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/LOOP_for01-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "4edaca05dc789535929e25584b815baa") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "i", scope: !10, file: !11, line: 8, type: !14) -!17 = !DILocation(line: 8, column: 9, scope: !10) -!18 = !DILocalVariable(name: "j", scope: !10, file: !11, line: 9, type: !14) -!19 = !DILocation(line: 9, column: 9, scope: !10) -!20 = !DILocation(line: 11, column: 12, scope: !21) -!21 = distinct !DILexicalBlock(scope: !10, file: !11, line: 11, column: 5) -!22 = !DILocation(line: 11, column: 10, scope: !21) -!23 = !DILocation(line: 11, column: 17, scope: !24) -!24 = distinct !DILexicalBlock(scope: !21, file: !11, line: 11, column: 5) -!25 = !DILocation(line: 11, column: 19, scope: !24) -!26 = !DILocation(line: 11, column: 5, scope: !21) -!27 = !DILocation(line: 12, column: 10, scope: !28) -!28 = distinct !DILexicalBlock(scope: !24, file: !11, line: 11, column: 29) -!29 = !DILocation(line: 13, column: 5, scope: !28) -!30 = !DILocation(line: 11, column: 25, scope: !24) -!31 = !DILocation(line: 11, column: 5, scope: !24) -!32 = distinct !{!32, !26, !33, !34} -!33 = !DILocation(line: 13, column: 5, scope: !21) -!34 = !{!"llvm.loop.mustprogress"} -!35 = !DILocation(line: 14, column: 16, scope: !10) -!36 = !DILocation(line: 14, column: 18, scope: !10) -!37 = !DILocation(line: 14, column: 23, scope: !10) -!38 = !DILocation(line: 14, column: 26, scope: !10) -!39 = !DILocation(line: 14, column: 28, scope: !10) -!40 = !DILocation(line: 0, scope: !10) -!41 = !DILocation(line: 14, column: 5, scope: !10) -!42 = !DILocation(line: 15, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/LOOP_for_break02-0.c.bc b/test_cases_bc/ae_assert_tests/LOOP_for_break02-0.c.bc deleted file mode 100644 index b0d2d5bb..00000000 --- a/test_cases_bc/ae_assert_tests/LOOP_for_break02-0.c.bc +++ /dev/null @@ -1,109 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/LOOP_for_break02-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/LOOP_for_break02-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %i = alloca i32, align 4 - %j = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %i, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 0, ptr %i, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %j, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 0, ptr %j, align 4, !dbg !19 - store i32 0, ptr %i, align 4, !dbg !20 - br label %for.cond, !dbg !22 - -for.cond: ; preds = %for.inc, %entry - %0 = load i32, ptr %i, align 4, !dbg !23 - %cmp = icmp slt i32 %0, 5, !dbg !25 - br i1 %cmp, label %for.body, label %for.end, !dbg !26 - -for.body: ; preds = %for.cond - %1 = load i32, ptr %j, align 4, !dbg !27 - %cmp1 = icmp eq i32 %1, 3, !dbg !30 - br i1 %cmp1, label %if.then, label %if.end, !dbg !31 - -if.then: ; preds = %for.body - br label %for.end, !dbg !32 - -if.end: ; preds = %for.body - %2 = load i32, ptr %j, align 4, !dbg !33 - %inc = add nsw i32 %2, 1, !dbg !33 - store i32 %inc, ptr %j, align 4, !dbg !33 - br label %for.inc, !dbg !34 - -for.inc: ; preds = %if.end - %3 = load i32, ptr %i, align 4, !dbg !35 - %inc2 = add nsw i32 %3, 1, !dbg !35 - store i32 %inc2, ptr %i, align 4, !dbg !35 - br label %for.cond, !dbg !36, !llvm.loop !37 - -for.end: ; preds = %if.then, %for.cond - %4 = load i32, ptr %i, align 4, !dbg !40 - %cmp3 = icmp eq i32 %4, 3, !dbg !41 - call void @svf_assert(i1 noundef zeroext %cmp3), !dbg !42 - %5 = load i32, ptr %retval, align 4, !dbg !43 - ret i32 %5, !dbg !43 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/LOOP_for_break02-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8821faddfa78f02e0087fa2443d20663") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 3, type: !12, scopeLine: 3, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/LOOP_for_break02-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8821faddfa78f02e0087fa2443d20663") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "i", scope: !10, file: !11, line: 4, type: !14) -!17 = !DILocation(line: 4, column: 9, scope: !10) -!18 = !DILocalVariable(name: "j", scope: !10, file: !11, line: 5, type: !14) -!19 = !DILocation(line: 5, column: 9, scope: !10) -!20 = !DILocation(line: 6, column: 12, scope: !21) -!21 = distinct !DILexicalBlock(scope: !10, file: !11, line: 6, column: 5) -!22 = !DILocation(line: 6, column: 10, scope: !21) -!23 = !DILocation(line: 6, column: 17, scope: !24) -!24 = distinct !DILexicalBlock(scope: !21, file: !11, line: 6, column: 5) -!25 = !DILocation(line: 6, column: 19, scope: !24) -!26 = !DILocation(line: 6, column: 5, scope: !21) -!27 = !DILocation(line: 7, column: 13, scope: !28) -!28 = distinct !DILexicalBlock(scope: !29, file: !11, line: 7, column: 13) -!29 = distinct !DILexicalBlock(scope: !24, file: !11, line: 6, column: 29) -!30 = !DILocation(line: 7, column: 14, scope: !28) -!31 = !DILocation(line: 7, column: 13, scope: !29) -!32 = !DILocation(line: 7, column: 19, scope: !28) -!33 = !DILocation(line: 8, column: 10, scope: !29) -!34 = !DILocation(line: 9, column: 5, scope: !29) -!35 = !DILocation(line: 6, column: 25, scope: !24) -!36 = !DILocation(line: 6, column: 5, scope: !24) -!37 = distinct !{!37, !26, !38, !39} -!38 = !DILocation(line: 9, column: 5, scope: !21) -!39 = !{!"llvm.loop.mustprogress"} -!40 = !DILocation(line: 10, column: 16, scope: !10) -!41 = !DILocation(line: 10, column: 18, scope: !10) -!42 = !DILocation(line: 10, column: 5, scope: !10) -!43 = !DILocation(line: 11, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/LOOP_for_call-0.c.bc b/test_cases_bc/ae_assert_tests/LOOP_for_call-0.c.bc deleted file mode 100644 index 27891395..00000000 --- a/test_cases_bc/ae_assert_tests/LOOP_for_call-0.c.bc +++ /dev/null @@ -1,130 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/LOOP_for_call-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/LOOP_for_call-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @add(i32 noundef %a) #0 !dbg !10 { -entry: - %a.addr = alloca i32, align 4 - store i32 %a, ptr %a.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %a.addr, metadata !16, metadata !DIExpression()), !dbg !17 - %0 = load i32, ptr %a.addr, align 4, !dbg !18 - %add = add nsw i32 %0, 1, !dbg !19 - ret i32 %add, !dbg !20 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !21 { -entry: - %retval = alloca i32, align 4 - %i = alloca i32, align 4 - %j = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %i, metadata !24, metadata !DIExpression()), !dbg !25 - store i32 0, ptr %i, align 4, !dbg !25 - call void @llvm.dbg.declare(metadata ptr %j, metadata !26, metadata !DIExpression()), !dbg !27 - store i32 0, ptr %j, align 4, !dbg !27 - store i32 0, ptr %i, align 4, !dbg !28 - br label %for.cond, !dbg !30 - -for.cond: ; preds = %for.inc, %entry - %0 = load i32, ptr %i, align 4, !dbg !31 - %cmp = icmp slt i32 %0, 5, !dbg !33 - br i1 %cmp, label %for.body, label %for.end, !dbg !34 - -for.body: ; preds = %for.cond - %1 = load i32, ptr %j, align 4, !dbg !35 - %call = call i32 @add(i32 noundef %1), !dbg !37 - store i32 %call, ptr %j, align 4, !dbg !38 - br label %for.inc, !dbg !39 - -for.inc: ; preds = %for.body - %2 = load i32, ptr %i, align 4, !dbg !40 - %inc = add nsw i32 %2, 1, !dbg !40 - store i32 %inc, ptr %i, align 4, !dbg !40 - br label %for.cond, !dbg !41, !llvm.loop !42 - -for.end: ; preds = %for.cond - %3 = load i32, ptr %i, align 4, !dbg !45 - %cmp1 = icmp eq i32 %3, 5, !dbg !46 - br i1 %cmp1, label %land.rhs, label %land.end, !dbg !47 - -land.rhs: ; preds = %for.end - %4 = load i32, ptr %j, align 4, !dbg !48 - %cmp2 = icmp eq i32 %4, 5, !dbg !49 - br label %land.end - -land.end: ; preds = %land.rhs, %for.end - %5 = phi i1 [ false, %for.end ], [ %cmp2, %land.rhs ], !dbg !50 - call void @svf_assert(i1 noundef zeroext %5), !dbg !51 - %6 = load i32, ptr %retval, align 4, !dbg !52 - ret i32 %6, !dbg !52 -} - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/LOOP_for_call-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "9f92c4dea061c17c62c9171e672e7db6") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "add", scope: !11, file: !11, line: 7, type: !12, scopeLine: 7, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/LOOP_for_call-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "9f92c4dea061c17c62c9171e672e7db6") -!12 = !DISubroutineType(types: !13) -!13 = !{!14, !14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "a", arg: 1, scope: !10, file: !11, line: 7, type: !14) -!17 = !DILocation(line: 7, column: 13, scope: !10) -!18 = !DILocation(line: 8, column: 12, scope: !10) -!19 = !DILocation(line: 8, column: 14, scope: !10) -!20 = !DILocation(line: 8, column: 5, scope: !10) -!21 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 10, type: !22, scopeLine: 10, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!22 = !DISubroutineType(types: !23) -!23 = !{!14} -!24 = !DILocalVariable(name: "i", scope: !21, file: !11, line: 11, type: !14) -!25 = !DILocation(line: 11, column: 9, scope: !21) -!26 = !DILocalVariable(name: "j", scope: !21, file: !11, line: 12, type: !14) -!27 = !DILocation(line: 12, column: 9, scope: !21) -!28 = !DILocation(line: 13, column: 12, scope: !29) -!29 = distinct !DILexicalBlock(scope: !21, file: !11, line: 13, column: 5) -!30 = !DILocation(line: 13, column: 10, scope: !29) -!31 = !DILocation(line: 13, column: 17, scope: !32) -!32 = distinct !DILexicalBlock(scope: !29, file: !11, line: 13, column: 5) -!33 = !DILocation(line: 13, column: 19, scope: !32) -!34 = !DILocation(line: 13, column: 5, scope: !29) -!35 = !DILocation(line: 14, column: 17, scope: !36) -!36 = distinct !DILexicalBlock(scope: !32, file: !11, line: 13, column: 29) -!37 = !DILocation(line: 14, column: 13, scope: !36) -!38 = !DILocation(line: 14, column: 11, scope: !36) -!39 = !DILocation(line: 15, column: 5, scope: !36) -!40 = !DILocation(line: 13, column: 25, scope: !32) -!41 = !DILocation(line: 13, column: 5, scope: !32) -!42 = distinct !{!42, !34, !43, !44} -!43 = !DILocation(line: 15, column: 5, scope: !29) -!44 = !{!"llvm.loop.mustprogress"} -!45 = !DILocation(line: 16, column: 16, scope: !21) -!46 = !DILocation(line: 16, column: 18, scope: !21) -!47 = !DILocation(line: 16, column: 23, scope: !21) -!48 = !DILocation(line: 16, column: 26, scope: !21) -!49 = !DILocation(line: 16, column: 28, scope: !21) -!50 = !DILocation(line: 0, scope: !21) -!51 = !DILocation(line: 16, column: 5, scope: !21) -!52 = !DILocation(line: 17, column: 1, scope: !21) diff --git a/test_cases_bc/ae_assert_tests/LOOP_for_inc-0.c.bc b/test_cases_bc/ae_assert_tests/LOOP_for_inc-0.c.bc deleted file mode 100644 index 83ea8fa4..00000000 --- a/test_cases_bc/ae_assert_tests/LOOP_for_inc-0.c.bc +++ /dev/null @@ -1,91 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/LOOP_for_inc-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/LOOP_for_inc-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %i = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %i, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 0, ptr %i, align 4, !dbg !17 - store i32 0, ptr %i, align 4, !dbg !18 - br label %for.cond, !dbg !20 - -for.cond: ; preds = %for.inc, %entry - %0 = load i32, ptr %i, align 4, !dbg !21 - %cmp = icmp slt i32 %0, 5, !dbg !23 - br i1 %cmp, label %for.body, label %for.end, !dbg !24 - -for.body: ; preds = %for.cond - %1 = load i32, ptr %i, align 4, !dbg !25 - %inc = add nsw i32 %1, 1, !dbg !25 - store i32 %inc, ptr %i, align 4, !dbg !25 - br label %for.inc, !dbg !27 - -for.inc: ; preds = %for.body - %2 = load i32, ptr %i, align 4, !dbg !28 - %inc1 = add nsw i32 %2, 1, !dbg !28 - store i32 %inc1, ptr %i, align 4, !dbg !28 - br label %for.cond, !dbg !29, !llvm.loop !30 - -for.end: ; preds = %for.cond - %3 = load i32, ptr %i, align 4, !dbg !33 - %cmp2 = icmp eq i32 %3, 6, !dbg !34 - call void @svf_assert(i1 noundef zeroext %cmp2), !dbg !35 - %4 = load i32, ptr %retval, align 4, !dbg !36 - ret i32 %4, !dbg !36 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/LOOP_for_inc-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "47a1b2571cd3d0c73877d936234dfb51") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 3, type: !12, scopeLine: 3, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/LOOP_for_inc-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "47a1b2571cd3d0c73877d936234dfb51") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "i", scope: !10, file: !11, line: 4, type: !14) -!17 = !DILocation(line: 4, column: 9, scope: !10) -!18 = !DILocation(line: 5, column: 12, scope: !19) -!19 = distinct !DILexicalBlock(scope: !10, file: !11, line: 5, column: 5) -!20 = !DILocation(line: 5, column: 10, scope: !19) -!21 = !DILocation(line: 5, column: 17, scope: !22) -!22 = distinct !DILexicalBlock(scope: !19, file: !11, line: 5, column: 5) -!23 = !DILocation(line: 5, column: 19, scope: !22) -!24 = !DILocation(line: 5, column: 5, scope: !19) -!25 = !DILocation(line: 6, column: 10, scope: !26) -!26 = distinct !DILexicalBlock(scope: !22, file: !11, line: 5, column: 29) -!27 = !DILocation(line: 7, column: 5, scope: !26) -!28 = !DILocation(line: 5, column: 25, scope: !22) -!29 = !DILocation(line: 5, column: 5, scope: !22) -!30 = distinct !{!30, !24, !31, !32} -!31 = !DILocation(line: 7, column: 5, scope: !19) -!32 = !{!"llvm.loop.mustprogress"} -!33 = !DILocation(line: 8, column: 16, scope: !10) -!34 = !DILocation(line: 8, column: 18, scope: !10) -!35 = !DILocation(line: 8, column: 5, scope: !10) -!36 = !DILocation(line: 9, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/LOOP_for_nested-0.c.bc b/test_cases_bc/ae_assert_tests/LOOP_for_nested-0.c.bc deleted file mode 100644 index 21f0c504..00000000 --- a/test_cases_bc/ae_assert_tests/LOOP_for_nested-0.c.bc +++ /dev/null @@ -1,136 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/LOOP_for_nested-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/LOOP_for_nested-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %i = alloca i32, align 4 - %j = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %i, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 0, ptr %i, align 4, !dbg !17 - call void @llvm.dbg.declare(metadata ptr %j, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 0, ptr %j, align 4, !dbg !19 - store i32 0, ptr %i, align 4, !dbg !20 - br label %for.cond, !dbg !22 - -for.cond: ; preds = %for.inc4, %entry - %0 = load i32, ptr %i, align 4, !dbg !23 - %cmp = icmp slt i32 %0, 5, !dbg !25 - br i1 %cmp, label %for.body, label %for.end6, !dbg !26 - -for.body: ; preds = %for.cond - store i32 0, ptr %j, align 4, !dbg !27 - br label %for.cond1, !dbg !30 - -for.cond1: ; preds = %for.inc, %for.body - %1 = load i32, ptr %j, align 4, !dbg !31 - %cmp2 = icmp slt i32 %1, 3, !dbg !33 - br i1 %cmp2, label %for.body3, label %for.end, !dbg !34 - -for.body3: ; preds = %for.cond1 - br label %for.inc, !dbg !35 - -for.inc: ; preds = %for.body3 - %2 = load i32, ptr %j, align 4, !dbg !37 - %inc = add nsw i32 %2, 1, !dbg !37 - store i32 %inc, ptr %j, align 4, !dbg !37 - br label %for.cond1, !dbg !38, !llvm.loop !39 - -for.end: ; preds = %for.cond1 - br label %for.inc4, !dbg !42 - -for.inc4: ; preds = %for.end - %3 = load i32, ptr %i, align 4, !dbg !43 - %inc5 = add nsw i32 %3, 1, !dbg !43 - store i32 %inc5, ptr %i, align 4, !dbg !43 - br label %for.cond, !dbg !44, !llvm.loop !45 - -for.end6: ; preds = %for.cond - %4 = load i32, ptr %i, align 4, !dbg !47 - %cmp7 = icmp eq i32 %4, 5, !dbg !48 - br i1 %cmp7, label %land.rhs, label %land.end, !dbg !49 - -land.rhs: ; preds = %for.end6 - %5 = load i32, ptr %j, align 4, !dbg !50 - %cmp8 = icmp eq i32 %5, 3, !dbg !51 - br label %land.end - -land.end: ; preds = %land.rhs, %for.end6 - %6 = phi i1 [ false, %for.end6 ], [ %cmp8, %land.rhs ], !dbg !52 - call void @svf_assert(i1 noundef zeroext %6), !dbg !53 - %7 = load i32, ptr %retval, align 4, !dbg !54 - ret i32 %7, !dbg !54 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/LOOP_for_nested-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d6dbbc3f64ae04ccc966b539b7d62e25") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 3, type: !12, scopeLine: 3, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/LOOP_for_nested-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d6dbbc3f64ae04ccc966b539b7d62e25") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "i", scope: !10, file: !11, line: 4, type: !14) -!17 = !DILocation(line: 4, column: 9, scope: !10) -!18 = !DILocalVariable(name: "j", scope: !10, file: !11, line: 5, type: !14) -!19 = !DILocation(line: 5, column: 9, scope: !10) -!20 = !DILocation(line: 6, column: 12, scope: !21) -!21 = distinct !DILexicalBlock(scope: !10, file: !11, line: 6, column: 5) -!22 = !DILocation(line: 6, column: 10, scope: !21) -!23 = !DILocation(line: 6, column: 17, scope: !24) -!24 = distinct !DILexicalBlock(scope: !21, file: !11, line: 6, column: 5) -!25 = !DILocation(line: 6, column: 19, scope: !24) -!26 = !DILocation(line: 6, column: 5, scope: !21) -!27 = !DILocation(line: 7, column: 16, scope: !28) -!28 = distinct !DILexicalBlock(scope: !29, file: !11, line: 7, column: 9) -!29 = distinct !DILexicalBlock(scope: !24, file: !11, line: 6, column: 29) -!30 = !DILocation(line: 7, column: 14, scope: !28) -!31 = !DILocation(line: 7, column: 21, scope: !32) -!32 = distinct !DILexicalBlock(scope: !28, file: !11, line: 7, column: 9) -!33 = !DILocation(line: 7, column: 23, scope: !32) -!34 = !DILocation(line: 7, column: 9, scope: !28) -!35 = !DILocation(line: 9, column: 9, scope: !36) -!36 = distinct !DILexicalBlock(scope: !32, file: !11, line: 7, column: 33) -!37 = !DILocation(line: 7, column: 28, scope: !32) -!38 = !DILocation(line: 7, column: 9, scope: !32) -!39 = distinct !{!39, !34, !40, !41} -!40 = !DILocation(line: 9, column: 9, scope: !28) -!41 = !{!"llvm.loop.mustprogress"} -!42 = !DILocation(line: 10, column: 5, scope: !29) -!43 = !DILocation(line: 6, column: 25, scope: !24) -!44 = !DILocation(line: 6, column: 5, scope: !24) -!45 = distinct !{!45, !26, !46, !41} -!46 = !DILocation(line: 10, column: 5, scope: !21) -!47 = !DILocation(line: 11, column: 16, scope: !10) -!48 = !DILocation(line: 11, column: 18, scope: !10) -!49 = !DILocation(line: 11, column: 23, scope: !10) -!50 = !DILocation(line: 11, column: 26, scope: !10) -!51 = !DILocation(line: 11, column: 28, scope: !10) -!52 = !DILocation(line: 0, scope: !10) -!53 = !DILocation(line: 11, column: 5, scope: !10) -!54 = !DILocation(line: 12, column: 1, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/LOOP_while01-0.c.bc b/test_cases_bc/ae_assert_tests/LOOP_while01-0.c.bc deleted file mode 100644 index 81fe0acc..00000000 --- a/test_cases_bc/ae_assert_tests/LOOP_while01-0.c.bc +++ /dev/null @@ -1,77 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/LOOP_while01-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/LOOP_while01-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 1, ptr %x, align 4, !dbg !18 - br label %while.cond, !dbg !19 - -while.cond: ; preds = %while.body, %entry - %0 = load i32, ptr %x, align 4, !dbg !20 - %cmp = icmp slt i32 %0, 5, !dbg !21 - br i1 %cmp, label %while.body, label %while.end, !dbg !19 - -while.body: ; preds = %while.cond - %1 = load i32, ptr %x, align 4, !dbg !22 - %inc = add nsw i32 %1, 1, !dbg !22 - store i32 %inc, ptr %x, align 4, !dbg !22 - br label %while.cond, !dbg !19, !llvm.loop !24 - -while.end: ; preds = %while.cond - %2 = load i32, ptr %x, align 4, !dbg !27 - %cmp1 = icmp eq i32 %2, 5, !dbg !28 - call void @svf_assert(i1 noundef zeroext %cmp1), !dbg !29 - ret i32 0, !dbg !30 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/LOOP_while01-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b50b757a2a09bc1a04eef8938cb0d669") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 4, type: !12, scopeLine: 4, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/LOOP_while01-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b50b757a2a09bc1a04eef8938cb0d669") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 5, type: !14) -!17 = !DILocation(line: 5, column: 9, scope: !10) -!18 = !DILocation(line: 6, column: 6, scope: !10) -!19 = !DILocation(line: 7, column: 5, scope: !10) -!20 = !DILocation(line: 7, column: 11, scope: !10) -!21 = !DILocation(line: 7, column: 12, scope: !10) -!22 = !DILocation(line: 8, column: 10, scope: !23) -!23 = distinct !DILexicalBlock(scope: !10, file: !11, line: 7, column: 16) -!24 = distinct !{!24, !19, !25, !26} -!25 = !DILocation(line: 9, column: 5, scope: !10) -!26 = !{!"llvm.loop.mustprogress"} -!27 = !DILocation(line: 10, column: 16, scope: !10) -!28 = !DILocation(line: 10, column: 18, scope: !10) -!29 = !DILocation(line: 10, column: 5, scope: !10) -!30 = !DILocation(line: 11, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/LOOP_while_break-0.c.bc b/test_cases_bc/ae_assert_tests/LOOP_while_break-0.c.bc deleted file mode 100644 index 4a5e1c99..00000000 --- a/test_cases_bc/ae_assert_tests/LOOP_while_break-0.c.bc +++ /dev/null @@ -1,90 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/LOOP_while_break-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/LOOP_while_break-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 1, ptr %x, align 4, !dbg !18 - br label %while.cond, !dbg !19 - -while.cond: ; preds = %if.end, %entry - %0 = load i32, ptr %x, align 4, !dbg !20 - %cmp = icmp slt i32 %0, 5, !dbg !21 - br i1 %cmp, label %while.body, label %while.end, !dbg !19 - -while.body: ; preds = %while.cond - %1 = load i32, ptr %x, align 4, !dbg !22 - %inc = add nsw i32 %1, 1, !dbg !22 - store i32 %inc, ptr %x, align 4, !dbg !22 - %2 = load i32, ptr %x, align 4, !dbg !24 - %cmp1 = icmp eq i32 %2, 3, !dbg !26 - br i1 %cmp1, label %if.then, label %if.end, !dbg !27 - -if.then: ; preds = %while.body - br label %while.end, !dbg !28 - -if.end: ; preds = %while.body - br label %while.cond, !dbg !19, !llvm.loop !29 - -while.end: ; preds = %if.then, %while.cond - %3 = load i32, ptr %x, align 4, !dbg !32 - %cmp2 = icmp eq i32 %3, 3, !dbg !33 - call void @svf_assert(i1 noundef zeroext %cmp2), !dbg !34 - ret i32 0, !dbg !35 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/LOOP_while_break-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ed1a29aa4f8b77c26ce4db6a1f12c949") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 4, type: !12, scopeLine: 4, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/LOOP_while_break-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ed1a29aa4f8b77c26ce4db6a1f12c949") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 5, type: !14) -!17 = !DILocation(line: 5, column: 9, scope: !10) -!18 = !DILocation(line: 6, column: 6, scope: !10) -!19 = !DILocation(line: 7, column: 5, scope: !10) -!20 = !DILocation(line: 7, column: 11, scope: !10) -!21 = !DILocation(line: 7, column: 12, scope: !10) -!22 = !DILocation(line: 8, column: 10, scope: !23) -!23 = distinct !DILexicalBlock(scope: !10, file: !11, line: 7, column: 16) -!24 = !DILocation(line: 9, column: 12, scope: !25) -!25 = distinct !DILexicalBlock(scope: !23, file: !11, line: 9, column: 12) -!26 = !DILocation(line: 9, column: 13, scope: !25) -!27 = !DILocation(line: 9, column: 12, scope: !23) -!28 = !DILocation(line: 9, column: 18, scope: !25) -!29 = distinct !{!29, !19, !30, !31} -!30 = !DILocation(line: 10, column: 5, scope: !10) -!31 = !{!"llvm.loop.mustprogress"} -!32 = !DILocation(line: 11, column: 16, scope: !10) -!33 = !DILocation(line: 11, column: 18, scope: !10) -!34 = !DILocation(line: 11, column: 5, scope: !10) -!35 = !DILocation(line: 12, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/LOOP_while_nested-0.c.bc b/test_cases_bc/ae_assert_tests/LOOP_while_nested-0.c.bc deleted file mode 100644 index e673283c..00000000 --- a/test_cases_bc/ae_assert_tests/LOOP_while_nested-0.c.bc +++ /dev/null @@ -1,111 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/LOOP_while_nested-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/LOOP_while_nested-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %x, metadata !16, metadata !DIExpression()), !dbg !17 - call void @llvm.dbg.declare(metadata ptr %y, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 1, ptr %x, align 4, !dbg !20 - br label %while.cond, !dbg !21 - -while.cond: ; preds = %for.end, %entry - %0 = load i32, ptr %x, align 4, !dbg !22 - %cmp = icmp slt i32 %0, 5, !dbg !23 - br i1 %cmp, label %while.body, label %while.end, !dbg !21 - -while.body: ; preds = %while.cond - store i32 0, ptr %y, align 4, !dbg !24 - br label %for.cond, !dbg !27 - -for.cond: ; preds = %for.inc, %while.body - %1 = load i32, ptr %y, align 4, !dbg !28 - %cmp1 = icmp slt i32 %1, 3, !dbg !30 - br i1 %cmp1, label %for.body, label %for.end, !dbg !31 - -for.body: ; preds = %for.cond - %2 = load i32, ptr %x, align 4, !dbg !32 - %inc = add nsw i32 %2, 1, !dbg !32 - store i32 %inc, ptr %x, align 4, !dbg !32 - br label %for.inc, !dbg !33 - -for.inc: ; preds = %for.body - %3 = load i32, ptr %y, align 4, !dbg !34 - %inc2 = add nsw i32 %3, 1, !dbg !34 - store i32 %inc2, ptr %y, align 4, !dbg !34 - br label %for.cond, !dbg !35, !llvm.loop !36 - -for.end: ; preds = %for.cond - br label %while.cond, !dbg !21, !llvm.loop !39 - -while.end: ; preds = %while.cond - %4 = load i32, ptr %x, align 4, !dbg !41 - %cmp3 = icmp eq i32 %4, 7, !dbg !42 - call void @svf_assert(i1 noundef zeroext %cmp3), !dbg !43 - ret i32 0, !dbg !44 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/LOOP_while_nested-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ce1df72a688671a6b2f5c02bb028ab20") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 4, type: !12, scopeLine: 4, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/LOOP_while_nested-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ce1df72a688671a6b2f5c02bb028ab20") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "x", scope: !10, file: !11, line: 5, type: !14) -!17 = !DILocation(line: 5, column: 9, scope: !10) -!18 = !DILocalVariable(name: "y", scope: !10, file: !11, line: 5, type: !14) -!19 = !DILocation(line: 5, column: 12, scope: !10) -!20 = !DILocation(line: 6, column: 6, scope: !10) -!21 = !DILocation(line: 7, column: 5, scope: !10) -!22 = !DILocation(line: 7, column: 11, scope: !10) -!23 = !DILocation(line: 7, column: 12, scope: !10) -!24 = !DILocation(line: 8, column: 16, scope: !25) -!25 = distinct !DILexicalBlock(scope: !26, file: !11, line: 8, column: 9) -!26 = distinct !DILexicalBlock(scope: !10, file: !11, line: 7, column: 16) -!27 = !DILocation(line: 8, column: 14, scope: !25) -!28 = !DILocation(line: 8, column: 21, scope: !29) -!29 = distinct !DILexicalBlock(scope: !25, file: !11, line: 8, column: 9) -!30 = !DILocation(line: 8, column: 23, scope: !29) -!31 = !DILocation(line: 8, column: 9, scope: !25) -!32 = !DILocation(line: 9, column: 14, scope: !29) -!33 = !DILocation(line: 9, column: 13, scope: !29) -!34 = !DILocation(line: 8, column: 28, scope: !29) -!35 = !DILocation(line: 8, column: 9, scope: !29) -!36 = distinct !{!36, !31, !37, !38} -!37 = !DILocation(line: 9, column: 14, scope: !25) -!38 = !{!"llvm.loop.mustprogress"} -!39 = distinct !{!39, !21, !40, !38} -!40 = !DILocation(line: 10, column: 5, scope: !10) -!41 = !DILocation(line: 11, column: 16, scope: !10) -!42 = !DILocation(line: 11, column: 18, scope: !10) -!43 = !DILocation(line: 11, column: 5, scope: !10) -!44 = !DILocation(line: 12, column: 5, scope: !10) diff --git a/test_cases_bc/ae_assert_tests/NULL_1.c.bc b/test_cases_bc/ae_assert_tests/NULL_1.c.bc deleted file mode 100644 index d0ad865d..00000000 --- a/test_cases_bc/ae_assert_tests/NULL_1.c.bc +++ /dev/null @@ -1,57 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/NULL_1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/NULL_1.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !12 { -entry: - %retval = alloca i32, align 4 - %ptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %ptr, metadata !18, metadata !DIExpression()), !dbg !20 - store ptr null, ptr %ptr, align 8, !dbg !20 - %0 = load ptr, ptr %ptr, align 8, !dbg !21 - %cmp = icmp eq ptr %0, null, !dbg !22 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !23 - ret i32 0, !dbg !24 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!4, !5, !6, !7, !8, !9, !10} -!llvm.ident = !{!11} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/NULL_1.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8a538f459af4c6e01c4afe5fab32496f") -!2 = !{!3} -!3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!4 = !{i32 7, !"Dwarf Version", i32 5} -!5 = !{i32 2, !"Debug Info Version", i32 3} -!6 = !{i32 1, !"wchar_size", i32 4} -!7 = !{i32 8, !"PIC Level", i32 2} -!8 = !{i32 7, !"PIE Level", i32 2} -!9 = !{i32 7, !"uwtable", i32 2} -!10 = !{i32 7, !"frame-pointer", i32 2} -!11 = !{!"clang version 16.0.0"} -!12 = distinct !DISubprogram(name: "main", scope: !13, file: !13, line: 5, type: !14, scopeLine: 5, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) -!13 = !DIFile(filename: "src/ae_assert_tests/NULL_1.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8a538f459af4c6e01c4afe5fab32496f") -!14 = !DISubroutineType(types: !15) -!15 = !{!16} -!16 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!17 = !{} -!18 = !DILocalVariable(name: "ptr", scope: !12, file: !13, line: 6, type: !19) -!19 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !16, size: 64) -!20 = !DILocation(line: 6, column: 10, scope: !12) -!21 = !DILocation(line: 7, column: 16, scope: !12) -!22 = !DILocation(line: 7, column: 20, scope: !12) -!23 = !DILocation(line: 7, column: 5, scope: !12) -!24 = !DILocation(line: 8, column: 5, scope: !12) diff --git a/test_cases_bc/ae_assert_tests/NULL_2.c.bc b/test_cases_bc/ae_assert_tests/NULL_2.c.bc deleted file mode 100644 index 78d5802b..00000000 --- a/test_cases_bc/ae_assert_tests/NULL_2.c.bc +++ /dev/null @@ -1,62 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/NULL_2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/NULL_2.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !12 { -entry: - %retval = alloca i32, align 4 - %value = alloca i32, align 4 - %ptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %value, metadata !18, metadata !DIExpression()), !dbg !19 - store i32 10, ptr %value, align 4, !dbg !19 - call void @llvm.dbg.declare(metadata ptr %ptr, metadata !20, metadata !DIExpression()), !dbg !22 - store ptr %value, ptr %ptr, align 8, !dbg !22 - %0 = load ptr, ptr %ptr, align 8, !dbg !23 - %cmp = icmp ne ptr %0, null, !dbg !24 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !25 - ret i32 0, !dbg !26 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!4, !5, !6, !7, !8, !9, !10} -!llvm.ident = !{!11} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/NULL_2.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7f41ecd9832dfe44e18ee96b6d3c8272") -!2 = !{!3} -!3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!4 = !{i32 7, !"Dwarf Version", i32 5} -!5 = !{i32 2, !"Debug Info Version", i32 3} -!6 = !{i32 1, !"wchar_size", i32 4} -!7 = !{i32 8, !"PIC Level", i32 2} -!8 = !{i32 7, !"PIE Level", i32 2} -!9 = !{i32 7, !"uwtable", i32 2} -!10 = !{i32 7, !"frame-pointer", i32 2} -!11 = !{!"clang version 16.0.0"} -!12 = distinct !DISubprogram(name: "main", scope: !13, file: !13, line: 5, type: !14, scopeLine: 5, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) -!13 = !DIFile(filename: "src/ae_assert_tests/NULL_2.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7f41ecd9832dfe44e18ee96b6d3c8272") -!14 = !DISubroutineType(types: !15) -!15 = !{!16} -!16 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!17 = !{} -!18 = !DILocalVariable(name: "value", scope: !12, file: !13, line: 6, type: !16) -!19 = !DILocation(line: 6, column: 9, scope: !12) -!20 = !DILocalVariable(name: "ptr", scope: !12, file: !13, line: 7, type: !21) -!21 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !16, size: 64) -!22 = !DILocation(line: 7, column: 10, scope: !12) -!23 = !DILocation(line: 8, column: 16, scope: !12) -!24 = !DILocation(line: 8, column: 20, scope: !12) -!25 = !DILocation(line: 8, column: 5, scope: !12) -!26 = !DILocation(line: 9, column: 5, scope: !12) diff --git a/test_cases_bc/ae_assert_tests/NULL_3.c.bc b/test_cases_bc/ae_assert_tests/NULL_3.c.bc deleted file mode 100644 index 0a3990fd..00000000 --- a/test_cases_bc/ae_assert_tests/NULL_3.c.bc +++ /dev/null @@ -1,78 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/NULL_3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/NULL_3.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !12 { -entry: - %retval = alloca i32, align 4 - %ptr = alloca ptr, align 8 - %isNullDereference = alloca i8, align 1 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %ptr, metadata !18, metadata !DIExpression()), !dbg !20 - store ptr null, ptr %ptr, align 8, !dbg !20 - call void @llvm.dbg.declare(metadata ptr %isNullDereference, metadata !21, metadata !DIExpression()), !dbg !23 - store i8 0, ptr %isNullDereference, align 1, !dbg !23 - %0 = load ptr, ptr %ptr, align 8, !dbg !24 - %cmp = icmp eq ptr %0, null, !dbg !26 - br i1 %cmp, label %if.then, label %if.end, !dbg !27 - -if.then: ; preds = %entry - store i8 1, ptr %isNullDereference, align 1, !dbg !28 - br label %if.end, !dbg !30 - -if.end: ; preds = %if.then, %entry - %1 = load i8, ptr %isNullDereference, align 1, !dbg !31 - %tobool = trunc i8 %1 to i1, !dbg !31 - call void @svf_assert(i1 noundef zeroext %tobool), !dbg !32 - ret i32 0, !dbg !33 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!4, !5, !6, !7, !8, !9, !10} -!llvm.ident = !{!11} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/NULL_3.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "daec7ec17d47a89a46783ec0d340565e") -!2 = !{!3} -!3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!4 = !{i32 7, !"Dwarf Version", i32 5} -!5 = !{i32 2, !"Debug Info Version", i32 3} -!6 = !{i32 1, !"wchar_size", i32 4} -!7 = !{i32 8, !"PIC Level", i32 2} -!8 = !{i32 7, !"PIE Level", i32 2} -!9 = !{i32 7, !"uwtable", i32 2} -!10 = !{i32 7, !"frame-pointer", i32 2} -!11 = !{!"clang version 16.0.0"} -!12 = distinct !DISubprogram(name: "main", scope: !13, file: !13, line: 5, type: !14, scopeLine: 5, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) -!13 = !DIFile(filename: "src/ae_assert_tests/NULL_3.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "daec7ec17d47a89a46783ec0d340565e") -!14 = !DISubroutineType(types: !15) -!15 = !{!16} -!16 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!17 = !{} -!18 = !DILocalVariable(name: "ptr", scope: !12, file: !13, line: 6, type: !19) -!19 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !16, size: 64) -!20 = !DILocation(line: 6, column: 10, scope: !12) -!21 = !DILocalVariable(name: "isNullDereference", scope: !12, file: !13, line: 7, type: !22) -!22 = !DIBasicType(name: "_Bool", size: 8, encoding: DW_ATE_boolean) -!23 = !DILocation(line: 7, column: 10, scope: !12) -!24 = !DILocation(line: 9, column: 9, scope: !25) -!25 = distinct !DILexicalBlock(scope: !12, file: !13, line: 9, column: 9) -!26 = !DILocation(line: 9, column: 13, scope: !25) -!27 = !DILocation(line: 9, column: 9, scope: !12) -!28 = !DILocation(line: 10, column: 27, scope: !29) -!29 = distinct !DILexicalBlock(scope: !25, file: !13, line: 9, column: 22) -!30 = !DILocation(line: 11, column: 5, scope: !29) -!31 = !DILocation(line: 13, column: 16, scope: !12) -!32 = !DILocation(line: 13, column: 5, scope: !12) -!33 = !DILocation(line: 14, column: 5, scope: !12) diff --git a/test_cases_bc/ae_assert_tests/NULL_4.c.bc b/test_cases_bc/ae_assert_tests/NULL_4.c.bc deleted file mode 100644 index 6b0a818f..00000000 --- a/test_cases_bc/ae_assert_tests/NULL_4.c.bc +++ /dev/null @@ -1,76 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/NULL_4.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/NULL_4.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !12 { -entry: - %retval = alloca i32, align 4 - %a = alloca [3 x [3 x ptr]], align 16 - %isNull = alloca i8, align 1 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %a, metadata !18, metadata !DIExpression()), !dbg !23 - call void @llvm.memset.p0.i64(ptr align 16 %a, i8 0, i64 72, i1 false), !dbg !23 - call void @llvm.dbg.declare(metadata ptr %isNull, metadata !24, metadata !DIExpression()), !dbg !26 - %arrayidx = getelementptr inbounds [3 x [3 x ptr]], ptr %a, i64 0, i64 0, !dbg !27 - %arrayidx1 = getelementptr inbounds [3 x ptr], ptr %arrayidx, i64 0, i64 0, !dbg !27 - %0 = load ptr, ptr %arrayidx1, align 16, !dbg !27 - %cmp = icmp eq ptr %0, null, !dbg !28 - %frombool = zext i1 %cmp to i8, !dbg !26 - store i8 %frombool, ptr %isNull, align 1, !dbg !26 - %1 = load i8, ptr %isNull, align 1, !dbg !29 - %tobool = trunc i8 %1 to i1, !dbg !29 - call void @svf_assert(i1 noundef zeroext %tobool), !dbg !30 - ret i32 0, !dbg !31 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -declare void @svf_assert(i1 noundef zeroext) #3 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!4, !5, !6, !7, !8, !9, !10} -!llvm.ident = !{!11} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/NULL_4.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "1689cb57e4b5b96b758c3da9e45d4d66") -!2 = !{!3} -!3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!4 = !{i32 7, !"Dwarf Version", i32 5} -!5 = !{i32 2, !"Debug Info Version", i32 3} -!6 = !{i32 1, !"wchar_size", i32 4} -!7 = !{i32 8, !"PIC Level", i32 2} -!8 = !{i32 7, !"PIE Level", i32 2} -!9 = !{i32 7, !"uwtable", i32 2} -!10 = !{i32 7, !"frame-pointer", i32 2} -!11 = !{!"clang version 16.0.0"} -!12 = distinct !DISubprogram(name: "main", scope: !13, file: !13, line: 5, type: !14, scopeLine: 5, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) -!13 = !DIFile(filename: "src/ae_assert_tests/NULL_4.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "1689cb57e4b5b96b758c3da9e45d4d66") -!14 = !DISubroutineType(types: !15) -!15 = !{!16} -!16 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!17 = !{} -!18 = !DILocalVariable(name: "a", scope: !12, file: !13, line: 6, type: !19) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !20, size: 576, elements: !21) -!20 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !16, size: 64) -!21 = !{!22, !22} -!22 = !DISubrange(count: 3) -!23 = !DILocation(line: 6, column: 10, scope: !12) -!24 = !DILocalVariable(name: "isNull", scope: !12, file: !13, line: 8, type: !25) -!25 = !DIBasicType(name: "_Bool", size: 8, encoding: DW_ATE_boolean) -!26 = !DILocation(line: 8, column: 10, scope: !12) -!27 = !DILocation(line: 8, column: 20, scope: !12) -!28 = !DILocation(line: 8, column: 28, scope: !12) -!29 = !DILocation(line: 9, column: 16, scope: !12) -!30 = !DILocation(line: 9, column: 5, scope: !12) -!31 = !DILocation(line: 11, column: 5, scope: !12) diff --git a/test_cases_bc/ae_assert_tests/UAF_uaf_0-0.c.bc b/test_cases_bc/ae_assert_tests/UAF_uaf_0-0.c.bc deleted file mode 100644 index f6d51618..00000000 --- a/test_cases_bc/ae_assert_tests/UAF_uaf_0-0.c.bc +++ /dev/null @@ -1,97 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/UAF_uaf_0-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/UAF_uaf_0-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !14 { -entry: - %retval = alloca i32, align 4 - %data = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - call void @llvm.dbg.declare(metadata ptr %data, metadata !19, metadata !DIExpression()), !dbg !20 - %0 = alloca i8, i64 8, align 16, !dbg !21 - store ptr %0, ptr %data, align 8, !dbg !20 - %1 = load ptr, ptr %data, align 8, !dbg !22 - %arrayidx = getelementptr inbounds i32, ptr %1, i64 0, !dbg !22 - store i32 0, ptr %arrayidx, align 4, !dbg !23 - %2 = load ptr, ptr %data, align 8, !dbg !24 - %arrayidx1 = getelementptr inbounds i32, ptr %2, i64 1, !dbg !24 - store i32 1, ptr %arrayidx1, align 4, !dbg !25 - %3 = load ptr, ptr %data, align 8, !dbg !26 - %arrayidx2 = getelementptr inbounds i32, ptr %3, i64 1, !dbg !26 - %4 = load i32, ptr %arrayidx2, align 4, !dbg !26 - %cmp = icmp ne i32 %4, 1, !dbg !28 - br i1 %cmp, label %if.then, label %if.end, !dbg !29 - -if.then: ; preds = %entry - %5 = load ptr, ptr %data, align 8, !dbg !30 - call void @free(ptr noundef %5) #4, !dbg !32 - store ptr null, ptr %data, align 8, !dbg !33 - br label %if.end, !dbg !34 - -if.end: ; preds = %if.then, %entry - %6 = load ptr, ptr %data, align 8, !dbg !35 - %cmp3 = icmp ne ptr %6, null, !dbg !36 - %conv = zext i1 %cmp3 to i32, !dbg !36 - %call = call i32 (i32, ...) @svf_assert(i32 noundef %conv), !dbg !37 - ret i32 0, !dbg !38 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare void @free(ptr noundef) #2 - -declare i32 @svf_assert(...) #3 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!6, !7, !8, !9, !10, !11, !12} -!llvm.ident = !{!13} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/UAF_uaf_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "1396a8647a7f3aad43cd555a2bbdd2d4") -!2 = !{!3, !5} -!3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!4 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!6 = !{i32 7, !"Dwarf Version", i32 5} -!7 = !{i32 2, !"Debug Info Version", i32 3} -!8 = !{i32 1, !"wchar_size", i32 4} -!9 = !{i32 8, !"PIC Level", i32 2} -!10 = !{i32 7, !"PIE Level", i32 2} -!11 = !{i32 7, !"uwtable", i32 2} -!12 = !{i32 7, !"frame-pointer", i32 2} -!13 = !{!"clang version 16.0.0"} -!14 = distinct !DISubprogram(name: "main", scope: !15, file: !15, line: 14, type: !16, scopeLine: 14, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !18) -!15 = !DIFile(filename: "src/ae_assert_tests/UAF_uaf_0-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "1396a8647a7f3aad43cd555a2bbdd2d4") -!16 = !DISubroutineType(types: !17) -!17 = !{!4} -!18 = !{} -!19 = !DILocalVariable(name: "data", scope: !14, file: !15, line: 15, type: !3) -!20 = !DILocation(line: 15, column: 11, scope: !14) -!21 = !DILocation(line: 15, column: 25, scope: !14) -!22 = !DILocation(line: 16, column: 5, scope: !14) -!23 = !DILocation(line: 16, column: 13, scope: !14) -!24 = !DILocation(line: 17, column: 5, scope: !14) -!25 = !DILocation(line: 17, column: 13, scope: !14) -!26 = !DILocation(line: 18, column: 9, scope: !27) -!27 = distinct !DILexicalBlock(scope: !14, file: !15, line: 18, column: 9) -!28 = !DILocation(line: 18, column: 17, scope: !27) -!29 = !DILocation(line: 18, column: 9, scope: !14) -!30 = !DILocation(line: 19, column: 14, scope: !31) -!31 = distinct !DILexicalBlock(scope: !27, file: !15, line: 18, column: 23) -!32 = !DILocation(line: 19, column: 9, scope: !31) -!33 = !DILocation(line: 20, column: 14, scope: !31) -!34 = !DILocation(line: 21, column: 5, scope: !31) -!35 = !DILocation(line: 22, column: 16, scope: !14) -!36 = !DILocation(line: 22, column: 21, scope: !14) -!37 = !DILocation(line: 22, column: 5, scope: !14) -!38 = !DILocation(line: 23, column: 5, scope: !14) diff --git a/test_cases_bc/ae_assert_tests/cwe121_char_alloc-0.c.bc b/test_cases_bc/ae_assert_tests/cwe121_char_alloc-0.c.bc deleted file mode 100644 index 5e0789c8..00000000 --- a/test_cases_bc/ae_assert_tests/cwe121_char_alloc-0.c.bc +++ /dev/null @@ -1,83 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/cwe121_char_alloc-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/cwe121_char_alloc-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !13 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %data, metadata !19, metadata !DIExpression()), !dbg !20 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !21, metadata !DIExpression()), !dbg !22 - %0 = alloca i8, i64 4, align 16, !dbg !23 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !22 - %1 = load ptr, ptr %dataBadBuffer, align 8, !dbg !24 - store ptr %1, ptr %data, align 8, !dbg !25 - %2 = load ptr, ptr %data, align 8, !dbg !26 - %arrayidx = getelementptr inbounds i8, ptr %2, i64 0, !dbg !26 - store i8 65, ptr %arrayidx, align 1, !dbg !27 - %3 = load ptr, ptr %data, align 8, !dbg !28 - %arrayidx1 = getelementptr inbounds i8, ptr %3, i64 1, !dbg !28 - store i8 65, ptr %arrayidx1, align 1, !dbg !29 - %4 = load ptr, ptr %data, align 8, !dbg !30 - %arrayidx2 = getelementptr inbounds i8, ptr %4, i64 2, !dbg !30 - store i8 65, ptr %arrayidx2, align 1, !dbg !31 - %5 = load ptr, ptr %data, align 8, !dbg !32 - %arrayidx3 = getelementptr inbounds i8, ptr %5, i64 1, !dbg !32 - %6 = load i8, ptr %arrayidx3, align 1, !dbg !32 - %conv = sext i8 %6 to i32, !dbg !32 - %cmp = icmp eq i32 %conv, 65, !dbg !33 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !34 - ret i32 0, !dbg !35 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!5, !6, !7, !8, !9, !10, !11} -!llvm.ident = !{!12} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/cwe121_char_alloc-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "cd229c218c71222c80297417ec53073b") -!2 = !{!3} -!3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{i32 7, !"Dwarf Version", i32 5} -!6 = !{i32 2, !"Debug Info Version", i32 3} -!7 = !{i32 1, !"wchar_size", i32 4} -!8 = !{i32 8, !"PIC Level", i32 2} -!9 = !{i32 7, !"PIE Level", i32 2} -!10 = !{i32 7, !"uwtable", i32 2} -!11 = !{i32 7, !"frame-pointer", i32 2} -!12 = !{!"clang version 16.0.0"} -!13 = distinct !DISubprogram(name: "main", scope: !14, file: !14, line: 8, type: !15, scopeLine: 8, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !18) -!14 = !DIFile(filename: "src/ae_assert_tests/cwe121_char_alloc-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "cd229c218c71222c80297417ec53073b") -!15 = !DISubroutineType(types: !16) -!16 = !{!17} -!17 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!18 = !{} -!19 = !DILocalVariable(name: "data", scope: !13, file: !14, line: 9, type: !3) -!20 = !DILocation(line: 9, column: 12, scope: !13) -!21 = !DILocalVariable(name: "dataBadBuffer", scope: !13, file: !14, line: 10, type: !3) -!22 = !DILocation(line: 10, column: 12, scope: !13) -!23 = !DILocation(line: 10, column: 36, scope: !13) -!24 = !DILocation(line: 13, column: 12, scope: !13) -!25 = !DILocation(line: 13, column: 10, scope: !13) -!26 = !DILocation(line: 14, column: 5, scope: !13) -!27 = !DILocation(line: 14, column: 13, scope: !13) -!28 = !DILocation(line: 15, column: 5, scope: !13) -!29 = !DILocation(line: 15, column: 13, scope: !13) -!30 = !DILocation(line: 16, column: 5, scope: !13) -!31 = !DILocation(line: 16, column: 13, scope: !13) -!32 = !DILocation(line: 17, column: 16, scope: !13) -!33 = !DILocation(line: 17, column: 24, scope: !13) -!34 = !DILocation(line: 17, column: 5, scope: !13) -!35 = !DILocation(line: 18, column: 1, scope: !13) diff --git a/test_cases_bc/ae_assert_tests/cwe121_int_alloc-0.c.bc b/test_cases_bc/ae_assert_tests/cwe121_int_alloc-0.c.bc deleted file mode 100644 index 3be4fab1..00000000 --- a/test_cases_bc/ae_assert_tests/cwe121_int_alloc-0.c.bc +++ /dev/null @@ -1,81 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/cwe121_int_alloc-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/cwe121_int_alloc-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !13 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %data, metadata !18, metadata !DIExpression()), !dbg !19 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !20, metadata !DIExpression()), !dbg !21 - %0 = alloca i8, i64 16, align 16, !dbg !22 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !21 - %1 = load ptr, ptr %dataBadBuffer, align 8, !dbg !23 - store ptr %1, ptr %data, align 8, !dbg !24 - %2 = load ptr, ptr %data, align 8, !dbg !25 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 0, !dbg !25 - store i32 10, ptr %arrayidx, align 4, !dbg !26 - %3 = load ptr, ptr %data, align 8, !dbg !27 - %arrayidx1 = getelementptr inbounds i32, ptr %3, i64 1, !dbg !27 - store i32 11, ptr %arrayidx1, align 4, !dbg !28 - %4 = load ptr, ptr %data, align 8, !dbg !29 - %arrayidx2 = getelementptr inbounds i32, ptr %4, i64 2, !dbg !29 - store i32 12, ptr %arrayidx2, align 4, !dbg !30 - %5 = load ptr, ptr %data, align 8, !dbg !31 - %arrayidx3 = getelementptr inbounds i32, ptr %5, i64 1, !dbg !31 - %6 = load i32, ptr %arrayidx3, align 4, !dbg !31 - %cmp = icmp eq i32 %6, 11, !dbg !32 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !33 - ret i32 0, !dbg !34 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!5, !6, !7, !8, !9, !10, !11} -!llvm.ident = !{!12} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/cwe121_int_alloc-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "1385aefee79cf43f62058450546d8aef") -!2 = !{!3} -!3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!4 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!5 = !{i32 7, !"Dwarf Version", i32 5} -!6 = !{i32 2, !"Debug Info Version", i32 3} -!7 = !{i32 1, !"wchar_size", i32 4} -!8 = !{i32 8, !"PIC Level", i32 2} -!9 = !{i32 7, !"PIE Level", i32 2} -!10 = !{i32 7, !"uwtable", i32 2} -!11 = !{i32 7, !"frame-pointer", i32 2} -!12 = !{!"clang version 16.0.0"} -!13 = distinct !DISubprogram(name: "main", scope: !14, file: !14, line: 7, type: !15, scopeLine: 7, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !17) -!14 = !DIFile(filename: "src/ae_assert_tests/cwe121_int_alloc-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "1385aefee79cf43f62058450546d8aef") -!15 = !DISubroutineType(types: !16) -!16 = !{!4} -!17 = !{} -!18 = !DILocalVariable(name: "data", scope: !13, file: !14, line: 8, type: !3) -!19 = !DILocation(line: 8, column: 11, scope: !13) -!20 = !DILocalVariable(name: "dataBadBuffer", scope: !13, file: !14, line: 9, type: !3) -!21 = !DILocation(line: 9, column: 11, scope: !13) -!22 = !DILocation(line: 9, column: 34, scope: !13) -!23 = !DILocation(line: 12, column: 12, scope: !13) -!24 = !DILocation(line: 12, column: 10, scope: !13) -!25 = !DILocation(line: 13, column: 5, scope: !13) -!26 = !DILocation(line: 13, column: 13, scope: !13) -!27 = !DILocation(line: 14, column: 5, scope: !13) -!28 = !DILocation(line: 14, column: 13, scope: !13) -!29 = !DILocation(line: 15, column: 5, scope: !13) -!30 = !DILocation(line: 15, column: 13, scope: !13) -!31 = !DILocation(line: 16, column: 16, scope: !13) -!32 = !DILocation(line: 16, column: 24, scope: !13) -!33 = !DILocation(line: 16, column: 5, scope: !13) -!34 = !DILocation(line: 17, column: 1, scope: !13) diff --git a/test_cases_bc/ae_assert_tests/cwe121_struct_alloc-0.c.bc b/test_cases_bc/ae_assert_tests/cwe121_struct_alloc-0.c.bc deleted file mode 100644 index af5b9d65..00000000 --- a/test_cases_bc/ae_assert_tests/cwe121_struct_alloc-0.c.bc +++ /dev/null @@ -1,96 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/cwe121_struct_alloc-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/cwe121_struct_alloc-0.c" -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-unknown-linux-gnu" - -%struct._twoIntsStruct = type { i32, i32 } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !19 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - call void @llvm.dbg.declare(metadata ptr %data, metadata !23, metadata !DIExpression()), !dbg !24 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !25, metadata !DIExpression()), !dbg !26 - %0 = alloca i8, i64 32, align 16, !dbg !27 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !26 - %1 = load ptr, ptr %dataBadBuffer, align 8, !dbg !28 - store ptr %1, ptr %data, align 8, !dbg !29 - %2 = load ptr, ptr %data, align 8, !dbg !30 - %arrayidx = getelementptr inbounds %struct._twoIntsStruct, ptr %2, i64 0, !dbg !30 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %arrayidx, i32 0, i32 0, !dbg !31 - store i32 10, ptr %intOne, align 4, !dbg !32 - %3 = load ptr, ptr %data, align 8, !dbg !33 - %arrayidx1 = getelementptr inbounds %struct._twoIntsStruct, ptr %3, i64 1, !dbg !33 - %intOne2 = getelementptr inbounds %struct._twoIntsStruct, ptr %arrayidx1, i32 0, i32 0, !dbg !34 - store i32 11, ptr %intOne2, align 4, !dbg !35 - %4 = load ptr, ptr %data, align 8, !dbg !36 - %arrayidx3 = getelementptr inbounds %struct._twoIntsStruct, ptr %4, i64 2, !dbg !36 - %intOne4 = getelementptr inbounds %struct._twoIntsStruct, ptr %arrayidx3, i32 0, i32 0, !dbg !37 - store i32 12, ptr %intOne4, align 4, !dbg !38 - %5 = load ptr, ptr %data, align 8, !dbg !39 - %arrayidx5 = getelementptr inbounds %struct._twoIntsStruct, ptr %5, i64 1, !dbg !39 - %intOne6 = getelementptr inbounds %struct._twoIntsStruct, ptr %arrayidx5, i32 0, i32 0, !dbg !40 - %6 = load i32, ptr %intOne6, align 4, !dbg !40 - %cmp = icmp eq i32 %6, 11, !dbg !41 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !42 - ret i32 0, !dbg !43 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!11, !12, !13, !14, !15, !16, !17} -!llvm.ident = !{!18} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/cwe121_struct_alloc-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d9df059d0a61489766172a4b65abe3fe") -!2 = !{!3} -!3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!4 = !DIDerivedType(tag: DW_TAG_typedef, name: "twoIntsStruct", file: !5, line: 11, baseType: !6) -!5 = !DIFile(filename: "src/ae_assert_tests/cwe121_struct_alloc-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d9df059d0a61489766172a4b65abe3fe") -!6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_twoIntsStruct", file: !5, line: 7, size: 64, elements: !7) -!7 = !{!8, !10} -!8 = !DIDerivedType(tag: DW_TAG_member, name: "intOne", scope: !6, file: !5, line: 9, baseType: !9, size: 32) -!9 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!10 = !DIDerivedType(tag: DW_TAG_member, name: "intTwo", scope: !6, file: !5, line: 10, baseType: !9, size: 32, offset: 32) -!11 = !{i32 7, !"Dwarf Version", i32 5} -!12 = !{i32 2, !"Debug Info Version", i32 3} -!13 = !{i32 1, !"wchar_size", i32 4} -!14 = !{i32 8, !"PIC Level", i32 2} -!15 = !{i32 7, !"PIE Level", i32 2} -!16 = !{i32 7, !"uwtable", i32 2} -!17 = !{i32 7, !"frame-pointer", i32 2} -!18 = !{!"clang version 16.0.0"} -!19 = distinct !DISubprogram(name: "main", scope: !5, file: !5, line: 13, type: !20, scopeLine: 13, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !22) -!20 = !DISubroutineType(types: !21) -!21 = !{!9} -!22 = !{} -!23 = !DILocalVariable(name: "data", scope: !19, file: !5, line: 14, type: !3) -!24 = !DILocation(line: 14, column: 21, scope: !19) -!25 = !DILocalVariable(name: "dataBadBuffer", scope: !19, file: !5, line: 15, type: !3) -!26 = !DILocation(line: 15, column: 21, scope: !19) -!27 = !DILocation(line: 15, column: 54, scope: !19) -!28 = !DILocation(line: 18, column: 12, scope: !19) -!29 = !DILocation(line: 18, column: 10, scope: !19) -!30 = !DILocation(line: 19, column: 5, scope: !19) -!31 = !DILocation(line: 19, column: 13, scope: !19) -!32 = !DILocation(line: 19, column: 20, scope: !19) -!33 = !DILocation(line: 20, column: 5, scope: !19) -!34 = !DILocation(line: 20, column: 13, scope: !19) -!35 = !DILocation(line: 20, column: 20, scope: !19) -!36 = !DILocation(line: 21, column: 5, scope: !19) -!37 = !DILocation(line: 21, column: 13, scope: !19) -!38 = !DILocation(line: 21, column: 20, scope: !19) -!39 = !DILocation(line: 22, column: 16, scope: !19) -!40 = !DILocation(line: 22, column: 24, scope: !19) -!41 = !DILocation(line: 22, column: 31, scope: !19) -!42 = !DILocation(line: 22, column: 5, scope: !19) -!43 = !DILocation(line: 23, column: 1, scope: !19) diff --git a/test_cases_bc/ae_assert_tests/cwe126_char_alloc-0.c.bc b/test_cases_bc/ae_assert_tests/cwe126_char_alloc-0.c.bc deleted file mode 100644 index 50e917ae..00000000 --- a/test_cases_bc/ae_assert_tests/cwe126_char_alloc-0.c.bc +++ /dev/null @@ -1,92 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/cwe126_char_alloc-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/cwe126_char_alloc-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !13 { -entry: - %data = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %dest = alloca [2 x i8], align 1 - call void @llvm.dbg.declare(metadata ptr %data, metadata !19, metadata !DIExpression()), !dbg !20 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !21, metadata !DIExpression()), !dbg !22 - %0 = alloca i8, i64 2, align 16, !dbg !23 - store ptr %0, ptr %dataGoodBuffer, align 8, !dbg !22 - %1 = load ptr, ptr %dataGoodBuffer, align 8, !dbg !24 - call void @llvm.memset.p0.i64(ptr align 1 %1, i8 65, i64 2, i1 false), !dbg !25 - %2 = load ptr, ptr %dataGoodBuffer, align 8, !dbg !26 - store ptr %2, ptr %data, align 8, !dbg !27 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !28, metadata !DIExpression()), !dbg !32 - %arraydecay = getelementptr inbounds [2 x i8], ptr %dest, i64 0, i64 0, !dbg !33 - %3 = load ptr, ptr %data, align 8, !dbg !34 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %arraydecay, ptr align 1 %3, i64 2, i1 false), !dbg !33 - %4 = load ptr, ptr %data, align 8, !dbg !35 - %arrayidx = getelementptr inbounds i8, ptr %4, i64 0, !dbg !35 - %5 = load i8, ptr %arrayidx, align 1, !dbg !35 - %conv = sext i8 %5 to i32, !dbg !35 - %cmp = icmp eq i32 %conv, 65, !dbg !36 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !37 - ret i32 0, !dbg !38 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3 - -declare void @svf_assert(i1 noundef zeroext) #4 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!5, !6, !7, !8, !9, !10, !11} -!llvm.ident = !{!12} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/cwe126_char_alloc-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "351da6695ae80efab07e8f2abdc79525") -!2 = !{!3} -!3 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{i32 7, !"Dwarf Version", i32 5} -!6 = !{i32 2, !"Debug Info Version", i32 3} -!7 = !{i32 1, !"wchar_size", i32 4} -!8 = !{i32 8, !"PIC Level", i32 2} -!9 = !{i32 7, !"PIE Level", i32 2} -!10 = !{i32 7, !"uwtable", i32 2} -!11 = !{i32 7, !"frame-pointer", i32 2} -!12 = !{!"clang version 16.0.0"} -!13 = distinct !DISubprogram(name: "main", scope: !14, file: !14, line: 13, type: !15, scopeLine: 13, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !18) -!14 = !DIFile(filename: "src/ae_assert_tests/cwe126_char_alloc-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "351da6695ae80efab07e8f2abdc79525") -!15 = !DISubroutineType(types: !16) -!16 = !{!17} -!17 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!18 = !{} -!19 = !DILocalVariable(name: "data", scope: !13, file: !14, line: 14, type: !3) -!20 = !DILocation(line: 14, column: 12, scope: !13) -!21 = !DILocalVariable(name: "dataGoodBuffer", scope: !13, file: !14, line: 15, type: !3) -!22 = !DILocation(line: 15, column: 12, scope: !13) -!23 = !DILocation(line: 15, column: 37, scope: !13) -!24 = !DILocation(line: 16, column: 12, scope: !13) -!25 = !DILocation(line: 16, column: 5, scope: !13) -!26 = !DILocation(line: 18, column: 12, scope: !13) -!27 = !DILocation(line: 18, column: 10, scope: !13) -!28 = !DILocalVariable(name: "dest", scope: !13, file: !14, line: 19, type: !29) -!29 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 16, elements: !30) -!30 = !{!31} -!31 = !DISubrange(count: 2) -!32 = !DILocation(line: 19, column: 10, scope: !13) -!33 = !DILocation(line: 20, column: 5, scope: !13) -!34 = !DILocation(line: 20, column: 18, scope: !13) -!35 = !DILocation(line: 21, column: 16, scope: !13) -!36 = !DILocation(line: 21, column: 24, scope: !13) -!37 = !DILocation(line: 21, column: 5, scope: !13) -!38 = !DILocation(line: 22, column: 1, scope: !13) diff --git a/test_cases_bc/ae_assert_tests/cwe190_char_fscanf-0.c.bc b/test_cases_bc/ae_assert_tests/cwe190_char_fscanf-0.c.bc deleted file mode 100644 index fa1431fc..00000000 --- a/test_cases_bc/ae_assert_tests/cwe190_char_fscanf-0.c.bc +++ /dev/null @@ -1,81 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/cwe190_char_fscanf-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/cwe190_char_fscanf-0.c" -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-unknown-linux-gnu" - -@stdin = external global ptr, align 8 -@.str = private unnamed_addr constant [3 x i8] c"%c\00", align 1, !dbg !0 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !18 { -entry: - %data = alloca i8, align 1 - %result = alloca i8, align 1 - call void @llvm.dbg.declare(metadata ptr %data, metadata !23, metadata !DIExpression()), !dbg !24 - store i8 32, ptr %data, align 1, !dbg !25 - %0 = load ptr, ptr @stdin, align 8, !dbg !26 - %call = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %0, ptr noundef @.str, ptr noundef %data), !dbg !27 - call void @llvm.dbg.declare(metadata ptr %result, metadata !28, metadata !DIExpression()), !dbg !29 - %1 = load i8, ptr %data, align 1, !dbg !30 - %conv = sext i8 %1 to i32, !dbg !30 - %add = add nsw i32 %conv, 1, !dbg !31 - %conv1 = trunc i32 %add to i8, !dbg !30 - store i8 %conv1, ptr %result, align 1, !dbg !29 - %2 = load i8, ptr %result, align 1, !dbg !32 - %conv2 = sext i8 %2 to i32, !dbg !32 - %cmp = icmp sle i32 %conv2, 255, !dbg !33 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !34 - ret i32 0, !dbg !35 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare i32 @__isoc99_fscanf(ptr noundef, ptr noundef, ...) #2 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!7} -!llvm.module.flags = !{!10, !11, !12, !13, !14, !15, !16} -!llvm.ident = !{!17} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 12, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_assert_tests/cwe190_char_fscanf-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b4f71ee9e57cd56855eca5c2388c2872") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 24, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 3) -!7 = distinct !DICompileUnit(language: DW_LANG_C11, file: !8, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !9, splitDebugInlining: false, nameTableKind: None) -!8 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/cwe190_char_fscanf-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b4f71ee9e57cd56855eca5c2388c2872") -!9 = !{!0} -!10 = !{i32 7, !"Dwarf Version", i32 5} -!11 = !{i32 2, !"Debug Info Version", i32 3} -!12 = !{i32 1, !"wchar_size", i32 4} -!13 = !{i32 8, !"PIC Level", i32 2} -!14 = !{i32 7, !"PIE Level", i32 2} -!15 = !{i32 7, !"uwtable", i32 2} -!16 = !{i32 7, !"frame-pointer", i32 2} -!17 = !{!"clang version 16.0.0"} -!18 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 8, type: !19, scopeLine: 8, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !22) -!19 = !DISubroutineType(types: !20) -!20 = !{!21} -!21 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!22 = !{} -!23 = !DILocalVariable(name: "data", scope: !18, file: !2, line: 9, type: !4) -!24 = !DILocation(line: 9, column: 10, scope: !18) -!25 = !DILocation(line: 10, column: 10, scope: !18) -!26 = !DILocation(line: 12, column: 12, scope: !18) -!27 = !DILocation(line: 12, column: 5, scope: !18) -!28 = !DILocalVariable(name: "result", scope: !18, file: !2, line: 14, type: !4) -!29 = !DILocation(line: 14, column: 10, scope: !18) -!30 = !DILocation(line: 14, column: 19, scope: !18) -!31 = !DILocation(line: 14, column: 24, scope: !18) -!32 = !DILocation(line: 15, column: 16, scope: !18) -!33 = !DILocation(line: 15, column: 23, scope: !18) -!34 = !DILocation(line: 15, column: 5, scope: !18) -!35 = !DILocation(line: 16, column: 1, scope: !18) diff --git a/test_cases_bc/ae_assert_tests/cwe190_int_max-0.c.bc b/test_cases_bc/ae_assert_tests/cwe190_int_max-0.c.bc deleted file mode 100644 index 7f0e9a01..00000000 --- a/test_cases_bc/ae_assert_tests/cwe190_int_max-0.c.bc +++ /dev/null @@ -1,64 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_assert_tests/cwe190_int_max-0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/cwe190_int_max-0.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 !dbg !10 { -entry: - %data = alloca i32, align 4 - %result = alloca i32, align 4 - call void @llvm.dbg.declare(metadata ptr %data, metadata !16, metadata !DIExpression()), !dbg !17 - store i32 0, ptr %data, align 4, !dbg !18 - store i32 2, ptr %data, align 4, !dbg !19 - call void @llvm.dbg.declare(metadata ptr %result, metadata !20, metadata !DIExpression()), !dbg !21 - %0 = load i32, ptr %data, align 4, !dbg !22 - %mul = mul nsw i32 %0, 2, !dbg !23 - store i32 %mul, ptr %result, align 4, !dbg !21 - %1 = load i32, ptr %data, align 4, !dbg !24 - %cmp = icmp slt i32 %1, 2147483647, !dbg !25 - call void @svf_assert(i1 noundef zeroext %cmp), !dbg !26 - ret i32 0, !dbg !27 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare void @svf_assert(i1 noundef zeroext) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} -!llvm.ident = !{!9} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) -!1 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_assert_tests/cwe190_int_max-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3a484a41634ebac644e67a55d2e940f3") -!2 = !{i32 7, !"Dwarf Version", i32 5} -!3 = !{i32 2, !"Debug Info Version", i32 3} -!4 = !{i32 1, !"wchar_size", i32 4} -!5 = !{i32 8, !"PIC Level", i32 2} -!6 = !{i32 7, !"PIE Level", i32 2} -!7 = !{i32 7, !"uwtable", i32 2} -!8 = !{i32 7, !"frame-pointer", i32 2} -!9 = !{!"clang version 16.0.0"} -!10 = distinct !DISubprogram(name: "main", scope: !11, file: !11, line: 11, type: !12, scopeLine: 11, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !15) -!11 = !DIFile(filename: "src/ae_assert_tests/cwe190_int_max-0.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3a484a41634ebac644e67a55d2e940f3") -!12 = !DISubroutineType(types: !13) -!13 = !{!14} -!14 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!15 = !{} -!16 = !DILocalVariable(name: "data", scope: !10, file: !11, line: 12, type: !14) -!17 = !DILocation(line: 12, column: 9, scope: !10) -!18 = !DILocation(line: 14, column: 10, scope: !10) -!19 = !DILocation(line: 16, column: 10, scope: !10) -!20 = !DILocalVariable(name: "result", scope: !10, file: !11, line: 18, type: !14) -!21 = !DILocation(line: 18, column: 9, scope: !10) -!22 = !DILocation(line: 18, column: 18, scope: !10) -!23 = !DILocation(line: 18, column: 23, scope: !10) -!24 = !DILocation(line: 19, column: 16, scope: !10) -!25 = !DILocation(line: 19, column: 21, scope: !10) -!26 = !DILocation(line: 19, column: 5, scope: !10) -!27 = !DILocation(line: 20, column: 1, scope: !10) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01.c.bc deleted file mode 100644 index 3fb7ebcd..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01.c.bc +++ /dev/null @@ -1,550 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01.c" -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-unknown-linux-gnu" - -@stdin = external global ptr, align 8 -@.str = private unnamed_addr constant [16 x i8] c"fgets() failed.\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [32 x i8] c"ERROR: Array index is negative.\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !17 -@.str.4 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !19 -@.str.5 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !24 -@.str.6 = private unnamed_addr constant [36 x i8] c"ERROR: Array index is out-of-bounds\00", align 1, !dbg !29 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01_bad() #0 !dbg !48 { -entry: - %data = alloca i32, align 4 - %inputBuffer = alloca [14 x i8], align 1 - %i = alloca i32, align 4 - %buffer = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !52, metadata !DIExpression()), !dbg !54 - store i32 -1, ptr %data, align 4, !dbg !55 - call void @llvm.dbg.declare(metadata ptr %inputBuffer, metadata !56, metadata !DIExpression()), !dbg !61 - call void @llvm.memset.p0.i64(ptr align 1 %inputBuffer, i8 0, i64 14, i1 false), !dbg !61 - %arraydecay = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !62 - %0 = load ptr, ptr @stdin, align 8, !dbg !64 - %call = call ptr @fgets(ptr noundef %arraydecay, i32 noundef 14, ptr noundef %0), !dbg !65 - %cmp = icmp ne ptr %call, null, !dbg !66 - br i1 %cmp, label %if.then, label %if.else, !dbg !67 - -if.then: ; preds = %entry - %arraydecay1 = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !68 - %call2 = call i32 @atoi(ptr noundef %arraydecay1) #6, !dbg !70 - store i32 %call2, ptr %data, align 4, !dbg !71 - br label %if.end, !dbg !72 - -if.else: ; preds = %entry - call void @printLine(ptr noundef @.str), !dbg !73 - br label %if.end - -if.end: ; preds = %if.else, %if.then - call void @llvm.dbg.declare(metadata ptr %i, metadata !75, metadata !DIExpression()), !dbg !77 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !78, metadata !DIExpression()), !dbg !82 - call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !82 - %1 = load i32, ptr %data, align 4, !dbg !83 - %cmp3 = icmp sge i32 %1, 0, !dbg !85 - br i1 %cmp3, label %if.then4, label %if.else11, !dbg !86 - -if.then4: ; preds = %if.end - %2 = load i32, ptr %data, align 4, !dbg !87 - %idxprom = sext i32 %2 to i64, !dbg !89 - %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !89 - store i32 1, ptr %arrayidx, align 4, !dbg !90 - %arraydecay5 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !91 - %3 = load i32, ptr %data, align 4, !dbg !92 - %conv = sext i32 %3 to i64, !dbg !92 - %mul = mul i64 %conv, 4, !dbg !93 - %sub = sub i64 %mul, 1, !dbg !94 - %call6 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay5, i64 noundef %sub), !dbg !95 - store i32 0, ptr %i, align 4, !dbg !96 - br label %for.cond, !dbg !98 - -for.cond: ; preds = %for.inc, %if.then4 - %4 = load i32, ptr %i, align 4, !dbg !99 - %cmp7 = icmp slt i32 %4, 10, !dbg !101 - br i1 %cmp7, label %for.body, label %for.end, !dbg !102 - -for.body: ; preds = %for.cond - %5 = load i32, ptr %i, align 4, !dbg !103 - %idxprom9 = sext i32 %5 to i64, !dbg !105 - %arrayidx10 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom9, !dbg !105 - %6 = load i32, ptr %arrayidx10, align 4, !dbg !105 - call void @printIntLine(i32 noundef %6), !dbg !106 - br label %for.inc, !dbg !107 - -for.inc: ; preds = %for.body - %7 = load i32, ptr %i, align 4, !dbg !108 - %inc = add nsw i32 %7, 1, !dbg !108 - store i32 %inc, ptr %i, align 4, !dbg !108 - br label %for.cond, !dbg !109, !llvm.loop !110 - -for.end: ; preds = %for.cond - br label %if.end12, !dbg !113 - -if.else11: ; preds = %if.end - call void @printLine(ptr noundef @.str.1), !dbg !114 - br label %if.end12 - -if.end12: ; preds = %if.else11, %for.end - ret void, !dbg !116 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -declare ptr @fgets(ptr noundef, i32 noundef, ptr noundef) #3 - -; Function Attrs: nounwind willreturn memory(read) -declare i32 @atoi(ptr noundef) #4 - -declare void @printLine(ptr noundef) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #3 - -declare void @printIntLine(i32 noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01_good() #0 !dbg !117 { -entry: - call void @goodG2B(), !dbg !118 - call void @goodB2G(), !dbg !119 - ret void, !dbg !120 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !121 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !126, metadata !DIExpression()), !dbg !127 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !128, metadata !DIExpression()), !dbg !129 - %call = call i64 @time(ptr noundef null) #7, !dbg !130 - %conv = trunc i64 %call to i32, !dbg !131 - call void @srand(i32 noundef %conv) #7, !dbg !132 - call void @printLine(ptr noundef @.str.2), !dbg !133 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01_good(), !dbg !134 - call void @printLine(ptr noundef @.str.3), !dbg !135 - call void @printLine(ptr noundef @.str.4), !dbg !136 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01_bad(), !dbg !137 - call void @printLine(ptr noundef @.str.5), !dbg !138 - ret i32 0, !dbg !139 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !140 { -entry: - %data = alloca i32, align 4 - %i = alloca i32, align 4 - %buffer = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !141, metadata !DIExpression()), !dbg !142 - store i32 -1, ptr %data, align 4, !dbg !143 - store i32 7, ptr %data, align 4, !dbg !144 - call void @llvm.dbg.declare(metadata ptr %i, metadata !145, metadata !DIExpression()), !dbg !147 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !148, metadata !DIExpression()), !dbg !149 - call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !149 - %0 = load i32, ptr %data, align 4, !dbg !150 - %cmp = icmp sge i32 %0, 0, !dbg !152 - br i1 %cmp, label %if.then, label %if.else, !dbg !153 - -if.then: ; preds = %entry - %1 = load i32, ptr %data, align 4, !dbg !154 - %idxprom = sext i32 %1 to i64, !dbg !156 - %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !156 - store i32 1, ptr %arrayidx, align 4, !dbg !157 - %arraydecay = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !158 - %2 = load i32, ptr %data, align 4, !dbg !159 - %conv = sext i32 %2 to i64, !dbg !159 - %mul = mul i64 %conv, 4, !dbg !160 - %sub = sub i64 %mul, 1, !dbg !161 - %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay, i64 noundef %sub), !dbg !162 - store i32 0, ptr %i, align 4, !dbg !163 - br label %for.cond, !dbg !165 - -for.cond: ; preds = %for.inc, %if.then - %3 = load i32, ptr %i, align 4, !dbg !166 - %cmp1 = icmp slt i32 %3, 10, !dbg !168 - br i1 %cmp1, label %for.body, label %for.end, !dbg !169 - -for.body: ; preds = %for.cond - %4 = load i32, ptr %i, align 4, !dbg !170 - %idxprom3 = sext i32 %4 to i64, !dbg !172 - %arrayidx4 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom3, !dbg !172 - %5 = load i32, ptr %arrayidx4, align 4, !dbg !172 - call void @printIntLine(i32 noundef %5), !dbg !173 - br label %for.inc, !dbg !174 - -for.inc: ; preds = %for.body - %6 = load i32, ptr %i, align 4, !dbg !175 - %inc = add nsw i32 %6, 1, !dbg !175 - store i32 %inc, ptr %i, align 4, !dbg !175 - br label %for.cond, !dbg !176, !llvm.loop !177 - -for.end: ; preds = %for.cond - br label %if.end, !dbg !179 - -if.else: ; preds = %entry - call void @printLine(ptr noundef @.str.1), !dbg !180 - br label %if.end - -if.end: ; preds = %if.else, %for.end - ret void, !dbg !182 -} - -declare i32 @SAFE_BUFACCESS(...) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodB2G() #0 !dbg !183 { -entry: - %data = alloca i32, align 4 - %inputBuffer = alloca [14 x i8], align 1 - %i = alloca i32, align 4 - %buffer = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !184, metadata !DIExpression()), !dbg !185 - store i32 -1, ptr %data, align 4, !dbg !186 - call void @llvm.dbg.declare(metadata ptr %inputBuffer, metadata !187, metadata !DIExpression()), !dbg !189 - call void @llvm.memset.p0.i64(ptr align 1 %inputBuffer, i8 0, i64 14, i1 false), !dbg !189 - %arraydecay = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !190 - %0 = load ptr, ptr @stdin, align 8, !dbg !192 - %call = call ptr @fgets(ptr noundef %arraydecay, i32 noundef 14, ptr noundef %0), !dbg !193 - %cmp = icmp ne ptr %call, null, !dbg !194 - br i1 %cmp, label %if.then, label %if.else, !dbg !195 - -if.then: ; preds = %entry - %arraydecay1 = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !196 - %call2 = call i32 @atoi(ptr noundef %arraydecay1) #6, !dbg !198 - store i32 %call2, ptr %data, align 4, !dbg !199 - br label %if.end, !dbg !200 - -if.else: ; preds = %entry - call void @printLine(ptr noundef @.str), !dbg !201 - br label %if.end - -if.end: ; preds = %if.else, %if.then - call void @llvm.dbg.declare(metadata ptr %i, metadata !203, metadata !DIExpression()), !dbg !205 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !206, metadata !DIExpression()), !dbg !207 - call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !207 - %1 = load i32, ptr %data, align 4, !dbg !208 - %cmp3 = icmp sge i32 %1, 0, !dbg !210 - br i1 %cmp3, label %land.lhs.true, label %if.else12, !dbg !211 - -land.lhs.true: ; preds = %if.end - %2 = load i32, ptr %data, align 4, !dbg !212 - %cmp4 = icmp slt i32 %2, 10, !dbg !213 - br i1 %cmp4, label %if.then5, label %if.else12, !dbg !214 - -if.then5: ; preds = %land.lhs.true - %3 = load i32, ptr %data, align 4, !dbg !215 - %idxprom = sext i32 %3 to i64, !dbg !217 - %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !217 - store i32 1, ptr %arrayidx, align 4, !dbg !218 - %arraydecay6 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !219 - %4 = load i32, ptr %data, align 4, !dbg !220 - %conv = sext i32 %4 to i64, !dbg !220 - %mul = mul i64 %conv, 4, !dbg !221 - %sub = sub i64 %mul, 1, !dbg !222 - %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef %sub), !dbg !223 - store i32 0, ptr %i, align 4, !dbg !224 - br label %for.cond, !dbg !226 - -for.cond: ; preds = %for.inc, %if.then5 - %5 = load i32, ptr %i, align 4, !dbg !227 - %cmp8 = icmp slt i32 %5, 10, !dbg !229 - br i1 %cmp8, label %for.body, label %for.end, !dbg !230 - -for.body: ; preds = %for.cond - %6 = load i32, ptr %i, align 4, !dbg !231 - %idxprom10 = sext i32 %6 to i64, !dbg !233 - %arrayidx11 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom10, !dbg !233 - %7 = load i32, ptr %arrayidx11, align 4, !dbg !233 - call void @printIntLine(i32 noundef %7), !dbg !234 - br label %for.inc, !dbg !235 - -for.inc: ; preds = %for.body - %8 = load i32, ptr %i, align 4, !dbg !236 - %inc = add nsw i32 %8, 1, !dbg !236 - store i32 %inc, ptr %i, align 4, !dbg !236 - br label %for.cond, !dbg !237, !llvm.loop !238 - -for.end: ; preds = %for.cond - br label %if.end13, !dbg !240 - -if.else12: ; preds = %land.lhs.true, %if.end - call void @printLine(ptr noundef @.str.6), !dbg !241 - br label %if.end13 - -if.end13: ; preds = %if.else12, %for.end - ret void, !dbg !243 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind willreturn memory(read) } -attributes #7 = { nounwind } - -!llvm.dbg.cu = !{!34} -!llvm.module.flags = !{!40, !41, !42, !43, !44, !45, !46} -!llvm.ident = !{!47} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 39, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "4f7916fb21ff176bd7ff7d40728c5c13") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 16) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 59, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 256, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 32) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 159, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 18) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 161, type: !3, isLocal: true, isDefinition: true) -!19 = !DIGlobalVariableExpression(var: !20, expr: !DIExpression()) -!20 = distinct !DIGlobalVariable(scope: null, file: !2, line: 164, type: !21, isLocal: true, isDefinition: true) -!21 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !22) -!22 = !{!23} -!23 = !DISubrange(count: 17) -!24 = !DIGlobalVariableExpression(var: !25, expr: !DIExpression()) -!25 = distinct !DIGlobalVariable(scope: null, file: !2, line: 166, type: !26, isLocal: true, isDefinition: true) -!26 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !27) -!27 = !{!28} -!28 = !DISubrange(count: 15) -!29 = !DIGlobalVariableExpression(var: !30, expr: !DIExpression()) -!30 = distinct !DIGlobalVariable(scope: null, file: !2, line: 134, type: !31, isLocal: true, isDefinition: true) -!31 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 288, elements: !32) -!32 = !{!33} -!33 = !DISubrange(count: 36) -!34 = distinct !DICompileUnit(language: DW_LANG_C11, file: !35, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !36, globals: !39, splitDebugInlining: false, nameTableKind: None) -!35 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "4f7916fb21ff176bd7ff7d40728c5c13") -!36 = !{!37, !38} -!37 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!38 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!39 = !{!0, !7, !12, !17, !19, !24, !29} -!40 = !{i32 7, !"Dwarf Version", i32 5} -!41 = !{i32 2, !"Debug Info Version", i32 3} -!42 = !{i32 1, !"wchar_size", i32 4} -!43 = !{i32 8, !"PIC Level", i32 2} -!44 = !{i32 7, !"PIE Level", i32 2} -!45 = !{i32 7, !"uwtable", i32 2} -!46 = !{i32 7, !"frame-pointer", i32 2} -!47 = !{!"clang version 16.0.0"} -!48 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01_bad", scope: !2, file: !2, line: 24, type: !49, scopeLine: 25, spFlags: DISPFlagDefinition, unit: !34, retainedNodes: !51) -!49 = !DISubroutineType(types: !50) -!50 = !{null} -!51 = !{} -!52 = !DILocalVariable(name: "data", scope: !48, file: !2, line: 26, type: !53) -!53 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!54 = !DILocation(line: 26, column: 9, scope: !48) -!55 = !DILocation(line: 28, column: 10, scope: !48) -!56 = !DILocalVariable(name: "inputBuffer", scope: !57, file: !2, line: 30, type: !58) -!57 = distinct !DILexicalBlock(scope: !48, file: !2, line: 29, column: 5) -!58 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 112, elements: !59) -!59 = !{!60} -!60 = !DISubrange(count: 14) -!61 = !DILocation(line: 30, column: 14, scope: !57) -!62 = !DILocation(line: 32, column: 19, scope: !63) -!63 = distinct !DILexicalBlock(scope: !57, file: !2, line: 32, column: 13) -!64 = !DILocation(line: 32, column: 49, scope: !63) -!65 = !DILocation(line: 32, column: 13, scope: !63) -!66 = !DILocation(line: 32, column: 56, scope: !63) -!67 = !DILocation(line: 32, column: 13, scope: !57) -!68 = !DILocation(line: 35, column: 25, scope: !69) -!69 = distinct !DILexicalBlock(scope: !63, file: !2, line: 33, column: 9) -!70 = !DILocation(line: 35, column: 20, scope: !69) -!71 = !DILocation(line: 35, column: 18, scope: !69) -!72 = !DILocation(line: 36, column: 9, scope: !69) -!73 = !DILocation(line: 39, column: 13, scope: !74) -!74 = distinct !DILexicalBlock(scope: !63, file: !2, line: 38, column: 9) -!75 = !DILocalVariable(name: "i", scope: !76, file: !2, line: 43, type: !53) -!76 = distinct !DILexicalBlock(scope: !48, file: !2, line: 42, column: 5) -!77 = !DILocation(line: 43, column: 13, scope: !76) -!78 = !DILocalVariable(name: "buffer", scope: !76, file: !2, line: 44, type: !79) -!79 = !DICompositeType(tag: DW_TAG_array_type, baseType: !53, size: 320, elements: !80) -!80 = !{!81} -!81 = !DISubrange(count: 10) -!82 = !DILocation(line: 44, column: 13, scope: !76) -!83 = !DILocation(line: 47, column: 13, scope: !84) -!84 = distinct !DILexicalBlock(scope: !76, file: !2, line: 47, column: 13) -!85 = !DILocation(line: 47, column: 18, scope: !84) -!86 = !DILocation(line: 47, column: 13, scope: !76) -!87 = !DILocation(line: 49, column: 20, scope: !88) -!88 = distinct !DILexicalBlock(scope: !84, file: !2, line: 48, column: 9) -!89 = !DILocation(line: 49, column: 13, scope: !88) -!90 = !DILocation(line: 49, column: 26, scope: !88) -!91 = !DILocation(line: 50, column: 30, scope: !88) -!92 = !DILocation(line: 50, column: 38, scope: !88) -!93 = !DILocation(line: 50, column: 43, scope: !88) -!94 = !DILocation(line: 50, column: 57, scope: !88) -!95 = !DILocation(line: 50, column: 13, scope: !88) -!96 = !DILocation(line: 52, column: 19, scope: !97) -!97 = distinct !DILexicalBlock(scope: !88, file: !2, line: 52, column: 13) -!98 = !DILocation(line: 52, column: 17, scope: !97) -!99 = !DILocation(line: 52, column: 24, scope: !100) -!100 = distinct !DILexicalBlock(scope: !97, file: !2, line: 52, column: 13) -!101 = !DILocation(line: 52, column: 26, scope: !100) -!102 = !DILocation(line: 52, column: 13, scope: !97) -!103 = !DILocation(line: 54, column: 37, scope: !104) -!104 = distinct !DILexicalBlock(scope: !100, file: !2, line: 53, column: 13) -!105 = !DILocation(line: 54, column: 30, scope: !104) -!106 = !DILocation(line: 54, column: 17, scope: !104) -!107 = !DILocation(line: 55, column: 13, scope: !104) -!108 = !DILocation(line: 52, column: 33, scope: !100) -!109 = !DILocation(line: 52, column: 13, scope: !100) -!110 = distinct !{!110, !102, !111, !112} -!111 = !DILocation(line: 55, column: 13, scope: !97) -!112 = !{!"llvm.loop.mustprogress"} -!113 = !DILocation(line: 56, column: 9, scope: !88) -!114 = !DILocation(line: 59, column: 13, scope: !115) -!115 = distinct !DILexicalBlock(scope: !84, file: !2, line: 58, column: 9) -!116 = !DILocation(line: 62, column: 1, scope: !48) -!117 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE129_fgets_01_good", scope: !2, file: !2, line: 139, type: !49, scopeLine: 140, spFlags: DISPFlagDefinition, unit: !34, retainedNodes: !51) -!118 = !DILocation(line: 141, column: 5, scope: !117) -!119 = !DILocation(line: 142, column: 5, scope: !117) -!120 = !DILocation(line: 143, column: 1, scope: !117) -!121 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 154, type: !122, scopeLine: 155, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !34, retainedNodes: !51) -!122 = !DISubroutineType(types: !123) -!123 = !{!53, !53, !124} -!124 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !125, size: 64) -!125 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!126 = !DILocalVariable(name: "argc", arg: 1, scope: !121, file: !2, line: 154, type: !53) -!127 = !DILocation(line: 154, column: 14, scope: !121) -!128 = !DILocalVariable(name: "argv", arg: 2, scope: !121, file: !2, line: 154, type: !124) -!129 = !DILocation(line: 154, column: 27, scope: !121) -!130 = !DILocation(line: 157, column: 22, scope: !121) -!131 = !DILocation(line: 157, column: 12, scope: !121) -!132 = !DILocation(line: 157, column: 5, scope: !121) -!133 = !DILocation(line: 159, column: 5, scope: !121) -!134 = !DILocation(line: 160, column: 5, scope: !121) -!135 = !DILocation(line: 161, column: 5, scope: !121) -!136 = !DILocation(line: 164, column: 5, scope: !121) -!137 = !DILocation(line: 165, column: 5, scope: !121) -!138 = !DILocation(line: 166, column: 5, scope: !121) -!139 = !DILocation(line: 168, column: 5, scope: !121) -!140 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 69, type: !49, scopeLine: 70, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !34, retainedNodes: !51) -!141 = !DILocalVariable(name: "data", scope: !140, file: !2, line: 71, type: !53) -!142 = !DILocation(line: 71, column: 9, scope: !140) -!143 = !DILocation(line: 73, column: 10, scope: !140) -!144 = !DILocation(line: 76, column: 10, scope: !140) -!145 = !DILocalVariable(name: "i", scope: !146, file: !2, line: 78, type: !53) -!146 = distinct !DILexicalBlock(scope: !140, file: !2, line: 77, column: 5) -!147 = !DILocation(line: 78, column: 13, scope: !146) -!148 = !DILocalVariable(name: "buffer", scope: !146, file: !2, line: 79, type: !79) -!149 = !DILocation(line: 79, column: 13, scope: !146) -!150 = !DILocation(line: 82, column: 13, scope: !151) -!151 = distinct !DILexicalBlock(scope: !146, file: !2, line: 82, column: 13) -!152 = !DILocation(line: 82, column: 18, scope: !151) -!153 = !DILocation(line: 82, column: 13, scope: !146) -!154 = !DILocation(line: 84, column: 20, scope: !155) -!155 = distinct !DILexicalBlock(scope: !151, file: !2, line: 83, column: 9) -!156 = !DILocation(line: 84, column: 13, scope: !155) -!157 = !DILocation(line: 84, column: 26, scope: !155) -!158 = !DILocation(line: 85, column: 28, scope: !155) -!159 = !DILocation(line: 85, column: 36, scope: !155) -!160 = !DILocation(line: 85, column: 41, scope: !155) -!161 = !DILocation(line: 85, column: 55, scope: !155) -!162 = !DILocation(line: 85, column: 13, scope: !155) -!163 = !DILocation(line: 87, column: 19, scope: !164) -!164 = distinct !DILexicalBlock(scope: !155, file: !2, line: 87, column: 13) -!165 = !DILocation(line: 87, column: 17, scope: !164) -!166 = !DILocation(line: 87, column: 24, scope: !167) -!167 = distinct !DILexicalBlock(scope: !164, file: !2, line: 87, column: 13) -!168 = !DILocation(line: 87, column: 26, scope: !167) -!169 = !DILocation(line: 87, column: 13, scope: !164) -!170 = !DILocation(line: 89, column: 37, scope: !171) -!171 = distinct !DILexicalBlock(scope: !167, file: !2, line: 88, column: 13) -!172 = !DILocation(line: 89, column: 30, scope: !171) -!173 = !DILocation(line: 89, column: 17, scope: !171) -!174 = !DILocation(line: 90, column: 13, scope: !171) -!175 = !DILocation(line: 87, column: 33, scope: !167) -!176 = !DILocation(line: 87, column: 13, scope: !167) -!177 = distinct !{!177, !169, !178, !112} -!178 = !DILocation(line: 90, column: 13, scope: !164) -!179 = !DILocation(line: 91, column: 9, scope: !155) -!180 = !DILocation(line: 94, column: 13, scope: !181) -!181 = distinct !DILexicalBlock(scope: !151, file: !2, line: 93, column: 9) -!182 = !DILocation(line: 97, column: 1, scope: !140) -!183 = distinct !DISubprogram(name: "goodB2G", scope: !2, file: !2, line: 100, type: !49, scopeLine: 101, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !34, retainedNodes: !51) -!184 = !DILocalVariable(name: "data", scope: !183, file: !2, line: 102, type: !53) -!185 = !DILocation(line: 102, column: 9, scope: !183) -!186 = !DILocation(line: 104, column: 10, scope: !183) -!187 = !DILocalVariable(name: "inputBuffer", scope: !188, file: !2, line: 106, type: !58) -!188 = distinct !DILexicalBlock(scope: !183, file: !2, line: 105, column: 5) -!189 = !DILocation(line: 106, column: 14, scope: !188) -!190 = !DILocation(line: 108, column: 19, scope: !191) -!191 = distinct !DILexicalBlock(scope: !188, file: !2, line: 108, column: 13) -!192 = !DILocation(line: 108, column: 49, scope: !191) -!193 = !DILocation(line: 108, column: 13, scope: !191) -!194 = !DILocation(line: 108, column: 56, scope: !191) -!195 = !DILocation(line: 108, column: 13, scope: !188) -!196 = !DILocation(line: 111, column: 25, scope: !197) -!197 = distinct !DILexicalBlock(scope: !191, file: !2, line: 109, column: 9) -!198 = !DILocation(line: 111, column: 20, scope: !197) -!199 = !DILocation(line: 111, column: 18, scope: !197) -!200 = !DILocation(line: 112, column: 9, scope: !197) -!201 = !DILocation(line: 115, column: 13, scope: !202) -!202 = distinct !DILexicalBlock(scope: !191, file: !2, line: 114, column: 9) -!203 = !DILocalVariable(name: "i", scope: !204, file: !2, line: 119, type: !53) -!204 = distinct !DILexicalBlock(scope: !183, file: !2, line: 118, column: 5) -!205 = !DILocation(line: 119, column: 13, scope: !204) -!206 = !DILocalVariable(name: "buffer", scope: !204, file: !2, line: 120, type: !79) -!207 = !DILocation(line: 120, column: 13, scope: !204) -!208 = !DILocation(line: 122, column: 13, scope: !209) -!209 = distinct !DILexicalBlock(scope: !204, file: !2, line: 122, column: 13) -!210 = !DILocation(line: 122, column: 18, scope: !209) -!211 = !DILocation(line: 122, column: 23, scope: !209) -!212 = !DILocation(line: 122, column: 26, scope: !209) -!213 = !DILocation(line: 122, column: 31, scope: !209) -!214 = !DILocation(line: 122, column: 13, scope: !204) -!215 = !DILocation(line: 124, column: 20, scope: !216) -!216 = distinct !DILexicalBlock(scope: !209, file: !2, line: 123, column: 9) -!217 = !DILocation(line: 124, column: 13, scope: !216) -!218 = !DILocation(line: 124, column: 26, scope: !216) -!219 = !DILocation(line: 125, column: 28, scope: !216) -!220 = !DILocation(line: 125, column: 36, scope: !216) -!221 = !DILocation(line: 125, column: 41, scope: !216) -!222 = !DILocation(line: 125, column: 55, scope: !216) -!223 = !DILocation(line: 125, column: 13, scope: !216) -!224 = !DILocation(line: 127, column: 19, scope: !225) -!225 = distinct !DILexicalBlock(scope: !216, file: !2, line: 127, column: 13) -!226 = !DILocation(line: 127, column: 17, scope: !225) -!227 = !DILocation(line: 127, column: 24, scope: !228) -!228 = distinct !DILexicalBlock(scope: !225, file: !2, line: 127, column: 13) -!229 = !DILocation(line: 127, column: 26, scope: !228) -!230 = !DILocation(line: 127, column: 13, scope: !225) -!231 = !DILocation(line: 129, column: 37, scope: !232) -!232 = distinct !DILexicalBlock(scope: !228, file: !2, line: 128, column: 13) -!233 = !DILocation(line: 129, column: 30, scope: !232) -!234 = !DILocation(line: 129, column: 17, scope: !232) -!235 = !DILocation(line: 130, column: 13, scope: !232) -!236 = !DILocation(line: 127, column: 33, scope: !228) -!237 = !DILocation(line: 127, column: 13, scope: !228) -!238 = distinct !{!238, !230, !239, !112} -!239 = !DILocation(line: 130, column: 13, scope: !225) -!240 = !DILocation(line: 131, column: 9, scope: !216) -!241 = !DILocation(line: 134, column: 13, scope: !242) -!242 = distinct !DILexicalBlock(scope: !209, file: !2, line: 133, column: 9) -!243 = !DILocation(line: 137, column: 1, scope: !183) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01.c.bc deleted file mode 100644 index 683c1311..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01.c.bc +++ /dev/null @@ -1,953 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01.c" -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-unknown-linux-gnu" - -%struct.sockaddr_in = type { i16, i16, %struct.in_addr, [8 x i8] } -%struct.in_addr = type { i32 } - -@.str = private unnamed_addr constant [32 x i8] c"ERROR: Array index is negative.\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !17 -@.str.4 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !22 -@.str.5 = private unnamed_addr constant [36 x i8] c"ERROR: Array index is out-of-bounds\00", align 1, !dbg !27 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01_bad() #0 !dbg !104 { -entry: - %data = alloca i32, align 4 - %recvResult = alloca i32, align 4 - %service = alloca %struct.sockaddr_in, align 4 - %listenSocket = alloca i32, align 4 - %acceptSocket = alloca i32, align 4 - %inputBuffer = alloca [14 x i8], align 1 - %i = alloca i32, align 4 - %buffer = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !108, metadata !DIExpression()), !dbg !110 - store i32 -1, ptr %data, align 4, !dbg !111 - call void @llvm.dbg.declare(metadata ptr %recvResult, metadata !112, metadata !DIExpression()), !dbg !114 - call void @llvm.dbg.declare(metadata ptr %service, metadata !115, metadata !DIExpression()), !dbg !132 - call void @llvm.dbg.declare(metadata ptr %listenSocket, metadata !133, metadata !DIExpression()), !dbg !134 - store i32 -1, ptr %listenSocket, align 4, !dbg !134 - call void @llvm.dbg.declare(metadata ptr %acceptSocket, metadata !135, metadata !DIExpression()), !dbg !136 - store i32 -1, ptr %acceptSocket, align 4, !dbg !136 - call void @llvm.dbg.declare(metadata ptr %inputBuffer, metadata !137, metadata !DIExpression()), !dbg !138 - br label %do.body, !dbg !139 - -do.body: ; preds = %entry - %call = call i32 @socket(i32 noundef 2, i32 noundef 1, i32 noundef 6) #7, !dbg !140 - store i32 %call, ptr %listenSocket, align 4, !dbg !142 - %0 = load i32, ptr %listenSocket, align 4, !dbg !143 - %cmp = icmp eq i32 %0, -1, !dbg !145 - br i1 %cmp, label %if.then, label %if.end, !dbg !146 - -if.then: ; preds = %do.body - br label %do.end, !dbg !147 - -if.end: ; preds = %do.body - call void @llvm.memset.p0.i64(ptr align 4 %service, i8 0, i64 16, i1 false), !dbg !149 - %sin_family = getelementptr inbounds %struct.sockaddr_in, ptr %service, i32 0, i32 0, !dbg !150 - store i16 2, ptr %sin_family, align 4, !dbg !151 - %sin_addr = getelementptr inbounds %struct.sockaddr_in, ptr %service, i32 0, i32 2, !dbg !152 - %s_addr = getelementptr inbounds %struct.in_addr, ptr %sin_addr, i32 0, i32 0, !dbg !153 - store i32 0, ptr %s_addr, align 4, !dbg !154 - %call1 = call zeroext i16 @htons(i16 noundef zeroext 27015) #8, !dbg !155 - %sin_port = getelementptr inbounds %struct.sockaddr_in, ptr %service, i32 0, i32 1, !dbg !156 - store i16 %call1, ptr %sin_port, align 2, !dbg !157 - %1 = load i32, ptr %listenSocket, align 4, !dbg !158 - %call2 = call i32 @bind(i32 noundef %1, ptr noundef %service, i32 noundef 16) #7, !dbg !160 - %cmp3 = icmp eq i32 %call2, -1, !dbg !161 - br i1 %cmp3, label %if.then4, label %if.end5, !dbg !162 - -if.then4: ; preds = %if.end - br label %do.end, !dbg !163 - -if.end5: ; preds = %if.end - %2 = load i32, ptr %listenSocket, align 4, !dbg !165 - %call6 = call i32 @listen(i32 noundef %2, i32 noundef 5) #7, !dbg !167 - %cmp7 = icmp eq i32 %call6, -1, !dbg !168 - br i1 %cmp7, label %if.then8, label %if.end9, !dbg !169 - -if.then8: ; preds = %if.end5 - br label %do.end, !dbg !170 - -if.end9: ; preds = %if.end5 - %3 = load i32, ptr %listenSocket, align 4, !dbg !172 - %call10 = call i32 @accept(i32 noundef %3, ptr noundef null, ptr noundef null), !dbg !173 - store i32 %call10, ptr %acceptSocket, align 4, !dbg !174 - %4 = load i32, ptr %acceptSocket, align 4, !dbg !175 - %cmp11 = icmp eq i32 %4, -1, !dbg !177 - br i1 %cmp11, label %if.then12, label %if.end13, !dbg !178 - -if.then12: ; preds = %if.end9 - br label %do.end, !dbg !179 - -if.end13: ; preds = %if.end9 - %5 = load i32, ptr %acceptSocket, align 4, !dbg !181 - %arraydecay = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !182 - %call14 = call i64 @recv(i32 noundef %5, ptr noundef %arraydecay, i64 noundef 13, i32 noundef 0), !dbg !183 - %conv = trunc i64 %call14 to i32, !dbg !183 - store i32 %conv, ptr %recvResult, align 4, !dbg !184 - %6 = load i32, ptr %recvResult, align 4, !dbg !185 - %cmp15 = icmp eq i32 %6, -1, !dbg !187 - br i1 %cmp15, label %if.then19, label %lor.lhs.false, !dbg !188 - -lor.lhs.false: ; preds = %if.end13 - %7 = load i32, ptr %recvResult, align 4, !dbg !189 - %cmp17 = icmp eq i32 %7, 0, !dbg !190 - br i1 %cmp17, label %if.then19, label %if.end20, !dbg !191 - -if.then19: ; preds = %lor.lhs.false, %if.end13 - br label %do.end, !dbg !192 - -if.end20: ; preds = %lor.lhs.false - %8 = load i32, ptr %recvResult, align 4, !dbg !194 - %idxprom = sext i32 %8 to i64, !dbg !195 - %arrayidx = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 %idxprom, !dbg !195 - store i8 0, ptr %arrayidx, align 1, !dbg !196 - %arraydecay21 = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !197 - %call22 = call i32 @atoi(ptr noundef %arraydecay21) #9, !dbg !198 - store i32 %call22, ptr %data, align 4, !dbg !199 - br label %do.end, !dbg !200 - -do.end: ; preds = %if.end20, %if.then19, %if.then12, %if.then8, %if.then4, %if.then - %9 = load i32, ptr %listenSocket, align 4, !dbg !201 - %cmp23 = icmp ne i32 %9, -1, !dbg !203 - br i1 %cmp23, label %if.then25, label %if.end27, !dbg !204 - -if.then25: ; preds = %do.end - %10 = load i32, ptr %listenSocket, align 4, !dbg !205 - %call26 = call i32 @close(i32 noundef %10), !dbg !207 - br label %if.end27, !dbg !208 - -if.end27: ; preds = %if.then25, %do.end - %11 = load i32, ptr %acceptSocket, align 4, !dbg !209 - %cmp28 = icmp ne i32 %11, -1, !dbg !211 - br i1 %cmp28, label %if.then30, label %if.end32, !dbg !212 - -if.then30: ; preds = %if.end27 - %12 = load i32, ptr %acceptSocket, align 4, !dbg !213 - %call31 = call i32 @close(i32 noundef %12), !dbg !215 - br label %if.end32, !dbg !216 - -if.end32: ; preds = %if.then30, %if.end27 - call void @llvm.dbg.declare(metadata ptr %i, metadata !217, metadata !DIExpression()), !dbg !219 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !220, metadata !DIExpression()), !dbg !224 - call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !224 - %13 = load i32, ptr %data, align 4, !dbg !225 - %cmp33 = icmp sge i32 %13, 0, !dbg !227 - br i1 %cmp33, label %if.then35, label %if.else, !dbg !228 - -if.then35: ; preds = %if.end32 - %14 = load i32, ptr %data, align 4, !dbg !229 - %idxprom36 = sext i32 %14 to i64, !dbg !231 - %arrayidx37 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom36, !dbg !231 - store i32 1, ptr %arrayidx37, align 4, !dbg !232 - %arraydecay38 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !233 - %15 = load i32, ptr %data, align 4, !dbg !234 - %conv39 = sext i32 %15 to i64, !dbg !234 - %mul = mul i64 %conv39, 4, !dbg !235 - %sub = sub i64 %mul, 1, !dbg !236 - %call40 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay38, i64 noundef %sub), !dbg !237 - store i32 0, ptr %i, align 4, !dbg !238 - br label %for.cond, !dbg !240 - -for.cond: ; preds = %for.inc, %if.then35 - %16 = load i32, ptr %i, align 4, !dbg !241 - %cmp41 = icmp slt i32 %16, 10, !dbg !243 - br i1 %cmp41, label %for.body, label %for.end, !dbg !244 - -for.body: ; preds = %for.cond - %17 = load i32, ptr %i, align 4, !dbg !245 - %idxprom43 = sext i32 %17 to i64, !dbg !247 - %arrayidx44 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom43, !dbg !247 - %18 = load i32, ptr %arrayidx44, align 4, !dbg !247 - call void @printIntLine(i32 noundef %18), !dbg !248 - br label %for.inc, !dbg !249 - -for.inc: ; preds = %for.body - %19 = load i32, ptr %i, align 4, !dbg !250 - %inc = add nsw i32 %19, 1, !dbg !250 - store i32 %inc, ptr %i, align 4, !dbg !250 - br label %for.cond, !dbg !251, !llvm.loop !252 - -for.end: ; preds = %for.cond - br label %if.end45, !dbg !255 - -if.else: ; preds = %if.end32 - call void @printLine(ptr noundef @.str), !dbg !256 - br label %if.end45 - -if.end45: ; preds = %if.else, %for.end - ret void, !dbg !258 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare i32 @socket(i32 noundef, i32 noundef, i32 noundef) #2 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3 - -; Function Attrs: nounwind willreturn memory(none) -declare zeroext i16 @htons(i16 noundef zeroext) #4 - -; Function Attrs: nounwind -declare i32 @bind(i32 noundef, ptr noundef, i32 noundef) #2 - -; Function Attrs: nounwind -declare i32 @listen(i32 noundef, i32 noundef) #2 - -declare i32 @accept(i32 noundef, ptr noundef, ptr noundef) #5 - -declare i64 @recv(i32 noundef, ptr noundef, i64 noundef, i32 noundef) #5 - -; Function Attrs: nounwind willreturn memory(read) -declare i32 @atoi(ptr noundef) #6 - -declare i32 @close(i32 noundef) #5 - -declare i32 @UNSAFE_BUFACCESS(...) #5 - -declare void @printIntLine(i32 noundef) #5 - -declare void @printLine(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01_good() #0 !dbg !259 { -entry: - call void @goodG2B(), !dbg !260 - call void @goodB2G(), !dbg !261 - ret void, !dbg !262 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !263 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !268, metadata !DIExpression()), !dbg !269 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !270, metadata !DIExpression()), !dbg !271 - %call = call i64 @time(ptr noundef null) #7, !dbg !272 - %conv = trunc i64 %call to i32, !dbg !273 - call void @srand(i32 noundef %conv) #7, !dbg !274 - call void @printLine(ptr noundef @.str.1), !dbg !275 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01_good(), !dbg !276 - call void @printLine(ptr noundef @.str.2), !dbg !277 - call void @printLine(ptr noundef @.str.3), !dbg !278 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01_bad(), !dbg !279 - call void @printLine(ptr noundef @.str.4), !dbg !280 - ret i32 0, !dbg !281 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !282 { -entry: - %data = alloca i32, align 4 - %i = alloca i32, align 4 - %buffer = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !283, metadata !DIExpression()), !dbg !284 - store i32 -1, ptr %data, align 4, !dbg !285 - store i32 7, ptr %data, align 4, !dbg !286 - call void @llvm.dbg.declare(metadata ptr %i, metadata !287, metadata !DIExpression()), !dbg !289 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !290, metadata !DIExpression()), !dbg !291 - call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !291 - %0 = load i32, ptr %data, align 4, !dbg !292 - %cmp = icmp sge i32 %0, 0, !dbg !294 - br i1 %cmp, label %if.then, label %if.else, !dbg !295 - -if.then: ; preds = %entry - %arraydecay = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !296 - %1 = load i32, ptr %data, align 4, !dbg !298 - %conv = sext i32 %1 to i64, !dbg !298 - %mul = mul i64 %conv, 4, !dbg !299 - %call = call i32 (ptr, i64, i32, ...) @BOF_CHECK_GEP(ptr noundef %arraydecay, i64 noundef %mul, i32 noundef 0), !dbg !300 - %2 = load i32, ptr %data, align 4, !dbg !301 - %idxprom = sext i32 %2 to i64, !dbg !302 - %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !302 - store i32 1, ptr %arrayidx, align 4, !dbg !303 - store i32 0, ptr %i, align 4, !dbg !304 - br label %for.cond, !dbg !306 - -for.cond: ; preds = %for.inc, %if.then - %3 = load i32, ptr %i, align 4, !dbg !307 - %cmp1 = icmp slt i32 %3, 10, !dbg !309 - br i1 %cmp1, label %for.body, label %for.end, !dbg !310 - -for.body: ; preds = %for.cond - %4 = load i32, ptr %i, align 4, !dbg !311 - %idxprom3 = sext i32 %4 to i64, !dbg !313 - %arrayidx4 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom3, !dbg !313 - %5 = load i32, ptr %arrayidx4, align 4, !dbg !313 - call void @printIntLine(i32 noundef %5), !dbg !314 - br label %for.inc, !dbg !315 - -for.inc: ; preds = %for.body - %6 = load i32, ptr %i, align 4, !dbg !316 - %inc = add nsw i32 %6, 1, !dbg !316 - store i32 %inc, ptr %i, align 4, !dbg !316 - br label %for.cond, !dbg !317, !llvm.loop !318 - -for.end: ; preds = %for.cond - br label %if.end, !dbg !320 - -if.else: ; preds = %entry - call void @printLine(ptr noundef @.str), !dbg !321 - br label %if.end - -if.end: ; preds = %if.else, %for.end - ret void, !dbg !323 -} - -declare i32 @BOF_CHECK_GEP(...) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodB2G() #0 !dbg !324 { -entry: - %data = alloca i32, align 4 - %recvResult = alloca i32, align 4 - %service = alloca %struct.sockaddr_in, align 4 - %listenSocket = alloca i32, align 4 - %acceptSocket = alloca i32, align 4 - %inputBuffer = alloca [14 x i8], align 1 - %i = alloca i32, align 4 - %buffer = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !325, metadata !DIExpression()), !dbg !326 - store i32 -1, ptr %data, align 4, !dbg !327 - call void @llvm.dbg.declare(metadata ptr %recvResult, metadata !328, metadata !DIExpression()), !dbg !330 - call void @llvm.dbg.declare(metadata ptr %service, metadata !331, metadata !DIExpression()), !dbg !332 - call void @llvm.dbg.declare(metadata ptr %listenSocket, metadata !333, metadata !DIExpression()), !dbg !334 - store i32 -1, ptr %listenSocket, align 4, !dbg !334 - call void @llvm.dbg.declare(metadata ptr %acceptSocket, metadata !335, metadata !DIExpression()), !dbg !336 - store i32 -1, ptr %acceptSocket, align 4, !dbg !336 - call void @llvm.dbg.declare(metadata ptr %inputBuffer, metadata !337, metadata !DIExpression()), !dbg !338 - br label %do.body, !dbg !339 - -do.body: ; preds = %entry - %call = call i32 @socket(i32 noundef 2, i32 noundef 1, i32 noundef 6) #7, !dbg !340 - store i32 %call, ptr %listenSocket, align 4, !dbg !342 - %0 = load i32, ptr %listenSocket, align 4, !dbg !343 - %cmp = icmp eq i32 %0, -1, !dbg !345 - br i1 %cmp, label %if.then, label %if.end, !dbg !346 - -if.then: ; preds = %do.body - br label %do.end, !dbg !347 - -if.end: ; preds = %do.body - call void @llvm.memset.p0.i64(ptr align 4 %service, i8 0, i64 16, i1 false), !dbg !349 - %sin_family = getelementptr inbounds %struct.sockaddr_in, ptr %service, i32 0, i32 0, !dbg !350 - store i16 2, ptr %sin_family, align 4, !dbg !351 - %sin_addr = getelementptr inbounds %struct.sockaddr_in, ptr %service, i32 0, i32 2, !dbg !352 - %s_addr = getelementptr inbounds %struct.in_addr, ptr %sin_addr, i32 0, i32 0, !dbg !353 - store i32 0, ptr %s_addr, align 4, !dbg !354 - %call1 = call zeroext i16 @htons(i16 noundef zeroext 27015) #8, !dbg !355 - %sin_port = getelementptr inbounds %struct.sockaddr_in, ptr %service, i32 0, i32 1, !dbg !356 - store i16 %call1, ptr %sin_port, align 2, !dbg !357 - %1 = load i32, ptr %listenSocket, align 4, !dbg !358 - %call2 = call i32 @bind(i32 noundef %1, ptr noundef %service, i32 noundef 16) #7, !dbg !360 - %cmp3 = icmp eq i32 %call2, -1, !dbg !361 - br i1 %cmp3, label %if.then4, label %if.end5, !dbg !362 - -if.then4: ; preds = %if.end - br label %do.end, !dbg !363 - -if.end5: ; preds = %if.end - %2 = load i32, ptr %listenSocket, align 4, !dbg !365 - %call6 = call i32 @listen(i32 noundef %2, i32 noundef 5) #7, !dbg !367 - %cmp7 = icmp eq i32 %call6, -1, !dbg !368 - br i1 %cmp7, label %if.then8, label %if.end9, !dbg !369 - -if.then8: ; preds = %if.end5 - br label %do.end, !dbg !370 - -if.end9: ; preds = %if.end5 - %3 = load i32, ptr %listenSocket, align 4, !dbg !372 - %call10 = call i32 @accept(i32 noundef %3, ptr noundef null, ptr noundef null), !dbg !373 - store i32 %call10, ptr %acceptSocket, align 4, !dbg !374 - %4 = load i32, ptr %acceptSocket, align 4, !dbg !375 - %cmp11 = icmp eq i32 %4, -1, !dbg !377 - br i1 %cmp11, label %if.then12, label %if.end13, !dbg !378 - -if.then12: ; preds = %if.end9 - br label %do.end, !dbg !379 - -if.end13: ; preds = %if.end9 - %5 = load i32, ptr %acceptSocket, align 4, !dbg !381 - %arraydecay = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !382 - %call14 = call i64 @recv(i32 noundef %5, ptr noundef %arraydecay, i64 noundef 13, i32 noundef 0), !dbg !383 - %conv = trunc i64 %call14 to i32, !dbg !383 - store i32 %conv, ptr %recvResult, align 4, !dbg !384 - %6 = load i32, ptr %recvResult, align 4, !dbg !385 - %cmp15 = icmp eq i32 %6, -1, !dbg !387 - br i1 %cmp15, label %if.then19, label %lor.lhs.false, !dbg !388 - -lor.lhs.false: ; preds = %if.end13 - %7 = load i32, ptr %recvResult, align 4, !dbg !389 - %cmp17 = icmp eq i32 %7, 0, !dbg !390 - br i1 %cmp17, label %if.then19, label %if.end20, !dbg !391 - -if.then19: ; preds = %lor.lhs.false, %if.end13 - br label %do.end, !dbg !392 - -if.end20: ; preds = %lor.lhs.false - %8 = load i32, ptr %recvResult, align 4, !dbg !394 - %idxprom = sext i32 %8 to i64, !dbg !395 - %arrayidx = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 %idxprom, !dbg !395 - store i8 0, ptr %arrayidx, align 1, !dbg !396 - %arraydecay21 = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !397 - %call22 = call i32 @atoi(ptr noundef %arraydecay21) #9, !dbg !398 - store i32 %call22, ptr %data, align 4, !dbg !399 - br label %do.end, !dbg !400 - -do.end: ; preds = %if.end20, %if.then19, %if.then12, %if.then8, %if.then4, %if.then - %9 = load i32, ptr %listenSocket, align 4, !dbg !401 - %cmp23 = icmp ne i32 %9, -1, !dbg !403 - br i1 %cmp23, label %if.then25, label %if.end27, !dbg !404 - -if.then25: ; preds = %do.end - %10 = load i32, ptr %listenSocket, align 4, !dbg !405 - %call26 = call i32 @close(i32 noundef %10), !dbg !407 - br label %if.end27, !dbg !408 - -if.end27: ; preds = %if.then25, %do.end - %11 = load i32, ptr %acceptSocket, align 4, !dbg !409 - %cmp28 = icmp ne i32 %11, -1, !dbg !411 - br i1 %cmp28, label %if.then30, label %if.end32, !dbg !412 - -if.then30: ; preds = %if.end27 - %12 = load i32, ptr %acceptSocket, align 4, !dbg !413 - %call31 = call i32 @close(i32 noundef %12), !dbg !415 - br label %if.end32, !dbg !416 - -if.end32: ; preds = %if.then30, %if.end27 - call void @llvm.dbg.declare(metadata ptr %i, metadata !417, metadata !DIExpression()), !dbg !419 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !420, metadata !DIExpression()), !dbg !421 - call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !421 - %13 = load i32, ptr %data, align 4, !dbg !422 - %cmp33 = icmp sge i32 %13, 0, !dbg !424 - br i1 %cmp33, label %land.lhs.true, label %if.else, !dbg !425 - -land.lhs.true: ; preds = %if.end32 - %14 = load i32, ptr %data, align 4, !dbg !426 - %cmp35 = icmp slt i32 %14, 10, !dbg !427 - br i1 %cmp35, label %if.then37, label %if.else, !dbg !428 - -if.then37: ; preds = %land.lhs.true - %15 = load i32, ptr %data, align 4, !dbg !429 - %idxprom38 = sext i32 %15 to i64, !dbg !431 - %arrayidx39 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom38, !dbg !431 - store i32 1, ptr %arrayidx39, align 4, !dbg !432 - store i32 0, ptr %i, align 4, !dbg !433 - br label %for.cond, !dbg !435 - -for.cond: ; preds = %for.inc, %if.then37 - %16 = load i32, ptr %i, align 4, !dbg !436 - %cmp40 = icmp slt i32 %16, 10, !dbg !438 - br i1 %cmp40, label %for.body, label %for.end, !dbg !439 - -for.body: ; preds = %for.cond - %17 = load i32, ptr %i, align 4, !dbg !440 - %idxprom42 = sext i32 %17 to i64, !dbg !442 - %arrayidx43 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom42, !dbg !442 - %18 = load i32, ptr %arrayidx43, align 4, !dbg !442 - call void @printIntLine(i32 noundef %18), !dbg !443 - br label %for.inc, !dbg !444 - -for.inc: ; preds = %for.body - %19 = load i32, ptr %i, align 4, !dbg !445 - %inc = add nsw i32 %19, 1, !dbg !445 - store i32 %inc, ptr %i, align 4, !dbg !445 - br label %for.cond, !dbg !446, !llvm.loop !447 - -for.end: ; preds = %for.cond - br label %if.end44, !dbg !449 - -if.else: ; preds = %land.lhs.true, %if.end32 - call void @printLine(ptr noundef @.str.5), !dbg !450 - br label %if.end44 - -if.end44: ; preds = %if.else, %for.end - ret void, !dbg !452 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #4 = { nounwind willreturn memory(none) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind } -attributes #8 = { nounwind willreturn memory(none) } -attributes #9 = { nounwind willreturn memory(read) } - -!llvm.dbg.cu = !{!32} -!llvm.module.flags = !{!96, !97, !98, !99, !100, !101, !102} -!llvm.ident = !{!103} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 135, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "bc6442840ca07fe15026cbc1fffe8fa0") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 256, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 32) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 290, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 18) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 292, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 16) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 295, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 17) -!22 = !DIGlobalVariableExpression(var: !23, expr: !DIExpression()) -!23 = distinct !DIGlobalVariable(scope: null, file: !2, line: 297, type: !24, isLocal: true, isDefinition: true) -!24 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !25) -!25 = !{!26} -!26 = !DISubrange(count: 15) -!27 = !DIGlobalVariableExpression(var: !28, expr: !DIExpression()) -!28 = distinct !DIGlobalVariable(scope: null, file: !2, line: 265, type: !29, isLocal: true, isDefinition: true) -!29 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 288, elements: !30) -!30 = !{!31} -!31 = !DISubrange(count: 36) -!32 = distinct !DICompileUnit(language: DW_LANG_C11, file: !33, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !34, retainedTypes: !77, globals: !95, splitDebugInlining: false, nameTableKind: None) -!33 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "bc6442840ca07fe15026cbc1fffe8fa0") -!34 = !{!35, !48} -!35 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "__socket_type", file: !36, line: 24, baseType: !37, size: 32, elements: !38) -!36 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/socket_type.h", directory: "", checksumkind: CSK_MD5, checksum: "630d972ab4324a8e936ce28b39a40b01") -!37 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!38 = !{!39, !40, !41, !42, !43, !44, !45, !46, !47} -!39 = !DIEnumerator(name: "SOCK_STREAM", value: 1) -!40 = !DIEnumerator(name: "SOCK_DGRAM", value: 2) -!41 = !DIEnumerator(name: "SOCK_RAW", value: 3) -!42 = !DIEnumerator(name: "SOCK_RDM", value: 4) -!43 = !DIEnumerator(name: "SOCK_SEQPACKET", value: 5) -!44 = !DIEnumerator(name: "SOCK_DCCP", value: 6) -!45 = !DIEnumerator(name: "SOCK_PACKET", value: 10) -!46 = !DIEnumerator(name: "SOCK_CLOEXEC", value: 524288) -!47 = !DIEnumerator(name: "SOCK_NONBLOCK", value: 2048) -!48 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !49, line: 40, baseType: !37, size: 32, elements: !50) -!49 = !DIFile(filename: "/usr/include/netinet/in.h", directory: "", checksumkind: CSK_MD5, checksum: "6a5254a491bcdb8c3253de75bf3571c1") -!50 = !{!51, !52, !53, !54, !55, !56, !57, !58, !59, !60, !61, !62, !63, !64, !65, !66, !67, !68, !69, !70, !71, !72, !73, !74, !75, !76} -!51 = !DIEnumerator(name: "IPPROTO_IP", value: 0) -!52 = !DIEnumerator(name: "IPPROTO_ICMP", value: 1) -!53 = !DIEnumerator(name: "IPPROTO_IGMP", value: 2) -!54 = !DIEnumerator(name: "IPPROTO_IPIP", value: 4) -!55 = !DIEnumerator(name: "IPPROTO_TCP", value: 6) -!56 = !DIEnumerator(name: "IPPROTO_EGP", value: 8) -!57 = !DIEnumerator(name: "IPPROTO_PUP", value: 12) -!58 = !DIEnumerator(name: "IPPROTO_UDP", value: 17) -!59 = !DIEnumerator(name: "IPPROTO_IDP", value: 22) -!60 = !DIEnumerator(name: "IPPROTO_TP", value: 29) -!61 = !DIEnumerator(name: "IPPROTO_DCCP", value: 33) -!62 = !DIEnumerator(name: "IPPROTO_IPV6", value: 41) -!63 = !DIEnumerator(name: "IPPROTO_RSVP", value: 46) -!64 = !DIEnumerator(name: "IPPROTO_GRE", value: 47) -!65 = !DIEnumerator(name: "IPPROTO_ESP", value: 50) -!66 = !DIEnumerator(name: "IPPROTO_AH", value: 51) -!67 = !DIEnumerator(name: "IPPROTO_MTP", value: 92) -!68 = !DIEnumerator(name: "IPPROTO_BEETPH", value: 94) -!69 = !DIEnumerator(name: "IPPROTO_ENCAP", value: 98) -!70 = !DIEnumerator(name: "IPPROTO_PIM", value: 103) -!71 = !DIEnumerator(name: "IPPROTO_COMP", value: 108) -!72 = !DIEnumerator(name: "IPPROTO_SCTP", value: 132) -!73 = !DIEnumerator(name: "IPPROTO_UDPLITE", value: 136) -!74 = !DIEnumerator(name: "IPPROTO_MPLS", value: 137) -!75 = !DIEnumerator(name: "IPPROTO_RAW", value: 255) -!76 = !DIEnumerator(name: "IPPROTO_MAX", value: 256) -!77 = !{!78, !83, !37} -!78 = !DIDerivedType(tag: DW_TAG_typedef, name: "in_addr_t", file: !49, line: 30, baseType: !79) -!79 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint32_t", file: !80, line: 26, baseType: !81) -!80 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h", directory: "", checksumkind: CSK_MD5, checksum: "d3ea318a915682aaf6645ec16ac9f991") -!81 = !DIDerivedType(tag: DW_TAG_typedef, name: "__uint32_t", file: !82, line: 42, baseType: !37) -!82 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "f6304b1a6dcfc6bee76e9a51043b5090") -!83 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !84, size: 64) -!84 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "sockaddr", file: !85, line: 178, size: 128, elements: !86) -!85 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/socket.h", directory: "", checksumkind: CSK_MD5, checksum: "b1d3343a573cbf39b225111209e02966") -!86 = !{!87, !91} -!87 = !DIDerivedType(tag: DW_TAG_member, name: "sa_family", scope: !84, file: !85, line: 180, baseType: !88, size: 16) -!88 = !DIDerivedType(tag: DW_TAG_typedef, name: "sa_family_t", file: !89, line: 28, baseType: !90) -!89 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/sockaddr.h", directory: "", checksumkind: CSK_MD5, checksum: "b70cbaf07ffb7e8bf11ee98d9a21e2fc") -!90 = !DIBasicType(name: "unsigned short", size: 16, encoding: DW_ATE_unsigned) -!91 = !DIDerivedType(tag: DW_TAG_member, name: "sa_data", scope: !84, file: !85, line: 181, baseType: !92, size: 112, offset: 16) -!92 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 112, elements: !93) -!93 = !{!94} -!94 = !DISubrange(count: 14) -!95 = !{!0, !7, !12, !17, !22, !27} -!96 = !{i32 7, !"Dwarf Version", i32 5} -!97 = !{i32 2, !"Debug Info Version", i32 3} -!98 = !{i32 1, !"wchar_size", i32 4} -!99 = !{i32 8, !"PIC Level", i32 2} -!100 = !{i32 7, !"PIE Level", i32 2} -!101 = !{i32 7, !"uwtable", i32 2} -!102 = !{i32 7, !"frame-pointer", i32 2} -!103 = !{!"clang version 16.0.0"} -!104 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01_bad", scope: !2, file: !2, line: 44, type: !105, scopeLine: 45, spFlags: DISPFlagDefinition, unit: !32, retainedNodes: !107) -!105 = !DISubroutineType(types: !106) -!106 = !{null} -!107 = !{} -!108 = !DILocalVariable(name: "data", scope: !104, file: !2, line: 46, type: !109) -!109 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!110 = !DILocation(line: 46, column: 9, scope: !104) -!111 = !DILocation(line: 48, column: 10, scope: !104) -!112 = !DILocalVariable(name: "recvResult", scope: !113, file: !2, line: 54, type: !109) -!113 = distinct !DILexicalBlock(scope: !104, file: !2, line: 49, column: 5) -!114 = !DILocation(line: 54, column: 13, scope: !113) -!115 = !DILocalVariable(name: "service", scope: !113, file: !2, line: 55, type: !116) -!116 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "sockaddr_in", file: !49, line: 238, size: 128, elements: !117) -!117 = !{!118, !119, !123, !127} -!118 = !DIDerivedType(tag: DW_TAG_member, name: "sin_family", scope: !116, file: !49, line: 240, baseType: !88, size: 16) -!119 = !DIDerivedType(tag: DW_TAG_member, name: "sin_port", scope: !116, file: !49, line: 241, baseType: !120, size: 16, offset: 16) -!120 = !DIDerivedType(tag: DW_TAG_typedef, name: "in_port_t", file: !49, line: 119, baseType: !121) -!121 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint16_t", file: !80, line: 25, baseType: !122) -!122 = !DIDerivedType(tag: DW_TAG_typedef, name: "__uint16_t", file: !82, line: 40, baseType: !90) -!123 = !DIDerivedType(tag: DW_TAG_member, name: "sin_addr", scope: !116, file: !49, line: 242, baseType: !124, size: 32, offset: 32) -!124 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "in_addr", file: !49, line: 31, size: 32, elements: !125) -!125 = !{!126} -!126 = !DIDerivedType(tag: DW_TAG_member, name: "s_addr", scope: !124, file: !49, line: 33, baseType: !78, size: 32) -!127 = !DIDerivedType(tag: DW_TAG_member, name: "sin_zero", scope: !116, file: !49, line: 245, baseType: !128, size: 64, offset: 64) -!128 = !DICompositeType(tag: DW_TAG_array_type, baseType: !129, size: 64, elements: !130) -!129 = !DIBasicType(name: "unsigned char", size: 8, encoding: DW_ATE_unsigned_char) -!130 = !{!131} -!131 = !DISubrange(count: 8) -!132 = !DILocation(line: 55, column: 28, scope: !113) -!133 = !DILocalVariable(name: "listenSocket", scope: !113, file: !2, line: 56, type: !109) -!134 = !DILocation(line: 56, column: 16, scope: !113) -!135 = !DILocalVariable(name: "acceptSocket", scope: !113, file: !2, line: 57, type: !109) -!136 = !DILocation(line: 57, column: 16, scope: !113) -!137 = !DILocalVariable(name: "inputBuffer", scope: !113, file: !2, line: 58, type: !92) -!138 = !DILocation(line: 58, column: 14, scope: !113) -!139 = !DILocation(line: 59, column: 9, scope: !113) -!140 = !DILocation(line: 69, column: 28, scope: !141) -!141 = distinct !DILexicalBlock(scope: !113, file: !2, line: 60, column: 9) -!142 = !DILocation(line: 69, column: 26, scope: !141) -!143 = !DILocation(line: 70, column: 17, scope: !144) -!144 = distinct !DILexicalBlock(scope: !141, file: !2, line: 70, column: 17) -!145 = !DILocation(line: 70, column: 30, scope: !144) -!146 = !DILocation(line: 70, column: 17, scope: !141) -!147 = !DILocation(line: 72, column: 17, scope: !148) -!148 = distinct !DILexicalBlock(scope: !144, file: !2, line: 71, column: 13) -!149 = !DILocation(line: 74, column: 13, scope: !141) -!150 = !DILocation(line: 75, column: 21, scope: !141) -!151 = !DILocation(line: 75, column: 32, scope: !141) -!152 = !DILocation(line: 76, column: 21, scope: !141) -!153 = !DILocation(line: 76, column: 30, scope: !141) -!154 = !DILocation(line: 76, column: 37, scope: !141) -!155 = !DILocation(line: 77, column: 32, scope: !141) -!156 = !DILocation(line: 77, column: 21, scope: !141) -!157 = !DILocation(line: 77, column: 30, scope: !141) -!158 = !DILocation(line: 78, column: 22, scope: !159) -!159 = distinct !DILexicalBlock(scope: !141, file: !2, line: 78, column: 17) -!160 = !DILocation(line: 78, column: 17, scope: !159) -!161 = !DILocation(line: 78, column: 81, scope: !159) -!162 = !DILocation(line: 78, column: 17, scope: !141) -!163 = !DILocation(line: 80, column: 17, scope: !164) -!164 = distinct !DILexicalBlock(scope: !159, file: !2, line: 79, column: 13) -!165 = !DILocation(line: 82, column: 24, scope: !166) -!166 = distinct !DILexicalBlock(scope: !141, file: !2, line: 82, column: 17) -!167 = !DILocation(line: 82, column: 17, scope: !166) -!168 = !DILocation(line: 82, column: 54, scope: !166) -!169 = !DILocation(line: 82, column: 17, scope: !141) -!170 = !DILocation(line: 84, column: 17, scope: !171) -!171 = distinct !DILexicalBlock(scope: !166, file: !2, line: 83, column: 13) -!172 = !DILocation(line: 86, column: 35, scope: !141) -!173 = !DILocation(line: 86, column: 28, scope: !141) -!174 = !DILocation(line: 86, column: 26, scope: !141) -!175 = !DILocation(line: 87, column: 17, scope: !176) -!176 = distinct !DILexicalBlock(scope: !141, file: !2, line: 87, column: 17) -!177 = !DILocation(line: 87, column: 30, scope: !176) -!178 = !DILocation(line: 87, column: 17, scope: !141) -!179 = !DILocation(line: 89, column: 17, scope: !180) -!180 = distinct !DILexicalBlock(scope: !176, file: !2, line: 88, column: 13) -!181 = !DILocation(line: 92, column: 31, scope: !141) -!182 = !DILocation(line: 92, column: 45, scope: !141) -!183 = !DILocation(line: 92, column: 26, scope: !141) -!184 = !DILocation(line: 92, column: 24, scope: !141) -!185 = !DILocation(line: 93, column: 17, scope: !186) -!186 = distinct !DILexicalBlock(scope: !141, file: !2, line: 93, column: 17) -!187 = !DILocation(line: 93, column: 28, scope: !186) -!188 = !DILocation(line: 93, column: 44, scope: !186) -!189 = !DILocation(line: 93, column: 47, scope: !186) -!190 = !DILocation(line: 93, column: 58, scope: !186) -!191 = !DILocation(line: 93, column: 17, scope: !141) -!192 = !DILocation(line: 95, column: 17, scope: !193) -!193 = distinct !DILexicalBlock(scope: !186, file: !2, line: 94, column: 13) -!194 = !DILocation(line: 98, column: 25, scope: !141) -!195 = !DILocation(line: 98, column: 13, scope: !141) -!196 = !DILocation(line: 98, column: 37, scope: !141) -!197 = !DILocation(line: 100, column: 25, scope: !141) -!198 = !DILocation(line: 100, column: 20, scope: !141) -!199 = !DILocation(line: 100, column: 18, scope: !141) -!200 = !DILocation(line: 101, column: 9, scope: !141) -!201 = !DILocation(line: 103, column: 13, scope: !202) -!202 = distinct !DILexicalBlock(scope: !113, file: !2, line: 103, column: 13) -!203 = !DILocation(line: 103, column: 26, scope: !202) -!204 = !DILocation(line: 103, column: 13, scope: !113) -!205 = !DILocation(line: 105, column: 26, scope: !206) -!206 = distinct !DILexicalBlock(scope: !202, file: !2, line: 104, column: 9) -!207 = !DILocation(line: 105, column: 13, scope: !206) -!208 = !DILocation(line: 106, column: 9, scope: !206) -!209 = !DILocation(line: 107, column: 13, scope: !210) -!210 = distinct !DILexicalBlock(scope: !113, file: !2, line: 107, column: 13) -!211 = !DILocation(line: 107, column: 26, scope: !210) -!212 = !DILocation(line: 107, column: 13, scope: !113) -!213 = !DILocation(line: 109, column: 26, scope: !214) -!214 = distinct !DILexicalBlock(scope: !210, file: !2, line: 108, column: 9) -!215 = !DILocation(line: 109, column: 13, scope: !214) -!216 = !DILocation(line: 110, column: 9, scope: !214) -!217 = !DILocalVariable(name: "i", scope: !218, file: !2, line: 119, type: !109) -!218 = distinct !DILexicalBlock(scope: !104, file: !2, line: 118, column: 5) -!219 = !DILocation(line: 119, column: 13, scope: !218) -!220 = !DILocalVariable(name: "buffer", scope: !218, file: !2, line: 120, type: !221) -!221 = !DICompositeType(tag: DW_TAG_array_type, baseType: !109, size: 320, elements: !222) -!222 = !{!223} -!223 = !DISubrange(count: 10) -!224 = !DILocation(line: 120, column: 13, scope: !218) -!225 = !DILocation(line: 123, column: 13, scope: !226) -!226 = distinct !DILexicalBlock(scope: !218, file: !2, line: 123, column: 13) -!227 = !DILocation(line: 123, column: 18, scope: !226) -!228 = !DILocation(line: 123, column: 13, scope: !218) -!229 = !DILocation(line: 125, column: 20, scope: !230) -!230 = distinct !DILexicalBlock(scope: !226, file: !2, line: 124, column: 9) -!231 = !DILocation(line: 125, column: 13, scope: !230) -!232 = !DILocation(line: 125, column: 26, scope: !230) -!233 = !DILocation(line: 126, column: 30, scope: !230) -!234 = !DILocation(line: 126, column: 38, scope: !230) -!235 = !DILocation(line: 126, column: 43, scope: !230) -!236 = !DILocation(line: 126, column: 57, scope: !230) -!237 = !DILocation(line: 126, column: 13, scope: !230) -!238 = !DILocation(line: 128, column: 19, scope: !239) -!239 = distinct !DILexicalBlock(scope: !230, file: !2, line: 128, column: 13) -!240 = !DILocation(line: 128, column: 17, scope: !239) -!241 = !DILocation(line: 128, column: 24, scope: !242) -!242 = distinct !DILexicalBlock(scope: !239, file: !2, line: 128, column: 13) -!243 = !DILocation(line: 128, column: 26, scope: !242) -!244 = !DILocation(line: 128, column: 13, scope: !239) -!245 = !DILocation(line: 130, column: 37, scope: !246) -!246 = distinct !DILexicalBlock(scope: !242, file: !2, line: 129, column: 13) -!247 = !DILocation(line: 130, column: 30, scope: !246) -!248 = !DILocation(line: 130, column: 17, scope: !246) -!249 = !DILocation(line: 131, column: 13, scope: !246) -!250 = !DILocation(line: 128, column: 33, scope: !242) -!251 = !DILocation(line: 128, column: 13, scope: !242) -!252 = distinct !{!252, !244, !253, !254} -!253 = !DILocation(line: 131, column: 13, scope: !239) -!254 = !{!"llvm.loop.mustprogress"} -!255 = !DILocation(line: 132, column: 9, scope: !230) -!256 = !DILocation(line: 135, column: 13, scope: !257) -!257 = distinct !DILexicalBlock(scope: !226, file: !2, line: 134, column: 9) -!258 = !DILocation(line: 138, column: 1, scope: !104) -!259 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE129_listen_socket_01_good", scope: !2, file: !2, line: 270, type: !105, scopeLine: 271, spFlags: DISPFlagDefinition, unit: !32, retainedNodes: !107) -!260 = !DILocation(line: 272, column: 5, scope: !259) -!261 = !DILocation(line: 273, column: 5, scope: !259) -!262 = !DILocation(line: 274, column: 1, scope: !259) -!263 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 285, type: !264, scopeLine: 286, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !32, retainedNodes: !107) -!264 = !DISubroutineType(types: !265) -!265 = !{!109, !109, !266} -!266 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !267, size: 64) -!267 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!268 = !DILocalVariable(name: "argc", arg: 1, scope: !263, file: !2, line: 285, type: !109) -!269 = !DILocation(line: 285, column: 14, scope: !263) -!270 = !DILocalVariable(name: "argv", arg: 2, scope: !263, file: !2, line: 285, type: !266) -!271 = !DILocation(line: 285, column: 27, scope: !263) -!272 = !DILocation(line: 288, column: 22, scope: !263) -!273 = !DILocation(line: 288, column: 12, scope: !263) -!274 = !DILocation(line: 288, column: 5, scope: !263) -!275 = !DILocation(line: 290, column: 5, scope: !263) -!276 = !DILocation(line: 291, column: 5, scope: !263) -!277 = !DILocation(line: 292, column: 5, scope: !263) -!278 = !DILocation(line: 295, column: 5, scope: !263) -!279 = !DILocation(line: 296, column: 5, scope: !263) -!280 = !DILocation(line: 297, column: 5, scope: !263) -!281 = !DILocation(line: 299, column: 5, scope: !263) -!282 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 145, type: !105, scopeLine: 146, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !32, retainedNodes: !107) -!283 = !DILocalVariable(name: "data", scope: !282, file: !2, line: 147, type: !109) -!284 = !DILocation(line: 147, column: 9, scope: !282) -!285 = !DILocation(line: 149, column: 10, scope: !282) -!286 = !DILocation(line: 152, column: 10, scope: !282) -!287 = !DILocalVariable(name: "i", scope: !288, file: !2, line: 154, type: !109) -!288 = distinct !DILexicalBlock(scope: !282, file: !2, line: 153, column: 5) -!289 = !DILocation(line: 154, column: 13, scope: !288) -!290 = !DILocalVariable(name: "buffer", scope: !288, file: !2, line: 155, type: !221) -!291 = !DILocation(line: 155, column: 13, scope: !288) -!292 = !DILocation(line: 158, column: 13, scope: !293) -!293 = distinct !DILexicalBlock(scope: !288, file: !2, line: 158, column: 13) -!294 = !DILocation(line: 158, column: 18, scope: !293) -!295 = !DILocation(line: 158, column: 13, scope: !288) -!296 = !DILocation(line: 160, column: 27, scope: !297) -!297 = distinct !DILexicalBlock(scope: !293, file: !2, line: 159, column: 9) -!298 = !DILocation(line: 160, column: 35, scope: !297) -!299 = !DILocation(line: 160, column: 40, scope: !297) -!300 = !DILocation(line: 160, column: 13, scope: !297) -!301 = !DILocation(line: 161, column: 20, scope: !297) -!302 = !DILocation(line: 161, column: 13, scope: !297) -!303 = !DILocation(line: 161, column: 26, scope: !297) -!304 = !DILocation(line: 163, column: 19, scope: !305) -!305 = distinct !DILexicalBlock(scope: !297, file: !2, line: 163, column: 13) -!306 = !DILocation(line: 163, column: 17, scope: !305) -!307 = !DILocation(line: 163, column: 24, scope: !308) -!308 = distinct !DILexicalBlock(scope: !305, file: !2, line: 163, column: 13) -!309 = !DILocation(line: 163, column: 26, scope: !308) -!310 = !DILocation(line: 163, column: 13, scope: !305) -!311 = !DILocation(line: 165, column: 37, scope: !312) -!312 = distinct !DILexicalBlock(scope: !308, file: !2, line: 164, column: 13) -!313 = !DILocation(line: 165, column: 30, scope: !312) -!314 = !DILocation(line: 165, column: 17, scope: !312) -!315 = !DILocation(line: 166, column: 13, scope: !312) -!316 = !DILocation(line: 163, column: 33, scope: !308) -!317 = !DILocation(line: 163, column: 13, scope: !308) -!318 = distinct !{!318, !310, !319, !254} -!319 = !DILocation(line: 166, column: 13, scope: !305) -!320 = !DILocation(line: 167, column: 9, scope: !297) -!321 = !DILocation(line: 170, column: 13, scope: !322) -!322 = distinct !DILexicalBlock(scope: !293, file: !2, line: 169, column: 9) -!323 = !DILocation(line: 173, column: 1, scope: !282) -!324 = distinct !DISubprogram(name: "goodB2G", scope: !2, file: !2, line: 176, type: !105, scopeLine: 177, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !32, retainedNodes: !107) -!325 = !DILocalVariable(name: "data", scope: !324, file: !2, line: 178, type: !109) -!326 = !DILocation(line: 178, column: 9, scope: !324) -!327 = !DILocation(line: 180, column: 10, scope: !324) -!328 = !DILocalVariable(name: "recvResult", scope: !329, file: !2, line: 186, type: !109) -!329 = distinct !DILexicalBlock(scope: !324, file: !2, line: 181, column: 5) -!330 = !DILocation(line: 186, column: 13, scope: !329) -!331 = !DILocalVariable(name: "service", scope: !329, file: !2, line: 187, type: !116) -!332 = !DILocation(line: 187, column: 28, scope: !329) -!333 = !DILocalVariable(name: "listenSocket", scope: !329, file: !2, line: 188, type: !109) -!334 = !DILocation(line: 188, column: 16, scope: !329) -!335 = !DILocalVariable(name: "acceptSocket", scope: !329, file: !2, line: 189, type: !109) -!336 = !DILocation(line: 189, column: 16, scope: !329) -!337 = !DILocalVariable(name: "inputBuffer", scope: !329, file: !2, line: 190, type: !92) -!338 = !DILocation(line: 190, column: 14, scope: !329) -!339 = !DILocation(line: 191, column: 9, scope: !329) -!340 = !DILocation(line: 201, column: 28, scope: !341) -!341 = distinct !DILexicalBlock(scope: !329, file: !2, line: 192, column: 9) -!342 = !DILocation(line: 201, column: 26, scope: !341) -!343 = !DILocation(line: 202, column: 17, scope: !344) -!344 = distinct !DILexicalBlock(scope: !341, file: !2, line: 202, column: 17) -!345 = !DILocation(line: 202, column: 30, scope: !344) -!346 = !DILocation(line: 202, column: 17, scope: !341) -!347 = !DILocation(line: 204, column: 17, scope: !348) -!348 = distinct !DILexicalBlock(scope: !344, file: !2, line: 203, column: 13) -!349 = !DILocation(line: 206, column: 13, scope: !341) -!350 = !DILocation(line: 207, column: 21, scope: !341) -!351 = !DILocation(line: 207, column: 32, scope: !341) -!352 = !DILocation(line: 208, column: 21, scope: !341) -!353 = !DILocation(line: 208, column: 30, scope: !341) -!354 = !DILocation(line: 208, column: 37, scope: !341) -!355 = !DILocation(line: 209, column: 32, scope: !341) -!356 = !DILocation(line: 209, column: 21, scope: !341) -!357 = !DILocation(line: 209, column: 30, scope: !341) -!358 = !DILocation(line: 210, column: 22, scope: !359) -!359 = distinct !DILexicalBlock(scope: !341, file: !2, line: 210, column: 17) -!360 = !DILocation(line: 210, column: 17, scope: !359) -!361 = !DILocation(line: 210, column: 81, scope: !359) -!362 = !DILocation(line: 210, column: 17, scope: !341) -!363 = !DILocation(line: 212, column: 17, scope: !364) -!364 = distinct !DILexicalBlock(scope: !359, file: !2, line: 211, column: 13) -!365 = !DILocation(line: 214, column: 24, scope: !366) -!366 = distinct !DILexicalBlock(scope: !341, file: !2, line: 214, column: 17) -!367 = !DILocation(line: 214, column: 17, scope: !366) -!368 = !DILocation(line: 214, column: 54, scope: !366) -!369 = !DILocation(line: 214, column: 17, scope: !341) -!370 = !DILocation(line: 216, column: 17, scope: !371) -!371 = distinct !DILexicalBlock(scope: !366, file: !2, line: 215, column: 13) -!372 = !DILocation(line: 218, column: 35, scope: !341) -!373 = !DILocation(line: 218, column: 28, scope: !341) -!374 = !DILocation(line: 218, column: 26, scope: !341) -!375 = !DILocation(line: 219, column: 17, scope: !376) -!376 = distinct !DILexicalBlock(scope: !341, file: !2, line: 219, column: 17) -!377 = !DILocation(line: 219, column: 30, scope: !376) -!378 = !DILocation(line: 219, column: 17, scope: !341) -!379 = !DILocation(line: 221, column: 17, scope: !380) -!380 = distinct !DILexicalBlock(scope: !376, file: !2, line: 220, column: 13) -!381 = !DILocation(line: 224, column: 31, scope: !341) -!382 = !DILocation(line: 224, column: 45, scope: !341) -!383 = !DILocation(line: 224, column: 26, scope: !341) -!384 = !DILocation(line: 224, column: 24, scope: !341) -!385 = !DILocation(line: 225, column: 17, scope: !386) -!386 = distinct !DILexicalBlock(scope: !341, file: !2, line: 225, column: 17) -!387 = !DILocation(line: 225, column: 28, scope: !386) -!388 = !DILocation(line: 225, column: 44, scope: !386) -!389 = !DILocation(line: 225, column: 47, scope: !386) -!390 = !DILocation(line: 225, column: 58, scope: !386) -!391 = !DILocation(line: 225, column: 17, scope: !341) -!392 = !DILocation(line: 227, column: 17, scope: !393) -!393 = distinct !DILexicalBlock(scope: !386, file: !2, line: 226, column: 13) -!394 = !DILocation(line: 230, column: 25, scope: !341) -!395 = !DILocation(line: 230, column: 13, scope: !341) -!396 = !DILocation(line: 230, column: 37, scope: !341) -!397 = !DILocation(line: 232, column: 25, scope: !341) -!398 = !DILocation(line: 232, column: 20, scope: !341) -!399 = !DILocation(line: 232, column: 18, scope: !341) -!400 = !DILocation(line: 233, column: 9, scope: !341) -!401 = !DILocation(line: 235, column: 13, scope: !402) -!402 = distinct !DILexicalBlock(scope: !329, file: !2, line: 235, column: 13) -!403 = !DILocation(line: 235, column: 26, scope: !402) -!404 = !DILocation(line: 235, column: 13, scope: !329) -!405 = !DILocation(line: 237, column: 26, scope: !406) -!406 = distinct !DILexicalBlock(scope: !402, file: !2, line: 236, column: 9) -!407 = !DILocation(line: 237, column: 13, scope: !406) -!408 = !DILocation(line: 238, column: 9, scope: !406) -!409 = !DILocation(line: 239, column: 13, scope: !410) -!410 = distinct !DILexicalBlock(scope: !329, file: !2, line: 239, column: 13) -!411 = !DILocation(line: 239, column: 26, scope: !410) -!412 = !DILocation(line: 239, column: 13, scope: !329) -!413 = !DILocation(line: 241, column: 26, scope: !414) -!414 = distinct !DILexicalBlock(scope: !410, file: !2, line: 240, column: 9) -!415 = !DILocation(line: 241, column: 13, scope: !414) -!416 = !DILocation(line: 242, column: 9, scope: !414) -!417 = !DILocalVariable(name: "i", scope: !418, file: !2, line: 251, type: !109) -!418 = distinct !DILexicalBlock(scope: !324, file: !2, line: 250, column: 5) -!419 = !DILocation(line: 251, column: 13, scope: !418) -!420 = !DILocalVariable(name: "buffer", scope: !418, file: !2, line: 252, type: !221) -!421 = !DILocation(line: 252, column: 13, scope: !418) -!422 = !DILocation(line: 254, column: 13, scope: !423) -!423 = distinct !DILexicalBlock(scope: !418, file: !2, line: 254, column: 13) -!424 = !DILocation(line: 254, column: 18, scope: !423) -!425 = !DILocation(line: 254, column: 23, scope: !423) -!426 = !DILocation(line: 254, column: 26, scope: !423) -!427 = !DILocation(line: 254, column: 31, scope: !423) -!428 = !DILocation(line: 254, column: 13, scope: !418) -!429 = !DILocation(line: 256, column: 20, scope: !430) -!430 = distinct !DILexicalBlock(scope: !423, file: !2, line: 255, column: 9) -!431 = !DILocation(line: 256, column: 13, scope: !430) -!432 = !DILocation(line: 256, column: 26, scope: !430) -!433 = !DILocation(line: 258, column: 19, scope: !434) -!434 = distinct !DILexicalBlock(scope: !430, file: !2, line: 258, column: 13) -!435 = !DILocation(line: 258, column: 17, scope: !434) -!436 = !DILocation(line: 258, column: 24, scope: !437) -!437 = distinct !DILexicalBlock(scope: !434, file: !2, line: 258, column: 13) -!438 = !DILocation(line: 258, column: 26, scope: !437) -!439 = !DILocation(line: 258, column: 13, scope: !434) -!440 = !DILocation(line: 260, column: 37, scope: !441) -!441 = distinct !DILexicalBlock(scope: !437, file: !2, line: 259, column: 13) -!442 = !DILocation(line: 260, column: 30, scope: !441) -!443 = !DILocation(line: 260, column: 17, scope: !441) -!444 = !DILocation(line: 261, column: 13, scope: !441) -!445 = !DILocation(line: 258, column: 33, scope: !437) -!446 = !DILocation(line: 258, column: 13, scope: !437) -!447 = distinct !{!447, !439, !448, !254} -!448 = !DILocation(line: 261, column: 13, scope: !434) -!449 = !DILocation(line: 262, column: 9, scope: !430) -!450 = !DILocation(line: 265, column: 13, scope: !451) -!451 = distinct !DILexicalBlock(scope: !423, file: !2, line: 264, column: 9) -!452 = !DILocation(line: 268, column: 1, scope: !324) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01.c.bc deleted file mode 100644 index 78ae411d..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01.c.bc +++ /dev/null @@ -1,519 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [32 x i8] c"ERROR: Array index is negative.\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !17 -@.str.4 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !22 -@.str.5 = private unnamed_addr constant [36 x i8] c"ERROR: Array index is out-of-bounds\00", align 1, !dbg !27 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01_bad() #0 !dbg !46 { -entry: - %data = alloca i32, align 4 - %i = alloca i32, align 4 - %buffer = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !50, metadata !DIExpression()), !dbg !51 - store i32 -1, ptr %data, align 4, !dbg !52 - %call = call i32 @rand() #5, !dbg !53 - %and = and i32 %call, 1, !dbg !53 - %tobool = icmp ne i32 %and, 0, !dbg !53 - br i1 %tobool, label %cond.true, label %cond.false, !dbg !53 - -cond.true: ; preds = %entry - %call1 = call i32 @rand() #5, !dbg !53 - %shl = shl i32 %call1, 30, !dbg !53 - %call2 = call i32 @rand() #5, !dbg !53 - %shl3 = shl i32 %call2, 15, !dbg !53 - %xor = xor i32 %shl, %shl3, !dbg !53 - %call4 = call i32 @rand() #5, !dbg !53 - %xor5 = xor i32 %xor, %call4, !dbg !53 - br label %cond.end, !dbg !53 - -cond.false: ; preds = %entry - %call6 = call i32 @rand() #5, !dbg !53 - %shl7 = shl i32 %call6, 30, !dbg !53 - %call8 = call i32 @rand() #5, !dbg !53 - %shl9 = shl i32 %call8, 15, !dbg !53 - %xor10 = xor i32 %shl7, %shl9, !dbg !53 - %call11 = call i32 @rand() #5, !dbg !53 - %xor12 = xor i32 %xor10, %call11, !dbg !53 - %sub = sub i32 0, %xor12, !dbg !53 - %sub13 = sub i32 %sub, 1, !dbg !53 - br label %cond.end, !dbg !53 - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i32 [ %xor5, %cond.true ], [ %sub13, %cond.false ], !dbg !53 - store i32 %cond, ptr %data, align 4, !dbg !54 - call void @llvm.dbg.declare(metadata ptr %i, metadata !55, metadata !DIExpression()), !dbg !57 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !58, metadata !DIExpression()), !dbg !62 - call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !62 - %0 = load i32, ptr %data, align 4, !dbg !63 - %cmp = icmp sge i32 %0, 0, !dbg !65 - br i1 %cmp, label %if.then, label %if.else, !dbg !66 - -if.then: ; preds = %cond.end - %1 = load i32, ptr %data, align 4, !dbg !67 - %idxprom = sext i32 %1 to i64, !dbg !69 - %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !69 - store i32 1, ptr %arrayidx, align 4, !dbg !70 - %arraydecay = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !71 - %2 = load i32, ptr %data, align 4, !dbg !72 - %conv = sext i32 %2 to i64, !dbg !72 - %mul = mul i64 %conv, 4, !dbg !73 - %sub14 = sub i64 %mul, 1, !dbg !74 - %call15 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay, i64 noundef %sub14), !dbg !75 - store i32 0, ptr %i, align 4, !dbg !76 - br label %for.cond, !dbg !78 - -for.cond: ; preds = %for.inc, %if.then - %3 = load i32, ptr %i, align 4, !dbg !79 - %cmp16 = icmp slt i32 %3, 10, !dbg !81 - br i1 %cmp16, label %for.body, label %for.end, !dbg !82 - -for.body: ; preds = %for.cond - %4 = load i32, ptr %i, align 4, !dbg !83 - %idxprom18 = sext i32 %4 to i64, !dbg !85 - %arrayidx19 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom18, !dbg !85 - %5 = load i32, ptr %arrayidx19, align 4, !dbg !85 - call void @printIntLine(i32 noundef %5), !dbg !86 - br label %for.inc, !dbg !87 - -for.inc: ; preds = %for.body - %6 = load i32, ptr %i, align 4, !dbg !88 - %inc = add nsw i32 %6, 1, !dbg !88 - store i32 %inc, ptr %i, align 4, !dbg !88 - br label %for.cond, !dbg !89, !llvm.loop !90 - -for.end: ; preds = %for.cond - br label %if.end, !dbg !93 - -if.else: ; preds = %cond.end - call void @printLine(ptr noundef @.str), !dbg !94 - br label %if.end - -if.end: ; preds = %if.else, %for.end - ret void, !dbg !96 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare i32 @rand() #2 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare void @printIntLine(i32 noundef) #4 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01_good() #0 !dbg !97 { -entry: - call void @goodG2B(), !dbg !98 - call void @goodB2G(), !dbg !99 - ret void, !dbg !100 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !101 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !106, metadata !DIExpression()), !dbg !107 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !108, metadata !DIExpression()), !dbg !109 - %call = call i64 @time(ptr noundef null) #5, !dbg !110 - %conv = trunc i64 %call to i32, !dbg !111 - call void @srand(i32 noundef %conv) #5, !dbg !112 - call void @printLine(ptr noundef @.str.1), !dbg !113 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01_good(), !dbg !114 - call void @printLine(ptr noundef @.str.2), !dbg !115 - call void @printLine(ptr noundef @.str.3), !dbg !116 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01_bad(), !dbg !117 - call void @printLine(ptr noundef @.str.4), !dbg !118 - ret i32 0, !dbg !119 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !120 { -entry: - %data = alloca i32, align 4 - %i = alloca i32, align 4 - %buffer = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !121, metadata !DIExpression()), !dbg !122 - store i32 -1, ptr %data, align 4, !dbg !123 - store i32 7, ptr %data, align 4, !dbg !124 - call void @llvm.dbg.declare(metadata ptr %i, metadata !125, metadata !DIExpression()), !dbg !127 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !128, metadata !DIExpression()), !dbg !129 - call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !129 - %0 = load i32, ptr %data, align 4, !dbg !130 - %cmp = icmp sge i32 %0, 0, !dbg !132 - br i1 %cmp, label %if.then, label %if.else, !dbg !133 - -if.then: ; preds = %entry - %1 = load i32, ptr %data, align 4, !dbg !134 - %idxprom = sext i32 %1 to i64, !dbg !136 - %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !136 - store i32 1, ptr %arrayidx, align 4, !dbg !137 - %arraydecay = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !138 - %2 = load i32, ptr %data, align 4, !dbg !139 - %conv = sext i32 %2 to i64, !dbg !139 - %mul = mul i64 %conv, 4, !dbg !140 - %sub = sub i64 %mul, 1, !dbg !141 - %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay, i64 noundef %sub), !dbg !142 - store i32 0, ptr %i, align 4, !dbg !143 - br label %for.cond, !dbg !145 - -for.cond: ; preds = %for.inc, %if.then - %3 = load i32, ptr %i, align 4, !dbg !146 - %cmp1 = icmp slt i32 %3, 10, !dbg !148 - br i1 %cmp1, label %for.body, label %for.end, !dbg !149 - -for.body: ; preds = %for.cond - %4 = load i32, ptr %i, align 4, !dbg !150 - %idxprom3 = sext i32 %4 to i64, !dbg !152 - %arrayidx4 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom3, !dbg !152 - %5 = load i32, ptr %arrayidx4, align 4, !dbg !152 - call void @printIntLine(i32 noundef %5), !dbg !153 - br label %for.inc, !dbg !154 - -for.inc: ; preds = %for.body - %6 = load i32, ptr %i, align 4, !dbg !155 - %inc = add nsw i32 %6, 1, !dbg !155 - store i32 %inc, ptr %i, align 4, !dbg !155 - br label %for.cond, !dbg !156, !llvm.loop !157 - -for.end: ; preds = %for.cond - br label %if.end, !dbg !159 - -if.else: ; preds = %entry - call void @printLine(ptr noundef @.str), !dbg !160 - br label %if.end - -if.end: ; preds = %if.else, %for.end - ret void, !dbg !162 -} - -declare i32 @SAFE_BUFACCESS(...) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodB2G() #0 !dbg !163 { -entry: - %data = alloca i32, align 4 - %i = alloca i32, align 4 - %buffer = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !164, metadata !DIExpression()), !dbg !165 - store i32 -1, ptr %data, align 4, !dbg !166 - %call = call i32 @rand() #5, !dbg !167 - %and = and i32 %call, 1, !dbg !167 - %tobool = icmp ne i32 %and, 0, !dbg !167 - br i1 %tobool, label %cond.true, label %cond.false, !dbg !167 - -cond.true: ; preds = %entry - %call1 = call i32 @rand() #5, !dbg !167 - %shl = shl i32 %call1, 30, !dbg !167 - %call2 = call i32 @rand() #5, !dbg !167 - %shl3 = shl i32 %call2, 15, !dbg !167 - %xor = xor i32 %shl, %shl3, !dbg !167 - %call4 = call i32 @rand() #5, !dbg !167 - %xor5 = xor i32 %xor, %call4, !dbg !167 - br label %cond.end, !dbg !167 - -cond.false: ; preds = %entry - %call6 = call i32 @rand() #5, !dbg !167 - %shl7 = shl i32 %call6, 30, !dbg !167 - %call8 = call i32 @rand() #5, !dbg !167 - %shl9 = shl i32 %call8, 15, !dbg !167 - %xor10 = xor i32 %shl7, %shl9, !dbg !167 - %call11 = call i32 @rand() #5, !dbg !167 - %xor12 = xor i32 %xor10, %call11, !dbg !167 - %sub = sub i32 0, %xor12, !dbg !167 - %sub13 = sub i32 %sub, 1, !dbg !167 - br label %cond.end, !dbg !167 - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i32 [ %xor5, %cond.true ], [ %sub13, %cond.false ], !dbg !167 - store i32 %cond, ptr %data, align 4, !dbg !168 - call void @llvm.dbg.declare(metadata ptr %i, metadata !169, metadata !DIExpression()), !dbg !171 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !172, metadata !DIExpression()), !dbg !173 - call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !173 - %0 = load i32, ptr %data, align 4, !dbg !174 - %cmp = icmp sge i32 %0, 0, !dbg !176 - br i1 %cmp, label %land.lhs.true, label %if.else, !dbg !177 - -land.lhs.true: ; preds = %cond.end - %1 = load i32, ptr %data, align 4, !dbg !178 - %cmp14 = icmp slt i32 %1, 10, !dbg !179 - br i1 %cmp14, label %if.then, label %if.else, !dbg !180 - -if.then: ; preds = %land.lhs.true - %2 = load i32, ptr %data, align 4, !dbg !181 - %idxprom = sext i32 %2 to i64, !dbg !183 - %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !183 - store i32 1, ptr %arrayidx, align 4, !dbg !184 - store i32 0, ptr %i, align 4, !dbg !185 - br label %for.cond, !dbg !187 - -for.cond: ; preds = %for.inc, %if.then - %3 = load i32, ptr %i, align 4, !dbg !188 - %cmp15 = icmp slt i32 %3, 10, !dbg !190 - br i1 %cmp15, label %for.body, label %for.end, !dbg !191 - -for.body: ; preds = %for.cond - %4 = load i32, ptr %i, align 4, !dbg !192 - %idxprom16 = sext i32 %4 to i64, !dbg !194 - %arrayidx17 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom16, !dbg !194 - %5 = load i32, ptr %arrayidx17, align 4, !dbg !194 - call void @printIntLine(i32 noundef %5), !dbg !195 - br label %for.inc, !dbg !196 - -for.inc: ; preds = %for.body - %6 = load i32, ptr %i, align 4, !dbg !197 - %inc = add nsw i32 %6, 1, !dbg !197 - store i32 %inc, ptr %i, align 4, !dbg !197 - br label %for.cond, !dbg !198, !llvm.loop !199 - -for.end: ; preds = %for.cond - br label %if.end, !dbg !201 - -if.else: ; preds = %land.lhs.true, %cond.end - call void @printLine(ptr noundef @.str.5), !dbg !202 - br label %if.end - -if.end: ; preds = %if.else, %for.end - ret void, !dbg !204 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } - -!llvm.dbg.cu = !{!32} -!llvm.module.flags = !{!38, !39, !40, !41, !42, !43, !44} -!llvm.ident = !{!45} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 46, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e5852ff29d1c45739e0474f9559a77e5") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 256, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 32) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 134, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 18) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 136, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 16) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 139, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 17) -!22 = !DIGlobalVariableExpression(var: !23, expr: !DIExpression()) -!23 = distinct !DIGlobalVariable(scope: null, file: !2, line: 141, type: !24, isLocal: true, isDefinition: true) -!24 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !25) -!25 = !{!26} -!26 = !DISubrange(count: 15) -!27 = !DIGlobalVariableExpression(var: !28, expr: !DIExpression()) -!28 = distinct !DIGlobalVariable(scope: null, file: !2, line: 109, type: !29, isLocal: true, isDefinition: true) -!29 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 288, elements: !30) -!30 = !{!31} -!31 = !DISubrange(count: 36) -!32 = distinct !DICompileUnit(language: DW_LANG_C11, file: !33, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !34, globals: !37, splitDebugInlining: false, nameTableKind: None) -!33 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e5852ff29d1c45739e0474f9559a77e5") -!34 = !{!35, !36} -!35 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!36 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!37 = !{!0, !7, !12, !17, !22, !27} -!38 = !{i32 7, !"Dwarf Version", i32 5} -!39 = !{i32 2, !"Debug Info Version", i32 3} -!40 = !{i32 1, !"wchar_size", i32 4} -!41 = !{i32 8, !"PIC Level", i32 2} -!42 = !{i32 7, !"PIE Level", i32 2} -!43 = !{i32 7, !"uwtable", i32 2} -!44 = !{i32 7, !"frame-pointer", i32 2} -!45 = !{!"clang version 16.0.0"} -!46 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01_bad", scope: !2, file: !2, line: 22, type: !47, scopeLine: 23, spFlags: DISPFlagDefinition, unit: !32, retainedNodes: !49) -!47 = !DISubroutineType(types: !48) -!48 = !{null} -!49 = !{} -!50 = !DILocalVariable(name: "data", scope: !46, file: !2, line: 24, type: !35) -!51 = !DILocation(line: 24, column: 9, scope: !46) -!52 = !DILocation(line: 26, column: 10, scope: !46) -!53 = !DILocation(line: 28, column: 12, scope: !46) -!54 = !DILocation(line: 28, column: 10, scope: !46) -!55 = !DILocalVariable(name: "i", scope: !56, file: !2, line: 30, type: !35) -!56 = distinct !DILexicalBlock(scope: !46, file: !2, line: 29, column: 5) -!57 = !DILocation(line: 30, column: 13, scope: !56) -!58 = !DILocalVariable(name: "buffer", scope: !56, file: !2, line: 31, type: !59) -!59 = !DICompositeType(tag: DW_TAG_array_type, baseType: !35, size: 320, elements: !60) -!60 = !{!61} -!61 = !DISubrange(count: 10) -!62 = !DILocation(line: 31, column: 13, scope: !56) -!63 = !DILocation(line: 34, column: 13, scope: !64) -!64 = distinct !DILexicalBlock(scope: !56, file: !2, line: 34, column: 13) -!65 = !DILocation(line: 34, column: 18, scope: !64) -!66 = !DILocation(line: 34, column: 13, scope: !56) -!67 = !DILocation(line: 36, column: 20, scope: !68) -!68 = distinct !DILexicalBlock(scope: !64, file: !2, line: 35, column: 9) -!69 = !DILocation(line: 36, column: 13, scope: !68) -!70 = !DILocation(line: 36, column: 26, scope: !68) -!71 = !DILocation(line: 37, column: 30, scope: !68) -!72 = !DILocation(line: 37, column: 38, scope: !68) -!73 = !DILocation(line: 37, column: 43, scope: !68) -!74 = !DILocation(line: 37, column: 57, scope: !68) -!75 = !DILocation(line: 37, column: 13, scope: !68) -!76 = !DILocation(line: 39, column: 19, scope: !77) -!77 = distinct !DILexicalBlock(scope: !68, file: !2, line: 39, column: 13) -!78 = !DILocation(line: 39, column: 17, scope: !77) -!79 = !DILocation(line: 39, column: 24, scope: !80) -!80 = distinct !DILexicalBlock(scope: !77, file: !2, line: 39, column: 13) -!81 = !DILocation(line: 39, column: 26, scope: !80) -!82 = !DILocation(line: 39, column: 13, scope: !77) -!83 = !DILocation(line: 41, column: 37, scope: !84) -!84 = distinct !DILexicalBlock(scope: !80, file: !2, line: 40, column: 13) -!85 = !DILocation(line: 41, column: 30, scope: !84) -!86 = !DILocation(line: 41, column: 17, scope: !84) -!87 = !DILocation(line: 42, column: 13, scope: !84) -!88 = !DILocation(line: 39, column: 33, scope: !80) -!89 = !DILocation(line: 39, column: 13, scope: !80) -!90 = distinct !{!90, !82, !91, !92} -!91 = !DILocation(line: 42, column: 13, scope: !77) -!92 = !{!"llvm.loop.mustprogress"} -!93 = !DILocation(line: 43, column: 9, scope: !68) -!94 = !DILocation(line: 46, column: 13, scope: !95) -!95 = distinct !DILexicalBlock(scope: !64, file: !2, line: 45, column: 9) -!96 = !DILocation(line: 49, column: 1, scope: !46) -!97 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE129_rand_01_good", scope: !2, file: !2, line: 114, type: !47, scopeLine: 115, spFlags: DISPFlagDefinition, unit: !32, retainedNodes: !49) -!98 = !DILocation(line: 116, column: 5, scope: !97) -!99 = !DILocation(line: 117, column: 5, scope: !97) -!100 = !DILocation(line: 118, column: 1, scope: !97) -!101 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 129, type: !102, scopeLine: 130, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !32, retainedNodes: !49) -!102 = !DISubroutineType(types: !103) -!103 = !{!35, !35, !104} -!104 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !105, size: 64) -!105 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!106 = !DILocalVariable(name: "argc", arg: 1, scope: !101, file: !2, line: 129, type: !35) -!107 = !DILocation(line: 129, column: 14, scope: !101) -!108 = !DILocalVariable(name: "argv", arg: 2, scope: !101, file: !2, line: 129, type: !104) -!109 = !DILocation(line: 129, column: 27, scope: !101) -!110 = !DILocation(line: 132, column: 22, scope: !101) -!111 = !DILocation(line: 132, column: 12, scope: !101) -!112 = !DILocation(line: 132, column: 5, scope: !101) -!113 = !DILocation(line: 134, column: 5, scope: !101) -!114 = !DILocation(line: 135, column: 5, scope: !101) -!115 = !DILocation(line: 136, column: 5, scope: !101) -!116 = !DILocation(line: 139, column: 5, scope: !101) -!117 = !DILocation(line: 140, column: 5, scope: !101) -!118 = !DILocation(line: 141, column: 5, scope: !101) -!119 = !DILocation(line: 143, column: 5, scope: !101) -!120 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 56, type: !47, scopeLine: 57, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !32, retainedNodes: !49) -!121 = !DILocalVariable(name: "data", scope: !120, file: !2, line: 58, type: !35) -!122 = !DILocation(line: 58, column: 9, scope: !120) -!123 = !DILocation(line: 60, column: 10, scope: !120) -!124 = !DILocation(line: 63, column: 10, scope: !120) -!125 = !DILocalVariable(name: "i", scope: !126, file: !2, line: 65, type: !35) -!126 = distinct !DILexicalBlock(scope: !120, file: !2, line: 64, column: 5) -!127 = !DILocation(line: 65, column: 13, scope: !126) -!128 = !DILocalVariable(name: "buffer", scope: !126, file: !2, line: 66, type: !59) -!129 = !DILocation(line: 66, column: 13, scope: !126) -!130 = !DILocation(line: 69, column: 13, scope: !131) -!131 = distinct !DILexicalBlock(scope: !126, file: !2, line: 69, column: 13) -!132 = !DILocation(line: 69, column: 18, scope: !131) -!133 = !DILocation(line: 69, column: 13, scope: !126) -!134 = !DILocation(line: 71, column: 20, scope: !135) -!135 = distinct !DILexicalBlock(scope: !131, file: !2, line: 70, column: 9) -!136 = !DILocation(line: 71, column: 13, scope: !135) -!137 = !DILocation(line: 71, column: 26, scope: !135) -!138 = !DILocation(line: 72, column: 28, scope: !135) -!139 = !DILocation(line: 72, column: 36, scope: !135) -!140 = !DILocation(line: 72, column: 41, scope: !135) -!141 = !DILocation(line: 72, column: 55, scope: !135) -!142 = !DILocation(line: 72, column: 13, scope: !135) -!143 = !DILocation(line: 74, column: 19, scope: !144) -!144 = distinct !DILexicalBlock(scope: !135, file: !2, line: 74, column: 13) -!145 = !DILocation(line: 74, column: 17, scope: !144) -!146 = !DILocation(line: 74, column: 24, scope: !147) -!147 = distinct !DILexicalBlock(scope: !144, file: !2, line: 74, column: 13) -!148 = !DILocation(line: 74, column: 26, scope: !147) -!149 = !DILocation(line: 74, column: 13, scope: !144) -!150 = !DILocation(line: 76, column: 37, scope: !151) -!151 = distinct !DILexicalBlock(scope: !147, file: !2, line: 75, column: 13) -!152 = !DILocation(line: 76, column: 30, scope: !151) -!153 = !DILocation(line: 76, column: 17, scope: !151) -!154 = !DILocation(line: 77, column: 13, scope: !151) -!155 = !DILocation(line: 74, column: 33, scope: !147) -!156 = !DILocation(line: 74, column: 13, scope: !147) -!157 = distinct !{!157, !149, !158, !92} -!158 = !DILocation(line: 77, column: 13, scope: !144) -!159 = !DILocation(line: 78, column: 9, scope: !135) -!160 = !DILocation(line: 81, column: 13, scope: !161) -!161 = distinct !DILexicalBlock(scope: !131, file: !2, line: 80, column: 9) -!162 = !DILocation(line: 84, column: 1, scope: !120) -!163 = distinct !DISubprogram(name: "goodB2G", scope: !2, file: !2, line: 87, type: !47, scopeLine: 88, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !32, retainedNodes: !49) -!164 = !DILocalVariable(name: "data", scope: !163, file: !2, line: 89, type: !35) -!165 = !DILocation(line: 89, column: 9, scope: !163) -!166 = !DILocation(line: 91, column: 10, scope: !163) -!167 = !DILocation(line: 93, column: 12, scope: !163) -!168 = !DILocation(line: 93, column: 10, scope: !163) -!169 = !DILocalVariable(name: "i", scope: !170, file: !2, line: 95, type: !35) -!170 = distinct !DILexicalBlock(scope: !163, file: !2, line: 94, column: 5) -!171 = !DILocation(line: 95, column: 13, scope: !170) -!172 = !DILocalVariable(name: "buffer", scope: !170, file: !2, line: 96, type: !59) -!173 = !DILocation(line: 96, column: 13, scope: !170) -!174 = !DILocation(line: 98, column: 13, scope: !175) -!175 = distinct !DILexicalBlock(scope: !170, file: !2, line: 98, column: 13) -!176 = !DILocation(line: 98, column: 18, scope: !175) -!177 = !DILocation(line: 98, column: 23, scope: !175) -!178 = !DILocation(line: 98, column: 26, scope: !175) -!179 = !DILocation(line: 98, column: 31, scope: !175) -!180 = !DILocation(line: 98, column: 13, scope: !170) -!181 = !DILocation(line: 100, column: 20, scope: !182) -!182 = distinct !DILexicalBlock(scope: !175, file: !2, line: 99, column: 9) -!183 = !DILocation(line: 100, column: 13, scope: !182) -!184 = !DILocation(line: 100, column: 26, scope: !182) -!185 = !DILocation(line: 102, column: 19, scope: !186) -!186 = distinct !DILexicalBlock(scope: !182, file: !2, line: 102, column: 13) -!187 = !DILocation(line: 102, column: 17, scope: !186) -!188 = !DILocation(line: 102, column: 24, scope: !189) -!189 = distinct !DILexicalBlock(scope: !186, file: !2, line: 102, column: 13) -!190 = !DILocation(line: 102, column: 26, scope: !189) -!191 = !DILocation(line: 102, column: 13, scope: !186) -!192 = !DILocation(line: 104, column: 37, scope: !193) -!193 = distinct !DILexicalBlock(scope: !189, file: !2, line: 103, column: 13) -!194 = !DILocation(line: 104, column: 30, scope: !193) -!195 = !DILocation(line: 104, column: 17, scope: !193) -!196 = !DILocation(line: 105, column: 13, scope: !193) -!197 = !DILocation(line: 102, column: 33, scope: !189) -!198 = !DILocation(line: 102, column: 13, scope: !189) -!199 = distinct !{!199, !191, !200, !92} -!200 = !DILocation(line: 105, column: 13, scope: !186) -!201 = !DILocation(line: 106, column: 9, scope: !182) -!202 = !DILocation(line: 109, column: 13, scope: !203) -!203 = distinct !DILexicalBlock(scope: !175, file: !2, line: 108, column: 9) -!204 = !DILocation(line: 112, column: 1, scope: !163) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_loop_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_loop_01.c.bc deleted file mode 100644 index 7f0db9d3..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_loop_01.c.bc +++ /dev/null @@ -1,334 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_loop_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_loop_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE131_loop_01_bad() #0 !dbg !37 { -entry: - %data = alloca ptr, align 8 - %source = alloca [10 x i32], align 16 - %i = alloca i64, align 8 - call void @llvm.dbg.declare(metadata ptr %data, metadata !41, metadata !DIExpression()), !dbg !42 - store ptr null, ptr %data, align 8, !dbg !43 - %0 = alloca i8, i64 10, align 16, !dbg !44 - store ptr %0, ptr %data, align 8, !dbg !45 - call void @llvm.dbg.declare(metadata ptr %source, metadata !46, metadata !DIExpression()), !dbg !51 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 40, i1 false), !dbg !51 - call void @llvm.dbg.declare(metadata ptr %i, metadata !52, metadata !DIExpression()), !dbg !56 - store i64 0, ptr %i, align 8, !dbg !57 - br label %for.cond, !dbg !59 - -for.cond: ; preds = %for.inc, %entry - %1 = load i64, ptr %i, align 8, !dbg !60 - %cmp = icmp ult i64 %1, 10, !dbg !62 - br i1 %cmp, label %for.body, label %for.end, !dbg !63 - -for.body: ; preds = %for.cond - %2 = load i64, ptr %i, align 8, !dbg !64 - %arrayidx = getelementptr inbounds [10 x i32], ptr %source, i64 0, i64 %2, !dbg !66 - %3 = load i32, ptr %arrayidx, align 4, !dbg !66 - %4 = load ptr, ptr %data, align 8, !dbg !67 - %5 = load i64, ptr %i, align 8, !dbg !68 - %arrayidx1 = getelementptr inbounds i32, ptr %4, i64 %5, !dbg !67 - store i32 %3, ptr %arrayidx1, align 4, !dbg !69 - br label %for.inc, !dbg !70 - -for.inc: ; preds = %for.body - %6 = load i64, ptr %i, align 8, !dbg !71 - %inc = add i64 %6, 1, !dbg !71 - store i64 %inc, ptr %i, align 8, !dbg !71 - br label %for.cond, !dbg !72, !llvm.loop !73 - -for.end: ; preds = %for.cond - %arraydecay = getelementptr inbounds [10 x i32], ptr %source, i64 0, i64 0, !dbg !76 - %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay, i64 noundef 39), !dbg !77 - %7 = load ptr, ptr %data, align 8, !dbg !78 - %call2 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %7, i64 noundef 39), !dbg !79 - %8 = load ptr, ptr %data, align 8, !dbg !80 - %arrayidx3 = getelementptr inbounds i32, ptr %8, i64 0, !dbg !80 - %9 = load i32, ptr %arrayidx3, align 4, !dbg !80 - call void @printIntLine(i32 noundef %9), !dbg !81 - ret void, !dbg !82 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -declare i32 @SAFE_BUFACCESS(...) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #3 - -declare void @printIntLine(i32 noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE131_loop_01_good() #0 !dbg !83 { -entry: - call void @goodG2B(), !dbg !84 - ret void, !dbg !85 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !86 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !91, metadata !DIExpression()), !dbg !92 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !93, metadata !DIExpression()), !dbg !94 - %call = call i64 @time(ptr noundef null) #5, !dbg !95 - %conv = trunc i64 %call to i32, !dbg !96 - call void @srand(i32 noundef %conv) #5, !dbg !97 - call void @printLine(ptr noundef @.str), !dbg !98 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE131_loop_01_good(), !dbg !99 - call void @printLine(ptr noundef @.str.1), !dbg !100 - call void @printLine(ptr noundef @.str.2), !dbg !101 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE131_loop_01_bad(), !dbg !102 - call void @printLine(ptr noundef @.str.3), !dbg !103 - ret i32 0, !dbg !104 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 - -declare void @printLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !105 { -entry: - %data = alloca ptr, align 8 - %source = alloca [10 x i32], align 16 - %i = alloca i64, align 8 - call void @llvm.dbg.declare(metadata ptr %data, metadata !106, metadata !DIExpression()), !dbg !107 - store ptr null, ptr %data, align 8, !dbg !108 - %0 = alloca i8, i64 40, align 16, !dbg !109 - store ptr %0, ptr %data, align 8, !dbg !110 - call void @llvm.dbg.declare(metadata ptr %source, metadata !111, metadata !DIExpression()), !dbg !113 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 40, i1 false), !dbg !113 - call void @llvm.dbg.declare(metadata ptr %i, metadata !114, metadata !DIExpression()), !dbg !115 - store i64 0, ptr %i, align 8, !dbg !116 - br label %for.cond, !dbg !118 - -for.cond: ; preds = %for.inc, %entry - %1 = load i64, ptr %i, align 8, !dbg !119 - %cmp = icmp ult i64 %1, 10, !dbg !121 - br i1 %cmp, label %for.body, label %for.end, !dbg !122 - -for.body: ; preds = %for.cond - %2 = load i64, ptr %i, align 8, !dbg !123 - %arrayidx = getelementptr inbounds [10 x i32], ptr %source, i64 0, i64 %2, !dbg !125 - %3 = load i32, ptr %arrayidx, align 4, !dbg !125 - %4 = load ptr, ptr %data, align 8, !dbg !126 - %5 = load i64, ptr %i, align 8, !dbg !127 - %arrayidx1 = getelementptr inbounds i32, ptr %4, i64 %5, !dbg !126 - store i32 %3, ptr %arrayidx1, align 4, !dbg !128 - %6 = load ptr, ptr %data, align 8, !dbg !129 - %7 = load i64, ptr %i, align 8, !dbg !130 - %add = add i64 %7, 1, !dbg !131 - %mul = mul i64 %add, 4, !dbg !132 - %sub = sub i64 %mul, 1, !dbg !133 - %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %6, i64 noundef %sub), !dbg !134 - %arraydecay = getelementptr inbounds [10 x i32], ptr %source, i64 0, i64 0, !dbg !135 - %8 = load i64, ptr %i, align 8, !dbg !136 - %add2 = add i64 %8, 1, !dbg !137 - %mul3 = mul i64 %add2, 4, !dbg !138 - %sub4 = sub i64 %mul3, 1, !dbg !139 - %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay, i64 noundef %sub4), !dbg !140 - br label %for.inc, !dbg !141 - -for.inc: ; preds = %for.body - %9 = load i64, ptr %i, align 8, !dbg !142 - %inc = add i64 %9, 1, !dbg !142 - store i64 %inc, ptr %i, align 8, !dbg !142 - br label %for.cond, !dbg !143, !llvm.loop !144 - -for.end: ; preds = %for.cond - %arraydecay6 = getelementptr inbounds [10 x i32], ptr %source, i64 0, i64 0, !dbg !146 - %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef 39), !dbg !147 - %10 = load ptr, ptr %data, align 8, !dbg !148 - %call8 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %10, i64 noundef 39), !dbg !149 - %11 = load ptr, ptr %data, align 8, !dbg !150 - %arrayidx9 = getelementptr inbounds i32, ptr %11, i64 0, !dbg !150 - %12 = load i32, ptr %arrayidx9, align 4, !dbg !150 - call void @printIntLine(i32 noundef %12), !dbg !151 - ret void, !dbg !152 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!29, !30, !31, !32, !33, !34, !35} -!llvm.ident = !{!36} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 89, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e233c99398d70ef42275982975277534") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 91, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 94, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 96, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "e233c99398d70ef42275982975277534") -!24 = !{!25, !27} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) -!26 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!27 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!28 = !{!0, !7, !12, !17} -!29 = !{i32 7, !"Dwarf Version", i32 5} -!30 = !{i32 2, !"Debug Info Version", i32 3} -!31 = !{i32 1, !"wchar_size", i32 4} -!32 = !{i32 8, !"PIC Level", i32 2} -!33 = !{i32 7, !"PIE Level", i32 2} -!34 = !{i32 7, !"uwtable", i32 2} -!35 = !{i32 7, !"frame-pointer", i32 2} -!36 = !{!"clang version 16.0.0"} -!37 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE131_loop_01_bad", scope: !2, file: !2, line: 21, type: !38, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!38 = !DISubroutineType(types: !39) -!39 = !{null} -!40 = !{} -!41 = !DILocalVariable(name: "data", scope: !37, file: !2, line: 23, type: !25) -!42 = !DILocation(line: 23, column: 11, scope: !37) -!43 = !DILocation(line: 24, column: 10, scope: !37) -!44 = !DILocation(line: 26, column: 19, scope: !37) -!45 = !DILocation(line: 26, column: 10, scope: !37) -!46 = !DILocalVariable(name: "source", scope: !47, file: !2, line: 28, type: !48) -!47 = distinct !DILexicalBlock(scope: !37, file: !2, line: 27, column: 5) -!48 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 320, elements: !49) -!49 = !{!50} -!50 = !DISubrange(count: 10) -!51 = !DILocation(line: 28, column: 13, scope: !47) -!52 = !DILocalVariable(name: "i", scope: !47, file: !2, line: 29, type: !53) -!53 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !54, line: 46, baseType: !55) -!54 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!55 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) -!56 = !DILocation(line: 29, column: 16, scope: !47) -!57 = !DILocation(line: 31, column: 16, scope: !58) -!58 = distinct !DILexicalBlock(scope: !47, file: !2, line: 31, column: 9) -!59 = !DILocation(line: 31, column: 14, scope: !58) -!60 = !DILocation(line: 31, column: 21, scope: !61) -!61 = distinct !DILexicalBlock(scope: !58, file: !2, line: 31, column: 9) -!62 = !DILocation(line: 31, column: 23, scope: !61) -!63 = !DILocation(line: 31, column: 9, scope: !58) -!64 = !DILocation(line: 33, column: 30, scope: !65) -!65 = distinct !DILexicalBlock(scope: !61, file: !2, line: 32, column: 9) -!66 = !DILocation(line: 33, column: 23, scope: !65) -!67 = !DILocation(line: 33, column: 13, scope: !65) -!68 = !DILocation(line: 33, column: 18, scope: !65) -!69 = !DILocation(line: 33, column: 21, scope: !65) -!70 = !DILocation(line: 34, column: 9, scope: !65) -!71 = !DILocation(line: 31, column: 30, scope: !61) -!72 = !DILocation(line: 31, column: 9, scope: !61) -!73 = distinct !{!73, !63, !74, !75} -!74 = !DILocation(line: 34, column: 9, scope: !58) -!75 = !{!"llvm.loop.mustprogress"} -!76 = !DILocation(line: 35, column: 24, scope: !47) -!77 = !DILocation(line: 35, column: 9, scope: !47) -!78 = !DILocation(line: 36, column: 26, scope: !47) -!79 = !DILocation(line: 36, column: 9, scope: !47) -!80 = !DILocation(line: 37, column: 22, scope: !47) -!81 = !DILocation(line: 37, column: 9, scope: !47) -!82 = !DILocation(line: 39, column: 1, scope: !37) -!83 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE131_loop_01_good", scope: !2, file: !2, line: 69, type: !38, scopeLine: 70, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!84 = !DILocation(line: 71, column: 5, scope: !83) -!85 = !DILocation(line: 72, column: 1, scope: !83) -!86 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 84, type: !87, scopeLine: 85, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!87 = !DISubroutineType(types: !88) -!88 = !{!26, !26, !89} -!89 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !90, size: 64) -!90 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!91 = !DILocalVariable(name: "argc", arg: 1, scope: !86, file: !2, line: 84, type: !26) -!92 = !DILocation(line: 84, column: 14, scope: !86) -!93 = !DILocalVariable(name: "argv", arg: 2, scope: !86, file: !2, line: 84, type: !89) -!94 = !DILocation(line: 84, column: 27, scope: !86) -!95 = !DILocation(line: 87, column: 22, scope: !86) -!96 = !DILocation(line: 87, column: 12, scope: !86) -!97 = !DILocation(line: 87, column: 5, scope: !86) -!98 = !DILocation(line: 89, column: 5, scope: !86) -!99 = !DILocation(line: 90, column: 5, scope: !86) -!100 = !DILocation(line: 91, column: 5, scope: !86) -!101 = !DILocation(line: 94, column: 5, scope: !86) -!102 = !DILocation(line: 95, column: 5, scope: !86) -!103 = !DILocation(line: 96, column: 5, scope: !86) -!104 = !DILocation(line: 98, column: 5, scope: !86) -!105 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 46, type: !38, scopeLine: 47, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !40) -!106 = !DILocalVariable(name: "data", scope: !105, file: !2, line: 48, type: !25) -!107 = !DILocation(line: 48, column: 11, scope: !105) -!108 = !DILocation(line: 49, column: 10, scope: !105) -!109 = !DILocation(line: 51, column: 19, scope: !105) -!110 = !DILocation(line: 51, column: 10, scope: !105) -!111 = !DILocalVariable(name: "source", scope: !112, file: !2, line: 53, type: !48) -!112 = distinct !DILexicalBlock(scope: !105, file: !2, line: 52, column: 5) -!113 = !DILocation(line: 53, column: 13, scope: !112) -!114 = !DILocalVariable(name: "i", scope: !112, file: !2, line: 54, type: !53) -!115 = !DILocation(line: 54, column: 16, scope: !112) -!116 = !DILocation(line: 56, column: 16, scope: !117) -!117 = distinct !DILexicalBlock(scope: !112, file: !2, line: 56, column: 9) -!118 = !DILocation(line: 56, column: 14, scope: !117) -!119 = !DILocation(line: 56, column: 21, scope: !120) -!120 = distinct !DILexicalBlock(scope: !117, file: !2, line: 56, column: 9) -!121 = !DILocation(line: 56, column: 23, scope: !120) -!122 = !DILocation(line: 56, column: 9, scope: !117) -!123 = !DILocation(line: 58, column: 30, scope: !124) -!124 = distinct !DILexicalBlock(scope: !120, file: !2, line: 57, column: 9) -!125 = !DILocation(line: 58, column: 23, scope: !124) -!126 = !DILocation(line: 58, column: 13, scope: !124) -!127 = !DILocation(line: 58, column: 18, scope: !124) -!128 = !DILocation(line: 58, column: 21, scope: !124) -!129 = !DILocation(line: 59, column: 28, scope: !124) -!130 = !DILocation(line: 59, column: 35, scope: !124) -!131 = !DILocation(line: 59, column: 36, scope: !124) -!132 = !DILocation(line: 59, column: 40, scope: !124) -!133 = !DILocation(line: 59, column: 54, scope: !124) -!134 = !DILocation(line: 59, column: 13, scope: !124) -!135 = !DILocation(line: 60, column: 28, scope: !124) -!136 = !DILocation(line: 60, column: 37, scope: !124) -!137 = !DILocation(line: 60, column: 38, scope: !124) -!138 = !DILocation(line: 60, column: 42, scope: !124) -!139 = !DILocation(line: 60, column: 56, scope: !124) -!140 = !DILocation(line: 60, column: 13, scope: !124) -!141 = !DILocation(line: 61, column: 9, scope: !124) -!142 = !DILocation(line: 56, column: 30, scope: !120) -!143 = !DILocation(line: 56, column: 9, scope: !120) -!144 = distinct !{!144, !122, !145, !75} -!145 = !DILocation(line: 61, column: 9, scope: !117) -!146 = !DILocation(line: 62, column: 24, scope: !112) -!147 = !DILocation(line: 62, column: 9, scope: !112) -!148 = !DILocation(line: 63, column: 24, scope: !112) -!149 = !DILocation(line: 63, column: 9, scope: !112) -!150 = !DILocation(line: 65, column: 22, scope: !112) -!151 = !DILocation(line: 65, column: 9, scope: !112) -!152 = !DILocation(line: 67, column: 1, scope: !105) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01.c.bc deleted file mode 100644 index 77c6b460..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01.c.bc +++ /dev/null @@ -1,226 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01_bad() #0 !dbg !37 { -entry: - %data = alloca ptr, align 8 - %source = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !41, metadata !DIExpression()), !dbg !42 - store ptr null, ptr %data, align 8, !dbg !43 - %0 = alloca i8, i64 10, align 16, !dbg !44 - store ptr %0, ptr %data, align 8, !dbg !45 - call void @llvm.dbg.declare(metadata ptr %source, metadata !46, metadata !DIExpression()), !dbg !51 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 40, i1 false), !dbg !51 - %1 = load ptr, ptr %data, align 8, !dbg !52 - %arraydecay = getelementptr inbounds [10 x i32], ptr %source, i64 0, i64 0, !dbg !53 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1, ptr align 16 %arraydecay, i64 40, i1 false), !dbg !53 - %2 = load ptr, ptr %data, align 8, !dbg !54 - %call = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %2, i64 noundef 39), !dbg !55 - %arraydecay1 = getelementptr inbounds [10 x i32], ptr %source, i64 0, i64 0, !dbg !56 - %call2 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay1, i64 noundef 39), !dbg !57 - %3 = load ptr, ptr %data, align 8, !dbg !58 - %arrayidx = getelementptr inbounds i32, ptr %3, i64 0, !dbg !58 - %4 = load i32, ptr %arrayidx, align 4, !dbg !58 - call void @printIntLine(i32 noundef %4), !dbg !59 - ret void, !dbg !60 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare i32 @SAFE_BUFACCESS(...) #4 - -declare void @printIntLine(i32 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01_good() #0 !dbg !61 { -entry: - call void @goodG2B(), !dbg !62 - ret void, !dbg !63 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !64 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !69, metadata !DIExpression()), !dbg !70 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !71, metadata !DIExpression()), !dbg !72 - %call = call i64 @time(ptr noundef null) #6, !dbg !73 - %conv = trunc i64 %call to i32, !dbg !74 - call void @srand(i32 noundef %conv) #6, !dbg !75 - call void @printLine(ptr noundef @.str), !dbg !76 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01_good(), !dbg !77 - call void @printLine(ptr noundef @.str.1), !dbg !78 - call void @printLine(ptr noundef @.str.2), !dbg !79 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01_bad(), !dbg !80 - call void @printLine(ptr noundef @.str.3), !dbg !81 - ret i32 0, !dbg !82 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !83 { -entry: - %data = alloca ptr, align 8 - %source = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !84, metadata !DIExpression()), !dbg !85 - store ptr null, ptr %data, align 8, !dbg !86 - %0 = alloca i8, i64 40, align 16, !dbg !87 - store ptr %0, ptr %data, align 8, !dbg !88 - call void @llvm.dbg.declare(metadata ptr %source, metadata !89, metadata !DIExpression()), !dbg !91 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 40, i1 false), !dbg !91 - %1 = load ptr, ptr %data, align 8, !dbg !92 - %arraydecay = getelementptr inbounds [10 x i32], ptr %source, i64 0, i64 0, !dbg !93 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1, ptr align 16 %arraydecay, i64 40, i1 false), !dbg !93 - %2 = load ptr, ptr %data, align 8, !dbg !94 - %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %2, i64 noundef 39), !dbg !95 - %arraydecay1 = getelementptr inbounds [10 x i32], ptr %source, i64 0, i64 0, !dbg !96 - %call2 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay1, i64 noundef 39), !dbg !97 - %3 = load ptr, ptr %data, align 8, !dbg !98 - %arrayidx = getelementptr inbounds i32, ptr %3, i64 0, !dbg !98 - %4 = load i32, ptr %arrayidx, align 4, !dbg !98 - call void @printIntLine(i32 noundef %4), !dbg !99 - ret void, !dbg !100 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!29, !30, !31, !32, !33, !34, !35} -!llvm.ident = !{!36} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 80, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "216ce47c26f3879f4108172e433c08aa") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 82, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 85, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 87, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "216ce47c26f3879f4108172e433c08aa") -!24 = !{!25, !27} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) -!26 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!27 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!28 = !{!0, !7, !12, !17} -!29 = !{i32 7, !"Dwarf Version", i32 5} -!30 = !{i32 2, !"Debug Info Version", i32 3} -!31 = !{i32 1, !"wchar_size", i32 4} -!32 = !{i32 8, !"PIC Level", i32 2} -!33 = !{i32 7, !"PIE Level", i32 2} -!34 = !{i32 7, !"uwtable", i32 2} -!35 = !{i32 7, !"frame-pointer", i32 2} -!36 = !{!"clang version 16.0.0"} -!37 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01_bad", scope: !2, file: !2, line: 21, type: !38, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!38 = !DISubroutineType(types: !39) -!39 = !{null} -!40 = !{} -!41 = !DILocalVariable(name: "data", scope: !37, file: !2, line: 23, type: !25) -!42 = !DILocation(line: 23, column: 11, scope: !37) -!43 = !DILocation(line: 24, column: 10, scope: !37) -!44 = !DILocation(line: 26, column: 19, scope: !37) -!45 = !DILocation(line: 26, column: 10, scope: !37) -!46 = !DILocalVariable(name: "source", scope: !47, file: !2, line: 28, type: !48) -!47 = distinct !DILexicalBlock(scope: !37, file: !2, line: 27, column: 5) -!48 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 320, elements: !49) -!49 = !{!50} -!50 = !DISubrange(count: 10) -!51 = !DILocation(line: 28, column: 13, scope: !47) -!52 = !DILocation(line: 31, column: 16, scope: !47) -!53 = !DILocation(line: 31, column: 9, scope: !47) -!54 = !DILocation(line: 33, column: 26, scope: !47) -!55 = !DILocation(line: 33, column: 9, scope: !47) -!56 = !DILocation(line: 34, column: 24, scope: !47) -!57 = !DILocation(line: 34, column: 9, scope: !47) -!58 = !DILocation(line: 35, column: 22, scope: !47) -!59 = !DILocation(line: 35, column: 9, scope: !47) -!60 = !DILocation(line: 37, column: 1, scope: !37) -!61 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE131_memcpy_01_good", scope: !2, file: !2, line: 60, type: !38, scopeLine: 61, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!62 = !DILocation(line: 62, column: 5, scope: !61) -!63 = !DILocation(line: 63, column: 1, scope: !61) -!64 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 75, type: !65, scopeLine: 76, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!65 = !DISubroutineType(types: !66) -!66 = !{!26, !26, !67} -!67 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !68, size: 64) -!68 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!69 = !DILocalVariable(name: "argc", arg: 1, scope: !64, file: !2, line: 75, type: !26) -!70 = !DILocation(line: 75, column: 14, scope: !64) -!71 = !DILocalVariable(name: "argv", arg: 2, scope: !64, file: !2, line: 75, type: !67) -!72 = !DILocation(line: 75, column: 27, scope: !64) -!73 = !DILocation(line: 78, column: 22, scope: !64) -!74 = !DILocation(line: 78, column: 12, scope: !64) -!75 = !DILocation(line: 78, column: 5, scope: !64) -!76 = !DILocation(line: 80, column: 5, scope: !64) -!77 = !DILocation(line: 81, column: 5, scope: !64) -!78 = !DILocation(line: 82, column: 5, scope: !64) -!79 = !DILocation(line: 85, column: 5, scope: !64) -!80 = !DILocation(line: 86, column: 5, scope: !64) -!81 = !DILocation(line: 87, column: 5, scope: !64) -!82 = !DILocation(line: 89, column: 5, scope: !64) -!83 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 44, type: !38, scopeLine: 45, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !40) -!84 = !DILocalVariable(name: "data", scope: !83, file: !2, line: 46, type: !25) -!85 = !DILocation(line: 46, column: 11, scope: !83) -!86 = !DILocation(line: 47, column: 10, scope: !83) -!87 = !DILocation(line: 49, column: 19, scope: !83) -!88 = !DILocation(line: 49, column: 10, scope: !83) -!89 = !DILocalVariable(name: "source", scope: !90, file: !2, line: 51, type: !48) -!90 = distinct !DILexicalBlock(scope: !83, file: !2, line: 50, column: 5) -!91 = !DILocation(line: 51, column: 13, scope: !90) -!92 = !DILocation(line: 53, column: 16, scope: !90) -!93 = !DILocation(line: 53, column: 9, scope: !90) -!94 = !DILocation(line: 54, column: 24, scope: !90) -!95 = !DILocation(line: 54, column: 9, scope: !90) -!96 = !DILocation(line: 55, column: 24, scope: !90) -!97 = !DILocation(line: 55, column: 9, scope: !90) -!98 = !DILocation(line: 56, column: 22, scope: !90) -!99 = !DILocation(line: 56, column: 9, scope: !90) -!100 = !DILocation(line: 58, column: 1, scope: !83) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01.c.bc deleted file mode 100644 index d4920fed..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01.c.bc +++ /dev/null @@ -1,256 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01.c" -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-unknown-linux-gnu" - -@__const.CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01_bad.source = private unnamed_addr constant [11 x i8] c"AAAAAAAAAA\00", align 1 -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 -@__const.goodG2B.source = private unnamed_addr constant [11 x i8] c"AAAAAAAAAA\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01_bad() #0 !dbg !36 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %source = alloca [11 x i8], align 1 - call void @llvm.dbg.declare(metadata ptr %data, metadata !40, metadata !DIExpression()), !dbg !41 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !42, metadata !DIExpression()), !dbg !43 - %0 = alloca i8, i64 10, align 16, !dbg !44 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !43 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !45, metadata !DIExpression()), !dbg !46 - %1 = alloca i8, i64 11, align 16, !dbg !47 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !46 - %2 = load ptr, ptr %dataBadBuffer, align 8, !dbg !48 - store ptr %2, ptr %data, align 8, !dbg !49 - %3 = load ptr, ptr %data, align 8, !dbg !50 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 0, !dbg !50 - store i8 0, ptr %arrayidx, align 1, !dbg !51 - call void @llvm.dbg.declare(metadata ptr %source, metadata !52, metadata !DIExpression()), !dbg !57 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %source, ptr align 1 @__const.CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01_bad.source, i64 11, i1 false), !dbg !57 - %4 = load ptr, ptr %data, align 8, !dbg !58 - %arraydecay = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !59 - %call = call ptr @strcpy(ptr noundef %4, ptr noundef %arraydecay) #5, !dbg !60 - %5 = load ptr, ptr %data, align 8, !dbg !61 - %call1 = call i32 (ptr, i32, ...) @UNSAFE_BUFACCESS(ptr noundef %5, i32 noundef 10), !dbg !62 - %arraydecay2 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !63 - %call3 = call i32 (ptr, i32, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i32 noundef 10), !dbg !64 - %6 = load ptr, ptr %data, align 8, !dbg !65 - call void @printLine(ptr noundef %6), !dbg !66 - ret void, !dbg !67 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 - -; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare i32 @SAFE_BUFACCESS(...) #4 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01_good() #0 !dbg !68 { -entry: - call void @goodG2B(), !dbg !69 - ret void, !dbg !70 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !71 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !76, metadata !DIExpression()), !dbg !77 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !78, metadata !DIExpression()), !dbg !79 - %call = call i64 @time(ptr noundef null) #5, !dbg !80 - %conv = trunc i64 %call to i32, !dbg !81 - call void @srand(i32 noundef %conv) #5, !dbg !82 - call void @printLine(ptr noundef @.str), !dbg !83 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01_good(), !dbg !84 - call void @printLine(ptr noundef @.str.1), !dbg !85 - call void @printLine(ptr noundef @.str.2), !dbg !86 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01_bad(), !dbg !87 - call void @printLine(ptr noundef @.str.3), !dbg !88 - ret i32 0, !dbg !89 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #3 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !90 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %source = alloca [11 x i8], align 1 - call void @llvm.dbg.declare(metadata ptr %data, metadata !91, metadata !DIExpression()), !dbg !92 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !93, metadata !DIExpression()), !dbg !94 - %0 = alloca i8, i64 10, align 16, !dbg !95 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !94 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !96, metadata !DIExpression()), !dbg !97 - %1 = alloca i8, i64 11, align 16, !dbg !98 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !97 - %2 = load ptr, ptr %dataGoodBuffer, align 8, !dbg !99 - store ptr %2, ptr %data, align 8, !dbg !100 - %3 = load ptr, ptr %data, align 8, !dbg !101 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 0, !dbg !101 - store i8 0, ptr %arrayidx, align 1, !dbg !102 - call void @llvm.dbg.declare(metadata ptr %source, metadata !103, metadata !DIExpression()), !dbg !105 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %source, ptr align 1 @__const.goodG2B.source, i64 11, i1 false), !dbg !105 - %4 = load ptr, ptr %data, align 8, !dbg !106 - %arraydecay = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !107 - %call = call ptr @strcpy(ptr noundef %4, ptr noundef %arraydecay) #5, !dbg !108 - %5 = load ptr, ptr %data, align 8, !dbg !109 - %call1 = call i32 (ptr, i32, ...) @SAFE_BUFACCESS(ptr noundef %5, i32 noundef 10), !dbg !110 - %arraydecay2 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !111 - %call3 = call i32 (ptr, i32, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i32 noundef 10), !dbg !112 - %6 = load ptr, ptr %data, align 8, !dbg !113 - call void @printLine(ptr noundef %6), !dbg !114 - ret void, !dbg !115 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #3 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!28, !29, !30, !31, !32, !33, !34} -!llvm.ident = !{!35} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 91, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "bcfb4ff5b7ea8e362278a7434a6bcda6") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 93, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 96, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 98, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "bcfb4ff5b7ea8e362278a7434a6bcda6") -!24 = !{!25, !26} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!26 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!27 = !{!0, !7, !12, !17} -!28 = !{i32 7, !"Dwarf Version", i32 5} -!29 = !{i32 2, !"Debug Info Version", i32 3} -!30 = !{i32 1, !"wchar_size", i32 4} -!31 = !{i32 8, !"PIC Level", i32 2} -!32 = !{i32 7, !"PIE Level", i32 2} -!33 = !{i32 7, !"uwtable", i32 2} -!34 = !{i32 7, !"frame-pointer", i32 2} -!35 = !{!"clang version 16.0.0"} -!36 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01_bad", scope: !2, file: !2, line: 28, type: !37, scopeLine: 29, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!37 = !DISubroutineType(types: !38) -!38 = !{null} -!39 = !{} -!40 = !DILocalVariable(name: "data", scope: !36, file: !2, line: 30, type: !25) -!41 = !DILocation(line: 30, column: 12, scope: !36) -!42 = !DILocalVariable(name: "dataBadBuffer", scope: !36, file: !2, line: 31, type: !25) -!43 = !DILocation(line: 31, column: 12, scope: !36) -!44 = !DILocation(line: 31, column: 36, scope: !36) -!45 = !DILocalVariable(name: "dataGoodBuffer", scope: !36, file: !2, line: 32, type: !25) -!46 = !DILocation(line: 32, column: 12, scope: !36) -!47 = !DILocation(line: 32, column: 37, scope: !36) -!48 = !DILocation(line: 35, column: 12, scope: !36) -!49 = !DILocation(line: 35, column: 10, scope: !36) -!50 = !DILocation(line: 36, column: 5, scope: !36) -!51 = !DILocation(line: 36, column: 13, scope: !36) -!52 = !DILocalVariable(name: "source", scope: !53, file: !2, line: 38, type: !54) -!53 = distinct !DILexicalBlock(scope: !36, file: !2, line: 37, column: 5) -!54 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 88, elements: !55) -!55 = !{!56} -!56 = !DISubrange(count: 11) -!57 = !DILocation(line: 38, column: 14, scope: !53) -!58 = !DILocation(line: 40, column: 16, scope: !53) -!59 = !DILocation(line: 40, column: 22, scope: !53) -!60 = !DILocation(line: 40, column: 9, scope: !53) -!61 = !DILocation(line: 41, column: 26, scope: !53) -!62 = !DILocation(line: 41, column: 9, scope: !53) -!63 = !DILocation(line: 42, column: 24, scope: !53) -!64 = !DILocation(line: 42, column: 9, scope: !53) -!65 = !DILocation(line: 43, column: 19, scope: !53) -!66 = !DILocation(line: 43, column: 9, scope: !53) -!67 = !DILocation(line: 45, column: 1, scope: !36) -!68 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01_good", scope: !2, file: !2, line: 71, type: !37, scopeLine: 72, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!69 = !DILocation(line: 73, column: 5, scope: !68) -!70 = !DILocation(line: 74, column: 1, scope: !68) -!71 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 86, type: !72, scopeLine: 87, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!72 = !DISubroutineType(types: !73) -!73 = !{!74, !74, !75} -!74 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!75 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64) -!76 = !DILocalVariable(name: "argc", arg: 1, scope: !71, file: !2, line: 86, type: !74) -!77 = !DILocation(line: 86, column: 14, scope: !71) -!78 = !DILocalVariable(name: "argv", arg: 2, scope: !71, file: !2, line: 86, type: !75) -!79 = !DILocation(line: 86, column: 27, scope: !71) -!80 = !DILocation(line: 89, column: 22, scope: !71) -!81 = !DILocation(line: 89, column: 12, scope: !71) -!82 = !DILocation(line: 89, column: 5, scope: !71) -!83 = !DILocation(line: 91, column: 5, scope: !71) -!84 = !DILocation(line: 92, column: 5, scope: !71) -!85 = !DILocation(line: 93, column: 5, scope: !71) -!86 = !DILocation(line: 96, column: 5, scope: !71) -!87 = !DILocation(line: 97, column: 5, scope: !71) -!88 = !DILocation(line: 98, column: 5, scope: !71) -!89 = !DILocation(line: 100, column: 5, scope: !71) -!90 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 52, type: !37, scopeLine: 53, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !39) -!91 = !DILocalVariable(name: "data", scope: !90, file: !2, line: 54, type: !25) -!92 = !DILocation(line: 54, column: 12, scope: !90) -!93 = !DILocalVariable(name: "dataBadBuffer", scope: !90, file: !2, line: 55, type: !25) -!94 = !DILocation(line: 55, column: 12, scope: !90) -!95 = !DILocation(line: 55, column: 36, scope: !90) -!96 = !DILocalVariable(name: "dataGoodBuffer", scope: !90, file: !2, line: 56, type: !25) -!97 = !DILocation(line: 56, column: 12, scope: !90) -!98 = !DILocation(line: 56, column: 37, scope: !90) -!99 = !DILocation(line: 59, column: 12, scope: !90) -!100 = !DILocation(line: 59, column: 10, scope: !90) -!101 = !DILocation(line: 60, column: 5, scope: !90) -!102 = !DILocation(line: 60, column: 13, scope: !90) -!103 = !DILocalVariable(name: "source", scope: !104, file: !2, line: 62, type: !54) -!104 = distinct !DILexicalBlock(scope: !90, file: !2, line: 61, column: 5) -!105 = !DILocation(line: 62, column: 14, scope: !104) -!106 = !DILocation(line: 64, column: 16, scope: !104) -!107 = !DILocation(line: 64, column: 22, scope: !104) -!108 = !DILocation(line: 64, column: 9, scope: !104) -!109 = !DILocation(line: 65, column: 24, scope: !104) -!110 = !DILocation(line: 65, column: 9, scope: !104) -!111 = !DILocation(line: 66, column: 24, scope: !104) -!112 = !DILocation(line: 66, column: 9, scope: !104) -!113 = !DILocation(line: 67, column: 19, scope: !104) -!114 = !DILocation(line: 67, column: 9, scope: !104) -!115 = !DILocation(line: 69, column: 1, scope: !90) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01.c.bc deleted file mode 100644 index 14ec8e96..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01.c.bc +++ /dev/null @@ -1,312 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01.c" -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-unknown-linux-gnu" - -@__const.CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01_bad.source = private unnamed_addr constant [11 x i8] c"AAAAAAAAAA\00", align 1 -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 -@__const.goodG2B.source = private unnamed_addr constant [11 x i8] c"AAAAAAAAAA\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01_bad() #0 !dbg !36 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %source = alloca [11 x i8], align 1 - call void @llvm.dbg.declare(metadata ptr %data, metadata !40, metadata !DIExpression()), !dbg !41 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !42, metadata !DIExpression()), !dbg !43 - %0 = alloca i8, i64 10, align 16, !dbg !44 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !43 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !45, metadata !DIExpression()), !dbg !46 - %1 = alloca i8, i64 11, align 16, !dbg !47 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !46 - %2 = load ptr, ptr %dataBadBuffer, align 8, !dbg !48 - store ptr %2, ptr %data, align 8, !dbg !49 - %3 = load ptr, ptr %data, align 8, !dbg !50 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 0, !dbg !50 - store i8 0, ptr %arrayidx, align 1, !dbg !51 - call void @llvm.dbg.declare(metadata ptr %source, metadata !52, metadata !DIExpression()), !dbg !57 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %source, ptr align 1 @__const.CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01_bad.source, i64 11, i1 false), !dbg !57 - %4 = load ptr, ptr %data, align 8, !dbg !58 - %arraydecay = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !59 - %arraydecay1 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !60 - %call = call i64 @strlen(ptr noundef %arraydecay1) #6, !dbg !61 - %add = add i64 %call, 1, !dbg !62 - %mul = mul i64 %add, 1, !dbg !63 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %4, ptr align 1 %arraydecay, i64 %mul, i1 false), !dbg !59 - %5 = load ptr, ptr %data, align 8, !dbg !64 - %arraydecay2 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !65 - %call3 = call i64 @strlen(ptr noundef %arraydecay2) #6, !dbg !66 - %add4 = add i64 %call3, 1, !dbg !67 - %mul5 = mul i64 %add4, 1, !dbg !68 - %sub = sub i64 %mul5, 1, !dbg !69 - %call6 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %5, i64 noundef %sub), !dbg !70 - %arraydecay7 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !71 - %arraydecay8 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !72 - %call9 = call i64 @strlen(ptr noundef %arraydecay8) #6, !dbg !73 - %add10 = add i64 %call9, 1, !dbg !74 - %mul11 = mul i64 %add10, 1, !dbg !75 - %sub12 = sub i64 %mul11, 1, !dbg !76 - %call13 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay7, i64 noundef %sub12), !dbg !77 - %6 = load ptr, ptr %data, align 8, !dbg !78 - call void @printLine(ptr noundef %6), !dbg !79 - ret void, !dbg !80 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare i32 @SAFE_BUFACCESS(...) #4 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01_good() #0 !dbg !81 { -entry: - call void @goodG2B(), !dbg !82 - ret void, !dbg !83 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !84 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !89, metadata !DIExpression()), !dbg !90 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !91, metadata !DIExpression()), !dbg !92 - %call = call i64 @time(ptr noundef null) #7, !dbg !93 - %conv = trunc i64 %call to i32, !dbg !94 - call void @srand(i32 noundef %conv) #7, !dbg !95 - call void @printLine(ptr noundef @.str), !dbg !96 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01_good(), !dbg !97 - call void @printLine(ptr noundef @.str.1), !dbg !98 - call void @printLine(ptr noundef @.str.2), !dbg !99 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01_bad(), !dbg !100 - call void @printLine(ptr noundef @.str.3), !dbg !101 - ret i32 0, !dbg !102 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !103 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %source = alloca [11 x i8], align 1 - call void @llvm.dbg.declare(metadata ptr %data, metadata !104, metadata !DIExpression()), !dbg !105 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !106, metadata !DIExpression()), !dbg !107 - %0 = alloca i8, i64 10, align 16, !dbg !108 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !107 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !109, metadata !DIExpression()), !dbg !110 - %1 = alloca i8, i64 11, align 16, !dbg !111 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !110 - %2 = load ptr, ptr %dataGoodBuffer, align 8, !dbg !112 - store ptr %2, ptr %data, align 8, !dbg !113 - %3 = load ptr, ptr %data, align 8, !dbg !114 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 0, !dbg !114 - store i8 0, ptr %arrayidx, align 1, !dbg !115 - call void @llvm.dbg.declare(metadata ptr %source, metadata !116, metadata !DIExpression()), !dbg !118 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %source, ptr align 1 @__const.goodG2B.source, i64 11, i1 false), !dbg !118 - %4 = load ptr, ptr %data, align 8, !dbg !119 - %arraydecay = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !120 - %arraydecay1 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !121 - %call = call i64 @strlen(ptr noundef %arraydecay1) #6, !dbg !122 - %add = add i64 %call, 1, !dbg !123 - %mul = mul i64 %add, 1, !dbg !124 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %4, ptr align 1 %arraydecay, i64 %mul, i1 false), !dbg !120 - %5 = load ptr, ptr %data, align 8, !dbg !125 - %arraydecay2 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !126 - %call3 = call i64 @strlen(ptr noundef %arraydecay2) #6, !dbg !127 - %add4 = add i64 %call3, 1, !dbg !128 - %mul5 = mul i64 %add4, 1, !dbg !129 - %sub = sub i64 %mul5, 1, !dbg !130 - %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %5, i64 noundef %sub), !dbg !131 - %arraydecay7 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !132 - %arraydecay8 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !133 - %call9 = call i64 @strlen(ptr noundef %arraydecay8) #6, !dbg !134 - %add10 = add i64 %call9, 1, !dbg !135 - %mul11 = mul i64 %add10, 1, !dbg !136 - %sub12 = sub i64 %mul11, 1, !dbg !137 - %call13 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay7, i64 noundef %sub12), !dbg !138 - %6 = load ptr, ptr %data, align 8, !dbg !139 - call void @printLine(ptr noundef %6), !dbg !140 - ret void, !dbg !141 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #3 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind willreturn memory(read) } -attributes #7 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!28, !29, !30, !31, !32, !33, !34} -!llvm.ident = !{!35} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 93, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "81ff5befc8fa89045176471f65cb3178") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 95, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 98, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 100, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "81ff5befc8fa89045176471f65cb3178") -!24 = !{!25, !26} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!26 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!27 = !{!0, !7, !12, !17} -!28 = !{i32 7, !"Dwarf Version", i32 5} -!29 = !{i32 2, !"Debug Info Version", i32 3} -!30 = !{i32 1, !"wchar_size", i32 4} -!31 = !{i32 8, !"PIC Level", i32 2} -!32 = !{i32 7, !"PIE Level", i32 2} -!33 = !{i32 7, !"uwtable", i32 2} -!34 = !{i32 7, !"frame-pointer", i32 2} -!35 = !{!"clang version 16.0.0"} -!36 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01_bad", scope: !2, file: !2, line: 28, type: !37, scopeLine: 29, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!37 = !DISubroutineType(types: !38) -!38 = !{null} -!39 = !{} -!40 = !DILocalVariable(name: "data", scope: !36, file: !2, line: 30, type: !25) -!41 = !DILocation(line: 30, column: 12, scope: !36) -!42 = !DILocalVariable(name: "dataBadBuffer", scope: !36, file: !2, line: 31, type: !25) -!43 = !DILocation(line: 31, column: 12, scope: !36) -!44 = !DILocation(line: 31, column: 36, scope: !36) -!45 = !DILocalVariable(name: "dataGoodBuffer", scope: !36, file: !2, line: 32, type: !25) -!46 = !DILocation(line: 32, column: 12, scope: !36) -!47 = !DILocation(line: 32, column: 37, scope: !36) -!48 = !DILocation(line: 35, column: 12, scope: !36) -!49 = !DILocation(line: 35, column: 10, scope: !36) -!50 = !DILocation(line: 36, column: 5, scope: !36) -!51 = !DILocation(line: 36, column: 13, scope: !36) -!52 = !DILocalVariable(name: "source", scope: !53, file: !2, line: 38, type: !54) -!53 = distinct !DILexicalBlock(scope: !36, file: !2, line: 37, column: 5) -!54 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 88, elements: !55) -!55 = !{!56} -!56 = !DISubrange(count: 11) -!57 = !DILocation(line: 38, column: 14, scope: !53) -!58 = !DILocation(line: 41, column: 16, scope: !53) -!59 = !DILocation(line: 41, column: 9, scope: !53) -!60 = !DILocation(line: 41, column: 38, scope: !53) -!61 = !DILocation(line: 41, column: 31, scope: !53) -!62 = !DILocation(line: 41, column: 46, scope: !53) -!63 = !DILocation(line: 41, column: 51, scope: !53) -!64 = !DILocation(line: 42, column: 26, scope: !53) -!65 = !DILocation(line: 42, column: 40, scope: !53) -!66 = !DILocation(line: 42, column: 33, scope: !53) -!67 = !DILocation(line: 42, column: 48, scope: !53) -!68 = !DILocation(line: 42, column: 53, scope: !53) -!69 = !DILocation(line: 42, column: 68, scope: !53) -!70 = !DILocation(line: 42, column: 9, scope: !53) -!71 = !DILocation(line: 43, column: 24, scope: !53) -!72 = !DILocation(line: 43, column: 40, scope: !53) -!73 = !DILocation(line: 43, column: 33, scope: !53) -!74 = !DILocation(line: 43, column: 48, scope: !53) -!75 = !DILocation(line: 43, column: 53, scope: !53) -!76 = !DILocation(line: 43, column: 68, scope: !53) -!77 = !DILocation(line: 43, column: 9, scope: !53) -!78 = !DILocation(line: 44, column: 19, scope: !53) -!79 = !DILocation(line: 44, column: 9, scope: !53) -!80 = !DILocation(line: 46, column: 1, scope: !36) -!81 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memcpy_01_good", scope: !2, file: !2, line: 73, type: !37, scopeLine: 74, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!82 = !DILocation(line: 75, column: 5, scope: !81) -!83 = !DILocation(line: 76, column: 1, scope: !81) -!84 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 88, type: !85, scopeLine: 89, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!85 = !DISubroutineType(types: !86) -!86 = !{!87, !87, !88} -!87 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!88 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64) -!89 = !DILocalVariable(name: "argc", arg: 1, scope: !84, file: !2, line: 88, type: !87) -!90 = !DILocation(line: 88, column: 14, scope: !84) -!91 = !DILocalVariable(name: "argv", arg: 2, scope: !84, file: !2, line: 88, type: !88) -!92 = !DILocation(line: 88, column: 27, scope: !84) -!93 = !DILocation(line: 91, column: 22, scope: !84) -!94 = !DILocation(line: 91, column: 12, scope: !84) -!95 = !DILocation(line: 91, column: 5, scope: !84) -!96 = !DILocation(line: 93, column: 5, scope: !84) -!97 = !DILocation(line: 94, column: 5, scope: !84) -!98 = !DILocation(line: 95, column: 5, scope: !84) -!99 = !DILocation(line: 98, column: 5, scope: !84) -!100 = !DILocation(line: 99, column: 5, scope: !84) -!101 = !DILocation(line: 100, column: 5, scope: !84) -!102 = !DILocation(line: 102, column: 5, scope: !84) -!103 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 53, type: !37, scopeLine: 54, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !39) -!104 = !DILocalVariable(name: "data", scope: !103, file: !2, line: 55, type: !25) -!105 = !DILocation(line: 55, column: 12, scope: !103) -!106 = !DILocalVariable(name: "dataBadBuffer", scope: !103, file: !2, line: 56, type: !25) -!107 = !DILocation(line: 56, column: 12, scope: !103) -!108 = !DILocation(line: 56, column: 36, scope: !103) -!109 = !DILocalVariable(name: "dataGoodBuffer", scope: !103, file: !2, line: 57, type: !25) -!110 = !DILocation(line: 57, column: 12, scope: !103) -!111 = !DILocation(line: 57, column: 37, scope: !103) -!112 = !DILocation(line: 60, column: 12, scope: !103) -!113 = !DILocation(line: 60, column: 10, scope: !103) -!114 = !DILocation(line: 61, column: 5, scope: !103) -!115 = !DILocation(line: 61, column: 13, scope: !103) -!116 = !DILocalVariable(name: "source", scope: !117, file: !2, line: 63, type: !54) -!117 = distinct !DILexicalBlock(scope: !103, file: !2, line: 62, column: 5) -!118 = !DILocation(line: 63, column: 14, scope: !117) -!119 = !DILocation(line: 66, column: 16, scope: !117) -!120 = !DILocation(line: 66, column: 9, scope: !117) -!121 = !DILocation(line: 66, column: 38, scope: !117) -!122 = !DILocation(line: 66, column: 31, scope: !117) -!123 = !DILocation(line: 66, column: 46, scope: !117) -!124 = !DILocation(line: 66, column: 51, scope: !117) -!125 = !DILocation(line: 67, column: 24, scope: !117) -!126 = !DILocation(line: 67, column: 38, scope: !117) -!127 = !DILocation(line: 67, column: 31, scope: !117) -!128 = !DILocation(line: 67, column: 46, scope: !117) -!129 = !DILocation(line: 67, column: 51, scope: !117) -!130 = !DILocation(line: 67, column: 66, scope: !117) -!131 = !DILocation(line: 67, column: 9, scope: !117) -!132 = !DILocation(line: 68, column: 24, scope: !117) -!133 = !DILocation(line: 68, column: 40, scope: !117) -!134 = !DILocation(line: 68, column: 33, scope: !117) -!135 = !DILocation(line: 68, column: 48, scope: !117) -!136 = !DILocation(line: 68, column: 53, scope: !117) -!137 = !DILocation(line: 68, column: 68, scope: !117) -!138 = !DILocation(line: 68, column: 9, scope: !117) -!139 = !DILocation(line: 69, column: 19, scope: !117) -!140 = !DILocation(line: 69, column: 9, scope: !117) -!141 = !DILocation(line: 71, column: 1, scope: !103) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01.c.bc deleted file mode 100644 index 2b8fde8c..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01.c.bc +++ /dev/null @@ -1,315 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01.c" -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-unknown-linux-gnu" - -@__const.CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01_bad.source = private unnamed_addr constant [11 x i8] c"AAAAAAAAAA\00", align 1 -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 -@__const.goodG2B.source = private unnamed_addr constant [11 x i8] c"AAAAAAAAAA\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01_bad() #0 !dbg !36 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %source = alloca [11 x i8], align 1 - call void @llvm.dbg.declare(metadata ptr %data, metadata !40, metadata !DIExpression()), !dbg !41 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !42, metadata !DIExpression()), !dbg !43 - %0 = alloca i8, i64 10, align 16, !dbg !44 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !43 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !45, metadata !DIExpression()), !dbg !46 - %1 = alloca i8, i64 11, align 16, !dbg !47 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !46 - %2 = load ptr, ptr %dataBadBuffer, align 8, !dbg !48 - store ptr %2, ptr %data, align 8, !dbg !49 - %3 = load ptr, ptr %data, align 8, !dbg !50 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 0, !dbg !50 - store i8 0, ptr %arrayidx, align 1, !dbg !51 - call void @llvm.dbg.declare(metadata ptr %source, metadata !52, metadata !DIExpression()), !dbg !57 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %source, ptr align 1 @__const.CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01_bad.source, i64 11, i1 false), !dbg !57 - %4 = load ptr, ptr %data, align 8, !dbg !58 - %arraydecay = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !59 - %arraydecay1 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !60 - %call = call i64 @strlen(ptr noundef %arraydecay1) #6, !dbg !61 - %add = add i64 %call, 1, !dbg !62 - %mul = mul i64 %add, 1, !dbg !63 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %4, ptr align 1 %arraydecay, i64 %mul, i1 false), !dbg !59 - %5 = load ptr, ptr %data, align 8, !dbg !64 - %arraydecay2 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !65 - %call3 = call i64 @strlen(ptr noundef %arraydecay2) #6, !dbg !66 - %add4 = add i64 %call3, 1, !dbg !67 - %mul5 = mul i64 %add4, 1, !dbg !68 - %sub = sub i64 %mul5, 1, !dbg !69 - %call6 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %5, i64 noundef %sub), !dbg !70 - %arraydecay7 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !71 - %arraydecay8 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !72 - %call9 = call i64 @strlen(ptr noundef %arraydecay8) #6, !dbg !73 - %add10 = add i64 %call9, 1, !dbg !74 - %mul11 = mul i64 %add10, 1, !dbg !75 - %sub12 = sub i64 %mul11, 1, !dbg !76 - %call13 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay7, i64 noundef %sub12), !dbg !77 - %6 = load ptr, ptr %data, align 8, !dbg !78 - call void @printLine(ptr noundef %6), !dbg !79 - ret void, !dbg !80 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #3 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #2 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare i32 @SAFE_BUFACCESS(...) #4 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01_good() #0 !dbg !81 { -entry: - call void @goodG2B(), !dbg !82 - ret void, !dbg !83 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !84 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !89, metadata !DIExpression()), !dbg !90 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !91, metadata !DIExpression()), !dbg !92 - %call = call i64 @time(ptr noundef null) #7, !dbg !93 - %conv = trunc i64 %call to i32, !dbg !94 - call void @srand(i32 noundef %conv) #7, !dbg !95 - call void @printLine(ptr noundef @.str), !dbg !96 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01_good(), !dbg !97 - call void @printLine(ptr noundef @.str.1), !dbg !98 - call void @printLine(ptr noundef @.str.2), !dbg !99 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01_bad(), !dbg !100 - call void @printLine(ptr noundef @.str.3), !dbg !101 - ret i32 0, !dbg !102 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !103 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %source = alloca [11 x i8], align 1 - call void @llvm.dbg.declare(metadata ptr %data, metadata !104, metadata !DIExpression()), !dbg !105 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !106, metadata !DIExpression()), !dbg !107 - %0 = alloca i8, i64 10, align 16, !dbg !108 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !107 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !109, metadata !DIExpression()), !dbg !110 - %1 = alloca i8, i64 11, align 16, !dbg !111 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !110 - %2 = load ptr, ptr %dataGoodBuffer, align 8, !dbg !112 - store ptr %2, ptr %data, align 8, !dbg !113 - %3 = load ptr, ptr %data, align 8, !dbg !114 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 0, !dbg !114 - store i8 0, ptr %arrayidx, align 1, !dbg !115 - call void @llvm.dbg.declare(metadata ptr %source, metadata !116, metadata !DIExpression()), !dbg !118 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %source, ptr align 1 @__const.goodG2B.source, i64 11, i1 false), !dbg !118 - %4 = load ptr, ptr %data, align 8, !dbg !119 - %arraydecay = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !120 - %arraydecay1 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !121 - %call = call i64 @strlen(ptr noundef %arraydecay1) #6, !dbg !122 - %add = add i64 %call, 1, !dbg !123 - %mul = mul i64 %add, 1, !dbg !124 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %4, ptr align 1 %arraydecay, i64 %mul, i1 false), !dbg !120 - %5 = load ptr, ptr %data, align 8, !dbg !125 - %arraydecay2 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !126 - %call3 = call i64 @strlen(ptr noundef %arraydecay2) #6, !dbg !127 - %add4 = add i64 %call3, 1, !dbg !128 - %mul5 = mul i64 %add4, 1, !dbg !129 - %sub = sub i64 %mul5, 1, !dbg !130 - %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %5, i64 noundef %sub), !dbg !131 - %arraydecay7 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !132 - %arraydecay8 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !133 - %call9 = call i64 @strlen(ptr noundef %arraydecay8) #6, !dbg !134 - %add10 = add i64 %call9, 1, !dbg !135 - %mul11 = mul i64 %add10, 1, !dbg !136 - %sub12 = sub i64 %mul11, 1, !dbg !137 - %call13 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay7, i64 noundef %sub12), !dbg !138 - %6 = load ptr, ptr %data, align 8, !dbg !139 - call void @printLine(ptr noundef %6), !dbg !140 - ret void, !dbg !141 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #3 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind willreturn memory(read) } -attributes #7 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!28, !29, !30, !31, !32, !33, !34} -!llvm.ident = !{!35} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 93, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fcf2ff7f8d1df024ff6a7fd6af7d0d75") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 95, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 98, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 100, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fcf2ff7f8d1df024ff6a7fd6af7d0d75") -!24 = !{!25, !26} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!26 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!27 = !{!0, !7, !12, !17} -!28 = !{i32 7, !"Dwarf Version", i32 5} -!29 = !{i32 2, !"Debug Info Version", i32 3} -!30 = !{i32 1, !"wchar_size", i32 4} -!31 = !{i32 8, !"PIC Level", i32 2} -!32 = !{i32 7, !"PIE Level", i32 2} -!33 = !{i32 7, !"uwtable", i32 2} -!34 = !{i32 7, !"frame-pointer", i32 2} -!35 = !{!"clang version 16.0.0"} -!36 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01_bad", scope: !2, file: !2, line: 28, type: !37, scopeLine: 29, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!37 = !DISubroutineType(types: !38) -!38 = !{null} -!39 = !{} -!40 = !DILocalVariable(name: "data", scope: !36, file: !2, line: 30, type: !25) -!41 = !DILocation(line: 30, column: 12, scope: !36) -!42 = !DILocalVariable(name: "dataBadBuffer", scope: !36, file: !2, line: 31, type: !25) -!43 = !DILocation(line: 31, column: 12, scope: !36) -!44 = !DILocation(line: 31, column: 36, scope: !36) -!45 = !DILocalVariable(name: "dataGoodBuffer", scope: !36, file: !2, line: 32, type: !25) -!46 = !DILocation(line: 32, column: 12, scope: !36) -!47 = !DILocation(line: 32, column: 37, scope: !36) -!48 = !DILocation(line: 35, column: 12, scope: !36) -!49 = !DILocation(line: 35, column: 10, scope: !36) -!50 = !DILocation(line: 36, column: 5, scope: !36) -!51 = !DILocation(line: 36, column: 13, scope: !36) -!52 = !DILocalVariable(name: "source", scope: !53, file: !2, line: 38, type: !54) -!53 = distinct !DILexicalBlock(scope: !36, file: !2, line: 37, column: 5) -!54 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 88, elements: !55) -!55 = !{!56} -!56 = !DISubrange(count: 11) -!57 = !DILocation(line: 38, column: 14, scope: !53) -!58 = !DILocation(line: 41, column: 17, scope: !53) -!59 = !DILocation(line: 41, column: 9, scope: !53) -!60 = !DILocation(line: 41, column: 39, scope: !53) -!61 = !DILocation(line: 41, column: 32, scope: !53) -!62 = !DILocation(line: 41, column: 47, scope: !53) -!63 = !DILocation(line: 41, column: 52, scope: !53) -!64 = !DILocation(line: 42, column: 26, scope: !53) -!65 = !DILocation(line: 42, column: 40, scope: !53) -!66 = !DILocation(line: 42, column: 33, scope: !53) -!67 = !DILocation(line: 42, column: 48, scope: !53) -!68 = !DILocation(line: 42, column: 53, scope: !53) -!69 = !DILocation(line: 42, column: 68, scope: !53) -!70 = !DILocation(line: 42, column: 9, scope: !53) -!71 = !DILocation(line: 43, column: 24, scope: !53) -!72 = !DILocation(line: 43, column: 40, scope: !53) -!73 = !DILocation(line: 43, column: 33, scope: !53) -!74 = !DILocation(line: 43, column: 48, scope: !53) -!75 = !DILocation(line: 43, column: 53, scope: !53) -!76 = !DILocation(line: 43, column: 68, scope: !53) -!77 = !DILocation(line: 43, column: 9, scope: !53) -!78 = !DILocation(line: 44, column: 19, scope: !53) -!79 = !DILocation(line: 44, column: 9, scope: !53) -!80 = !DILocation(line: 46, column: 1, scope: !36) -!81 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_memmove_01_good", scope: !2, file: !2, line: 73, type: !37, scopeLine: 74, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!82 = !DILocation(line: 75, column: 5, scope: !81) -!83 = !DILocation(line: 76, column: 1, scope: !81) -!84 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 88, type: !85, scopeLine: 89, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!85 = !DISubroutineType(types: !86) -!86 = !{!87, !87, !88} -!87 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!88 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64) -!89 = !DILocalVariable(name: "argc", arg: 1, scope: !84, file: !2, line: 88, type: !87) -!90 = !DILocation(line: 88, column: 14, scope: !84) -!91 = !DILocalVariable(name: "argv", arg: 2, scope: !84, file: !2, line: 88, type: !88) -!92 = !DILocation(line: 88, column: 27, scope: !84) -!93 = !DILocation(line: 91, column: 22, scope: !84) -!94 = !DILocation(line: 91, column: 12, scope: !84) -!95 = !DILocation(line: 91, column: 5, scope: !84) -!96 = !DILocation(line: 93, column: 5, scope: !84) -!97 = !DILocation(line: 94, column: 5, scope: !84) -!98 = !DILocation(line: 95, column: 5, scope: !84) -!99 = !DILocation(line: 98, column: 5, scope: !84) -!100 = !DILocation(line: 99, column: 5, scope: !84) -!101 = !DILocation(line: 100, column: 5, scope: !84) -!102 = !DILocation(line: 102, column: 5, scope: !84) -!103 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 53, type: !37, scopeLine: 54, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !39) -!104 = !DILocalVariable(name: "data", scope: !103, file: !2, line: 55, type: !25) -!105 = !DILocation(line: 55, column: 12, scope: !103) -!106 = !DILocalVariable(name: "dataBadBuffer", scope: !103, file: !2, line: 56, type: !25) -!107 = !DILocation(line: 56, column: 12, scope: !103) -!108 = !DILocation(line: 56, column: 36, scope: !103) -!109 = !DILocalVariable(name: "dataGoodBuffer", scope: !103, file: !2, line: 57, type: !25) -!110 = !DILocation(line: 57, column: 12, scope: !103) -!111 = !DILocation(line: 57, column: 37, scope: !103) -!112 = !DILocation(line: 60, column: 12, scope: !103) -!113 = !DILocation(line: 60, column: 10, scope: !103) -!114 = !DILocation(line: 61, column: 5, scope: !103) -!115 = !DILocation(line: 61, column: 13, scope: !103) -!116 = !DILocalVariable(name: "source", scope: !117, file: !2, line: 63, type: !54) -!117 = distinct !DILexicalBlock(scope: !103, file: !2, line: 62, column: 5) -!118 = !DILocation(line: 63, column: 14, scope: !117) -!119 = !DILocation(line: 66, column: 17, scope: !117) -!120 = !DILocation(line: 66, column: 9, scope: !117) -!121 = !DILocation(line: 66, column: 39, scope: !117) -!122 = !DILocation(line: 66, column: 32, scope: !117) -!123 = !DILocation(line: 66, column: 47, scope: !117) -!124 = !DILocation(line: 66, column: 52, scope: !117) -!125 = !DILocation(line: 67, column: 24, scope: !117) -!126 = !DILocation(line: 67, column: 38, scope: !117) -!127 = !DILocation(line: 67, column: 31, scope: !117) -!128 = !DILocation(line: 67, column: 46, scope: !117) -!129 = !DILocation(line: 67, column: 51, scope: !117) -!130 = !DILocation(line: 67, column: 66, scope: !117) -!131 = !DILocation(line: 67, column: 9, scope: !117) -!132 = !DILocation(line: 68, column: 24, scope: !117) -!133 = !DILocation(line: 68, column: 40, scope: !117) -!134 = !DILocation(line: 68, column: 33, scope: !117) -!135 = !DILocation(line: 68, column: 48, scope: !117) -!136 = !DILocation(line: 68, column: 53, scope: !117) -!137 = !DILocation(line: 68, column: 68, scope: !117) -!138 = !DILocation(line: 68, column: 9, scope: !117) -!139 = !DILocation(line: 69, column: 19, scope: !117) -!140 = !DILocation(line: 69, column: 9, scope: !117) -!141 = !DILocation(line: 71, column: 1, scope: !103) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01.c.bc deleted file mode 100644 index b676b601..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01.c.bc +++ /dev/null @@ -1,306 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01.c" -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-unknown-linux-gnu" - -@__const.CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01_bad.source = private unnamed_addr constant [11 x i8] c"AAAAAAAAAA\00", align 1 -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 -@__const.goodG2B.source = private unnamed_addr constant [11 x i8] c"AAAAAAAAAA\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01_bad() #0 !dbg !35 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [10 x i8], align 1 - %dataGoodBuffer = alloca [11 x i8], align 1 - %source = alloca [11 x i8], align 1 - call void @llvm.dbg.declare(metadata ptr %data, metadata !39, metadata !DIExpression()), !dbg !41 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !42, metadata !DIExpression()), !dbg !46 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !47, metadata !DIExpression()), !dbg !51 - %arraydecay = getelementptr inbounds [10 x i8], ptr %dataBadBuffer, i64 0, i64 0, !dbg !52 - store ptr %arraydecay, ptr %data, align 8, !dbg !53 - %0 = load ptr, ptr %data, align 8, !dbg !54 - %arrayidx = getelementptr inbounds i8, ptr %0, i64 0, !dbg !54 - store i8 0, ptr %arrayidx, align 1, !dbg !55 - call void @llvm.dbg.declare(metadata ptr %source, metadata !56, metadata !DIExpression()), !dbg !58 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %source, ptr align 1 @__const.CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01_bad.source, i64 11, i1 false), !dbg !58 - %1 = load ptr, ptr %data, align 8, !dbg !59 - %arraydecay1 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !60 - %arraydecay2 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !61 - %call = call i64 @strlen(ptr noundef %arraydecay2) #6, !dbg !62 - %add = add i64 %call, 1, !dbg !63 - %mul = mul i64 %add, 1, !dbg !64 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr align 1 %arraydecay1, i64 %mul, i1 false), !dbg !60 - %2 = load ptr, ptr %data, align 8, !dbg !65 - %arraydecay3 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !66 - %call4 = call i64 @strlen(ptr noundef %arraydecay3) #6, !dbg !67 - %add5 = add i64 %call4, 1, !dbg !68 - %mul6 = mul i64 %add5, 1, !dbg !69 - %sub = sub i64 %mul6, 1, !dbg !70 - %call7 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %2, i64 noundef %sub), !dbg !71 - %arraydecay8 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !72 - %arraydecay9 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !73 - %call10 = call i64 @strlen(ptr noundef %arraydecay9) #6, !dbg !74 - %add11 = add i64 %call10, 1, !dbg !75 - %mul12 = mul i64 %add11, 1, !dbg !76 - %sub13 = sub i64 %mul12, 1, !dbg !77 - %call14 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay8, i64 noundef %sub13), !dbg !78 - %3 = load ptr, ptr %data, align 8, !dbg !79 - call void @printLine(ptr noundef %3), !dbg !80 - ret void, !dbg !81 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #3 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #2 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare i32 @SAFE_BUFACCESS(...) #4 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01_good() #0 !dbg !82 { -entry: - call void @goodG2B(), !dbg !83 - ret void, !dbg !84 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !85 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !90, metadata !DIExpression()), !dbg !91 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !92, metadata !DIExpression()), !dbg !93 - %call = call i64 @time(ptr noundef null) #7, !dbg !94 - %conv = trunc i64 %call to i32, !dbg !95 - call void @srand(i32 noundef %conv) #7, !dbg !96 - call void @printLine(ptr noundef @.str), !dbg !97 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01_good(), !dbg !98 - call void @printLine(ptr noundef @.str.1), !dbg !99 - call void @printLine(ptr noundef @.str.2), !dbg !100 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01_bad(), !dbg !101 - call void @printLine(ptr noundef @.str.3), !dbg !102 - ret i32 0, !dbg !103 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !104 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [10 x i8], align 1 - %dataGoodBuffer = alloca [11 x i8], align 1 - %source = alloca [11 x i8], align 1 - call void @llvm.dbg.declare(metadata ptr %data, metadata !105, metadata !DIExpression()), !dbg !106 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !107, metadata !DIExpression()), !dbg !108 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !109, metadata !DIExpression()), !dbg !110 - %arraydecay = getelementptr inbounds [11 x i8], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !111 - store ptr %arraydecay, ptr %data, align 8, !dbg !112 - %0 = load ptr, ptr %data, align 8, !dbg !113 - %arrayidx = getelementptr inbounds i8, ptr %0, i64 0, !dbg !113 - store i8 0, ptr %arrayidx, align 1, !dbg !114 - call void @llvm.dbg.declare(metadata ptr %source, metadata !115, metadata !DIExpression()), !dbg !117 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %source, ptr align 1 @__const.goodG2B.source, i64 11, i1 false), !dbg !117 - %1 = load ptr, ptr %data, align 8, !dbg !118 - %arraydecay1 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !119 - %arraydecay2 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !120 - %call = call i64 @strlen(ptr noundef %arraydecay2) #6, !dbg !121 - %add = add i64 %call, 1, !dbg !122 - %mul = mul i64 %add, 1, !dbg !123 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr align 1 %arraydecay1, i64 %mul, i1 false), !dbg !119 - %2 = load ptr, ptr %data, align 8, !dbg !124 - %arraydecay3 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !125 - %call4 = call i64 @strlen(ptr noundef %arraydecay3) #6, !dbg !126 - %add5 = add i64 %call4, 1, !dbg !127 - %mul6 = mul i64 %add5, 1, !dbg !128 - %sub = sub i64 %mul6, 1, !dbg !129 - %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %2, i64 noundef %sub), !dbg !130 - %arraydecay8 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !131 - %arraydecay9 = getelementptr inbounds [11 x i8], ptr %source, i64 0, i64 0, !dbg !132 - %call10 = call i64 @strlen(ptr noundef %arraydecay9) #6, !dbg !133 - %add11 = add i64 %call10, 1, !dbg !134 - %mul12 = mul i64 %add11, 1, !dbg !135 - %sub13 = sub i64 %mul12, 1, !dbg !136 - %call14 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay8, i64 noundef %sub13), !dbg !137 - %3 = load ptr, ptr %data, align 8, !dbg !138 - call void @printLine(ptr noundef %3), !dbg !139 - ret void, !dbg !140 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #3 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind willreturn memory(read) } -attributes #7 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} -!llvm.ident = !{!34} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 93, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "eef10df1dfff5fcb933543e5d3138b00") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 95, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 98, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 100, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "eef10df1dfff5fcb933543e5d3138b00") -!24 = !{!25} -!25 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!26 = !{!0, !7, !12, !17} -!27 = !{i32 7, !"Dwarf Version", i32 5} -!28 = !{i32 2, !"Debug Info Version", i32 3} -!29 = !{i32 1, !"wchar_size", i32 4} -!30 = !{i32 8, !"PIC Level", i32 2} -!31 = !{i32 7, !"PIE Level", i32 2} -!32 = !{i32 7, !"uwtable", i32 2} -!33 = !{i32 7, !"frame-pointer", i32 2} -!34 = !{!"clang version 16.0.0"} -!35 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01_bad", scope: !2, file: !2, line: 28, type: !36, scopeLine: 29, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!36 = !DISubroutineType(types: !37) -!37 = !{null} -!38 = !{} -!39 = !DILocalVariable(name: "data", scope: !35, file: !2, line: 30, type: !40) -!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!41 = !DILocation(line: 30, column: 12, scope: !35) -!42 = !DILocalVariable(name: "dataBadBuffer", scope: !35, file: !2, line: 31, type: !43) -!43 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 80, elements: !44) -!44 = !{!45} -!45 = !DISubrange(count: 10) -!46 = !DILocation(line: 31, column: 10, scope: !35) -!47 = !DILocalVariable(name: "dataGoodBuffer", scope: !35, file: !2, line: 32, type: !48) -!48 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 88, elements: !49) -!49 = !{!50} -!50 = !DISubrange(count: 11) -!51 = !DILocation(line: 32, column: 10, scope: !35) -!52 = !DILocation(line: 35, column: 12, scope: !35) -!53 = !DILocation(line: 35, column: 10, scope: !35) -!54 = !DILocation(line: 36, column: 5, scope: !35) -!55 = !DILocation(line: 36, column: 13, scope: !35) -!56 = !DILocalVariable(name: "source", scope: !57, file: !2, line: 38, type: !48) -!57 = distinct !DILexicalBlock(scope: !35, file: !2, line: 37, column: 5) -!58 = !DILocation(line: 38, column: 14, scope: !57) -!59 = !DILocation(line: 41, column: 17, scope: !57) -!60 = !DILocation(line: 41, column: 9, scope: !57) -!61 = !DILocation(line: 41, column: 39, scope: !57) -!62 = !DILocation(line: 41, column: 32, scope: !57) -!63 = !DILocation(line: 41, column: 47, scope: !57) -!64 = !DILocation(line: 41, column: 52, scope: !57) -!65 = !DILocation(line: 42, column: 26, scope: !57) -!66 = !DILocation(line: 42, column: 40, scope: !57) -!67 = !DILocation(line: 42, column: 33, scope: !57) -!68 = !DILocation(line: 42, column: 48, scope: !57) -!69 = !DILocation(line: 42, column: 53, scope: !57) -!70 = !DILocation(line: 42, column: 68, scope: !57) -!71 = !DILocation(line: 42, column: 9, scope: !57) -!72 = !DILocation(line: 43, column: 24, scope: !57) -!73 = !DILocation(line: 43, column: 40, scope: !57) -!74 = !DILocation(line: 43, column: 33, scope: !57) -!75 = !DILocation(line: 43, column: 48, scope: !57) -!76 = !DILocation(line: 43, column: 53, scope: !57) -!77 = !DILocation(line: 43, column: 68, scope: !57) -!78 = !DILocation(line: 43, column: 9, scope: !57) -!79 = !DILocation(line: 44, column: 19, scope: !57) -!80 = !DILocation(line: 44, column: 9, scope: !57) -!81 = !DILocation(line: 46, column: 1, scope: !35) -!82 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE193_char_declare_memmove_01_good", scope: !2, file: !2, line: 73, type: !36, scopeLine: 74, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!83 = !DILocation(line: 75, column: 5, scope: !82) -!84 = !DILocation(line: 76, column: 1, scope: !82) -!85 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 88, type: !86, scopeLine: 89, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!86 = !DISubroutineType(types: !87) -!87 = !{!88, !88, !89} -!88 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!89 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !40, size: 64) -!90 = !DILocalVariable(name: "argc", arg: 1, scope: !85, file: !2, line: 88, type: !88) -!91 = !DILocation(line: 88, column: 14, scope: !85) -!92 = !DILocalVariable(name: "argv", arg: 2, scope: !85, file: !2, line: 88, type: !89) -!93 = !DILocation(line: 88, column: 27, scope: !85) -!94 = !DILocation(line: 91, column: 22, scope: !85) -!95 = !DILocation(line: 91, column: 12, scope: !85) -!96 = !DILocation(line: 91, column: 5, scope: !85) -!97 = !DILocation(line: 93, column: 5, scope: !85) -!98 = !DILocation(line: 94, column: 5, scope: !85) -!99 = !DILocation(line: 95, column: 5, scope: !85) -!100 = !DILocation(line: 98, column: 5, scope: !85) -!101 = !DILocation(line: 99, column: 5, scope: !85) -!102 = !DILocation(line: 100, column: 5, scope: !85) -!103 = !DILocation(line: 102, column: 5, scope: !85) -!104 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 53, type: !36, scopeLine: 54, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) -!105 = !DILocalVariable(name: "data", scope: !104, file: !2, line: 55, type: !40) -!106 = !DILocation(line: 55, column: 12, scope: !104) -!107 = !DILocalVariable(name: "dataBadBuffer", scope: !104, file: !2, line: 56, type: !43) -!108 = !DILocation(line: 56, column: 10, scope: !104) -!109 = !DILocalVariable(name: "dataGoodBuffer", scope: !104, file: !2, line: 57, type: !48) -!110 = !DILocation(line: 57, column: 10, scope: !104) -!111 = !DILocation(line: 60, column: 12, scope: !104) -!112 = !DILocation(line: 60, column: 10, scope: !104) -!113 = !DILocation(line: 61, column: 5, scope: !104) -!114 = !DILocation(line: 61, column: 13, scope: !104) -!115 = !DILocalVariable(name: "source", scope: !116, file: !2, line: 63, type: !48) -!116 = distinct !DILexicalBlock(scope: !104, file: !2, line: 62, column: 5) -!117 = !DILocation(line: 63, column: 14, scope: !116) -!118 = !DILocation(line: 66, column: 17, scope: !116) -!119 = !DILocation(line: 66, column: 9, scope: !116) -!120 = !DILocation(line: 66, column: 39, scope: !116) -!121 = !DILocation(line: 66, column: 32, scope: !116) -!122 = !DILocation(line: 66, column: 47, scope: !116) -!123 = !DILocation(line: 66, column: 52, scope: !116) -!124 = !DILocation(line: 67, column: 24, scope: !116) -!125 = !DILocation(line: 67, column: 38, scope: !116) -!126 = !DILocation(line: 67, column: 31, scope: !116) -!127 = !DILocation(line: 67, column: 46, scope: !116) -!128 = !DILocation(line: 67, column: 51, scope: !116) -!129 = !DILocation(line: 67, column: 66, scope: !116) -!130 = !DILocation(line: 67, column: 9, scope: !116) -!131 = !DILocation(line: 68, column: 24, scope: !116) -!132 = !DILocation(line: 68, column: 40, scope: !116) -!133 = !DILocation(line: 68, column: 33, scope: !116) -!134 = !DILocation(line: 68, column: 48, scope: !116) -!135 = !DILocation(line: 68, column: 53, scope: !116) -!136 = !DILocation(line: 68, column: 68, scope: !116) -!137 = !DILocation(line: 68, column: 9, scope: !116) -!138 = !DILocation(line: 69, column: 19, scope: !116) -!139 = !DILocation(line: 69, column: 9, scope: !116) -!140 = !DILocation(line: 71, column: 1, scope: !104) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01.c.bc deleted file mode 100644 index 6febd365..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01.c.bc +++ /dev/null @@ -1,252 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01.c" -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-unknown-linux-gnu" - -@__const.CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01_bad.source = private unnamed_addr constant [11 x i32] [i32 65, i32 65, i32 65, i32 65, i32 65, i32 65, i32 65, i32 65, i32 65, i32 65, i32 0], align 16 -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 -@__const.goodG2B.source = private unnamed_addr constant [11 x i32] [i32 65, i32 65, i32 65, i32 65, i32 65, i32 65, i32 65, i32 65, i32 65, i32 65, i32 0], align 16 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01_bad() #0 !dbg !35 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [10 x i32], align 16 - %dataGoodBuffer = alloca [11 x i32], align 16 - %source = alloca [11 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !39, metadata !DIExpression()), !dbg !44 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !45, metadata !DIExpression()), !dbg !49 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !50, metadata !DIExpression()), !dbg !54 - %arraydecay = getelementptr inbounds [10 x i32], ptr %dataBadBuffer, i64 0, i64 0, !dbg !55 - store ptr %arraydecay, ptr %data, align 8, !dbg !56 - %0 = load ptr, ptr %data, align 8, !dbg !57 - %arrayidx = getelementptr inbounds i32, ptr %0, i64 0, !dbg !57 - store i32 0, ptr %arrayidx, align 4, !dbg !58 - call void @llvm.dbg.declare(metadata ptr %source, metadata !59, metadata !DIExpression()), !dbg !61 - call void @llvm.memcpy.p0.p0.i64(ptr align 16 %source, ptr align 16 @__const.CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01_bad.source, i64 44, i1 false), !dbg !61 - %1 = load ptr, ptr %data, align 8, !dbg !62 - %arraydecay1 = getelementptr inbounds [11 x i32], ptr %source, i64 0, i64 0, !dbg !63 - %call = call ptr @wcscpy(ptr noundef %1, ptr noundef %arraydecay1) #5, !dbg !64 - %2 = load ptr, ptr %data, align 8, !dbg !65 - %call2 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %2, i64 noundef 43), !dbg !66 - %arraydecay3 = getelementptr inbounds [11 x i32], ptr %source, i64 0, i64 0, !dbg !67 - %call4 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay3, i64 noundef 43), !dbg !68 - %3 = load ptr, ptr %data, align 8, !dbg !69 - call void @printWLine(ptr noundef %3), !dbg !70 - ret void, !dbg !71 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 - -; Function Attrs: nounwind -declare ptr @wcscpy(ptr noundef, ptr noundef) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare i32 @SAFE_BUFACCESS(...) #4 - -declare void @printWLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01_good() #0 !dbg !72 { -entry: - call void @goodG2B(), !dbg !73 - ret void, !dbg !74 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !75 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !80, metadata !DIExpression()), !dbg !81 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !82, metadata !DIExpression()), !dbg !83 - %call = call i64 @time(ptr noundef null) #5, !dbg !84 - %conv = trunc i64 %call to i32, !dbg !85 - call void @srand(i32 noundef %conv) #5, !dbg !86 - call void @printLine(ptr noundef @.str), !dbg !87 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01_good(), !dbg !88 - call void @printLine(ptr noundef @.str.1), !dbg !89 - call void @printLine(ptr noundef @.str.2), !dbg !90 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01_bad(), !dbg !91 - call void @printLine(ptr noundef @.str.3), !dbg !92 - ret i32 0, !dbg !93 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #3 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #3 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !94 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [10 x i32], align 16 - %dataGoodBuffer = alloca [11 x i32], align 16 - %source = alloca [11 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !95, metadata !DIExpression()), !dbg !96 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !97, metadata !DIExpression()), !dbg !98 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !99, metadata !DIExpression()), !dbg !100 - %arraydecay = getelementptr inbounds [11 x i32], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !101 - store ptr %arraydecay, ptr %data, align 8, !dbg !102 - %0 = load ptr, ptr %data, align 8, !dbg !103 - %arrayidx = getelementptr inbounds i32, ptr %0, i64 0, !dbg !103 - store i32 0, ptr %arrayidx, align 4, !dbg !104 - call void @llvm.dbg.declare(metadata ptr %source, metadata !105, metadata !DIExpression()), !dbg !107 - call void @llvm.memcpy.p0.p0.i64(ptr align 16 %source, ptr align 16 @__const.goodG2B.source, i64 44, i1 false), !dbg !107 - %1 = load ptr, ptr %data, align 8, !dbg !108 - %arraydecay1 = getelementptr inbounds [11 x i32], ptr %source, i64 0, i64 0, !dbg !109 - %call = call ptr @wcscpy(ptr noundef %1, ptr noundef %arraydecay1) #5, !dbg !110 - %2 = load ptr, ptr %data, align 8, !dbg !111 - %call2 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %2, i64 noundef 43), !dbg !112 - %arraydecay3 = getelementptr inbounds [11 x i32], ptr %source, i64 0, i64 0, !dbg !113 - %call4 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay3, i64 noundef 43), !dbg !114 - %3 = load ptr, ptr %data, align 8, !dbg !115 - call void @printWLine(ptr noundef %3), !dbg !116 - ret void, !dbg !117 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #3 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} -!llvm.ident = !{!34} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 91, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "011bc47a43884db51e6d3873fedfad26") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 93, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 96, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 98, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "011bc47a43884db51e6d3873fedfad26") -!24 = !{!25} -!25 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!26 = !{!0, !7, !12, !17} -!27 = !{i32 7, !"Dwarf Version", i32 5} -!28 = !{i32 2, !"Debug Info Version", i32 3} -!29 = !{i32 1, !"wchar_size", i32 4} -!30 = !{i32 8, !"PIC Level", i32 2} -!31 = !{i32 7, !"PIE Level", i32 2} -!32 = !{i32 7, !"uwtable", i32 2} -!33 = !{i32 7, !"frame-pointer", i32 2} -!34 = !{!"clang version 16.0.0"} -!35 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01_bad", scope: !2, file: !2, line: 28, type: !36, scopeLine: 29, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!36 = !DISubroutineType(types: !37) -!37 = !{null} -!38 = !{} -!39 = !DILocalVariable(name: "data", scope: !35, file: !2, line: 30, type: !40) -!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !41, size: 64) -!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !42, line: 74, baseType: !43) -!42 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!43 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!44 = !DILocation(line: 30, column: 15, scope: !35) -!45 = !DILocalVariable(name: "dataBadBuffer", scope: !35, file: !2, line: 31, type: !46) -!46 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 320, elements: !47) -!47 = !{!48} -!48 = !DISubrange(count: 10) -!49 = !DILocation(line: 31, column: 13, scope: !35) -!50 = !DILocalVariable(name: "dataGoodBuffer", scope: !35, file: !2, line: 32, type: !51) -!51 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 352, elements: !52) -!52 = !{!53} -!53 = !DISubrange(count: 11) -!54 = !DILocation(line: 32, column: 13, scope: !35) -!55 = !DILocation(line: 35, column: 12, scope: !35) -!56 = !DILocation(line: 35, column: 10, scope: !35) -!57 = !DILocation(line: 36, column: 5, scope: !35) -!58 = !DILocation(line: 36, column: 13, scope: !35) -!59 = !DILocalVariable(name: "source", scope: !60, file: !2, line: 38, type: !51) -!60 = distinct !DILexicalBlock(scope: !35, file: !2, line: 37, column: 5) -!61 = !DILocation(line: 38, column: 17, scope: !60) -!62 = !DILocation(line: 40, column: 16, scope: !60) -!63 = !DILocation(line: 40, column: 22, scope: !60) -!64 = !DILocation(line: 40, column: 9, scope: !60) -!65 = !DILocation(line: 41, column: 26, scope: !60) -!66 = !DILocation(line: 41, column: 9, scope: !60) -!67 = !DILocation(line: 42, column: 24, scope: !60) -!68 = !DILocation(line: 42, column: 9, scope: !60) -!69 = !DILocation(line: 43, column: 20, scope: !60) -!70 = !DILocation(line: 43, column: 9, scope: !60) -!71 = !DILocation(line: 45, column: 1, scope: !35) -!72 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE193_wchar_t_declare_cpy_01_good", scope: !2, file: !2, line: 71, type: !36, scopeLine: 72, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!73 = !DILocation(line: 73, column: 5, scope: !72) -!74 = !DILocation(line: 74, column: 1, scope: !72) -!75 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 86, type: !76, scopeLine: 87, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!76 = !DISubroutineType(types: !77) -!77 = !{!43, !43, !78} -!78 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !79, size: 64) -!79 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!80 = !DILocalVariable(name: "argc", arg: 1, scope: !75, file: !2, line: 86, type: !43) -!81 = !DILocation(line: 86, column: 14, scope: !75) -!82 = !DILocalVariable(name: "argv", arg: 2, scope: !75, file: !2, line: 86, type: !78) -!83 = !DILocation(line: 86, column: 27, scope: !75) -!84 = !DILocation(line: 89, column: 22, scope: !75) -!85 = !DILocation(line: 89, column: 12, scope: !75) -!86 = !DILocation(line: 89, column: 5, scope: !75) -!87 = !DILocation(line: 91, column: 5, scope: !75) -!88 = !DILocation(line: 92, column: 5, scope: !75) -!89 = !DILocation(line: 93, column: 5, scope: !75) -!90 = !DILocation(line: 96, column: 5, scope: !75) -!91 = !DILocation(line: 97, column: 5, scope: !75) -!92 = !DILocation(line: 98, column: 5, scope: !75) -!93 = !DILocation(line: 100, column: 5, scope: !75) -!94 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 52, type: !36, scopeLine: 53, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) -!95 = !DILocalVariable(name: "data", scope: !94, file: !2, line: 54, type: !40) -!96 = !DILocation(line: 54, column: 15, scope: !94) -!97 = !DILocalVariable(name: "dataBadBuffer", scope: !94, file: !2, line: 55, type: !46) -!98 = !DILocation(line: 55, column: 13, scope: !94) -!99 = !DILocalVariable(name: "dataGoodBuffer", scope: !94, file: !2, line: 56, type: !51) -!100 = !DILocation(line: 56, column: 13, scope: !94) -!101 = !DILocation(line: 59, column: 12, scope: !94) -!102 = !DILocation(line: 59, column: 10, scope: !94) -!103 = !DILocation(line: 60, column: 5, scope: !94) -!104 = !DILocation(line: 60, column: 13, scope: !94) -!105 = !DILocalVariable(name: "source", scope: !106, file: !2, line: 62, type: !51) -!106 = distinct !DILexicalBlock(scope: !94, file: !2, line: 61, column: 5) -!107 = !DILocation(line: 62, column: 17, scope: !106) -!108 = !DILocation(line: 64, column: 16, scope: !106) -!109 = !DILocation(line: 64, column: 22, scope: !106) -!110 = !DILocation(line: 64, column: 9, scope: !106) -!111 = !DILocation(line: 65, column: 24, scope: !106) -!112 = !DILocation(line: 65, column: 9, scope: !106) -!113 = !DILocation(line: 66, column: 24, scope: !106) -!114 = !DILocation(line: 66, column: 9, scope: !106) -!115 = !DILocation(line: 67, column: 20, scope: !106) -!116 = !DILocation(line: 67, column: 9, scope: !106) -!117 = !DILocation(line: 69, column: 1, scope: !94) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_loop_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_loop_01.c.bc deleted file mode 100644 index f34c0fbf..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_loop_01.c.bc +++ /dev/null @@ -1,371 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_loop_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_loop_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_loop_01_bad() #0 !dbg !36 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %i = alloca i64, align 8 - %source = alloca [100 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !40, metadata !DIExpression()), !dbg !41 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !42, metadata !DIExpression()), !dbg !43 - %0 = alloca i8, i64 50, align 16, !dbg !44 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !43 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !45, metadata !DIExpression()), !dbg !46 - %1 = alloca i8, i64 100, align 16, !dbg !47 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !46 - %2 = load ptr, ptr %dataBadBuffer, align 8, !dbg !48 - store ptr %2, ptr %data, align 8, !dbg !49 - %3 = load ptr, ptr %data, align 8, !dbg !50 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 0, !dbg !50 - store i8 0, ptr %arrayidx, align 1, !dbg !51 - call void @llvm.dbg.declare(metadata ptr %i, metadata !52, metadata !DIExpression()), !dbg !57 - call void @llvm.dbg.declare(metadata ptr %source, metadata !58, metadata !DIExpression()), !dbg !62 - %arraydecay = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !63 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 67, i64 99, i1 false), !dbg !63 - %arrayidx1 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 99, !dbg !64 - store i8 0, ptr %arrayidx1, align 1, !dbg !65 - store i64 0, ptr %i, align 8, !dbg !66 - br label %for.cond, !dbg !68 - -for.cond: ; preds = %for.inc, %entry - %4 = load i64, ptr %i, align 8, !dbg !69 - %cmp = icmp ult i64 %4, 100, !dbg !71 - br i1 %cmp, label %for.body, label %for.end, !dbg !72 - -for.body: ; preds = %for.cond - %5 = load i64, ptr %i, align 8, !dbg !73 - %arrayidx2 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 %5, !dbg !75 - %6 = load i8, ptr %arrayidx2, align 1, !dbg !75 - %7 = load ptr, ptr %data, align 8, !dbg !76 - %8 = load i64, ptr %i, align 8, !dbg !77 - %arrayidx3 = getelementptr inbounds i8, ptr %7, i64 %8, !dbg !76 - store i8 %6, ptr %arrayidx3, align 1, !dbg !78 - br label %for.inc, !dbg !79 - -for.inc: ; preds = %for.body - %9 = load i64, ptr %i, align 8, !dbg !80 - %inc = add i64 %9, 1, !dbg !80 - store i64 %inc, ptr %i, align 8, !dbg !80 - br label %for.cond, !dbg !81, !llvm.loop !82 - -for.end: ; preds = %for.cond - %10 = load ptr, ptr %data, align 8, !dbg !85 - %call = call i32 (ptr, i32, ...) @UNSAFE_BUFACCESS(ptr noundef %10, i32 noundef 99), !dbg !86 - %arraydecay4 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !87 - %call5 = call i32 (ptr, i32, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay4, i32 noundef 99), !dbg !88 - %11 = load ptr, ptr %data, align 8, !dbg !89 - %arrayidx6 = getelementptr inbounds i8, ptr %11, i64 99, !dbg !89 - store i8 0, ptr %arrayidx6, align 1, !dbg !90 - %12 = load ptr, ptr %data, align 8, !dbg !91 - call void @printLine(ptr noundef %12), !dbg !92 - ret void, !dbg !93 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -declare i32 @UNSAFE_BUFACCESS(...) #3 - -declare i32 @SAFE_BUFACCESS(...) #3 - -declare void @printLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_loop_01_good() #0 !dbg !94 { -entry: - call void @goodG2B(), !dbg !95 - ret void, !dbg !96 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !97 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !102, metadata !DIExpression()), !dbg !103 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !104, metadata !DIExpression()), !dbg !105 - %call = call i64 @time(ptr noundef null) #5, !dbg !106 - %conv = trunc i64 %call to i32, !dbg !107 - call void @srand(i32 noundef %conv) #5, !dbg !108 - call void @printLine(ptr noundef @.str), !dbg !109 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_loop_01_good(), !dbg !110 - call void @printLine(ptr noundef @.str.1), !dbg !111 - call void @printLine(ptr noundef @.str.2), !dbg !112 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_loop_01_bad(), !dbg !113 - call void @printLine(ptr noundef @.str.3), !dbg !114 - ret i32 0, !dbg !115 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !116 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %i = alloca i64, align 8 - %source = alloca [100 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !117, metadata !DIExpression()), !dbg !118 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !119, metadata !DIExpression()), !dbg !120 - %0 = alloca i8, i64 50, align 16, !dbg !121 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !120 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !122, metadata !DIExpression()), !dbg !123 - %1 = alloca i8, i64 100, align 16, !dbg !124 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !123 - %2 = load ptr, ptr %dataGoodBuffer, align 8, !dbg !125 - store ptr %2, ptr %data, align 8, !dbg !126 - %3 = load ptr, ptr %data, align 8, !dbg !127 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 0, !dbg !127 - store i8 0, ptr %arrayidx, align 1, !dbg !128 - call void @llvm.dbg.declare(metadata ptr %i, metadata !129, metadata !DIExpression()), !dbg !131 - call void @llvm.dbg.declare(metadata ptr %source, metadata !132, metadata !DIExpression()), !dbg !133 - %arraydecay = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !134 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 67, i64 99, i1 false), !dbg !134 - %arrayidx1 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 99, !dbg !135 - store i8 0, ptr %arrayidx1, align 1, !dbg !136 - store i64 0, ptr %i, align 8, !dbg !137 - br label %for.cond, !dbg !139 - -for.cond: ; preds = %for.inc, %entry - %4 = load i64, ptr %i, align 8, !dbg !140 - %cmp = icmp ult i64 %4, 100, !dbg !142 - br i1 %cmp, label %for.body, label %for.end, !dbg !143 - -for.body: ; preds = %for.cond - %5 = load i64, ptr %i, align 8, !dbg !144 - %arrayidx2 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 %5, !dbg !146 - %6 = load i8, ptr %arrayidx2, align 1, !dbg !146 - %7 = load ptr, ptr %data, align 8, !dbg !147 - %8 = load i64, ptr %i, align 8, !dbg !148 - %arrayidx3 = getelementptr inbounds i8, ptr %7, i64 %8, !dbg !147 - store i8 %6, ptr %arrayidx3, align 1, !dbg !149 - %9 = load ptr, ptr %data, align 8, !dbg !150 - %10 = load i64, ptr %i, align 8, !dbg !151 - %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %9, i64 noundef %10), !dbg !152 - %arraydecay4 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !153 - %11 = load i64, ptr %i, align 8, !dbg !154 - %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay4, i64 noundef %11), !dbg !155 - br label %for.inc, !dbg !156 - -for.inc: ; preds = %for.body - %12 = load i64, ptr %i, align 8, !dbg !157 - %inc = add i64 %12, 1, !dbg !157 - store i64 %inc, ptr %i, align 8, !dbg !157 - br label %for.cond, !dbg !158, !llvm.loop !159 - -for.end: ; preds = %for.cond - %13 = load ptr, ptr %data, align 8, !dbg !161 - %call6 = call i32 (ptr, i32, ...) @SAFE_BUFACCESS(ptr noundef %13, i32 noundef 99), !dbg !162 - %arraydecay7 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !163 - %call8 = call i32 (ptr, i32, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay7, i32 noundef 99), !dbg !164 - %14 = load ptr, ptr %data, align 8, !dbg !165 - %arrayidx9 = getelementptr inbounds i8, ptr %14, i64 99, !dbg !165 - store i8 0, ptr %arrayidx9, align 1, !dbg !166 - %15 = load ptr, ptr %data, align 8, !dbg !167 - call void @printLine(ptr noundef %15), !dbg !168 - ret void, !dbg !169 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!28, !29, !30, !31, !32, !33, !34} -!llvm.ident = !{!35} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 102, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "bdd6a20db056aa225fb820deda827ba3") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 104, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 107, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 109, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "bdd6a20db056aa225fb820deda827ba3") -!24 = !{!25, !26} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!26 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!27 = !{!0, !7, !12, !17} -!28 = !{i32 7, !"Dwarf Version", i32 5} -!29 = !{i32 2, !"Debug Info Version", i32 3} -!30 = !{i32 1, !"wchar_size", i32 4} -!31 = !{i32 8, !"PIC Level", i32 2} -!32 = !{i32 7, !"PIE Level", i32 2} -!33 = !{i32 7, !"uwtable", i32 2} -!34 = !{i32 7, !"frame-pointer", i32 2} -!35 = !{!"clang version 16.0.0"} -!36 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_loop_01_bad", scope: !2, file: !2, line: 23, type: !37, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!37 = !DISubroutineType(types: !38) -!38 = !{null} -!39 = !{} -!40 = !DILocalVariable(name: "data", scope: !36, file: !2, line: 25, type: !25) -!41 = !DILocation(line: 25, column: 12, scope: !36) -!42 = !DILocalVariable(name: "dataBadBuffer", scope: !36, file: !2, line: 26, type: !25) -!43 = !DILocation(line: 26, column: 12, scope: !36) -!44 = !DILocation(line: 26, column: 36, scope: !36) -!45 = !DILocalVariable(name: "dataGoodBuffer", scope: !36, file: !2, line: 27, type: !25) -!46 = !DILocation(line: 27, column: 12, scope: !36) -!47 = !DILocation(line: 27, column: 37, scope: !36) -!48 = !DILocation(line: 30, column: 12, scope: !36) -!49 = !DILocation(line: 30, column: 10, scope: !36) -!50 = !DILocation(line: 31, column: 5, scope: !36) -!51 = !DILocation(line: 31, column: 13, scope: !36) -!52 = !DILocalVariable(name: "i", scope: !53, file: !2, line: 33, type: !54) -!53 = distinct !DILexicalBlock(scope: !36, file: !2, line: 32, column: 5) -!54 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !55, line: 46, baseType: !56) -!55 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!56 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) -!57 = !DILocation(line: 33, column: 16, scope: !53) -!58 = !DILocalVariable(name: "source", scope: !53, file: !2, line: 34, type: !59) -!59 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 800, elements: !60) -!60 = !{!61} -!61 = !DISubrange(count: 100) -!62 = !DILocation(line: 34, column: 14, scope: !53) -!63 = !DILocation(line: 35, column: 9, scope: !53) -!64 = !DILocation(line: 36, column: 9, scope: !53) -!65 = !DILocation(line: 36, column: 23, scope: !53) -!66 = !DILocation(line: 38, column: 16, scope: !67) -!67 = distinct !DILexicalBlock(scope: !53, file: !2, line: 38, column: 9) -!68 = !DILocation(line: 38, column: 14, scope: !67) -!69 = !DILocation(line: 38, column: 21, scope: !70) -!70 = distinct !DILexicalBlock(scope: !67, file: !2, line: 38, column: 9) -!71 = !DILocation(line: 38, column: 23, scope: !70) -!72 = !DILocation(line: 38, column: 9, scope: !67) -!73 = !DILocation(line: 40, column: 30, scope: !74) -!74 = distinct !DILexicalBlock(scope: !70, file: !2, line: 39, column: 9) -!75 = !DILocation(line: 40, column: 23, scope: !74) -!76 = !DILocation(line: 40, column: 13, scope: !74) -!77 = !DILocation(line: 40, column: 18, scope: !74) -!78 = !DILocation(line: 40, column: 21, scope: !74) -!79 = !DILocation(line: 41, column: 9, scope: !74) -!80 = !DILocation(line: 38, column: 31, scope: !70) -!81 = !DILocation(line: 38, column: 9, scope: !70) -!82 = distinct !{!82, !72, !83, !84} -!83 = !DILocation(line: 41, column: 9, scope: !67) -!84 = !{!"llvm.loop.mustprogress"} -!85 = !DILocation(line: 42, column: 26, scope: !53) -!86 = !DILocation(line: 42, column: 9, scope: !53) -!87 = !DILocation(line: 43, column: 24, scope: !53) -!88 = !DILocation(line: 43, column: 9, scope: !53) -!89 = !DILocation(line: 44, column: 9, scope: !53) -!90 = !DILocation(line: 44, column: 21, scope: !53) -!91 = !DILocation(line: 45, column: 19, scope: !53) -!92 = !DILocation(line: 45, column: 9, scope: !53) -!93 = !DILocation(line: 47, column: 1, scope: !36) -!94 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_loop_01_good", scope: !2, file: !2, line: 82, type: !37, scopeLine: 83, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!95 = !DILocation(line: 84, column: 5, scope: !94) -!96 = !DILocation(line: 85, column: 1, scope: !94) -!97 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 97, type: !98, scopeLine: 98, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!98 = !DISubroutineType(types: !99) -!99 = !{!100, !100, !101} -!100 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!101 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64) -!102 = !DILocalVariable(name: "argc", arg: 1, scope: !97, file: !2, line: 97, type: !100) -!103 = !DILocation(line: 97, column: 14, scope: !97) -!104 = !DILocalVariable(name: "argv", arg: 2, scope: !97, file: !2, line: 97, type: !101) -!105 = !DILocation(line: 97, column: 27, scope: !97) -!106 = !DILocation(line: 100, column: 22, scope: !97) -!107 = !DILocation(line: 100, column: 12, scope: !97) -!108 = !DILocation(line: 100, column: 5, scope: !97) -!109 = !DILocation(line: 102, column: 5, scope: !97) -!110 = !DILocation(line: 103, column: 5, scope: !97) -!111 = !DILocation(line: 104, column: 5, scope: !97) -!112 = !DILocation(line: 107, column: 5, scope: !97) -!113 = !DILocation(line: 108, column: 5, scope: !97) -!114 = !DILocation(line: 109, column: 5, scope: !97) -!115 = !DILocation(line: 111, column: 5, scope: !97) -!116 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 54, type: !37, scopeLine: 55, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !39) -!117 = !DILocalVariable(name: "data", scope: !116, file: !2, line: 56, type: !25) -!118 = !DILocation(line: 56, column: 12, scope: !116) -!119 = !DILocalVariable(name: "dataBadBuffer", scope: !116, file: !2, line: 57, type: !25) -!120 = !DILocation(line: 57, column: 12, scope: !116) -!121 = !DILocation(line: 57, column: 36, scope: !116) -!122 = !DILocalVariable(name: "dataGoodBuffer", scope: !116, file: !2, line: 58, type: !25) -!123 = !DILocation(line: 58, column: 12, scope: !116) -!124 = !DILocation(line: 58, column: 37, scope: !116) -!125 = !DILocation(line: 60, column: 12, scope: !116) -!126 = !DILocation(line: 60, column: 10, scope: !116) -!127 = !DILocation(line: 61, column: 5, scope: !116) -!128 = !DILocation(line: 61, column: 13, scope: !116) -!129 = !DILocalVariable(name: "i", scope: !130, file: !2, line: 63, type: !54) -!130 = distinct !DILexicalBlock(scope: !116, file: !2, line: 62, column: 5) -!131 = !DILocation(line: 63, column: 16, scope: !130) -!132 = !DILocalVariable(name: "source", scope: !130, file: !2, line: 64, type: !59) -!133 = !DILocation(line: 64, column: 14, scope: !130) -!134 = !DILocation(line: 65, column: 9, scope: !130) -!135 = !DILocation(line: 66, column: 9, scope: !130) -!136 = !DILocation(line: 66, column: 23, scope: !130) -!137 = !DILocation(line: 69, column: 16, scope: !138) -!138 = distinct !DILexicalBlock(scope: !130, file: !2, line: 69, column: 9) -!139 = !DILocation(line: 69, column: 14, scope: !138) -!140 = !DILocation(line: 69, column: 21, scope: !141) -!141 = distinct !DILexicalBlock(scope: !138, file: !2, line: 69, column: 9) -!142 = !DILocation(line: 69, column: 23, scope: !141) -!143 = !DILocation(line: 69, column: 9, scope: !138) -!144 = !DILocation(line: 71, column: 30, scope: !145) -!145 = distinct !DILexicalBlock(scope: !141, file: !2, line: 70, column: 9) -!146 = !DILocation(line: 71, column: 23, scope: !145) -!147 = !DILocation(line: 71, column: 13, scope: !145) -!148 = !DILocation(line: 71, column: 18, scope: !145) -!149 = !DILocation(line: 71, column: 21, scope: !145) -!150 = !DILocation(line: 72, column: 28, scope: !145) -!151 = !DILocation(line: 72, column: 34, scope: !145) -!152 = !DILocation(line: 72, column: 13, scope: !145) -!153 = !DILocation(line: 73, column: 28, scope: !145) -!154 = !DILocation(line: 73, column: 36, scope: !145) -!155 = !DILocation(line: 73, column: 13, scope: !145) -!156 = !DILocation(line: 74, column: 9, scope: !145) -!157 = !DILocation(line: 69, column: 31, scope: !141) -!158 = !DILocation(line: 69, column: 9, scope: !141) -!159 = distinct !{!159, !143, !160, !84} -!160 = !DILocation(line: 74, column: 9, scope: !138) -!161 = !DILocation(line: 75, column: 24, scope: !130) -!162 = !DILocation(line: 75, column: 9, scope: !130) -!163 = !DILocation(line: 76, column: 24, scope: !130) -!164 = !DILocation(line: 76, column: 9, scope: !130) -!165 = !DILocation(line: 77, column: 9, scope: !130) -!166 = !DILocation(line: 77, column: 21, scope: !130) -!167 = !DILocation(line: 78, column: 19, scope: !130) -!168 = !DILocation(line: 78, column: 9, scope: !130) -!169 = !DILocation(line: 80, column: 1, scope: !116) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_memcpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_memcpy_01.c.bc deleted file mode 100644 index 795570ca..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_memcpy_01.c.bc +++ /dev/null @@ -1,275 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_memcpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_memcpy_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_memcpy_01_bad() #0 !dbg !36 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %source = alloca [100 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !40, metadata !DIExpression()), !dbg !41 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !42, metadata !DIExpression()), !dbg !43 - %0 = alloca i8, i64 50, align 16, !dbg !44 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !43 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !45, metadata !DIExpression()), !dbg !46 - %1 = alloca i8, i64 100, align 16, !dbg !47 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !46 - %2 = load ptr, ptr %dataBadBuffer, align 8, !dbg !48 - store ptr %2, ptr %data, align 8, !dbg !49 - %3 = load ptr, ptr %data, align 8, !dbg !50 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 0, !dbg !50 - store i8 0, ptr %arrayidx, align 1, !dbg !51 - call void @llvm.dbg.declare(metadata ptr %source, metadata !52, metadata !DIExpression()), !dbg !57 - %arraydecay = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !58 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 67, i64 99, i1 false), !dbg !58 - %arrayidx1 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 99, !dbg !59 - store i8 0, ptr %arrayidx1, align 1, !dbg !60 - %4 = load ptr, ptr %data, align 8, !dbg !61 - %arraydecay2 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !62 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %4, ptr align 16 %arraydecay2, i64 100, i1 false), !dbg !62 - %5 = load ptr, ptr %data, align 8, !dbg !63 - %call = call i32 (ptr, i32, ...) @UNSAFE_BUFACCESS(ptr noundef %5, i32 noundef 99), !dbg !64 - %arraydecay3 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !65 - %call4 = call i32 (ptr, i32, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay3, i32 noundef 99), !dbg !66 - %6 = load ptr, ptr %data, align 8, !dbg !67 - %arrayidx5 = getelementptr inbounds i8, ptr %6, i64 99, !dbg !67 - store i8 0, ptr %arrayidx5, align 1, !dbg !68 - %7 = load ptr, ptr %data, align 8, !dbg !69 - call void @printLine(ptr noundef %7), !dbg !70 - ret void, !dbg !71 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare i32 @SAFE_BUFACCESS(...) #4 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_memcpy_01_good() #0 !dbg !72 { -entry: - call void @goodG2B(), !dbg !73 - ret void, !dbg !74 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !75 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !80, metadata !DIExpression()), !dbg !81 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !82, metadata !DIExpression()), !dbg !83 - %call = call i64 @time(ptr noundef null) #6, !dbg !84 - %conv = trunc i64 %call to i32, !dbg !85 - call void @srand(i32 noundef %conv) #6, !dbg !86 - call void @printLine(ptr noundef @.str), !dbg !87 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_memcpy_01_good(), !dbg !88 - call void @printLine(ptr noundef @.str.1), !dbg !89 - call void @printLine(ptr noundef @.str.2), !dbg !90 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_memcpy_01_bad(), !dbg !91 - call void @printLine(ptr noundef @.str.3), !dbg !92 - ret i32 0, !dbg !93 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !94 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %source = alloca [100 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !95, metadata !DIExpression()), !dbg !96 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !97, metadata !DIExpression()), !dbg !98 - %0 = alloca i8, i64 50, align 16, !dbg !99 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !98 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !100, metadata !DIExpression()), !dbg !101 - %1 = alloca i8, i64 100, align 16, !dbg !102 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !101 - %2 = load ptr, ptr %dataGoodBuffer, align 8, !dbg !103 - store ptr %2, ptr %data, align 8, !dbg !104 - %3 = load ptr, ptr %data, align 8, !dbg !105 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 0, !dbg !105 - store i8 0, ptr %arrayidx, align 1, !dbg !106 - call void @llvm.dbg.declare(metadata ptr %source, metadata !107, metadata !DIExpression()), !dbg !109 - %arraydecay = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !110 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 67, i64 99, i1 false), !dbg !110 - %arrayidx1 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 99, !dbg !111 - store i8 0, ptr %arrayidx1, align 1, !dbg !112 - %4 = load ptr, ptr %data, align 8, !dbg !113 - %arraydecay2 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !114 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %4, ptr align 16 %arraydecay2, i64 100, i1 false), !dbg !114 - %5 = load ptr, ptr %data, align 8, !dbg !115 - %call = call i32 (ptr, i32, ...) @SAFE_BUFACCESS(ptr noundef %5, i32 noundef 99), !dbg !116 - %arraydecay3 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !117 - %call4 = call i32 (ptr, i32, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay3, i32 noundef 99), !dbg !118 - %6 = load ptr, ptr %data, align 8, !dbg !119 - %arrayidx5 = getelementptr inbounds i8, ptr %6, i64 99, !dbg !119 - store i8 0, ptr %arrayidx5, align 1, !dbg !120 - %7 = load ptr, ptr %data, align 8, !dbg !121 - call void @printLine(ptr noundef %7), !dbg !122 - ret void, !dbg !123 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!28, !29, !30, !31, !32, !33, !34} -!llvm.ident = !{!35} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 91, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fef6988df2c9468ce1f5dcd4c5723296") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 93, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 96, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 98, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fef6988df2c9468ce1f5dcd4c5723296") -!24 = !{!25, !26} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!26 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!27 = !{!0, !7, !12, !17} -!28 = !{i32 7, !"Dwarf Version", i32 5} -!29 = !{i32 2, !"Debug Info Version", i32 3} -!30 = !{i32 1, !"wchar_size", i32 4} -!31 = !{i32 8, !"PIC Level", i32 2} -!32 = !{i32 7, !"PIE Level", i32 2} -!33 = !{i32 7, !"uwtable", i32 2} -!34 = !{i32 7, !"frame-pointer", i32 2} -!35 = !{!"clang version 16.0.0"} -!36 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_memcpy_01_bad", scope: !2, file: !2, line: 23, type: !37, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!37 = !DISubroutineType(types: !38) -!38 = !{null} -!39 = !{} -!40 = !DILocalVariable(name: "data", scope: !36, file: !2, line: 25, type: !25) -!41 = !DILocation(line: 25, column: 12, scope: !36) -!42 = !DILocalVariable(name: "dataBadBuffer", scope: !36, file: !2, line: 26, type: !25) -!43 = !DILocation(line: 26, column: 12, scope: !36) -!44 = !DILocation(line: 26, column: 36, scope: !36) -!45 = !DILocalVariable(name: "dataGoodBuffer", scope: !36, file: !2, line: 27, type: !25) -!46 = !DILocation(line: 27, column: 12, scope: !36) -!47 = !DILocation(line: 27, column: 37, scope: !36) -!48 = !DILocation(line: 30, column: 12, scope: !36) -!49 = !DILocation(line: 30, column: 10, scope: !36) -!50 = !DILocation(line: 31, column: 5, scope: !36) -!51 = !DILocation(line: 31, column: 13, scope: !36) -!52 = !DILocalVariable(name: "source", scope: !53, file: !2, line: 33, type: !54) -!53 = distinct !DILexicalBlock(scope: !36, file: !2, line: 32, column: 5) -!54 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 800, elements: !55) -!55 = !{!56} -!56 = !DISubrange(count: 100) -!57 = !DILocation(line: 33, column: 14, scope: !53) -!58 = !DILocation(line: 34, column: 9, scope: !53) -!59 = !DILocation(line: 35, column: 9, scope: !53) -!60 = !DILocation(line: 35, column: 23, scope: !53) -!61 = !DILocation(line: 37, column: 16, scope: !53) -!62 = !DILocation(line: 37, column: 9, scope: !53) -!63 = !DILocation(line: 38, column: 26, scope: !53) -!64 = !DILocation(line: 38, column: 9, scope: !53) -!65 = !DILocation(line: 39, column: 24, scope: !53) -!66 = !DILocation(line: 39, column: 9, scope: !53) -!67 = !DILocation(line: 40, column: 9, scope: !53) -!68 = !DILocation(line: 40, column: 21, scope: !53) -!69 = !DILocation(line: 41, column: 19, scope: !53) -!70 = !DILocation(line: 41, column: 9, scope: !53) -!71 = !DILocation(line: 43, column: 1, scope: !36) -!72 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_char_alloca_memcpy_01_good", scope: !2, file: !2, line: 71, type: !37, scopeLine: 72, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!73 = !DILocation(line: 73, column: 5, scope: !72) -!74 = !DILocation(line: 74, column: 1, scope: !72) -!75 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 86, type: !76, scopeLine: 87, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!76 = !DISubroutineType(types: !77) -!77 = !{!78, !78, !79} -!78 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!79 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64) -!80 = !DILocalVariable(name: "argc", arg: 1, scope: !75, file: !2, line: 86, type: !78) -!81 = !DILocation(line: 86, column: 14, scope: !75) -!82 = !DILocalVariable(name: "argv", arg: 2, scope: !75, file: !2, line: 86, type: !79) -!83 = !DILocation(line: 86, column: 27, scope: !75) -!84 = !DILocation(line: 89, column: 22, scope: !75) -!85 = !DILocation(line: 89, column: 12, scope: !75) -!86 = !DILocation(line: 89, column: 5, scope: !75) -!87 = !DILocation(line: 91, column: 5, scope: !75) -!88 = !DILocation(line: 92, column: 5, scope: !75) -!89 = !DILocation(line: 93, column: 5, scope: !75) -!90 = !DILocation(line: 96, column: 5, scope: !75) -!91 = !DILocation(line: 97, column: 5, scope: !75) -!92 = !DILocation(line: 98, column: 5, scope: !75) -!93 = !DILocation(line: 100, column: 5, scope: !75) -!94 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 50, type: !37, scopeLine: 51, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !39) -!95 = !DILocalVariable(name: "data", scope: !94, file: !2, line: 52, type: !25) -!96 = !DILocation(line: 52, column: 12, scope: !94) -!97 = !DILocalVariable(name: "dataBadBuffer", scope: !94, file: !2, line: 53, type: !25) -!98 = !DILocation(line: 53, column: 12, scope: !94) -!99 = !DILocation(line: 53, column: 36, scope: !94) -!100 = !DILocalVariable(name: "dataGoodBuffer", scope: !94, file: !2, line: 54, type: !25) -!101 = !DILocation(line: 54, column: 12, scope: !94) -!102 = !DILocation(line: 54, column: 37, scope: !94) -!103 = !DILocation(line: 56, column: 12, scope: !94) -!104 = !DILocation(line: 56, column: 10, scope: !94) -!105 = !DILocation(line: 57, column: 5, scope: !94) -!106 = !DILocation(line: 57, column: 13, scope: !94) -!107 = !DILocalVariable(name: "source", scope: !108, file: !2, line: 59, type: !54) -!108 = distinct !DILexicalBlock(scope: !94, file: !2, line: 58, column: 5) -!109 = !DILocation(line: 59, column: 14, scope: !108) -!110 = !DILocation(line: 60, column: 9, scope: !108) -!111 = !DILocation(line: 61, column: 9, scope: !108) -!112 = !DILocation(line: 61, column: 23, scope: !108) -!113 = !DILocation(line: 63, column: 16, scope: !108) -!114 = !DILocation(line: 63, column: 9, scope: !108) -!115 = !DILocation(line: 64, column: 24, scope: !108) -!116 = !DILocation(line: 64, column: 9, scope: !108) -!117 = !DILocation(line: 65, column: 24, scope: !108) -!118 = !DILocation(line: 65, column: 9, scope: !108) -!119 = !DILocation(line: 66, column: 9, scope: !108) -!120 = !DILocation(line: 66, column: 21, scope: !108) -!121 = !DILocation(line: 67, column: 19, scope: !108) -!122 = !DILocation(line: 67, column: 9, scope: !108) -!123 = !DILocation(line: 69, column: 1, scope: !94) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_memmove_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_memmove_01.c.bc deleted file mode 100644 index 12f41a8f..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_memmove_01.c.bc +++ /dev/null @@ -1,266 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_memmove_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_memmove_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_memmove_01_bad() #0 !dbg !35 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i8], align 16 - %dataGoodBuffer = alloca [100 x i8], align 16 - %source = alloca [100 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !39, metadata !DIExpression()), !dbg !41 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !42, metadata !DIExpression()), !dbg !46 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !47, metadata !DIExpression()), !dbg !51 - %arraydecay = getelementptr inbounds [50 x i8], ptr %dataBadBuffer, i64 0, i64 0, !dbg !52 - store ptr %arraydecay, ptr %data, align 8, !dbg !53 - %0 = load ptr, ptr %data, align 8, !dbg !54 - %arrayidx = getelementptr inbounds i8, ptr %0, i64 0, !dbg !54 - store i8 0, ptr %arrayidx, align 1, !dbg !55 - call void @llvm.dbg.declare(metadata ptr %source, metadata !56, metadata !DIExpression()), !dbg !58 - %arraydecay1 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !59 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay1, i8 67, i64 99, i1 false), !dbg !59 - %arrayidx2 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 99, !dbg !60 - store i8 0, ptr %arrayidx2, align 1, !dbg !61 - %1 = load ptr, ptr %data, align 8, !dbg !62 - %arraydecay3 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !63 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr align 16 %arraydecay3, i64 100, i1 false), !dbg !63 - %2 = load ptr, ptr %data, align 8, !dbg !64 - %call = call i32 (ptr, i32, ...) @UNSAFE_BUFACCESS(ptr noundef %2, i32 noundef 99), !dbg !65 - %arraydecay4 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !66 - %call5 = call i32 (ptr, i32, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay4, i32 noundef 99), !dbg !67 - %3 = load ptr, ptr %data, align 8, !dbg !68 - %arrayidx6 = getelementptr inbounds i8, ptr %3, i64 99, !dbg !68 - store i8 0, ptr %arrayidx6, align 1, !dbg !69 - %4 = load ptr, ptr %data, align 8, !dbg !70 - call void @printLine(ptr noundef %4), !dbg !71 - ret void, !dbg !72 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare i32 @SAFE_BUFACCESS(...) #4 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_memmove_01_good() #0 !dbg !73 { -entry: - call void @goodG2B(), !dbg !74 - ret void, !dbg !75 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !76 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !81, metadata !DIExpression()), !dbg !82 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !83, metadata !DIExpression()), !dbg !84 - %call = call i64 @time(ptr noundef null) #6, !dbg !85 - %conv = trunc i64 %call to i32, !dbg !86 - call void @srand(i32 noundef %conv) #6, !dbg !87 - call void @printLine(ptr noundef @.str), !dbg !88 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_memmove_01_good(), !dbg !89 - call void @printLine(ptr noundef @.str.1), !dbg !90 - call void @printLine(ptr noundef @.str.2), !dbg !91 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_memmove_01_bad(), !dbg !92 - call void @printLine(ptr noundef @.str.3), !dbg !93 - ret i32 0, !dbg !94 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !95 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i8], align 16 - %dataGoodBuffer = alloca [100 x i8], align 16 - %source = alloca [100 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !96, metadata !DIExpression()), !dbg !97 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !98, metadata !DIExpression()), !dbg !99 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !100, metadata !DIExpression()), !dbg !101 - %arraydecay = getelementptr inbounds [100 x i8], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !102 - store ptr %arraydecay, ptr %data, align 8, !dbg !103 - %0 = load ptr, ptr %data, align 8, !dbg !104 - %arrayidx = getelementptr inbounds i8, ptr %0, i64 0, !dbg !104 - store i8 0, ptr %arrayidx, align 1, !dbg !105 - call void @llvm.dbg.declare(metadata ptr %source, metadata !106, metadata !DIExpression()), !dbg !108 - %arraydecay1 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !109 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay1, i8 67, i64 99, i1 false), !dbg !109 - %arrayidx2 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 99, !dbg !110 - store i8 0, ptr %arrayidx2, align 1, !dbg !111 - %1 = load ptr, ptr %data, align 8, !dbg !112 - %arraydecay3 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !113 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %1, ptr align 16 %arraydecay3, i64 100, i1 false), !dbg !113 - %2 = load ptr, ptr %data, align 8, !dbg !114 - %call = call i32 (ptr, i32, ...) @SAFE_BUFACCESS(ptr noundef %2, i32 noundef 99), !dbg !115 - %arraydecay4 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !116 - %call5 = call i32 (ptr, i32, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay4, i32 noundef 99), !dbg !117 - %3 = load ptr, ptr %data, align 8, !dbg !118 - %arrayidx6 = getelementptr inbounds i8, ptr %3, i64 99, !dbg !118 - store i8 0, ptr %arrayidx6, align 1, !dbg !119 - %4 = load ptr, ptr %data, align 8, !dbg !120 - call void @printLine(ptr noundef %4), !dbg !121 - ret void, !dbg !122 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} -!llvm.ident = !{!34} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 92, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "4516e55a368470a4f6052d4a77b44c1f") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 94, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 97, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 99, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "4516e55a368470a4f6052d4a77b44c1f") -!24 = !{!25} -!25 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!26 = !{!0, !7, !12, !17} -!27 = !{i32 7, !"Dwarf Version", i32 5} -!28 = !{i32 2, !"Debug Info Version", i32 3} -!29 = !{i32 1, !"wchar_size", i32 4} -!30 = !{i32 8, !"PIC Level", i32 2} -!31 = !{i32 7, !"PIE Level", i32 2} -!32 = !{i32 7, !"uwtable", i32 2} -!33 = !{i32 7, !"frame-pointer", i32 2} -!34 = !{!"clang version 16.0.0"} -!35 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_memmove_01_bad", scope: !2, file: !2, line: 23, type: !36, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!36 = !DISubroutineType(types: !37) -!37 = !{null} -!38 = !{} -!39 = !DILocalVariable(name: "data", scope: !35, file: !2, line: 25, type: !40) -!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!41 = !DILocation(line: 25, column: 12, scope: !35) -!42 = !DILocalVariable(name: "dataBadBuffer", scope: !35, file: !2, line: 26, type: !43) -!43 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 400, elements: !44) -!44 = !{!45} -!45 = !DISubrange(count: 50) -!46 = !DILocation(line: 26, column: 10, scope: !35) -!47 = !DILocalVariable(name: "dataGoodBuffer", scope: !35, file: !2, line: 27, type: !48) -!48 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 800, elements: !49) -!49 = !{!50} -!50 = !DISubrange(count: 100) -!51 = !DILocation(line: 27, column: 10, scope: !35) -!52 = !DILocation(line: 30, column: 12, scope: !35) -!53 = !DILocation(line: 30, column: 10, scope: !35) -!54 = !DILocation(line: 31, column: 5, scope: !35) -!55 = !DILocation(line: 31, column: 13, scope: !35) -!56 = !DILocalVariable(name: "source", scope: !57, file: !2, line: 33, type: !48) -!57 = distinct !DILexicalBlock(scope: !35, file: !2, line: 32, column: 5) -!58 = !DILocation(line: 33, column: 14, scope: !57) -!59 = !DILocation(line: 34, column: 9, scope: !57) -!60 = !DILocation(line: 35, column: 9, scope: !57) -!61 = !DILocation(line: 35, column: 23, scope: !57) -!62 = !DILocation(line: 37, column: 17, scope: !57) -!63 = !DILocation(line: 37, column: 9, scope: !57) -!64 = !DILocation(line: 38, column: 26, scope: !57) -!65 = !DILocation(line: 38, column: 9, scope: !57) -!66 = !DILocation(line: 39, column: 24, scope: !57) -!67 = !DILocation(line: 39, column: 9, scope: !57) -!68 = !DILocation(line: 40, column: 9, scope: !57) -!69 = !DILocation(line: 40, column: 21, scope: !57) -!70 = !DILocation(line: 41, column: 19, scope: !57) -!71 = !DILocation(line: 41, column: 9, scope: !57) -!72 = !DILocation(line: 43, column: 1, scope: !35) -!73 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_memmove_01_good", scope: !2, file: !2, line: 72, type: !36, scopeLine: 73, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!74 = !DILocation(line: 74, column: 5, scope: !73) -!75 = !DILocation(line: 75, column: 1, scope: !73) -!76 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 87, type: !77, scopeLine: 88, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!77 = !DISubroutineType(types: !78) -!78 = !{!79, !79, !80} -!79 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!80 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !40, size: 64) -!81 = !DILocalVariable(name: "argc", arg: 1, scope: !76, file: !2, line: 87, type: !79) -!82 = !DILocation(line: 87, column: 14, scope: !76) -!83 = !DILocalVariable(name: "argv", arg: 2, scope: !76, file: !2, line: 87, type: !80) -!84 = !DILocation(line: 87, column: 27, scope: !76) -!85 = !DILocation(line: 90, column: 22, scope: !76) -!86 = !DILocation(line: 90, column: 12, scope: !76) -!87 = !DILocation(line: 90, column: 5, scope: !76) -!88 = !DILocation(line: 92, column: 5, scope: !76) -!89 = !DILocation(line: 93, column: 5, scope: !76) -!90 = !DILocation(line: 94, column: 5, scope: !76) -!91 = !DILocation(line: 97, column: 5, scope: !76) -!92 = !DILocation(line: 98, column: 5, scope: !76) -!93 = !DILocation(line: 99, column: 5, scope: !76) -!94 = !DILocation(line: 101, column: 5, scope: !76) -!95 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 50, type: !36, scopeLine: 51, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) -!96 = !DILocalVariable(name: "data", scope: !95, file: !2, line: 52, type: !40) -!97 = !DILocation(line: 52, column: 12, scope: !95) -!98 = !DILocalVariable(name: "dataBadBuffer", scope: !95, file: !2, line: 53, type: !43) -!99 = !DILocation(line: 53, column: 10, scope: !95) -!100 = !DILocalVariable(name: "dataGoodBuffer", scope: !95, file: !2, line: 54, type: !48) -!101 = !DILocation(line: 54, column: 10, scope: !95) -!102 = !DILocation(line: 56, column: 12, scope: !95) -!103 = !DILocation(line: 56, column: 10, scope: !95) -!104 = !DILocation(line: 57, column: 5, scope: !95) -!105 = !DILocation(line: 57, column: 13, scope: !95) -!106 = !DILocalVariable(name: "source", scope: !107, file: !2, line: 59, type: !48) -!107 = distinct !DILexicalBlock(scope: !95, file: !2, line: 58, column: 5) -!108 = !DILocation(line: 59, column: 14, scope: !107) -!109 = !DILocation(line: 60, column: 9, scope: !107) -!110 = !DILocation(line: 61, column: 9, scope: !107) -!111 = !DILocation(line: 61, column: 23, scope: !107) -!112 = !DILocation(line: 64, column: 17, scope: !107) -!113 = !DILocation(line: 64, column: 9, scope: !107) -!114 = !DILocation(line: 65, column: 24, scope: !107) -!115 = !DILocation(line: 65, column: 9, scope: !107) -!116 = !DILocation(line: 66, column: 24, scope: !107) -!117 = !DILocation(line: 66, column: 9, scope: !107) -!118 = !DILocation(line: 67, column: 9, scope: !107) -!119 = !DILocation(line: 67, column: 21, scope: !107) -!120 = !DILocation(line: 68, column: 19, scope: !107) -!121 = !DILocation(line: 68, column: 9, scope: !107) -!122 = !DILocation(line: 70, column: 1, scope: !95) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_ncpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_ncpy_01.c.bc deleted file mode 100644 index df5c9531..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_ncpy_01.c.bc +++ /dev/null @@ -1,267 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_ncpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_ncpy_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_ncpy_01_bad() #0 !dbg !35 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i8], align 16 - %dataGoodBuffer = alloca [100 x i8], align 16 - %source = alloca [100 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !39, metadata !DIExpression()), !dbg !41 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !42, metadata !DIExpression()), !dbg !46 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !47, metadata !DIExpression()), !dbg !51 - %arraydecay = getelementptr inbounds [50 x i8], ptr %dataBadBuffer, i64 0, i64 0, !dbg !52 - store ptr %arraydecay, ptr %data, align 8, !dbg !53 - %0 = load ptr, ptr %data, align 8, !dbg !54 - %arrayidx = getelementptr inbounds i8, ptr %0, i64 0, !dbg !54 - store i8 0, ptr %arrayidx, align 1, !dbg !55 - call void @llvm.dbg.declare(metadata ptr %source, metadata !56, metadata !DIExpression()), !dbg !58 - %arraydecay1 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !59 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay1, i8 67, i64 99, i1 false), !dbg !59 - %arrayidx2 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 99, !dbg !60 - store i8 0, ptr %arrayidx2, align 1, !dbg !61 - %1 = load ptr, ptr %data, align 8, !dbg !62 - %arraydecay3 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !63 - %call = call ptr @strncpy(ptr noundef %1, ptr noundef %arraydecay3, i64 noundef 99) #5, !dbg !64 - %2 = load ptr, ptr %data, align 8, !dbg !65 - %call4 = call i32 (ptr, i32, ...) @UNSAFE_BUFACCESS(ptr noundef %2, i32 noundef 99), !dbg !66 - %arraydecay5 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !67 - %call6 = call i32 (ptr, i32, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay5, i32 noundef 99), !dbg !68 - %3 = load ptr, ptr %data, align 8, !dbg !69 - %arrayidx7 = getelementptr inbounds i8, ptr %3, i64 99, !dbg !69 - store i8 0, ptr %arrayidx7, align 1, !dbg !70 - %4 = load ptr, ptr %data, align 8, !dbg !71 - call void @printLine(ptr noundef %4), !dbg !72 - ret void, !dbg !73 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -; Function Attrs: nounwind -declare ptr @strncpy(ptr noundef, ptr noundef, i64 noundef) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare i32 @SAFE_BUFACCESS(...) #4 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_ncpy_01_good() #0 !dbg !74 { -entry: - call void @goodG2B(), !dbg !75 - ret void, !dbg !76 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !77 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !82, metadata !DIExpression()), !dbg !83 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !84, metadata !DIExpression()), !dbg !85 - %call = call i64 @time(ptr noundef null) #5, !dbg !86 - %conv = trunc i64 %call to i32, !dbg !87 - call void @srand(i32 noundef %conv) #5, !dbg !88 - call void @printLine(ptr noundef @.str), !dbg !89 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_ncpy_01_good(), !dbg !90 - call void @printLine(ptr noundef @.str.1), !dbg !91 - call void @printLine(ptr noundef @.str.2), !dbg !92 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_ncpy_01_bad(), !dbg !93 - call void @printLine(ptr noundef @.str.3), !dbg !94 - ret i32 0, !dbg !95 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #3 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !96 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i8], align 16 - %dataGoodBuffer = alloca [100 x i8], align 16 - %source = alloca [100 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !97, metadata !DIExpression()), !dbg !98 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !99, metadata !DIExpression()), !dbg !100 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !101, metadata !DIExpression()), !dbg !102 - %arraydecay = getelementptr inbounds [100 x i8], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !103 - store ptr %arraydecay, ptr %data, align 8, !dbg !104 - %0 = load ptr, ptr %data, align 8, !dbg !105 - %arrayidx = getelementptr inbounds i8, ptr %0, i64 0, !dbg !105 - store i8 0, ptr %arrayidx, align 1, !dbg !106 - call void @llvm.dbg.declare(metadata ptr %source, metadata !107, metadata !DIExpression()), !dbg !109 - %arraydecay1 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !110 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay1, i8 67, i64 99, i1 false), !dbg !110 - %arrayidx2 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 99, !dbg !111 - store i8 0, ptr %arrayidx2, align 1, !dbg !112 - %1 = load ptr, ptr %data, align 8, !dbg !113 - %arraydecay3 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !114 - %call = call ptr @strncpy(ptr noundef %1, ptr noundef %arraydecay3, i64 noundef 99) #5, !dbg !115 - %2 = load ptr, ptr %data, align 8, !dbg !116 - %call4 = call i32 (ptr, i32, ...) @SAFE_BUFACCESS(ptr noundef %2, i32 noundef 99), !dbg !117 - %arraydecay5 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !118 - %call6 = call i32 (ptr, i32, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay5, i32 noundef 99), !dbg !119 - %3 = load ptr, ptr %data, align 8, !dbg !120 - %arrayidx7 = getelementptr inbounds i8, ptr %3, i64 99, !dbg !120 - store i8 0, ptr %arrayidx7, align 1, !dbg !121 - %4 = load ptr, ptr %data, align 8, !dbg !122 - call void @printLine(ptr noundef %4), !dbg !123 - ret void, !dbg !124 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} -!llvm.ident = !{!34} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 91, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_ncpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "91d48e3a4500984d49f3b4a3a3d7d3ee") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 93, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 96, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 98, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_ncpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "91d48e3a4500984d49f3b4a3a3d7d3ee") -!24 = !{!25} -!25 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!26 = !{!0, !7, !12, !17} -!27 = !{i32 7, !"Dwarf Version", i32 5} -!28 = !{i32 2, !"Debug Info Version", i32 3} -!29 = !{i32 1, !"wchar_size", i32 4} -!30 = !{i32 8, !"PIC Level", i32 2} -!31 = !{i32 7, !"PIE Level", i32 2} -!32 = !{i32 7, !"uwtable", i32 2} -!33 = !{i32 7, !"frame-pointer", i32 2} -!34 = !{!"clang version 16.0.0"} -!35 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_ncpy_01_bad", scope: !2, file: !2, line: 23, type: !36, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!36 = !DISubroutineType(types: !37) -!37 = !{null} -!38 = !{} -!39 = !DILocalVariable(name: "data", scope: !35, file: !2, line: 25, type: !40) -!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!41 = !DILocation(line: 25, column: 12, scope: !35) -!42 = !DILocalVariable(name: "dataBadBuffer", scope: !35, file: !2, line: 26, type: !43) -!43 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 400, elements: !44) -!44 = !{!45} -!45 = !DISubrange(count: 50) -!46 = !DILocation(line: 26, column: 10, scope: !35) -!47 = !DILocalVariable(name: "dataGoodBuffer", scope: !35, file: !2, line: 27, type: !48) -!48 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 800, elements: !49) -!49 = !{!50} -!50 = !DISubrange(count: 100) -!51 = !DILocation(line: 27, column: 10, scope: !35) -!52 = !DILocation(line: 30, column: 12, scope: !35) -!53 = !DILocation(line: 30, column: 10, scope: !35) -!54 = !DILocation(line: 31, column: 5, scope: !35) -!55 = !DILocation(line: 31, column: 13, scope: !35) -!56 = !DILocalVariable(name: "source", scope: !57, file: !2, line: 33, type: !48) -!57 = distinct !DILexicalBlock(scope: !35, file: !2, line: 32, column: 5) -!58 = !DILocation(line: 33, column: 14, scope: !57) -!59 = !DILocation(line: 34, column: 9, scope: !57) -!60 = !DILocation(line: 35, column: 9, scope: !57) -!61 = !DILocation(line: 35, column: 23, scope: !57) -!62 = !DILocation(line: 37, column: 17, scope: !57) -!63 = !DILocation(line: 37, column: 23, scope: !57) -!64 = !DILocation(line: 37, column: 9, scope: !57) -!65 = !DILocation(line: 38, column: 26, scope: !57) -!66 = !DILocation(line: 38, column: 9, scope: !57) -!67 = !DILocation(line: 39, column: 24, scope: !57) -!68 = !DILocation(line: 39, column: 9, scope: !57) -!69 = !DILocation(line: 40, column: 9, scope: !57) -!70 = !DILocation(line: 40, column: 21, scope: !57) -!71 = !DILocation(line: 41, column: 19, scope: !57) -!72 = !DILocation(line: 41, column: 9, scope: !57) -!73 = !DILocation(line: 43, column: 1, scope: !35) -!74 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_char_declare_ncpy_01_good", scope: !2, file: !2, line: 71, type: !36, scopeLine: 72, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!75 = !DILocation(line: 73, column: 5, scope: !74) -!76 = !DILocation(line: 74, column: 1, scope: !74) -!77 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 86, type: !78, scopeLine: 87, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!78 = !DISubroutineType(types: !79) -!79 = !{!80, !80, !81} -!80 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!81 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !40, size: 64) -!82 = !DILocalVariable(name: "argc", arg: 1, scope: !77, file: !2, line: 86, type: !80) -!83 = !DILocation(line: 86, column: 14, scope: !77) -!84 = !DILocalVariable(name: "argv", arg: 2, scope: !77, file: !2, line: 86, type: !81) -!85 = !DILocation(line: 86, column: 27, scope: !77) -!86 = !DILocation(line: 89, column: 22, scope: !77) -!87 = !DILocation(line: 89, column: 12, scope: !77) -!88 = !DILocation(line: 89, column: 5, scope: !77) -!89 = !DILocation(line: 91, column: 5, scope: !77) -!90 = !DILocation(line: 92, column: 5, scope: !77) -!91 = !DILocation(line: 93, column: 5, scope: !77) -!92 = !DILocation(line: 96, column: 5, scope: !77) -!93 = !DILocation(line: 97, column: 5, scope: !77) -!94 = !DILocation(line: 98, column: 5, scope: !77) -!95 = !DILocation(line: 100, column: 5, scope: !77) -!96 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 50, type: !36, scopeLine: 51, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) -!97 = !DILocalVariable(name: "data", scope: !96, file: !2, line: 52, type: !40) -!98 = !DILocation(line: 52, column: 12, scope: !96) -!99 = !DILocalVariable(name: "dataBadBuffer", scope: !96, file: !2, line: 53, type: !43) -!100 = !DILocation(line: 53, column: 10, scope: !96) -!101 = !DILocalVariable(name: "dataGoodBuffer", scope: !96, file: !2, line: 54, type: !48) -!102 = !DILocation(line: 54, column: 10, scope: !96) -!103 = !DILocation(line: 56, column: 12, scope: !96) -!104 = !DILocation(line: 56, column: 10, scope: !96) -!105 = !DILocation(line: 57, column: 5, scope: !96) -!106 = !DILocation(line: 57, column: 13, scope: !96) -!107 = !DILocalVariable(name: "source", scope: !108, file: !2, line: 59, type: !48) -!108 = distinct !DILexicalBlock(scope: !96, file: !2, line: 58, column: 5) -!109 = !DILocation(line: 59, column: 14, scope: !108) -!110 = !DILocation(line: 60, column: 9, scope: !108) -!111 = !DILocation(line: 61, column: 9, scope: !108) -!112 = !DILocation(line: 61, column: 23, scope: !108) -!113 = !DILocation(line: 63, column: 17, scope: !108) -!114 = !DILocation(line: 63, column: 23, scope: !108) -!115 = !DILocation(line: 63, column: 9, scope: !108) -!116 = !DILocation(line: 64, column: 24, scope: !108) -!117 = !DILocation(line: 64, column: 9, scope: !108) -!118 = !DILocation(line: 65, column: 24, scope: !108) -!119 = !DILocation(line: 65, column: 9, scope: !108) -!120 = !DILocation(line: 66, column: 9, scope: !108) -!121 = !DILocation(line: 66, column: 21, scope: !108) -!122 = !DILocation(line: 67, column: 19, scope: !108) -!123 = !DILocation(line: 67, column: 9, scope: !108) -!124 = !DILocation(line: 69, column: 1, scope: !96) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_alloca_memmove_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_alloca_memmove_01.c.bc deleted file mode 100644 index c9937a98..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_alloca_memmove_01.c.bc +++ /dev/null @@ -1,255 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_alloca_memmove_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_alloca_memmove_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_alloca_memmove_01_bad() #0 !dbg !41 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %source = alloca [100 x i64], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !45, metadata !DIExpression()), !dbg !46 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !47, metadata !DIExpression()), !dbg !48 - %0 = alloca i8, i64 400, align 16, !dbg !49 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !48 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !50, metadata !DIExpression()), !dbg !51 - %1 = alloca i8, i64 800, align 16, !dbg !52 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !51 - %2 = load ptr, ptr %dataBadBuffer, align 8, !dbg !53 - store ptr %2, ptr %data, align 8, !dbg !54 - call void @llvm.dbg.declare(metadata ptr %source, metadata !55, metadata !DIExpression()), !dbg !60 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 800, i1 false), !dbg !60 - %3 = load ptr, ptr %data, align 8, !dbg !61 - %arraydecay = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !62 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %3, ptr align 16 %arraydecay, i64 800, i1 false), !dbg !62 - %4 = load ptr, ptr %data, align 8, !dbg !63 - %call = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %4, i64 noundef 799), !dbg !64 - %arraydecay1 = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !65 - %call2 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay1, i64 noundef 799), !dbg !66 - %5 = load ptr, ptr %data, align 8, !dbg !67 - %arrayidx = getelementptr inbounds i64, ptr %5, i64 0, !dbg !67 - %6 = load i64, ptr %arrayidx, align 8, !dbg !67 - call void @printLongLongLine(i64 noundef %6), !dbg !68 - ret void, !dbg !69 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare i32 @SAFE_BUFACCESS(...) #4 - -declare void @printLongLongLine(i64 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_alloca_memmove_01_good() #0 !dbg !70 { -entry: - call void @goodG2B(), !dbg !71 - ret void, !dbg !72 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !73 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !79, metadata !DIExpression()), !dbg !80 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !81, metadata !DIExpression()), !dbg !82 - %call = call i64 @time(ptr noundef null) #6, !dbg !83 - %conv = trunc i64 %call to i32, !dbg !84 - call void @srand(i32 noundef %conv) #6, !dbg !85 - call void @printLine(ptr noundef @.str), !dbg !86 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_alloca_memmove_01_good(), !dbg !87 - call void @printLine(ptr noundef @.str.1), !dbg !88 - call void @printLine(ptr noundef @.str.2), !dbg !89 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_alloca_memmove_01_bad(), !dbg !90 - call void @printLine(ptr noundef @.str.3), !dbg !91 - ret i32 0, !dbg !92 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !93 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %source = alloca [100 x i64], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !94, metadata !DIExpression()), !dbg !95 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !96, metadata !DIExpression()), !dbg !97 - %0 = alloca i8, i64 400, align 16, !dbg !98 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !97 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !99, metadata !DIExpression()), !dbg !100 - %1 = alloca i8, i64 800, align 16, !dbg !101 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !100 - %2 = load ptr, ptr %dataGoodBuffer, align 8, !dbg !102 - store ptr %2, ptr %data, align 8, !dbg !103 - call void @llvm.dbg.declare(metadata ptr %source, metadata !104, metadata !DIExpression()), !dbg !106 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 800, i1 false), !dbg !106 - %3 = load ptr, ptr %data, align 8, !dbg !107 - %arraydecay = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !108 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %3, ptr align 16 %arraydecay, i64 800, i1 false), !dbg !108 - %4 = load ptr, ptr %data, align 8, !dbg !109 - %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %4, i64 noundef 799), !dbg !110 - %arraydecay1 = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !111 - %call2 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay1, i64 noundef 799), !dbg !112 - %5 = load ptr, ptr %data, align 8, !dbg !113 - %arrayidx = getelementptr inbounds i64, ptr %5, i64 0, !dbg !113 - %6 = load i64, ptr %arrayidx, align 8, !dbg !113 - call void @printLongLongLine(i64 noundef %6), !dbg !114 - ret void, !dbg !115 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!33, !34, !35, !36, !37, !38, !39} -!llvm.ident = !{!40} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 81, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_alloca_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3bee5b6091b40545c4b612a8d08cded2") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 83, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 86, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 88, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !32, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_alloca_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3bee5b6091b40545c4b612a8d08cded2") -!24 = !{!25, !31} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) -!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "int64_t", file: !27, line: 27, baseType: !28) -!27 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h", directory: "", checksumkind: CSK_MD5, checksum: "081edea97425b3437dded4a7fe223193") -!28 = !DIDerivedType(tag: DW_TAG_typedef, name: "__int64_t", file: !29, line: 44, baseType: !30) -!29 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "f6304b1a6dcfc6bee76e9a51043b5090") -!30 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) -!31 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!32 = !{!0, !7, !12, !17} -!33 = !{i32 7, !"Dwarf Version", i32 5} -!34 = !{i32 2, !"Debug Info Version", i32 3} -!35 = !{i32 1, !"wchar_size", i32 4} -!36 = !{i32 8, !"PIC Level", i32 2} -!37 = !{i32 7, !"PIE Level", i32 2} -!38 = !{i32 7, !"uwtable", i32 2} -!39 = !{i32 7, !"frame-pointer", i32 2} -!40 = !{!"clang version 16.0.0"} -!41 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_alloca_memmove_01_bad", scope: !2, file: !2, line: 21, type: !42, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !44) -!42 = !DISubroutineType(types: !43) -!43 = !{null} -!44 = !{} -!45 = !DILocalVariable(name: "data", scope: !41, file: !2, line: 23, type: !25) -!46 = !DILocation(line: 23, column: 15, scope: !41) -!47 = !DILocalVariable(name: "dataBadBuffer", scope: !41, file: !2, line: 24, type: !25) -!48 = !DILocation(line: 24, column: 15, scope: !41) -!49 = !DILocation(line: 24, column: 42, scope: !41) -!50 = !DILocalVariable(name: "dataGoodBuffer", scope: !41, file: !2, line: 25, type: !25) -!51 = !DILocation(line: 25, column: 15, scope: !41) -!52 = !DILocation(line: 25, column: 43, scope: !41) -!53 = !DILocation(line: 28, column: 12, scope: !41) -!54 = !DILocation(line: 28, column: 10, scope: !41) -!55 = !DILocalVariable(name: "source", scope: !56, file: !2, line: 30, type: !57) -!56 = distinct !DILexicalBlock(scope: !41, file: !2, line: 29, column: 5) -!57 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 6400, elements: !58) -!58 = !{!59} -!59 = !DISubrange(count: 100) -!60 = !DILocation(line: 30, column: 17, scope: !56) -!61 = !DILocation(line: 32, column: 17, scope: !56) -!62 = !DILocation(line: 32, column: 9, scope: !56) -!63 = !DILocation(line: 33, column: 26, scope: !56) -!64 = !DILocation(line: 33, column: 9, scope: !56) -!65 = !DILocation(line: 34, column: 24, scope: !56) -!66 = !DILocation(line: 34, column: 9, scope: !56) -!67 = !DILocation(line: 35, column: 27, scope: !56) -!68 = !DILocation(line: 35, column: 9, scope: !56) -!69 = !DILocation(line: 37, column: 1, scope: !41) -!70 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_alloca_memmove_01_good", scope: !2, file: !2, line: 61, type: !42, scopeLine: 62, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !44) -!71 = !DILocation(line: 63, column: 5, scope: !70) -!72 = !DILocation(line: 64, column: 1, scope: !70) -!73 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 76, type: !74, scopeLine: 77, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !44) -!74 = !DISubroutineType(types: !75) -!75 = !{!76, !76, !77} -!76 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!77 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !78, size: 64) -!78 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!79 = !DILocalVariable(name: "argc", arg: 1, scope: !73, file: !2, line: 76, type: !76) -!80 = !DILocation(line: 76, column: 14, scope: !73) -!81 = !DILocalVariable(name: "argv", arg: 2, scope: !73, file: !2, line: 76, type: !77) -!82 = !DILocation(line: 76, column: 27, scope: !73) -!83 = !DILocation(line: 79, column: 22, scope: !73) -!84 = !DILocation(line: 79, column: 12, scope: !73) -!85 = !DILocation(line: 79, column: 5, scope: !73) -!86 = !DILocation(line: 81, column: 5, scope: !73) -!87 = !DILocation(line: 82, column: 5, scope: !73) -!88 = !DILocation(line: 83, column: 5, scope: !73) -!89 = !DILocation(line: 86, column: 5, scope: !73) -!90 = !DILocation(line: 87, column: 5, scope: !73) -!91 = !DILocation(line: 88, column: 5, scope: !73) -!92 = !DILocation(line: 90, column: 5, scope: !73) -!93 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 44, type: !42, scopeLine: 45, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !44) -!94 = !DILocalVariable(name: "data", scope: !93, file: !2, line: 46, type: !25) -!95 = !DILocation(line: 46, column: 15, scope: !93) -!96 = !DILocalVariable(name: "dataBadBuffer", scope: !93, file: !2, line: 47, type: !25) -!97 = !DILocation(line: 47, column: 15, scope: !93) -!98 = !DILocation(line: 47, column: 42, scope: !93) -!99 = !DILocalVariable(name: "dataGoodBuffer", scope: !93, file: !2, line: 48, type: !25) -!100 = !DILocation(line: 48, column: 15, scope: !93) -!101 = !DILocation(line: 48, column: 43, scope: !93) -!102 = !DILocation(line: 50, column: 12, scope: !93) -!103 = !DILocation(line: 50, column: 10, scope: !93) -!104 = !DILocalVariable(name: "source", scope: !105, file: !2, line: 52, type: !57) -!105 = distinct !DILexicalBlock(scope: !93, file: !2, line: 51, column: 5) -!106 = !DILocation(line: 52, column: 17, scope: !105) -!107 = !DILocation(line: 54, column: 17, scope: !105) -!108 = !DILocation(line: 54, column: 9, scope: !105) -!109 = !DILocation(line: 55, column: 24, scope: !105) -!110 = !DILocation(line: 55, column: 9, scope: !105) -!111 = !DILocation(line: 56, column: 24, scope: !105) -!112 = !DILocation(line: 56, column: 9, scope: !105) -!113 = !DILocation(line: 57, column: 27, scope: !105) -!114 = !DILocation(line: 57, column: 9, scope: !105) -!115 = !DILocation(line: 59, column: 1, scope: !93) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_loop_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_loop_01.c.bc deleted file mode 100644 index 8e9bf9d4..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_loop_01.c.bc +++ /dev/null @@ -1,356 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_loop_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_loop_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_loop_01_bad() #0 !dbg !35 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i64], align 16 - %dataGoodBuffer = alloca [100 x i64], align 16 - %source = alloca [100 x i64], align 16 - %i = alloca i64, align 8 - call void @llvm.dbg.declare(metadata ptr %data, metadata !39, metadata !DIExpression()), !dbg !46 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !47, metadata !DIExpression()), !dbg !51 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !52, metadata !DIExpression()), !dbg !56 - %arraydecay = getelementptr inbounds [50 x i64], ptr %dataBadBuffer, i64 0, i64 0, !dbg !57 - store ptr %arraydecay, ptr %data, align 8, !dbg !58 - call void @llvm.dbg.declare(metadata ptr %source, metadata !59, metadata !DIExpression()), !dbg !61 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 800, i1 false), !dbg !61 - call void @llvm.dbg.declare(metadata ptr %i, metadata !62, metadata !DIExpression()), !dbg !67 - store i64 0, ptr %i, align 8, !dbg !68 - br label %for.cond, !dbg !70 - -for.cond: ; preds = %for.inc, %entry - %0 = load i64, ptr %i, align 8, !dbg !71 - %cmp = icmp ult i64 %0, 100, !dbg !73 - br i1 %cmp, label %for.body, label %for.end, !dbg !74 - -for.body: ; preds = %for.cond - %1 = load i64, ptr %i, align 8, !dbg !75 - %arrayidx = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 %1, !dbg !77 - %2 = load i64, ptr %arrayidx, align 8, !dbg !77 - %3 = load ptr, ptr %data, align 8, !dbg !78 - %4 = load i64, ptr %i, align 8, !dbg !79 - %arrayidx1 = getelementptr inbounds i64, ptr %3, i64 %4, !dbg !78 - store i64 %2, ptr %arrayidx1, align 8, !dbg !80 - br label %for.inc, !dbg !81 - -for.inc: ; preds = %for.body - %5 = load i64, ptr %i, align 8, !dbg !82 - %inc = add i64 %5, 1, !dbg !82 - store i64 %inc, ptr %i, align 8, !dbg !82 - br label %for.cond, !dbg !83, !llvm.loop !84 - -for.end: ; preds = %for.cond - %6 = load ptr, ptr %data, align 8, !dbg !87 - %call = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %6, i64 noundef 799), !dbg !88 - %arraydecay2 = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !89 - %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 799), !dbg !90 - %7 = load ptr, ptr %data, align 8, !dbg !91 - %arrayidx4 = getelementptr inbounds i64, ptr %7, i64 0, !dbg !91 - %8 = load i64, ptr %arrayidx4, align 8, !dbg !91 - call void @printLongLongLine(i64 noundef %8), !dbg !92 - ret void, !dbg !93 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -declare i32 @UNSAFE_BUFACCESS(...) #3 - -declare i32 @SAFE_BUFACCESS(...) #3 - -declare void @printLongLongLine(i64 noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_loop_01_good() #0 !dbg !94 { -entry: - call void @goodG2B(), !dbg !95 - ret void, !dbg !96 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !97 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !103, metadata !DIExpression()), !dbg !104 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !105, metadata !DIExpression()), !dbg !106 - %call = call i64 @time(ptr noundef null) #5, !dbg !107 - %conv = trunc i64 %call to i32, !dbg !108 - call void @srand(i32 noundef %conv) #5, !dbg !109 - call void @printLine(ptr noundef @.str), !dbg !110 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_loop_01_good(), !dbg !111 - call void @printLine(ptr noundef @.str.1), !dbg !112 - call void @printLine(ptr noundef @.str.2), !dbg !113 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_loop_01_bad(), !dbg !114 - call void @printLine(ptr noundef @.str.3), !dbg !115 - ret i32 0, !dbg !116 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 - -declare void @printLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !117 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i64], align 16 - %dataGoodBuffer = alloca [100 x i64], align 16 - %source = alloca [100 x i64], align 16 - %i = alloca i64, align 8 - call void @llvm.dbg.declare(metadata ptr %data, metadata !118, metadata !DIExpression()), !dbg !119 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !120, metadata !DIExpression()), !dbg !121 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !122, metadata !DIExpression()), !dbg !123 - %arraydecay = getelementptr inbounds [100 x i64], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !124 - store ptr %arraydecay, ptr %data, align 8, !dbg !125 - call void @llvm.dbg.declare(metadata ptr %source, metadata !126, metadata !DIExpression()), !dbg !128 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 800, i1 false), !dbg !128 - call void @llvm.dbg.declare(metadata ptr %i, metadata !129, metadata !DIExpression()), !dbg !131 - store i64 0, ptr %i, align 8, !dbg !132 - br label %for.cond, !dbg !134 - -for.cond: ; preds = %for.inc, %entry - %0 = load i64, ptr %i, align 8, !dbg !135 - %cmp = icmp ult i64 %0, 100, !dbg !137 - br i1 %cmp, label %for.body, label %for.end, !dbg !138 - -for.body: ; preds = %for.cond - %1 = load i64, ptr %i, align 8, !dbg !139 - %arrayidx = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 %1, !dbg !141 - %2 = load i64, ptr %arrayidx, align 8, !dbg !141 - %3 = load ptr, ptr %data, align 8, !dbg !142 - %4 = load i64, ptr %i, align 8, !dbg !143 - %arrayidx1 = getelementptr inbounds i64, ptr %3, i64 %4, !dbg !142 - store i64 %2, ptr %arrayidx1, align 8, !dbg !144 - %5 = load ptr, ptr %data, align 8, !dbg !145 - %6 = load i64, ptr %i, align 8, !dbg !146 - %add = add i64 %6, 1, !dbg !147 - %mul = mul i64 %add, 8, !dbg !148 - %sub = sub i64 %mul, 1, !dbg !149 - %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %5, i64 noundef %sub), !dbg !150 - %arraydecay2 = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !151 - %7 = load i64, ptr %i, align 8, !dbg !152 - %add3 = add i64 %7, 1, !dbg !153 - %mul4 = mul i64 %add3, 8, !dbg !154 - %sub5 = sub i64 %mul4, 1, !dbg !155 - %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef %sub5), !dbg !156 - br label %for.inc, !dbg !157 - -for.inc: ; preds = %for.body - %8 = load i64, ptr %i, align 8, !dbg !158 - %inc = add i64 %8, 1, !dbg !158 - store i64 %inc, ptr %i, align 8, !dbg !158 - br label %for.cond, !dbg !159, !llvm.loop !160 - -for.end: ; preds = %for.cond - %9 = load ptr, ptr %data, align 8, !dbg !162 - %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %9, i64 noundef 799), !dbg !163 - %arraydecay8 = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !164 - %call9 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay8, i64 noundef 799), !dbg !165 - %10 = load ptr, ptr %data, align 8, !dbg !166 - %arrayidx10 = getelementptr inbounds i64, ptr %10, i64 0, !dbg !166 - %11 = load i64, ptr %arrayidx10, align 8, !dbg !166 - call void @printLongLongLine(i64 noundef %11), !dbg !167 - ret void, !dbg !168 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} -!llvm.ident = !{!34} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 95, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "38c5d7c6e87d50b4e1600d7901a1f7dc") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 97, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 100, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 102, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "38c5d7c6e87d50b4e1600d7901a1f7dc") -!24 = !{!25} -!25 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!26 = !{!0, !7, !12, !17} -!27 = !{i32 7, !"Dwarf Version", i32 5} -!28 = !{i32 2, !"Debug Info Version", i32 3} -!29 = !{i32 1, !"wchar_size", i32 4} -!30 = !{i32 8, !"PIC Level", i32 2} -!31 = !{i32 7, !"PIE Level", i32 2} -!32 = !{i32 7, !"uwtable", i32 2} -!33 = !{i32 7, !"frame-pointer", i32 2} -!34 = !{!"clang version 16.0.0"} -!35 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_loop_01_bad", scope: !2, file: !2, line: 21, type: !36, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!36 = !DISubroutineType(types: !37) -!37 = !{null} -!38 = !{} -!39 = !DILocalVariable(name: "data", scope: !35, file: !2, line: 23, type: !40) -!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !41, size: 64) -!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "int64_t", file: !42, line: 27, baseType: !43) -!42 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h", directory: "", checksumkind: CSK_MD5, checksum: "081edea97425b3437dded4a7fe223193") -!43 = !DIDerivedType(tag: DW_TAG_typedef, name: "__int64_t", file: !44, line: 44, baseType: !45) -!44 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "f6304b1a6dcfc6bee76e9a51043b5090") -!45 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) -!46 = !DILocation(line: 23, column: 15, scope: !35) -!47 = !DILocalVariable(name: "dataBadBuffer", scope: !35, file: !2, line: 24, type: !48) -!48 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 3200, elements: !49) -!49 = !{!50} -!50 = !DISubrange(count: 50) -!51 = !DILocation(line: 24, column: 13, scope: !35) -!52 = !DILocalVariable(name: "dataGoodBuffer", scope: !35, file: !2, line: 25, type: !53) -!53 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 6400, elements: !54) -!54 = !{!55} -!55 = !DISubrange(count: 100) -!56 = !DILocation(line: 25, column: 13, scope: !35) -!57 = !DILocation(line: 28, column: 12, scope: !35) -!58 = !DILocation(line: 28, column: 10, scope: !35) -!59 = !DILocalVariable(name: "source", scope: !60, file: !2, line: 30, type: !53) -!60 = distinct !DILexicalBlock(scope: !35, file: !2, line: 29, column: 5) -!61 = !DILocation(line: 30, column: 17, scope: !60) -!62 = !DILocalVariable(name: "i", scope: !63, file: !2, line: 32, type: !64) -!63 = distinct !DILexicalBlock(scope: !60, file: !2, line: 31, column: 9) -!64 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !65, line: 46, baseType: !66) -!65 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!66 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) -!67 = !DILocation(line: 32, column: 20, scope: !63) -!68 = !DILocation(line: 34, column: 20, scope: !69) -!69 = distinct !DILexicalBlock(scope: !63, file: !2, line: 34, column: 13) -!70 = !DILocation(line: 34, column: 18, scope: !69) -!71 = !DILocation(line: 34, column: 25, scope: !72) -!72 = distinct !DILexicalBlock(scope: !69, file: !2, line: 34, column: 13) -!73 = !DILocation(line: 34, column: 27, scope: !72) -!74 = !DILocation(line: 34, column: 13, scope: !69) -!75 = !DILocation(line: 36, column: 34, scope: !76) -!76 = distinct !DILexicalBlock(scope: !72, file: !2, line: 35, column: 13) -!77 = !DILocation(line: 36, column: 27, scope: !76) -!78 = !DILocation(line: 36, column: 17, scope: !76) -!79 = !DILocation(line: 36, column: 22, scope: !76) -!80 = !DILocation(line: 36, column: 25, scope: !76) -!81 = !DILocation(line: 37, column: 13, scope: !76) -!82 = !DILocation(line: 34, column: 35, scope: !72) -!83 = !DILocation(line: 34, column: 13, scope: !72) -!84 = distinct !{!84, !74, !85, !86} -!85 = !DILocation(line: 37, column: 13, scope: !69) -!86 = !{!"llvm.loop.mustprogress"} -!87 = !DILocation(line: 38, column: 30, scope: !63) -!88 = !DILocation(line: 38, column: 13, scope: !63) -!89 = !DILocation(line: 39, column: 28, scope: !63) -!90 = !DILocation(line: 39, column: 13, scope: !63) -!91 = !DILocation(line: 40, column: 31, scope: !63) -!92 = !DILocation(line: 40, column: 13, scope: !63) -!93 = !DILocation(line: 43, column: 1, scope: !35) -!94 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_loop_01_good", scope: !2, file: !2, line: 75, type: !36, scopeLine: 76, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!95 = !DILocation(line: 77, column: 5, scope: !94) -!96 = !DILocation(line: 78, column: 1, scope: !94) -!97 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 90, type: !98, scopeLine: 91, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!98 = !DISubroutineType(types: !99) -!99 = !{!100, !100, !101} -!100 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!101 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !102, size: 64) -!102 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!103 = !DILocalVariable(name: "argc", arg: 1, scope: !97, file: !2, line: 90, type: !100) -!104 = !DILocation(line: 90, column: 14, scope: !97) -!105 = !DILocalVariable(name: "argv", arg: 2, scope: !97, file: !2, line: 90, type: !101) -!106 = !DILocation(line: 90, column: 27, scope: !97) -!107 = !DILocation(line: 93, column: 22, scope: !97) -!108 = !DILocation(line: 93, column: 12, scope: !97) -!109 = !DILocation(line: 93, column: 5, scope: !97) -!110 = !DILocation(line: 95, column: 5, scope: !97) -!111 = !DILocation(line: 96, column: 5, scope: !97) -!112 = !DILocation(line: 97, column: 5, scope: !97) -!113 = !DILocation(line: 100, column: 5, scope: !97) -!114 = !DILocation(line: 101, column: 5, scope: !97) -!115 = !DILocation(line: 102, column: 5, scope: !97) -!116 = !DILocation(line: 104, column: 5, scope: !97) -!117 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 50, type: !36, scopeLine: 51, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) -!118 = !DILocalVariable(name: "data", scope: !117, file: !2, line: 52, type: !40) -!119 = !DILocation(line: 52, column: 15, scope: !117) -!120 = !DILocalVariable(name: "dataBadBuffer", scope: !117, file: !2, line: 53, type: !48) -!121 = !DILocation(line: 53, column: 13, scope: !117) -!122 = !DILocalVariable(name: "dataGoodBuffer", scope: !117, file: !2, line: 54, type: !53) -!123 = !DILocation(line: 54, column: 13, scope: !117) -!124 = !DILocation(line: 56, column: 12, scope: !117) -!125 = !DILocation(line: 56, column: 10, scope: !117) -!126 = !DILocalVariable(name: "source", scope: !127, file: !2, line: 58, type: !53) -!127 = distinct !DILexicalBlock(scope: !117, file: !2, line: 57, column: 5) -!128 = !DILocation(line: 58, column: 17, scope: !127) -!129 = !DILocalVariable(name: "i", scope: !130, file: !2, line: 60, type: !64) -!130 = distinct !DILexicalBlock(scope: !127, file: !2, line: 59, column: 9) -!131 = !DILocation(line: 60, column: 20, scope: !130) -!132 = !DILocation(line: 62, column: 20, scope: !133) -!133 = distinct !DILexicalBlock(scope: !130, file: !2, line: 62, column: 13) -!134 = !DILocation(line: 62, column: 18, scope: !133) -!135 = !DILocation(line: 62, column: 25, scope: !136) -!136 = distinct !DILexicalBlock(scope: !133, file: !2, line: 62, column: 13) -!137 = !DILocation(line: 62, column: 27, scope: !136) -!138 = !DILocation(line: 62, column: 13, scope: !133) -!139 = !DILocation(line: 64, column: 34, scope: !140) -!140 = distinct !DILexicalBlock(scope: !136, file: !2, line: 63, column: 13) -!141 = !DILocation(line: 64, column: 27, scope: !140) -!142 = !DILocation(line: 64, column: 17, scope: !140) -!143 = !DILocation(line: 64, column: 22, scope: !140) -!144 = !DILocation(line: 64, column: 25, scope: !140) -!145 = !DILocation(line: 65, column: 32, scope: !140) -!146 = !DILocation(line: 65, column: 39, scope: !140) -!147 = !DILocation(line: 65, column: 40, scope: !140) -!148 = !DILocation(line: 65, column: 43, scope: !140) -!149 = !DILocation(line: 65, column: 60, scope: !140) -!150 = !DILocation(line: 65, column: 17, scope: !140) -!151 = !DILocation(line: 66, column: 32, scope: !140) -!152 = !DILocation(line: 66, column: 41, scope: !140) -!153 = !DILocation(line: 66, column: 42, scope: !140) -!154 = !DILocation(line: 66, column: 45, scope: !140) -!155 = !DILocation(line: 66, column: 62, scope: !140) -!156 = !DILocation(line: 66, column: 17, scope: !140) -!157 = !DILocation(line: 67, column: 13, scope: !140) -!158 = !DILocation(line: 62, column: 35, scope: !136) -!159 = !DILocation(line: 62, column: 13, scope: !136) -!160 = distinct !{!160, !138, !161, !86} -!161 = !DILocation(line: 67, column: 13, scope: !133) -!162 = !DILocation(line: 68, column: 28, scope: !130) -!163 = !DILocation(line: 68, column: 13, scope: !130) -!164 = !DILocation(line: 69, column: 28, scope: !130) -!165 = !DILocation(line: 69, column: 13, scope: !130) -!166 = !DILocation(line: 70, column: 31, scope: !130) -!167 = !DILocation(line: 70, column: 13, scope: !130) -!168 = !DILocation(line: 73, column: 1, scope: !117) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memcpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memcpy_01.c.bc deleted file mode 100644 index 5c9d481e..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memcpy_01.c.bc +++ /dev/null @@ -1,246 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memcpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memcpy_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memcpy_01_bad() #0 !dbg !35 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i64], align 16 - %dataGoodBuffer = alloca [100 x i64], align 16 - %source = alloca [100 x i64], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !39, metadata !DIExpression()), !dbg !46 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !47, metadata !DIExpression()), !dbg !51 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !52, metadata !DIExpression()), !dbg !56 - %arraydecay = getelementptr inbounds [50 x i64], ptr %dataBadBuffer, i64 0, i64 0, !dbg !57 - store ptr %arraydecay, ptr %data, align 8, !dbg !58 - call void @llvm.dbg.declare(metadata ptr %source, metadata !59, metadata !DIExpression()), !dbg !61 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 800, i1 false), !dbg !61 - %0 = load ptr, ptr %data, align 8, !dbg !62 - %arraydecay1 = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !63 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %0, ptr align 16 %arraydecay1, i64 800, i1 false), !dbg !63 - %1 = load ptr, ptr %data, align 8, !dbg !64 - %call = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %1, i64 noundef 799), !dbg !65 - %arraydecay2 = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !66 - %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 799), !dbg !67 - %2 = load ptr, ptr %data, align 8, !dbg !68 - %arrayidx = getelementptr inbounds i64, ptr %2, i64 0, !dbg !68 - %3 = load i64, ptr %arrayidx, align 8, !dbg !68 - call void @printLongLongLine(i64 noundef %3), !dbg !69 - ret void, !dbg !70 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare i32 @SAFE_BUFACCESS(...) #4 - -declare void @printLongLongLine(i64 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memcpy_01_good() #0 !dbg !71 { -entry: - call void @goodG2B(), !dbg !72 - ret void, !dbg !73 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !74 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !80, metadata !DIExpression()), !dbg !81 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !82, metadata !DIExpression()), !dbg !83 - %call = call i64 @time(ptr noundef null) #6, !dbg !84 - %conv = trunc i64 %call to i32, !dbg !85 - call void @srand(i32 noundef %conv) #6, !dbg !86 - call void @printLine(ptr noundef @.str), !dbg !87 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memcpy_01_good(), !dbg !88 - call void @printLine(ptr noundef @.str.1), !dbg !89 - call void @printLine(ptr noundef @.str.2), !dbg !90 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memcpy_01_bad(), !dbg !91 - call void @printLine(ptr noundef @.str.3), !dbg !92 - ret i32 0, !dbg !93 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !94 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i64], align 16 - %dataGoodBuffer = alloca [100 x i64], align 16 - %source = alloca [100 x i64], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !95, metadata !DIExpression()), !dbg !96 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !97, metadata !DIExpression()), !dbg !98 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !99, metadata !DIExpression()), !dbg !100 - %arraydecay = getelementptr inbounds [100 x i64], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !101 - store ptr %arraydecay, ptr %data, align 8, !dbg !102 - call void @llvm.dbg.declare(metadata ptr %source, metadata !103, metadata !DIExpression()), !dbg !105 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 800, i1 false), !dbg !105 - %0 = load ptr, ptr %data, align 8, !dbg !106 - %arraydecay1 = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !107 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %0, ptr align 16 %arraydecay1, i64 800, i1 false), !dbg !107 - %1 = load ptr, ptr %data, align 8, !dbg !108 - %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %1, i64 noundef 799), !dbg !109 - %arraydecay2 = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !110 - %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 799), !dbg !111 - %2 = load ptr, ptr %data, align 8, !dbg !112 - %arrayidx = getelementptr inbounds i64, ptr %2, i64 0, !dbg !112 - %3 = load i64, ptr %arrayidx, align 8, !dbg !112 - call void @printLongLongLine(i64 noundef %3), !dbg !113 - ret void, !dbg !114 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} -!llvm.ident = !{!34} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 81, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "784a0dafb2a4a145af9d5380585c1a8a") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 83, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 86, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 88, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "784a0dafb2a4a145af9d5380585c1a8a") -!24 = !{!25} -!25 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!26 = !{!0, !7, !12, !17} -!27 = !{i32 7, !"Dwarf Version", i32 5} -!28 = !{i32 2, !"Debug Info Version", i32 3} -!29 = !{i32 1, !"wchar_size", i32 4} -!30 = !{i32 8, !"PIC Level", i32 2} -!31 = !{i32 7, !"PIE Level", i32 2} -!32 = !{i32 7, !"uwtable", i32 2} -!33 = !{i32 7, !"frame-pointer", i32 2} -!34 = !{!"clang version 16.0.0"} -!35 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memcpy_01_bad", scope: !2, file: !2, line: 21, type: !36, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!36 = !DISubroutineType(types: !37) -!37 = !{null} -!38 = !{} -!39 = !DILocalVariable(name: "data", scope: !35, file: !2, line: 23, type: !40) -!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !41, size: 64) -!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "int64_t", file: !42, line: 27, baseType: !43) -!42 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h", directory: "", checksumkind: CSK_MD5, checksum: "081edea97425b3437dded4a7fe223193") -!43 = !DIDerivedType(tag: DW_TAG_typedef, name: "__int64_t", file: !44, line: 44, baseType: !45) -!44 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "f6304b1a6dcfc6bee76e9a51043b5090") -!45 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) -!46 = !DILocation(line: 23, column: 15, scope: !35) -!47 = !DILocalVariable(name: "dataBadBuffer", scope: !35, file: !2, line: 24, type: !48) -!48 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 3200, elements: !49) -!49 = !{!50} -!50 = !DISubrange(count: 50) -!51 = !DILocation(line: 24, column: 13, scope: !35) -!52 = !DILocalVariable(name: "dataGoodBuffer", scope: !35, file: !2, line: 25, type: !53) -!53 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 6400, elements: !54) -!54 = !{!55} -!55 = !DISubrange(count: 100) -!56 = !DILocation(line: 25, column: 13, scope: !35) -!57 = !DILocation(line: 28, column: 12, scope: !35) -!58 = !DILocation(line: 28, column: 10, scope: !35) -!59 = !DILocalVariable(name: "source", scope: !60, file: !2, line: 30, type: !53) -!60 = distinct !DILexicalBlock(scope: !35, file: !2, line: 29, column: 5) -!61 = !DILocation(line: 30, column: 17, scope: !60) -!62 = !DILocation(line: 32, column: 16, scope: !60) -!63 = !DILocation(line: 32, column: 9, scope: !60) -!64 = !DILocation(line: 33, column: 26, scope: !60) -!65 = !DILocation(line: 33, column: 9, scope: !60) -!66 = !DILocation(line: 34, column: 24, scope: !60) -!67 = !DILocation(line: 34, column: 9, scope: !60) -!68 = !DILocation(line: 35, column: 27, scope: !60) -!69 = !DILocation(line: 35, column: 9, scope: !60) -!70 = !DILocation(line: 37, column: 1, scope: !35) -!71 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memcpy_01_good", scope: !2, file: !2, line: 61, type: !36, scopeLine: 62, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!72 = !DILocation(line: 63, column: 5, scope: !71) -!73 = !DILocation(line: 64, column: 1, scope: !71) -!74 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 76, type: !75, scopeLine: 77, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!75 = !DISubroutineType(types: !76) -!76 = !{!77, !77, !78} -!77 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!78 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !79, size: 64) -!79 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!80 = !DILocalVariable(name: "argc", arg: 1, scope: !74, file: !2, line: 76, type: !77) -!81 = !DILocation(line: 76, column: 14, scope: !74) -!82 = !DILocalVariable(name: "argv", arg: 2, scope: !74, file: !2, line: 76, type: !78) -!83 = !DILocation(line: 76, column: 27, scope: !74) -!84 = !DILocation(line: 79, column: 22, scope: !74) -!85 = !DILocation(line: 79, column: 12, scope: !74) -!86 = !DILocation(line: 79, column: 5, scope: !74) -!87 = !DILocation(line: 81, column: 5, scope: !74) -!88 = !DILocation(line: 82, column: 5, scope: !74) -!89 = !DILocation(line: 83, column: 5, scope: !74) -!90 = !DILocation(line: 86, column: 5, scope: !74) -!91 = !DILocation(line: 87, column: 5, scope: !74) -!92 = !DILocation(line: 88, column: 5, scope: !74) -!93 = !DILocation(line: 90, column: 5, scope: !74) -!94 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 44, type: !36, scopeLine: 45, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) -!95 = !DILocalVariable(name: "data", scope: !94, file: !2, line: 46, type: !40) -!96 = !DILocation(line: 46, column: 15, scope: !94) -!97 = !DILocalVariable(name: "dataBadBuffer", scope: !94, file: !2, line: 47, type: !48) -!98 = !DILocation(line: 47, column: 13, scope: !94) -!99 = !DILocalVariable(name: "dataGoodBuffer", scope: !94, file: !2, line: 48, type: !53) -!100 = !DILocation(line: 48, column: 13, scope: !94) -!101 = !DILocation(line: 50, column: 12, scope: !94) -!102 = !DILocation(line: 50, column: 10, scope: !94) -!103 = !DILocalVariable(name: "source", scope: !104, file: !2, line: 52, type: !53) -!104 = distinct !DILexicalBlock(scope: !94, file: !2, line: 51, column: 5) -!105 = !DILocation(line: 52, column: 17, scope: !104) -!106 = !DILocation(line: 54, column: 16, scope: !104) -!107 = !DILocation(line: 54, column: 9, scope: !104) -!108 = !DILocation(line: 55, column: 24, scope: !104) -!109 = !DILocation(line: 55, column: 9, scope: !104) -!110 = !DILocation(line: 56, column: 24, scope: !104) -!111 = !DILocation(line: 56, column: 9, scope: !104) -!112 = !DILocation(line: 57, column: 27, scope: !104) -!113 = !DILocation(line: 57, column: 9, scope: !104) -!114 = !DILocation(line: 59, column: 1, scope: !94) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memmove_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memmove_01.c.bc deleted file mode 100644 index 5329bdcf..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memmove_01.c.bc +++ /dev/null @@ -1,246 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memmove_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memmove_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memmove_01_bad() #0 !dbg !35 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i64], align 16 - %dataGoodBuffer = alloca [100 x i64], align 16 - %source = alloca [100 x i64], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !39, metadata !DIExpression()), !dbg !46 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !47, metadata !DIExpression()), !dbg !51 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !52, metadata !DIExpression()), !dbg !56 - %arraydecay = getelementptr inbounds [50 x i64], ptr %dataBadBuffer, i64 0, i64 0, !dbg !57 - store ptr %arraydecay, ptr %data, align 8, !dbg !58 - call void @llvm.dbg.declare(metadata ptr %source, metadata !59, metadata !DIExpression()), !dbg !61 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 800, i1 false), !dbg !61 - %0 = load ptr, ptr %data, align 8, !dbg !62 - %arraydecay1 = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !63 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %0, ptr align 16 %arraydecay1, i64 800, i1 false), !dbg !63 - %1 = load ptr, ptr %data, align 8, !dbg !64 - %call = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %1, i64 noundef 799), !dbg !65 - %arraydecay2 = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !66 - %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 799), !dbg !67 - %2 = load ptr, ptr %data, align 8, !dbg !68 - %arrayidx = getelementptr inbounds i64, ptr %2, i64 0, !dbg !68 - %3 = load i64, ptr %arrayidx, align 8, !dbg !68 - call void @printLongLongLine(i64 noundef %3), !dbg !69 - ret void, !dbg !70 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare i32 @SAFE_BUFACCESS(...) #4 - -declare void @printLongLongLine(i64 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memmove_01_good() #0 !dbg !71 { -entry: - call void @goodG2B(), !dbg !72 - ret void, !dbg !73 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !74 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !80, metadata !DIExpression()), !dbg !81 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !82, metadata !DIExpression()), !dbg !83 - %call = call i64 @time(ptr noundef null) #6, !dbg !84 - %conv = trunc i64 %call to i32, !dbg !85 - call void @srand(i32 noundef %conv) #6, !dbg !86 - call void @printLine(ptr noundef @.str), !dbg !87 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memmove_01_good(), !dbg !88 - call void @printLine(ptr noundef @.str.1), !dbg !89 - call void @printLine(ptr noundef @.str.2), !dbg !90 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memmove_01_bad(), !dbg !91 - call void @printLine(ptr noundef @.str.3), !dbg !92 - ret i32 0, !dbg !93 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !94 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i64], align 16 - %dataGoodBuffer = alloca [100 x i64], align 16 - %source = alloca [100 x i64], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !95, metadata !DIExpression()), !dbg !96 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !97, metadata !DIExpression()), !dbg !98 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !99, metadata !DIExpression()), !dbg !100 - %arraydecay = getelementptr inbounds [100 x i64], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !101 - store ptr %arraydecay, ptr %data, align 8, !dbg !102 - call void @llvm.dbg.declare(metadata ptr %source, metadata !103, metadata !DIExpression()), !dbg !105 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 800, i1 false), !dbg !105 - %0 = load ptr, ptr %data, align 8, !dbg !106 - %arraydecay1 = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !107 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %0, ptr align 16 %arraydecay1, i64 800, i1 false), !dbg !107 - %1 = load ptr, ptr %data, align 8, !dbg !108 - %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %1, i64 noundef 799), !dbg !109 - %arraydecay2 = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !110 - %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 799), !dbg !111 - %2 = load ptr, ptr %data, align 8, !dbg !112 - %arrayidx = getelementptr inbounds i64, ptr %2, i64 0, !dbg !112 - %3 = load i64, ptr %arrayidx, align 8, !dbg !112 - call void @printLongLongLine(i64 noundef %3), !dbg !113 - ret void, !dbg !114 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} -!llvm.ident = !{!34} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 81, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d3831a96a72c461970e78a9e15ca6322") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 83, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 86, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 88, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d3831a96a72c461970e78a9e15ca6322") -!24 = !{!25} -!25 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!26 = !{!0, !7, !12, !17} -!27 = !{i32 7, !"Dwarf Version", i32 5} -!28 = !{i32 2, !"Debug Info Version", i32 3} -!29 = !{i32 1, !"wchar_size", i32 4} -!30 = !{i32 8, !"PIC Level", i32 2} -!31 = !{i32 7, !"PIE Level", i32 2} -!32 = !{i32 7, !"uwtable", i32 2} -!33 = !{i32 7, !"frame-pointer", i32 2} -!34 = !{!"clang version 16.0.0"} -!35 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memmove_01_bad", scope: !2, file: !2, line: 21, type: !36, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!36 = !DISubroutineType(types: !37) -!37 = !{null} -!38 = !{} -!39 = !DILocalVariable(name: "data", scope: !35, file: !2, line: 23, type: !40) -!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !41, size: 64) -!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "int64_t", file: !42, line: 27, baseType: !43) -!42 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h", directory: "", checksumkind: CSK_MD5, checksum: "081edea97425b3437dded4a7fe223193") -!43 = !DIDerivedType(tag: DW_TAG_typedef, name: "__int64_t", file: !44, line: 44, baseType: !45) -!44 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "f6304b1a6dcfc6bee76e9a51043b5090") -!45 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) -!46 = !DILocation(line: 23, column: 15, scope: !35) -!47 = !DILocalVariable(name: "dataBadBuffer", scope: !35, file: !2, line: 24, type: !48) -!48 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 3200, elements: !49) -!49 = !{!50} -!50 = !DISubrange(count: 50) -!51 = !DILocation(line: 24, column: 13, scope: !35) -!52 = !DILocalVariable(name: "dataGoodBuffer", scope: !35, file: !2, line: 25, type: !53) -!53 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 6400, elements: !54) -!54 = !{!55} -!55 = !DISubrange(count: 100) -!56 = !DILocation(line: 25, column: 13, scope: !35) -!57 = !DILocation(line: 28, column: 12, scope: !35) -!58 = !DILocation(line: 28, column: 10, scope: !35) -!59 = !DILocalVariable(name: "source", scope: !60, file: !2, line: 30, type: !53) -!60 = distinct !DILexicalBlock(scope: !35, file: !2, line: 29, column: 5) -!61 = !DILocation(line: 30, column: 17, scope: !60) -!62 = !DILocation(line: 32, column: 17, scope: !60) -!63 = !DILocation(line: 32, column: 9, scope: !60) -!64 = !DILocation(line: 33, column: 26, scope: !60) -!65 = !DILocation(line: 33, column: 9, scope: !60) -!66 = !DILocation(line: 34, column: 24, scope: !60) -!67 = !DILocation(line: 34, column: 9, scope: !60) -!68 = !DILocation(line: 35, column: 27, scope: !60) -!69 = !DILocation(line: 35, column: 9, scope: !60) -!70 = !DILocation(line: 37, column: 1, scope: !35) -!71 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_int64_t_declare_memmove_01_good", scope: !2, file: !2, line: 61, type: !36, scopeLine: 62, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!72 = !DILocation(line: 63, column: 5, scope: !71) -!73 = !DILocation(line: 64, column: 1, scope: !71) -!74 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 76, type: !75, scopeLine: 77, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!75 = !DISubroutineType(types: !76) -!76 = !{!77, !77, !78} -!77 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!78 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !79, size: 64) -!79 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!80 = !DILocalVariable(name: "argc", arg: 1, scope: !74, file: !2, line: 76, type: !77) -!81 = !DILocation(line: 76, column: 14, scope: !74) -!82 = !DILocalVariable(name: "argv", arg: 2, scope: !74, file: !2, line: 76, type: !78) -!83 = !DILocation(line: 76, column: 27, scope: !74) -!84 = !DILocation(line: 79, column: 22, scope: !74) -!85 = !DILocation(line: 79, column: 12, scope: !74) -!86 = !DILocation(line: 79, column: 5, scope: !74) -!87 = !DILocation(line: 81, column: 5, scope: !74) -!88 = !DILocation(line: 82, column: 5, scope: !74) -!89 = !DILocation(line: 83, column: 5, scope: !74) -!90 = !DILocation(line: 86, column: 5, scope: !74) -!91 = !DILocation(line: 87, column: 5, scope: !74) -!92 = !DILocation(line: 88, column: 5, scope: !74) -!93 = !DILocation(line: 90, column: 5, scope: !74) -!94 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 44, type: !36, scopeLine: 45, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) -!95 = !DILocalVariable(name: "data", scope: !94, file: !2, line: 46, type: !40) -!96 = !DILocation(line: 46, column: 15, scope: !94) -!97 = !DILocalVariable(name: "dataBadBuffer", scope: !94, file: !2, line: 47, type: !48) -!98 = !DILocation(line: 47, column: 13, scope: !94) -!99 = !DILocalVariable(name: "dataGoodBuffer", scope: !94, file: !2, line: 48, type: !53) -!100 = !DILocation(line: 48, column: 13, scope: !94) -!101 = !DILocation(line: 50, column: 12, scope: !94) -!102 = !DILocation(line: 50, column: 10, scope: !94) -!103 = !DILocalVariable(name: "source", scope: !104, file: !2, line: 52, type: !53) -!104 = distinct !DILexicalBlock(scope: !94, file: !2, line: 51, column: 5) -!105 = !DILocation(line: 52, column: 17, scope: !104) -!106 = !DILocation(line: 54, column: 17, scope: !104) -!107 = !DILocation(line: 54, column: 9, scope: !104) -!108 = !DILocation(line: 55, column: 24, scope: !104) -!109 = !DILocation(line: 55, column: 9, scope: !104) -!110 = !DILocation(line: 56, column: 24, scope: !104) -!111 = !DILocation(line: 56, column: 9, scope: !104) -!112 = !DILocation(line: 57, column: 27, scope: !104) -!113 = !DILocation(line: 57, column: 9, scope: !104) -!114 = !DILocation(line: 59, column: 1, scope: !94) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_loop_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_loop_01.c.bc deleted file mode 100644 index 591d4f91..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_loop_01.c.bc +++ /dev/null @@ -1,360 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_loop_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_loop_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_loop_01_bad() #0 !dbg !37 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %source = alloca [100 x i32], align 16 - %i = alloca i64, align 8 - call void @llvm.dbg.declare(metadata ptr %data, metadata !41, metadata !DIExpression()), !dbg !42 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !43, metadata !DIExpression()), !dbg !44 - %0 = alloca i8, i64 200, align 16, !dbg !45 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !44 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !46, metadata !DIExpression()), !dbg !47 - %1 = alloca i8, i64 400, align 16, !dbg !48 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !47 - %2 = load ptr, ptr %dataBadBuffer, align 8, !dbg !49 - store ptr %2, ptr %data, align 8, !dbg !50 - call void @llvm.dbg.declare(metadata ptr %source, metadata !51, metadata !DIExpression()), !dbg !56 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 400, i1 false), !dbg !56 - call void @llvm.dbg.declare(metadata ptr %i, metadata !57, metadata !DIExpression()), !dbg !62 - store i64 0, ptr %i, align 8, !dbg !63 - br label %for.cond, !dbg !65 - -for.cond: ; preds = %for.inc, %entry - %3 = load i64, ptr %i, align 8, !dbg !66 - %cmp = icmp ult i64 %3, 100, !dbg !68 - br i1 %cmp, label %for.body, label %for.end, !dbg !69 - -for.body: ; preds = %for.cond - %4 = load i64, ptr %i, align 8, !dbg !70 - %arrayidx = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 %4, !dbg !72 - %5 = load i32, ptr %arrayidx, align 4, !dbg !72 - %6 = load ptr, ptr %data, align 8, !dbg !73 - %7 = load i64, ptr %i, align 8, !dbg !74 - %arrayidx1 = getelementptr inbounds i32, ptr %6, i64 %7, !dbg !73 - store i32 %5, ptr %arrayidx1, align 4, !dbg !75 - br label %for.inc, !dbg !76 - -for.inc: ; preds = %for.body - %8 = load i64, ptr %i, align 8, !dbg !77 - %inc = add i64 %8, 1, !dbg !77 - store i64 %inc, ptr %i, align 8, !dbg !77 - br label %for.cond, !dbg !78, !llvm.loop !79 - -for.end: ; preds = %for.cond - %9 = load ptr, ptr %data, align 8, !dbg !82 - %call = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %9, i64 noundef 399), !dbg !83 - %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !84 - %call2 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay, i64 noundef 399), !dbg !85 - %10 = load ptr, ptr %data, align 8, !dbg !86 - %arrayidx3 = getelementptr inbounds i32, ptr %10, i64 0, !dbg !86 - %11 = load i32, ptr %arrayidx3, align 4, !dbg !86 - call void @printIntLine(i32 noundef %11), !dbg !87 - ret void, !dbg !88 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -declare i32 @UNSAFE_BUFACCESS(...) #3 - -declare i32 @SAFE_BUFACCESS(...) #3 - -declare void @printIntLine(i32 noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_loop_01_good() #0 !dbg !89 { -entry: - call void @goodG2B(), !dbg !90 - ret void, !dbg !91 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !92 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !97, metadata !DIExpression()), !dbg !98 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !99, metadata !DIExpression()), !dbg !100 - %call = call i64 @time(ptr noundef null) #5, !dbg !101 - %conv = trunc i64 %call to i32, !dbg !102 - call void @srand(i32 noundef %conv) #5, !dbg !103 - call void @printLine(ptr noundef @.str), !dbg !104 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_loop_01_good(), !dbg !105 - call void @printLine(ptr noundef @.str.1), !dbg !106 - call void @printLine(ptr noundef @.str.2), !dbg !107 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_loop_01_bad(), !dbg !108 - call void @printLine(ptr noundef @.str.3), !dbg !109 - ret i32 0, !dbg !110 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 - -declare void @printLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !111 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %source = alloca [100 x i32], align 16 - %i = alloca i64, align 8 - call void @llvm.dbg.declare(metadata ptr %data, metadata !112, metadata !DIExpression()), !dbg !113 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !114, metadata !DIExpression()), !dbg !115 - %0 = alloca i8, i64 200, align 16, !dbg !116 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !115 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !117, metadata !DIExpression()), !dbg !118 - %1 = alloca i8, i64 400, align 16, !dbg !119 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !118 - %2 = load ptr, ptr %dataGoodBuffer, align 8, !dbg !120 - store ptr %2, ptr %data, align 8, !dbg !121 - call void @llvm.dbg.declare(metadata ptr %source, metadata !122, metadata !DIExpression()), !dbg !124 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 400, i1 false), !dbg !124 - call void @llvm.dbg.declare(metadata ptr %i, metadata !125, metadata !DIExpression()), !dbg !127 - store i64 0, ptr %i, align 8, !dbg !128 - br label %for.cond, !dbg !130 - -for.cond: ; preds = %for.inc, %entry - %3 = load i64, ptr %i, align 8, !dbg !131 - %cmp = icmp ult i64 %3, 100, !dbg !133 - br i1 %cmp, label %for.body, label %for.end, !dbg !134 - -for.body: ; preds = %for.cond - %4 = load i64, ptr %i, align 8, !dbg !135 - %arrayidx = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 %4, !dbg !137 - %5 = load i32, ptr %arrayidx, align 4, !dbg !137 - %6 = load ptr, ptr %data, align 8, !dbg !138 - %7 = load i64, ptr %i, align 8, !dbg !139 - %arrayidx1 = getelementptr inbounds i32, ptr %6, i64 %7, !dbg !138 - store i32 %5, ptr %arrayidx1, align 4, !dbg !140 - %8 = load ptr, ptr %data, align 8, !dbg !141 - %9 = load i64, ptr %i, align 8, !dbg !142 - %add = add i64 %9, 1, !dbg !143 - %mul = mul i64 %add, 4, !dbg !144 - %sub = sub i64 %mul, 1, !dbg !145 - %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %8, i64 noundef %sub), !dbg !146 - %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !147 - %10 = load i64, ptr %i, align 8, !dbg !148 - %add2 = add i64 %10, 1, !dbg !149 - %mul3 = mul i64 %add2, 4, !dbg !150 - %sub4 = sub i64 %mul3, 1, !dbg !151 - %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay, i64 noundef %sub4), !dbg !152 - br label %for.inc, !dbg !153 - -for.inc: ; preds = %for.body - %11 = load i64, ptr %i, align 8, !dbg !154 - %inc = add i64 %11, 1, !dbg !154 - store i64 %inc, ptr %i, align 8, !dbg !154 - br label %for.cond, !dbg !155, !llvm.loop !156 - -for.end: ; preds = %for.cond - %12 = load ptr, ptr %data, align 8, !dbg !158 - %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %12, i64 noundef 399), !dbg !159 - %arraydecay7 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !160 - %call8 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay7, i64 noundef 399), !dbg !161 - %13 = load ptr, ptr %data, align 8, !dbg !162 - %arrayidx9 = getelementptr inbounds i32, ptr %13, i64 0, !dbg !162 - %14 = load i32, ptr %arrayidx9, align 4, !dbg !162 - call void @printIntLine(i32 noundef %14), !dbg !163 - ret void, !dbg !164 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!29, !30, !31, !32, !33, !34, !35} -!llvm.ident = !{!36} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 95, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ac59ee9a98ce00cfcf4141366754d53d") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 97, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 100, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 102, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ac59ee9a98ce00cfcf4141366754d53d") -!24 = !{!25, !27} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) -!26 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!27 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!28 = !{!0, !7, !12, !17} -!29 = !{i32 7, !"Dwarf Version", i32 5} -!30 = !{i32 2, !"Debug Info Version", i32 3} -!31 = !{i32 1, !"wchar_size", i32 4} -!32 = !{i32 8, !"PIC Level", i32 2} -!33 = !{i32 7, !"PIE Level", i32 2} -!34 = !{i32 7, !"uwtable", i32 2} -!35 = !{i32 7, !"frame-pointer", i32 2} -!36 = !{!"clang version 16.0.0"} -!37 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_loop_01_bad", scope: !2, file: !2, line: 21, type: !38, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!38 = !DISubroutineType(types: !39) -!39 = !{null} -!40 = !{} -!41 = !DILocalVariable(name: "data", scope: !37, file: !2, line: 23, type: !25) -!42 = !DILocation(line: 23, column: 11, scope: !37) -!43 = !DILocalVariable(name: "dataBadBuffer", scope: !37, file: !2, line: 24, type: !25) -!44 = !DILocation(line: 24, column: 11, scope: !37) -!45 = !DILocation(line: 24, column: 34, scope: !37) -!46 = !DILocalVariable(name: "dataGoodBuffer", scope: !37, file: !2, line: 25, type: !25) -!47 = !DILocation(line: 25, column: 11, scope: !37) -!48 = !DILocation(line: 25, column: 35, scope: !37) -!49 = !DILocation(line: 28, column: 12, scope: !37) -!50 = !DILocation(line: 28, column: 10, scope: !37) -!51 = !DILocalVariable(name: "source", scope: !52, file: !2, line: 30, type: !53) -!52 = distinct !DILexicalBlock(scope: !37, file: !2, line: 29, column: 5) -!53 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 3200, elements: !54) -!54 = !{!55} -!55 = !DISubrange(count: 100) -!56 = !DILocation(line: 30, column: 13, scope: !52) -!57 = !DILocalVariable(name: "i", scope: !58, file: !2, line: 32, type: !59) -!58 = distinct !DILexicalBlock(scope: !52, file: !2, line: 31, column: 9) -!59 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !60, line: 46, baseType: !61) -!60 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!61 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) -!62 = !DILocation(line: 32, column: 20, scope: !58) -!63 = !DILocation(line: 34, column: 20, scope: !64) -!64 = distinct !DILexicalBlock(scope: !58, file: !2, line: 34, column: 13) -!65 = !DILocation(line: 34, column: 18, scope: !64) -!66 = !DILocation(line: 34, column: 25, scope: !67) -!67 = distinct !DILexicalBlock(scope: !64, file: !2, line: 34, column: 13) -!68 = !DILocation(line: 34, column: 27, scope: !67) -!69 = !DILocation(line: 34, column: 13, scope: !64) -!70 = !DILocation(line: 36, column: 34, scope: !71) -!71 = distinct !DILexicalBlock(scope: !67, file: !2, line: 35, column: 13) -!72 = !DILocation(line: 36, column: 27, scope: !71) -!73 = !DILocation(line: 36, column: 17, scope: !71) -!74 = !DILocation(line: 36, column: 22, scope: !71) -!75 = !DILocation(line: 36, column: 25, scope: !71) -!76 = !DILocation(line: 37, column: 13, scope: !71) -!77 = !DILocation(line: 34, column: 35, scope: !67) -!78 = !DILocation(line: 34, column: 13, scope: !67) -!79 = distinct !{!79, !69, !80, !81} -!80 = !DILocation(line: 37, column: 13, scope: !64) -!81 = !{!"llvm.loop.mustprogress"} -!82 = !DILocation(line: 38, column: 30, scope: !58) -!83 = !DILocation(line: 38, column: 13, scope: !58) -!84 = !DILocation(line: 39, column: 28, scope: !58) -!85 = !DILocation(line: 39, column: 13, scope: !58) -!86 = !DILocation(line: 40, column: 26, scope: !58) -!87 = !DILocation(line: 40, column: 13, scope: !58) -!88 = !DILocation(line: 43, column: 1, scope: !37) -!89 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_loop_01_good", scope: !2, file: !2, line: 75, type: !38, scopeLine: 76, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!90 = !DILocation(line: 77, column: 5, scope: !89) -!91 = !DILocation(line: 78, column: 1, scope: !89) -!92 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 90, type: !93, scopeLine: 91, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!93 = !DISubroutineType(types: !94) -!94 = !{!26, !26, !95} -!95 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !96, size: 64) -!96 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!97 = !DILocalVariable(name: "argc", arg: 1, scope: !92, file: !2, line: 90, type: !26) -!98 = !DILocation(line: 90, column: 14, scope: !92) -!99 = !DILocalVariable(name: "argv", arg: 2, scope: !92, file: !2, line: 90, type: !95) -!100 = !DILocation(line: 90, column: 27, scope: !92) -!101 = !DILocation(line: 93, column: 22, scope: !92) -!102 = !DILocation(line: 93, column: 12, scope: !92) -!103 = !DILocation(line: 93, column: 5, scope: !92) -!104 = !DILocation(line: 95, column: 5, scope: !92) -!105 = !DILocation(line: 96, column: 5, scope: !92) -!106 = !DILocation(line: 97, column: 5, scope: !92) -!107 = !DILocation(line: 100, column: 5, scope: !92) -!108 = !DILocation(line: 101, column: 5, scope: !92) -!109 = !DILocation(line: 102, column: 5, scope: !92) -!110 = !DILocation(line: 104, column: 5, scope: !92) -!111 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 50, type: !38, scopeLine: 51, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !40) -!112 = !DILocalVariable(name: "data", scope: !111, file: !2, line: 52, type: !25) -!113 = !DILocation(line: 52, column: 11, scope: !111) -!114 = !DILocalVariable(name: "dataBadBuffer", scope: !111, file: !2, line: 53, type: !25) -!115 = !DILocation(line: 53, column: 11, scope: !111) -!116 = !DILocation(line: 53, column: 34, scope: !111) -!117 = !DILocalVariable(name: "dataGoodBuffer", scope: !111, file: !2, line: 54, type: !25) -!118 = !DILocation(line: 54, column: 11, scope: !111) -!119 = !DILocation(line: 54, column: 35, scope: !111) -!120 = !DILocation(line: 56, column: 12, scope: !111) -!121 = !DILocation(line: 56, column: 10, scope: !111) -!122 = !DILocalVariable(name: "source", scope: !123, file: !2, line: 58, type: !53) -!123 = distinct !DILexicalBlock(scope: !111, file: !2, line: 57, column: 5) -!124 = !DILocation(line: 58, column: 13, scope: !123) -!125 = !DILocalVariable(name: "i", scope: !126, file: !2, line: 60, type: !59) -!126 = distinct !DILexicalBlock(scope: !123, file: !2, line: 59, column: 9) -!127 = !DILocation(line: 60, column: 20, scope: !126) -!128 = !DILocation(line: 62, column: 20, scope: !129) -!129 = distinct !DILexicalBlock(scope: !126, file: !2, line: 62, column: 13) -!130 = !DILocation(line: 62, column: 18, scope: !129) -!131 = !DILocation(line: 62, column: 25, scope: !132) -!132 = distinct !DILexicalBlock(scope: !129, file: !2, line: 62, column: 13) -!133 = !DILocation(line: 62, column: 27, scope: !132) -!134 = !DILocation(line: 62, column: 13, scope: !129) -!135 = !DILocation(line: 64, column: 34, scope: !136) -!136 = distinct !DILexicalBlock(scope: !132, file: !2, line: 63, column: 13) -!137 = !DILocation(line: 64, column: 27, scope: !136) -!138 = !DILocation(line: 64, column: 17, scope: !136) -!139 = !DILocation(line: 64, column: 22, scope: !136) -!140 = !DILocation(line: 64, column: 25, scope: !136) -!141 = !DILocation(line: 65, column: 32, scope: !136) -!142 = !DILocation(line: 65, column: 39, scope: !136) -!143 = !DILocation(line: 65, column: 40, scope: !136) -!144 = !DILocation(line: 65, column: 43, scope: !136) -!145 = !DILocation(line: 65, column: 56, scope: !136) -!146 = !DILocation(line: 65, column: 17, scope: !136) -!147 = !DILocation(line: 66, column: 32, scope: !136) -!148 = !DILocation(line: 66, column: 41, scope: !136) -!149 = !DILocation(line: 66, column: 42, scope: !136) -!150 = !DILocation(line: 66, column: 45, scope: !136) -!151 = !DILocation(line: 66, column: 58, scope: !136) -!152 = !DILocation(line: 66, column: 17, scope: !136) -!153 = !DILocation(line: 67, column: 13, scope: !136) -!154 = !DILocation(line: 62, column: 35, scope: !132) -!155 = !DILocation(line: 62, column: 13, scope: !132) -!156 = distinct !{!156, !134, !157, !81} -!157 = !DILocation(line: 67, column: 13, scope: !129) -!158 = !DILocation(line: 68, column: 28, scope: !126) -!159 = !DILocation(line: 68, column: 13, scope: !126) -!160 = !DILocation(line: 69, column: 28, scope: !126) -!161 = !DILocation(line: 69, column: 13, scope: !126) -!162 = !DILocation(line: 70, column: 26, scope: !126) -!163 = !DILocation(line: 70, column: 13, scope: !126) -!164 = !DILocation(line: 73, column: 1, scope: !111) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_memcpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_memcpy_01.c.bc deleted file mode 100644 index 1e9aeea0..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_memcpy_01.c.bc +++ /dev/null @@ -1,250 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_memcpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_memcpy_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_memcpy_01_bad() #0 !dbg !37 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !41, metadata !DIExpression()), !dbg !42 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !43, metadata !DIExpression()), !dbg !44 - %0 = alloca i8, i64 200, align 16, !dbg !45 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !44 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !46, metadata !DIExpression()), !dbg !47 - %1 = alloca i8, i64 400, align 16, !dbg !48 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !47 - %2 = load ptr, ptr %dataBadBuffer, align 8, !dbg !49 - store ptr %2, ptr %data, align 8, !dbg !50 - call void @llvm.dbg.declare(metadata ptr %source, metadata !51, metadata !DIExpression()), !dbg !56 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 400, i1 false), !dbg !56 - %3 = load ptr, ptr %data, align 8, !dbg !57 - %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !58 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %3, ptr align 16 %arraydecay, i64 400, i1 false), !dbg !58 - %4 = load ptr, ptr %data, align 8, !dbg !59 - %call = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %4, i64 noundef 399), !dbg !60 - %arraydecay1 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !61 - %call2 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay1, i64 noundef 399), !dbg !62 - %5 = load ptr, ptr %data, align 8, !dbg !63 - %arrayidx = getelementptr inbounds i32, ptr %5, i64 0, !dbg !63 - %6 = load i32, ptr %arrayidx, align 4, !dbg !63 - call void @printIntLine(i32 noundef %6), !dbg !64 - ret void, !dbg !65 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare i32 @SAFE_BUFACCESS(...) #4 - -declare void @printIntLine(i32 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_memcpy_01_good() #0 !dbg !66 { -entry: - call void @goodG2B(), !dbg !67 - ret void, !dbg !68 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !69 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !74, metadata !DIExpression()), !dbg !75 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !76, metadata !DIExpression()), !dbg !77 - %call = call i64 @time(ptr noundef null) #6, !dbg !78 - %conv = trunc i64 %call to i32, !dbg !79 - call void @srand(i32 noundef %conv) #6, !dbg !80 - call void @printLine(ptr noundef @.str), !dbg !81 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_memcpy_01_good(), !dbg !82 - call void @printLine(ptr noundef @.str.1), !dbg !83 - call void @printLine(ptr noundef @.str.2), !dbg !84 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_memcpy_01_bad(), !dbg !85 - call void @printLine(ptr noundef @.str.3), !dbg !86 - ret i32 0, !dbg !87 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !88 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !89, metadata !DIExpression()), !dbg !90 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !91, metadata !DIExpression()), !dbg !92 - %0 = alloca i8, i64 200, align 16, !dbg !93 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !92 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !94, metadata !DIExpression()), !dbg !95 - %1 = alloca i8, i64 400, align 16, !dbg !96 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !95 - %2 = load ptr, ptr %dataGoodBuffer, align 8, !dbg !97 - store ptr %2, ptr %data, align 8, !dbg !98 - call void @llvm.dbg.declare(metadata ptr %source, metadata !99, metadata !DIExpression()), !dbg !101 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 400, i1 false), !dbg !101 - %3 = load ptr, ptr %data, align 8, !dbg !102 - %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !103 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %3, ptr align 16 %arraydecay, i64 400, i1 false), !dbg !103 - %4 = load ptr, ptr %data, align 8, !dbg !104 - %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %4, i64 noundef 399), !dbg !105 - %arraydecay1 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !106 - %call2 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay1, i64 noundef 399), !dbg !107 - %5 = load ptr, ptr %data, align 8, !dbg !108 - %arrayidx = getelementptr inbounds i32, ptr %5, i64 0, !dbg !108 - %6 = load i32, ptr %arrayidx, align 4, !dbg !108 - call void @printIntLine(i32 noundef %6), !dbg !109 - ret void, !dbg !110 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!29, !30, !31, !32, !33, !34, !35} -!llvm.ident = !{!36} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 81, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ba902779d82a209ea0c3568362571c37") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 83, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 86, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 88, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ba902779d82a209ea0c3568362571c37") -!24 = !{!25, !27} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) -!26 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!27 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!28 = !{!0, !7, !12, !17} -!29 = !{i32 7, !"Dwarf Version", i32 5} -!30 = !{i32 2, !"Debug Info Version", i32 3} -!31 = !{i32 1, !"wchar_size", i32 4} -!32 = !{i32 8, !"PIC Level", i32 2} -!33 = !{i32 7, !"PIE Level", i32 2} -!34 = !{i32 7, !"uwtable", i32 2} -!35 = !{i32 7, !"frame-pointer", i32 2} -!36 = !{!"clang version 16.0.0"} -!37 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_memcpy_01_bad", scope: !2, file: !2, line: 21, type: !38, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!38 = !DISubroutineType(types: !39) -!39 = !{null} -!40 = !{} -!41 = !DILocalVariable(name: "data", scope: !37, file: !2, line: 23, type: !25) -!42 = !DILocation(line: 23, column: 11, scope: !37) -!43 = !DILocalVariable(name: "dataBadBuffer", scope: !37, file: !2, line: 24, type: !25) -!44 = !DILocation(line: 24, column: 11, scope: !37) -!45 = !DILocation(line: 24, column: 34, scope: !37) -!46 = !DILocalVariable(name: "dataGoodBuffer", scope: !37, file: !2, line: 25, type: !25) -!47 = !DILocation(line: 25, column: 11, scope: !37) -!48 = !DILocation(line: 25, column: 35, scope: !37) -!49 = !DILocation(line: 28, column: 12, scope: !37) -!50 = !DILocation(line: 28, column: 10, scope: !37) -!51 = !DILocalVariable(name: "source", scope: !52, file: !2, line: 30, type: !53) -!52 = distinct !DILexicalBlock(scope: !37, file: !2, line: 29, column: 5) -!53 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 3200, elements: !54) -!54 = !{!55} -!55 = !DISubrange(count: 100) -!56 = !DILocation(line: 30, column: 13, scope: !52) -!57 = !DILocation(line: 32, column: 16, scope: !52) -!58 = !DILocation(line: 32, column: 9, scope: !52) -!59 = !DILocation(line: 33, column: 26, scope: !52) -!60 = !DILocation(line: 33, column: 9, scope: !52) -!61 = !DILocation(line: 34, column: 24, scope: !52) -!62 = !DILocation(line: 34, column: 9, scope: !52) -!63 = !DILocation(line: 35, column: 22, scope: !52) -!64 = !DILocation(line: 35, column: 9, scope: !52) -!65 = !DILocation(line: 37, column: 1, scope: !37) -!66 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_int_alloca_memcpy_01_good", scope: !2, file: !2, line: 61, type: !38, scopeLine: 62, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!67 = !DILocation(line: 63, column: 5, scope: !66) -!68 = !DILocation(line: 64, column: 1, scope: !66) -!69 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 76, type: !70, scopeLine: 77, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!70 = !DISubroutineType(types: !71) -!71 = !{!26, !26, !72} -!72 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !73, size: 64) -!73 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!74 = !DILocalVariable(name: "argc", arg: 1, scope: !69, file: !2, line: 76, type: !26) -!75 = !DILocation(line: 76, column: 14, scope: !69) -!76 = !DILocalVariable(name: "argv", arg: 2, scope: !69, file: !2, line: 76, type: !72) -!77 = !DILocation(line: 76, column: 27, scope: !69) -!78 = !DILocation(line: 79, column: 22, scope: !69) -!79 = !DILocation(line: 79, column: 12, scope: !69) -!80 = !DILocation(line: 79, column: 5, scope: !69) -!81 = !DILocation(line: 81, column: 5, scope: !69) -!82 = !DILocation(line: 82, column: 5, scope: !69) -!83 = !DILocation(line: 83, column: 5, scope: !69) -!84 = !DILocation(line: 86, column: 5, scope: !69) -!85 = !DILocation(line: 87, column: 5, scope: !69) -!86 = !DILocation(line: 88, column: 5, scope: !69) -!87 = !DILocation(line: 90, column: 5, scope: !69) -!88 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 44, type: !38, scopeLine: 45, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !40) -!89 = !DILocalVariable(name: "data", scope: !88, file: !2, line: 46, type: !25) -!90 = !DILocation(line: 46, column: 11, scope: !88) -!91 = !DILocalVariable(name: "dataBadBuffer", scope: !88, file: !2, line: 47, type: !25) -!92 = !DILocation(line: 47, column: 11, scope: !88) -!93 = !DILocation(line: 47, column: 34, scope: !88) -!94 = !DILocalVariable(name: "dataGoodBuffer", scope: !88, file: !2, line: 48, type: !25) -!95 = !DILocation(line: 48, column: 11, scope: !88) -!96 = !DILocation(line: 48, column: 35, scope: !88) -!97 = !DILocation(line: 50, column: 12, scope: !88) -!98 = !DILocation(line: 50, column: 10, scope: !88) -!99 = !DILocalVariable(name: "source", scope: !100, file: !2, line: 52, type: !53) -!100 = distinct !DILexicalBlock(scope: !88, file: !2, line: 51, column: 5) -!101 = !DILocation(line: 52, column: 13, scope: !100) -!102 = !DILocation(line: 54, column: 16, scope: !100) -!103 = !DILocation(line: 54, column: 9, scope: !100) -!104 = !DILocation(line: 55, column: 24, scope: !100) -!105 = !DILocation(line: 55, column: 9, scope: !100) -!106 = !DILocation(line: 56, column: 24, scope: !100) -!107 = !DILocation(line: 56, column: 9, scope: !100) -!108 = !DILocation(line: 57, column: 22, scope: !100) -!109 = !DILocation(line: 57, column: 9, scope: !100) -!110 = !DILocation(line: 59, column: 1, scope: !88) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_alloca_memmove_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_alloca_memmove_01.c.bc deleted file mode 100644 index 9015a291..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_alloca_memmove_01.c.bc +++ /dev/null @@ -1,358 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_alloca_memmove_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_alloca_memmove_01.c" -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-unknown-linux-gnu" - -%struct._twoIntsStruct = type { i32, i32 } - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_alloca_memmove_01_bad() #0 !dbg !43 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %source = alloca [100 x %struct._twoIntsStruct], align 16 - %i = alloca i64, align 8 - call void @llvm.dbg.declare(metadata ptr %data, metadata !47, metadata !DIExpression()), !dbg !48 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !49, metadata !DIExpression()), !dbg !50 - %0 = alloca i8, i64 400, align 16, !dbg !51 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !50 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !52, metadata !DIExpression()), !dbg !53 - %1 = alloca i8, i64 800, align 16, !dbg !54 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !53 - %2 = load ptr, ptr %dataBadBuffer, align 8, !dbg !55 - store ptr %2, ptr %data, align 8, !dbg !56 - call void @llvm.dbg.declare(metadata ptr %source, metadata !57, metadata !DIExpression()), !dbg !62 - call void @llvm.dbg.declare(metadata ptr %i, metadata !63, metadata !DIExpression()), !dbg !68 - store i64 0, ptr %i, align 8, !dbg !69 - br label %for.cond, !dbg !71 - -for.cond: ; preds = %for.inc, %entry - %3 = load i64, ptr %i, align 8, !dbg !72 - %cmp = icmp ult i64 %3, 100, !dbg !74 - br i1 %cmp, label %for.body, label %for.end, !dbg !75 - -for.body: ; preds = %for.cond - %4 = load i64, ptr %i, align 8, !dbg !76 - %arrayidx = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %4, !dbg !78 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %arrayidx, i32 0, i32 0, !dbg !79 - store i32 0, ptr %intOne, align 8, !dbg !80 - %5 = load i64, ptr %i, align 8, !dbg !81 - %arrayidx1 = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %5, !dbg !82 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %arrayidx1, i32 0, i32 1, !dbg !83 - store i32 0, ptr %intTwo, align 4, !dbg !84 - br label %for.inc, !dbg !85 - -for.inc: ; preds = %for.body - %6 = load i64, ptr %i, align 8, !dbg !86 - %inc = add i64 %6, 1, !dbg !86 - store i64 %inc, ptr %i, align 8, !dbg !86 - br label %for.cond, !dbg !87, !llvm.loop !88 - -for.end: ; preds = %for.cond - %7 = load ptr, ptr %data, align 8, !dbg !91 - %arraydecay = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 0, !dbg !92 - call void @llvm.memmove.p0.p0.i64(ptr align 4 %7, ptr align 16 %arraydecay, i64 800, i1 false), !dbg !92 - %8 = load ptr, ptr %data, align 8, !dbg !93 - %call = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %8, i64 noundef 799), !dbg !94 - %arraydecay2 = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 0, !dbg !95 - %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 799), !dbg !96 - %9 = load ptr, ptr %data, align 8, !dbg !97 - %arrayidx4 = getelementptr inbounds %struct._twoIntsStruct, ptr %9, i64 0, !dbg !97 - call void @printStructLine(ptr noundef %arrayidx4), !dbg !98 - ret void, !dbg !99 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #2 - -declare i32 @UNSAFE_BUFACCESS(...) #3 - -declare i32 @SAFE_BUFACCESS(...) #3 - -declare void @printStructLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_alloca_memmove_01_good() #0 !dbg !100 { -entry: - call void @goodG2B(), !dbg !101 - ret void, !dbg !102 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !103 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !108, metadata !DIExpression()), !dbg !109 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !110, metadata !DIExpression()), !dbg !111 - %call = call i64 @time(ptr noundef null) #5, !dbg !112 - %conv = trunc i64 %call to i32, !dbg !113 - call void @srand(i32 noundef %conv) #5, !dbg !114 - call void @printLine(ptr noundef @.str), !dbg !115 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_alloca_memmove_01_good(), !dbg !116 - call void @printLine(ptr noundef @.str.1), !dbg !117 - call void @printLine(ptr noundef @.str.2), !dbg !118 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_alloca_memmove_01_bad(), !dbg !119 - call void @printLine(ptr noundef @.str.3), !dbg !120 - ret i32 0, !dbg !121 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 - -declare void @printLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !122 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %source = alloca [100 x %struct._twoIntsStruct], align 16 - %i = alloca i64, align 8 - call void @llvm.dbg.declare(metadata ptr %data, metadata !123, metadata !DIExpression()), !dbg !124 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !125, metadata !DIExpression()), !dbg !126 - %0 = alloca i8, i64 400, align 16, !dbg !127 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !126 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !128, metadata !DIExpression()), !dbg !129 - %1 = alloca i8, i64 800, align 16, !dbg !130 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !129 - %2 = load ptr, ptr %dataGoodBuffer, align 8, !dbg !131 - store ptr %2, ptr %data, align 8, !dbg !132 - call void @llvm.dbg.declare(metadata ptr %source, metadata !133, metadata !DIExpression()), !dbg !135 - call void @llvm.dbg.declare(metadata ptr %i, metadata !136, metadata !DIExpression()), !dbg !138 - store i64 0, ptr %i, align 8, !dbg !139 - br label %for.cond, !dbg !141 - -for.cond: ; preds = %for.inc, %entry - %3 = load i64, ptr %i, align 8, !dbg !142 - %cmp = icmp ult i64 %3, 100, !dbg !144 - br i1 %cmp, label %for.body, label %for.end, !dbg !145 - -for.body: ; preds = %for.cond - %4 = load i64, ptr %i, align 8, !dbg !146 - %arrayidx = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %4, !dbg !148 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %arrayidx, i32 0, i32 0, !dbg !149 - store i32 0, ptr %intOne, align 8, !dbg !150 - %5 = load i64, ptr %i, align 8, !dbg !151 - %arrayidx1 = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %5, !dbg !152 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %arrayidx1, i32 0, i32 1, !dbg !153 - store i32 0, ptr %intTwo, align 4, !dbg !154 - br label %for.inc, !dbg !155 - -for.inc: ; preds = %for.body - %6 = load i64, ptr %i, align 8, !dbg !156 - %inc = add i64 %6, 1, !dbg !156 - store i64 %inc, ptr %i, align 8, !dbg !156 - br label %for.cond, !dbg !157, !llvm.loop !158 - -for.end: ; preds = %for.cond - %7 = load ptr, ptr %data, align 8, !dbg !160 - %arraydecay = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 0, !dbg !161 - call void @llvm.memmove.p0.p0.i64(ptr align 4 %7, ptr align 16 %arraydecay, i64 800, i1 false), !dbg !161 - %8 = load ptr, ptr %data, align 8, !dbg !162 - %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %8, i64 noundef 799), !dbg !163 - %arraydecay2 = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 0, !dbg !164 - %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 799), !dbg !165 - %9 = load ptr, ptr %data, align 8, !dbg !166 - %arrayidx4 = getelementptr inbounds %struct._twoIntsStruct, ptr %9, i64 0, !dbg !166 - call void @printStructLine(ptr noundef %arrayidx4), !dbg !167 - ret void, !dbg !168 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!35, !36, !37, !38, !39, !40, !41} -!llvm.ident = !{!42} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 99, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_alloca_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d96d6fc73d13446b91e59ea7fe29488f") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 101, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 104, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 106, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !34, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_alloca_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d96d6fc73d13446b91e59ea7fe29488f") -!24 = !{!25, !33} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) -!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "twoIntsStruct", file: !27, line: 103, baseType: !28) -!27 = !DIFile(filename: "src/ae_overflow_tests/std_testcase.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "88a24111f8dafef29ef3f03c1f00803c") -!28 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_twoIntsStruct", file: !27, line: 99, size: 64, elements: !29) -!29 = !{!30, !32} -!30 = !DIDerivedType(tag: DW_TAG_member, name: "intOne", scope: !28, file: !27, line: 101, baseType: !31, size: 32) -!31 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!32 = !DIDerivedType(tag: DW_TAG_member, name: "intTwo", scope: !28, file: !27, line: 102, baseType: !31, size: 32, offset: 32) -!33 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!34 = !{!0, !7, !12, !17} -!35 = !{i32 7, !"Dwarf Version", i32 5} -!36 = !{i32 2, !"Debug Info Version", i32 3} -!37 = !{i32 1, !"wchar_size", i32 4} -!38 = !{i32 8, !"PIC Level", i32 2} -!39 = !{i32 7, !"PIE Level", i32 2} -!40 = !{i32 7, !"uwtable", i32 2} -!41 = !{i32 7, !"frame-pointer", i32 2} -!42 = !{!"clang version 16.0.0"} -!43 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_alloca_memmove_01_bad", scope: !2, file: !2, line: 21, type: !44, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !46) -!44 = !DISubroutineType(types: !45) -!45 = !{null} -!46 = !{} -!47 = !DILocalVariable(name: "data", scope: !43, file: !2, line: 23, type: !25) -!48 = !DILocation(line: 23, column: 21, scope: !43) -!49 = !DILocalVariable(name: "dataBadBuffer", scope: !43, file: !2, line: 24, type: !25) -!50 = !DILocation(line: 24, column: 21, scope: !43) -!51 = !DILocation(line: 24, column: 54, scope: !43) -!52 = !DILocalVariable(name: "dataGoodBuffer", scope: !43, file: !2, line: 25, type: !25) -!53 = !DILocation(line: 25, column: 21, scope: !43) -!54 = !DILocation(line: 25, column: 55, scope: !43) -!55 = !DILocation(line: 28, column: 12, scope: !43) -!56 = !DILocation(line: 28, column: 10, scope: !43) -!57 = !DILocalVariable(name: "source", scope: !58, file: !2, line: 30, type: !59) -!58 = distinct !DILexicalBlock(scope: !43, file: !2, line: 29, column: 5) -!59 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 6400, elements: !60) -!60 = !{!61} -!61 = !DISubrange(count: 100) -!62 = !DILocation(line: 30, column: 23, scope: !58) -!63 = !DILocalVariable(name: "i", scope: !64, file: !2, line: 32, type: !65) -!64 = distinct !DILexicalBlock(scope: !58, file: !2, line: 31, column: 9) -!65 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !66, line: 46, baseType: !67) -!66 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!67 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) -!68 = !DILocation(line: 32, column: 20, scope: !64) -!69 = !DILocation(line: 34, column: 20, scope: !70) -!70 = distinct !DILexicalBlock(scope: !64, file: !2, line: 34, column: 13) -!71 = !DILocation(line: 34, column: 18, scope: !70) -!72 = !DILocation(line: 34, column: 25, scope: !73) -!73 = distinct !DILexicalBlock(scope: !70, file: !2, line: 34, column: 13) -!74 = !DILocation(line: 34, column: 27, scope: !73) -!75 = !DILocation(line: 34, column: 13, scope: !70) -!76 = !DILocation(line: 36, column: 24, scope: !77) -!77 = distinct !DILexicalBlock(scope: !73, file: !2, line: 35, column: 13) -!78 = !DILocation(line: 36, column: 17, scope: !77) -!79 = !DILocation(line: 36, column: 27, scope: !77) -!80 = !DILocation(line: 36, column: 34, scope: !77) -!81 = !DILocation(line: 37, column: 24, scope: !77) -!82 = !DILocation(line: 37, column: 17, scope: !77) -!83 = !DILocation(line: 37, column: 27, scope: !77) -!84 = !DILocation(line: 37, column: 34, scope: !77) -!85 = !DILocation(line: 38, column: 13, scope: !77) -!86 = !DILocation(line: 34, column: 35, scope: !73) -!87 = !DILocation(line: 34, column: 13, scope: !73) -!88 = distinct !{!88, !75, !89, !90} -!89 = !DILocation(line: 38, column: 13, scope: !70) -!90 = !{!"llvm.loop.mustprogress"} -!91 = !DILocation(line: 41, column: 17, scope: !58) -!92 = !DILocation(line: 41, column: 9, scope: !58) -!93 = !DILocation(line: 42, column: 26, scope: !58) -!94 = !DILocation(line: 42, column: 9, scope: !58) -!95 = !DILocation(line: 43, column: 24, scope: !58) -!96 = !DILocation(line: 43, column: 9, scope: !58) -!97 = !DILocation(line: 44, column: 26, scope: !58) -!98 = !DILocation(line: 44, column: 9, scope: !58) -!99 = !DILocation(line: 46, column: 1, scope: !43) -!100 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_alloca_memmove_01_good", scope: !2, file: !2, line: 79, type: !44, scopeLine: 80, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !46) -!101 = !DILocation(line: 81, column: 5, scope: !100) -!102 = !DILocation(line: 82, column: 1, scope: !100) -!103 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 94, type: !104, scopeLine: 95, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !46) -!104 = !DISubroutineType(types: !105) -!105 = !{!31, !31, !106} -!106 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !107, size: 64) -!107 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!108 = !DILocalVariable(name: "argc", arg: 1, scope: !103, file: !2, line: 94, type: !31) -!109 = !DILocation(line: 94, column: 14, scope: !103) -!110 = !DILocalVariable(name: "argv", arg: 2, scope: !103, file: !2, line: 94, type: !106) -!111 = !DILocation(line: 94, column: 27, scope: !103) -!112 = !DILocation(line: 97, column: 22, scope: !103) -!113 = !DILocation(line: 97, column: 12, scope: !103) -!114 = !DILocation(line: 97, column: 5, scope: !103) -!115 = !DILocation(line: 99, column: 5, scope: !103) -!116 = !DILocation(line: 100, column: 5, scope: !103) -!117 = !DILocation(line: 101, column: 5, scope: !103) -!118 = !DILocation(line: 104, column: 5, scope: !103) -!119 = !DILocation(line: 105, column: 5, scope: !103) -!120 = !DILocation(line: 106, column: 5, scope: !103) -!121 = !DILocation(line: 108, column: 5, scope: !103) -!122 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 53, type: !44, scopeLine: 54, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !46) -!123 = !DILocalVariable(name: "data", scope: !122, file: !2, line: 55, type: !25) -!124 = !DILocation(line: 55, column: 21, scope: !122) -!125 = !DILocalVariable(name: "dataBadBuffer", scope: !122, file: !2, line: 56, type: !25) -!126 = !DILocation(line: 56, column: 21, scope: !122) -!127 = !DILocation(line: 56, column: 54, scope: !122) -!128 = !DILocalVariable(name: "dataGoodBuffer", scope: !122, file: !2, line: 57, type: !25) -!129 = !DILocation(line: 57, column: 21, scope: !122) -!130 = !DILocation(line: 57, column: 55, scope: !122) -!131 = !DILocation(line: 59, column: 12, scope: !122) -!132 = !DILocation(line: 59, column: 10, scope: !122) -!133 = !DILocalVariable(name: "source", scope: !134, file: !2, line: 61, type: !59) -!134 = distinct !DILexicalBlock(scope: !122, file: !2, line: 60, column: 5) -!135 = !DILocation(line: 61, column: 23, scope: !134) -!136 = !DILocalVariable(name: "i", scope: !137, file: !2, line: 63, type: !65) -!137 = distinct !DILexicalBlock(scope: !134, file: !2, line: 62, column: 9) -!138 = !DILocation(line: 63, column: 20, scope: !137) -!139 = !DILocation(line: 65, column: 20, scope: !140) -!140 = distinct !DILexicalBlock(scope: !137, file: !2, line: 65, column: 13) -!141 = !DILocation(line: 65, column: 18, scope: !140) -!142 = !DILocation(line: 65, column: 25, scope: !143) -!143 = distinct !DILexicalBlock(scope: !140, file: !2, line: 65, column: 13) -!144 = !DILocation(line: 65, column: 27, scope: !143) -!145 = !DILocation(line: 65, column: 13, scope: !140) -!146 = !DILocation(line: 67, column: 24, scope: !147) -!147 = distinct !DILexicalBlock(scope: !143, file: !2, line: 66, column: 13) -!148 = !DILocation(line: 67, column: 17, scope: !147) -!149 = !DILocation(line: 67, column: 27, scope: !147) -!150 = !DILocation(line: 67, column: 34, scope: !147) -!151 = !DILocation(line: 68, column: 24, scope: !147) -!152 = !DILocation(line: 68, column: 17, scope: !147) -!153 = !DILocation(line: 68, column: 27, scope: !147) -!154 = !DILocation(line: 68, column: 34, scope: !147) -!155 = !DILocation(line: 69, column: 13, scope: !147) -!156 = !DILocation(line: 65, column: 35, scope: !143) -!157 = !DILocation(line: 65, column: 13, scope: !143) -!158 = distinct !{!158, !145, !159, !90} -!159 = !DILocation(line: 69, column: 13, scope: !140) -!160 = !DILocation(line: 72, column: 17, scope: !134) -!161 = !DILocation(line: 72, column: 9, scope: !134) -!162 = !DILocation(line: 73, column: 24, scope: !134) -!163 = !DILocation(line: 73, column: 9, scope: !134) -!164 = !DILocation(line: 74, column: 24, scope: !134) -!165 = !DILocation(line: 74, column: 9, scope: !134) -!166 = !DILocation(line: 75, column: 26, scope: !134) -!167 = !DILocation(line: 75, column: 9, scope: !134) -!168 = !DILocation(line: 77, column: 1, scope: !122) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_declare_memmove_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_declare_memmove_01.c.bc deleted file mode 100644 index cc0d90ba..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_declare_memmove_01.c.bc +++ /dev/null @@ -1,349 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_declare_memmove_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_declare_memmove_01.c" -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-unknown-linux-gnu" - -%struct._twoIntsStruct = type { i32, i32 } - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_declare_memmove_01_bad() #0 !dbg !35 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x %struct._twoIntsStruct], align 16 - %dataGoodBuffer = alloca [100 x %struct._twoIntsStruct], align 16 - %source = alloca [100 x %struct._twoIntsStruct], align 16 - %i = alloca i64, align 8 - call void @llvm.dbg.declare(metadata ptr %data, metadata !39, metadata !DIExpression()), !dbg !48 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !49, metadata !DIExpression()), !dbg !53 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !54, metadata !DIExpression()), !dbg !58 - %arraydecay = getelementptr inbounds [50 x %struct._twoIntsStruct], ptr %dataBadBuffer, i64 0, i64 0, !dbg !59 - store ptr %arraydecay, ptr %data, align 8, !dbg !60 - call void @llvm.dbg.declare(metadata ptr %source, metadata !61, metadata !DIExpression()), !dbg !63 - call void @llvm.dbg.declare(metadata ptr %i, metadata !64, metadata !DIExpression()), !dbg !69 - store i64 0, ptr %i, align 8, !dbg !70 - br label %for.cond, !dbg !72 - -for.cond: ; preds = %for.inc, %entry - %0 = load i64, ptr %i, align 8, !dbg !73 - %cmp = icmp ult i64 %0, 100, !dbg !75 - br i1 %cmp, label %for.body, label %for.end, !dbg !76 - -for.body: ; preds = %for.cond - %1 = load i64, ptr %i, align 8, !dbg !77 - %arrayidx = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %1, !dbg !79 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %arrayidx, i32 0, i32 0, !dbg !80 - store i32 0, ptr %intOne, align 8, !dbg !81 - %2 = load i64, ptr %i, align 8, !dbg !82 - %arrayidx1 = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %2, !dbg !83 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %arrayidx1, i32 0, i32 1, !dbg !84 - store i32 0, ptr %intTwo, align 4, !dbg !85 - br label %for.inc, !dbg !86 - -for.inc: ; preds = %for.body - %3 = load i64, ptr %i, align 8, !dbg !87 - %inc = add i64 %3, 1, !dbg !87 - store i64 %inc, ptr %i, align 8, !dbg !87 - br label %for.cond, !dbg !88, !llvm.loop !89 - -for.end: ; preds = %for.cond - %4 = load ptr, ptr %data, align 8, !dbg !92 - %arraydecay2 = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 0, !dbg !93 - call void @llvm.memmove.p0.p0.i64(ptr align 4 %4, ptr align 16 %arraydecay2, i64 800, i1 false), !dbg !93 - %5 = load ptr, ptr %data, align 8, !dbg !94 - %call = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %5, i64 noundef 799), !dbg !95 - %arraydecay3 = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 0, !dbg !96 - %call4 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay3, i64 noundef 799), !dbg !97 - %6 = load ptr, ptr %data, align 8, !dbg !98 - %arrayidx5 = getelementptr inbounds %struct._twoIntsStruct, ptr %6, i64 0, !dbg !98 - call void @printStructLine(ptr noundef %arrayidx5), !dbg !99 - ret void, !dbg !100 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #2 - -declare i32 @UNSAFE_BUFACCESS(...) #3 - -declare i32 @SAFE_BUFACCESS(...) #3 - -declare void @printStructLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_declare_memmove_01_good() #0 !dbg !101 { -entry: - call void @goodG2B(), !dbg !102 - ret void, !dbg !103 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !104 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !109, metadata !DIExpression()), !dbg !110 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !111, metadata !DIExpression()), !dbg !112 - %call = call i64 @time(ptr noundef null) #5, !dbg !113 - %conv = trunc i64 %call to i32, !dbg !114 - call void @srand(i32 noundef %conv) #5, !dbg !115 - call void @printLine(ptr noundef @.str), !dbg !116 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_declare_memmove_01_good(), !dbg !117 - call void @printLine(ptr noundef @.str.1), !dbg !118 - call void @printLine(ptr noundef @.str.2), !dbg !119 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_declare_memmove_01_bad(), !dbg !120 - call void @printLine(ptr noundef @.str.3), !dbg !121 - ret i32 0, !dbg !122 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 - -declare void @printLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !123 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x %struct._twoIntsStruct], align 16 - %dataGoodBuffer = alloca [100 x %struct._twoIntsStruct], align 16 - %source = alloca [100 x %struct._twoIntsStruct], align 16 - %i = alloca i64, align 8 - call void @llvm.dbg.declare(metadata ptr %data, metadata !124, metadata !DIExpression()), !dbg !125 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !126, metadata !DIExpression()), !dbg !127 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !128, metadata !DIExpression()), !dbg !129 - %arraydecay = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !130 - store ptr %arraydecay, ptr %data, align 8, !dbg !131 - call void @llvm.dbg.declare(metadata ptr %source, metadata !132, metadata !DIExpression()), !dbg !134 - call void @llvm.dbg.declare(metadata ptr %i, metadata !135, metadata !DIExpression()), !dbg !137 - store i64 0, ptr %i, align 8, !dbg !138 - br label %for.cond, !dbg !140 - -for.cond: ; preds = %for.inc, %entry - %0 = load i64, ptr %i, align 8, !dbg !141 - %cmp = icmp ult i64 %0, 100, !dbg !143 - br i1 %cmp, label %for.body, label %for.end, !dbg !144 - -for.body: ; preds = %for.cond - %1 = load i64, ptr %i, align 8, !dbg !145 - %arrayidx = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %1, !dbg !147 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %arrayidx, i32 0, i32 0, !dbg !148 - store i32 0, ptr %intOne, align 8, !dbg !149 - %2 = load i64, ptr %i, align 8, !dbg !150 - %arrayidx1 = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %2, !dbg !151 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %arrayidx1, i32 0, i32 1, !dbg !152 - store i32 0, ptr %intTwo, align 4, !dbg !153 - br label %for.inc, !dbg !154 - -for.inc: ; preds = %for.body - %3 = load i64, ptr %i, align 8, !dbg !155 - %inc = add i64 %3, 1, !dbg !155 - store i64 %inc, ptr %i, align 8, !dbg !155 - br label %for.cond, !dbg !156, !llvm.loop !157 - -for.end: ; preds = %for.cond - %4 = load ptr, ptr %data, align 8, !dbg !159 - %arraydecay2 = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 0, !dbg !160 - call void @llvm.memmove.p0.p0.i64(ptr align 4 %4, ptr align 16 %arraydecay2, i64 800, i1 false), !dbg !160 - %5 = load ptr, ptr %data, align 8, !dbg !161 - %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %5, i64 noundef 799), !dbg !162 - %arraydecay3 = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 0, !dbg !163 - %call4 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay3, i64 noundef 799), !dbg !164 - %6 = load ptr, ptr %data, align 8, !dbg !165 - %arrayidx5 = getelementptr inbounds %struct._twoIntsStruct, ptr %6, i64 0, !dbg !165 - call void @printStructLine(ptr noundef %arrayidx5), !dbg !166 - ret void, !dbg !167 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} -!llvm.ident = !{!34} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 99, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_declare_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b47ae79a4c73135e2daa028201f420c5") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 101, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 104, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 106, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_declare_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b47ae79a4c73135e2daa028201f420c5") -!24 = !{!25} -!25 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!26 = !{!0, !7, !12, !17} -!27 = !{i32 7, !"Dwarf Version", i32 5} -!28 = !{i32 2, !"Debug Info Version", i32 3} -!29 = !{i32 1, !"wchar_size", i32 4} -!30 = !{i32 8, !"PIC Level", i32 2} -!31 = !{i32 7, !"PIE Level", i32 2} -!32 = !{i32 7, !"uwtable", i32 2} -!33 = !{i32 7, !"frame-pointer", i32 2} -!34 = !{!"clang version 16.0.0"} -!35 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_declare_memmove_01_bad", scope: !2, file: !2, line: 21, type: !36, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!36 = !DISubroutineType(types: !37) -!37 = !{null} -!38 = !{} -!39 = !DILocalVariable(name: "data", scope: !35, file: !2, line: 23, type: !40) -!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !41, size: 64) -!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "twoIntsStruct", file: !42, line: 103, baseType: !43) -!42 = !DIFile(filename: "src/ae_overflow_tests/std_testcase.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "88a24111f8dafef29ef3f03c1f00803c") -!43 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_twoIntsStruct", file: !42, line: 99, size: 64, elements: !44) -!44 = !{!45, !47} -!45 = !DIDerivedType(tag: DW_TAG_member, name: "intOne", scope: !43, file: !42, line: 101, baseType: !46, size: 32) -!46 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!47 = !DIDerivedType(tag: DW_TAG_member, name: "intTwo", scope: !43, file: !42, line: 102, baseType: !46, size: 32, offset: 32) -!48 = !DILocation(line: 23, column: 21, scope: !35) -!49 = !DILocalVariable(name: "dataBadBuffer", scope: !35, file: !2, line: 24, type: !50) -!50 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 3200, elements: !51) -!51 = !{!52} -!52 = !DISubrange(count: 50) -!53 = !DILocation(line: 24, column: 19, scope: !35) -!54 = !DILocalVariable(name: "dataGoodBuffer", scope: !35, file: !2, line: 25, type: !55) -!55 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 6400, elements: !56) -!56 = !{!57} -!57 = !DISubrange(count: 100) -!58 = !DILocation(line: 25, column: 19, scope: !35) -!59 = !DILocation(line: 28, column: 12, scope: !35) -!60 = !DILocation(line: 28, column: 10, scope: !35) -!61 = !DILocalVariable(name: "source", scope: !62, file: !2, line: 30, type: !55) -!62 = distinct !DILexicalBlock(scope: !35, file: !2, line: 29, column: 5) -!63 = !DILocation(line: 30, column: 23, scope: !62) -!64 = !DILocalVariable(name: "i", scope: !65, file: !2, line: 32, type: !66) -!65 = distinct !DILexicalBlock(scope: !62, file: !2, line: 31, column: 9) -!66 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !67, line: 46, baseType: !68) -!67 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!68 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) -!69 = !DILocation(line: 32, column: 20, scope: !65) -!70 = !DILocation(line: 34, column: 20, scope: !71) -!71 = distinct !DILexicalBlock(scope: !65, file: !2, line: 34, column: 13) -!72 = !DILocation(line: 34, column: 18, scope: !71) -!73 = !DILocation(line: 34, column: 25, scope: !74) -!74 = distinct !DILexicalBlock(scope: !71, file: !2, line: 34, column: 13) -!75 = !DILocation(line: 34, column: 27, scope: !74) -!76 = !DILocation(line: 34, column: 13, scope: !71) -!77 = !DILocation(line: 36, column: 24, scope: !78) -!78 = distinct !DILexicalBlock(scope: !74, file: !2, line: 35, column: 13) -!79 = !DILocation(line: 36, column: 17, scope: !78) -!80 = !DILocation(line: 36, column: 27, scope: !78) -!81 = !DILocation(line: 36, column: 34, scope: !78) -!82 = !DILocation(line: 37, column: 24, scope: !78) -!83 = !DILocation(line: 37, column: 17, scope: !78) -!84 = !DILocation(line: 37, column: 27, scope: !78) -!85 = !DILocation(line: 37, column: 34, scope: !78) -!86 = !DILocation(line: 38, column: 13, scope: !78) -!87 = !DILocation(line: 34, column: 35, scope: !74) -!88 = !DILocation(line: 34, column: 13, scope: !74) -!89 = distinct !{!89, !76, !90, !91} -!90 = !DILocation(line: 38, column: 13, scope: !71) -!91 = !{!"llvm.loop.mustprogress"} -!92 = !DILocation(line: 41, column: 17, scope: !62) -!93 = !DILocation(line: 41, column: 9, scope: !62) -!94 = !DILocation(line: 42, column: 26, scope: !62) -!95 = !DILocation(line: 42, column: 9, scope: !62) -!96 = !DILocation(line: 43, column: 24, scope: !62) -!97 = !DILocation(line: 43, column: 9, scope: !62) -!98 = !DILocation(line: 44, column: 26, scope: !62) -!99 = !DILocation(line: 44, column: 9, scope: !62) -!100 = !DILocation(line: 46, column: 1, scope: !35) -!101 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_struct_declare_memmove_01_good", scope: !2, file: !2, line: 79, type: !36, scopeLine: 80, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!102 = !DILocation(line: 81, column: 5, scope: !101) -!103 = !DILocation(line: 82, column: 1, scope: !101) -!104 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 94, type: !105, scopeLine: 95, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!105 = !DISubroutineType(types: !106) -!106 = !{!46, !46, !107} -!107 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !108, size: 64) -!108 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!109 = !DILocalVariable(name: "argc", arg: 1, scope: !104, file: !2, line: 94, type: !46) -!110 = !DILocation(line: 94, column: 14, scope: !104) -!111 = !DILocalVariable(name: "argv", arg: 2, scope: !104, file: !2, line: 94, type: !107) -!112 = !DILocation(line: 94, column: 27, scope: !104) -!113 = !DILocation(line: 97, column: 22, scope: !104) -!114 = !DILocation(line: 97, column: 12, scope: !104) -!115 = !DILocation(line: 97, column: 5, scope: !104) -!116 = !DILocation(line: 99, column: 5, scope: !104) -!117 = !DILocation(line: 100, column: 5, scope: !104) -!118 = !DILocation(line: 101, column: 5, scope: !104) -!119 = !DILocation(line: 104, column: 5, scope: !104) -!120 = !DILocation(line: 105, column: 5, scope: !104) -!121 = !DILocation(line: 106, column: 5, scope: !104) -!122 = !DILocation(line: 108, column: 5, scope: !104) -!123 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 53, type: !36, scopeLine: 54, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) -!124 = !DILocalVariable(name: "data", scope: !123, file: !2, line: 55, type: !40) -!125 = !DILocation(line: 55, column: 21, scope: !123) -!126 = !DILocalVariable(name: "dataBadBuffer", scope: !123, file: !2, line: 56, type: !50) -!127 = !DILocation(line: 56, column: 19, scope: !123) -!128 = !DILocalVariable(name: "dataGoodBuffer", scope: !123, file: !2, line: 57, type: !55) -!129 = !DILocation(line: 57, column: 19, scope: !123) -!130 = !DILocation(line: 59, column: 12, scope: !123) -!131 = !DILocation(line: 59, column: 10, scope: !123) -!132 = !DILocalVariable(name: "source", scope: !133, file: !2, line: 61, type: !55) -!133 = distinct !DILexicalBlock(scope: !123, file: !2, line: 60, column: 5) -!134 = !DILocation(line: 61, column: 23, scope: !133) -!135 = !DILocalVariable(name: "i", scope: !136, file: !2, line: 63, type: !66) -!136 = distinct !DILexicalBlock(scope: !133, file: !2, line: 62, column: 9) -!137 = !DILocation(line: 63, column: 20, scope: !136) -!138 = !DILocation(line: 65, column: 20, scope: !139) -!139 = distinct !DILexicalBlock(scope: !136, file: !2, line: 65, column: 13) -!140 = !DILocation(line: 65, column: 18, scope: !139) -!141 = !DILocation(line: 65, column: 25, scope: !142) -!142 = distinct !DILexicalBlock(scope: !139, file: !2, line: 65, column: 13) -!143 = !DILocation(line: 65, column: 27, scope: !142) -!144 = !DILocation(line: 65, column: 13, scope: !139) -!145 = !DILocation(line: 67, column: 24, scope: !146) -!146 = distinct !DILexicalBlock(scope: !142, file: !2, line: 66, column: 13) -!147 = !DILocation(line: 67, column: 17, scope: !146) -!148 = !DILocation(line: 67, column: 27, scope: !146) -!149 = !DILocation(line: 67, column: 34, scope: !146) -!150 = !DILocation(line: 68, column: 24, scope: !146) -!151 = !DILocation(line: 68, column: 17, scope: !146) -!152 = !DILocation(line: 68, column: 27, scope: !146) -!153 = !DILocation(line: 68, column: 34, scope: !146) -!154 = !DILocation(line: 69, column: 13, scope: !146) -!155 = !DILocation(line: 65, column: 35, scope: !142) -!156 = !DILocation(line: 65, column: 13, scope: !142) -!157 = distinct !{!157, !144, !158, !91} -!158 = !DILocation(line: 69, column: 13, scope: !139) -!159 = !DILocation(line: 72, column: 17, scope: !133) -!160 = !DILocation(line: 72, column: 9, scope: !133) -!161 = !DILocation(line: 73, column: 24, scope: !133) -!162 = !DILocation(line: 73, column: 9, scope: !133) -!163 = !DILocation(line: 74, column: 24, scope: !133) -!164 = !DILocation(line: 74, column: 9, scope: !133) -!165 = !DILocation(line: 75, column: 26, scope: !133) -!166 = !DILocation(line: 75, column: 9, scope: !133) -!167 = !DILocation(line: 77, column: 1, scope: !123) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_loop_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_loop_01.c.bc deleted file mode 100644 index 925e14b4..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_loop_01.c.bc +++ /dev/null @@ -1,364 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_loop_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_loop_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_loop_01_bad() #0 !dbg !39 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %i = alloca i64, align 8 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !43, metadata !DIExpression()), !dbg !44 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !45, metadata !DIExpression()), !dbg !46 - %0 = alloca i8, i64 200, align 16, !dbg !47 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !46 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !48, metadata !DIExpression()), !dbg !49 - %1 = alloca i8, i64 400, align 16, !dbg !50 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !49 - %2 = load ptr, ptr %dataBadBuffer, align 8, !dbg !51 - store ptr %2, ptr %data, align 8, !dbg !52 - %3 = load ptr, ptr %data, align 8, !dbg !53 - %arrayidx = getelementptr inbounds i32, ptr %3, i64 0, !dbg !53 - store i32 0, ptr %arrayidx, align 4, !dbg !54 - call void @llvm.dbg.declare(metadata ptr %i, metadata !55, metadata !DIExpression()), !dbg !59 - call void @llvm.dbg.declare(metadata ptr %source, metadata !60, metadata !DIExpression()), !dbg !64 - %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !65 - %call = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #4, !dbg !66 - %arrayidx1 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !67 - store i32 0, ptr %arrayidx1, align 4, !dbg !68 - store i64 0, ptr %i, align 8, !dbg !69 - br label %for.cond, !dbg !71 - -for.cond: ; preds = %for.inc, %entry - %4 = load i64, ptr %i, align 8, !dbg !72 - %cmp = icmp ult i64 %4, 100, !dbg !74 - br i1 %cmp, label %for.body, label %for.end, !dbg !75 - -for.body: ; preds = %for.cond - %5 = load i64, ptr %i, align 8, !dbg !76 - %arrayidx2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 %5, !dbg !78 - %6 = load i32, ptr %arrayidx2, align 4, !dbg !78 - %7 = load ptr, ptr %data, align 8, !dbg !79 - %8 = load i64, ptr %i, align 8, !dbg !80 - %arrayidx3 = getelementptr inbounds i32, ptr %7, i64 %8, !dbg !79 - store i32 %6, ptr %arrayidx3, align 4, !dbg !81 - br label %for.inc, !dbg !82 - -for.inc: ; preds = %for.body - %9 = load i64, ptr %i, align 8, !dbg !83 - %inc = add i64 %9, 1, !dbg !83 - store i64 %inc, ptr %i, align 8, !dbg !83 - br label %for.cond, !dbg !84, !llvm.loop !85 - -for.end: ; preds = %for.cond - %10 = load ptr, ptr %data, align 8, !dbg !88 - %arrayidx4 = getelementptr inbounds i32, ptr %10, i64 99, !dbg !88 - store i32 0, ptr %arrayidx4, align 4, !dbg !89 - %11 = load ptr, ptr %data, align 8, !dbg !90 - %call5 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %11, i64 noundef 399), !dbg !91 - %arraydecay6 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !92 - %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef 399), !dbg !93 - %12 = load ptr, ptr %data, align 8, !dbg !94 - call void @printWLine(ptr noundef %12), !dbg !95 - ret void, !dbg !96 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #2 - -declare i32 @UNSAFE_BUFACCESS(...) #3 - -declare i32 @SAFE_BUFACCESS(...) #3 - -declare void @printWLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_loop_01_good() #0 !dbg !97 { -entry: - call void @goodG2B(), !dbg !98 - ret void, !dbg !99 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !100 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !105, metadata !DIExpression()), !dbg !106 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !107, metadata !DIExpression()), !dbg !108 - %call = call i64 @time(ptr noundef null) #4, !dbg !109 - %conv = trunc i64 %call to i32, !dbg !110 - call void @srand(i32 noundef %conv) #4, !dbg !111 - call void @printLine(ptr noundef @.str), !dbg !112 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_loop_01_good(), !dbg !113 - call void @printLine(ptr noundef @.str.1), !dbg !114 - call void @printLine(ptr noundef @.str.2), !dbg !115 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_loop_01_bad(), !dbg !116 - call void @printLine(ptr noundef @.str.3), !dbg !117 - ret i32 0, !dbg !118 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 - -declare void @printLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !119 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %i = alloca i64, align 8 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !120, metadata !DIExpression()), !dbg !121 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !122, metadata !DIExpression()), !dbg !123 - %0 = alloca i8, i64 200, align 16, !dbg !124 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !123 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !125, metadata !DIExpression()), !dbg !126 - %1 = alloca i8, i64 400, align 16, !dbg !127 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !126 - %2 = load ptr, ptr %dataGoodBuffer, align 8, !dbg !128 - store ptr %2, ptr %data, align 8, !dbg !129 - %3 = load ptr, ptr %data, align 8, !dbg !130 - %arrayidx = getelementptr inbounds i32, ptr %3, i64 0, !dbg !130 - store i32 0, ptr %arrayidx, align 4, !dbg !131 - call void @llvm.dbg.declare(metadata ptr %i, metadata !132, metadata !DIExpression()), !dbg !134 - call void @llvm.dbg.declare(metadata ptr %source, metadata !135, metadata !DIExpression()), !dbg !136 - %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !137 - %call = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #4, !dbg !138 - %arrayidx1 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !139 - store i32 0, ptr %arrayidx1, align 4, !dbg !140 - store i64 0, ptr %i, align 8, !dbg !141 - br label %for.cond, !dbg !143 - -for.cond: ; preds = %for.inc, %entry - %4 = load i64, ptr %i, align 8, !dbg !144 - %cmp = icmp ult i64 %4, 100, !dbg !146 - br i1 %cmp, label %for.body, label %for.end, !dbg !147 - -for.body: ; preds = %for.cond - %5 = load i64, ptr %i, align 8, !dbg !148 - %arrayidx2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 %5, !dbg !150 - %6 = load i32, ptr %arrayidx2, align 4, !dbg !150 - %7 = load ptr, ptr %data, align 8, !dbg !151 - %8 = load i64, ptr %i, align 8, !dbg !152 - %arrayidx3 = getelementptr inbounds i32, ptr %7, i64 %8, !dbg !151 - store i32 %6, ptr %arrayidx3, align 4, !dbg !153 - br label %for.inc, !dbg !154 - -for.inc: ; preds = %for.body - %9 = load i64, ptr %i, align 8, !dbg !155 - %inc = add i64 %9, 1, !dbg !155 - store i64 %inc, ptr %i, align 8, !dbg !155 - br label %for.cond, !dbg !156, !llvm.loop !157 - -for.end: ; preds = %for.cond - %10 = load ptr, ptr %data, align 8, !dbg !159 - %arrayidx4 = getelementptr inbounds i32, ptr %10, i64 99, !dbg !159 - store i32 0, ptr %arrayidx4, align 4, !dbg !160 - %11 = load ptr, ptr %data, align 8, !dbg !161 - %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %11, i64 noundef 399), !dbg !162 - %arraydecay6 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !163 - %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef 399), !dbg !164 - %12 = load ptr, ptr %data, align 8, !dbg !165 - call void @printWLine(ptr noundef %12), !dbg !166 - ret void, !dbg !167 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!31, !32, !33, !34, !35, !36, !37} -!llvm.ident = !{!38} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 99, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "12ba8812b087ce2ce4bd2045ef94a333") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 101, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 104, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 106, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !30, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "12ba8812b087ce2ce4bd2045ef94a333") -!24 = !{!25, !29} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) -!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !27, line: 74, baseType: !28) -!27 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!28 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!29 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!30 = !{!0, !7, !12, !17} -!31 = !{i32 7, !"Dwarf Version", i32 5} -!32 = !{i32 2, !"Debug Info Version", i32 3} -!33 = !{i32 1, !"wchar_size", i32 4} -!34 = !{i32 8, !"PIC Level", i32 2} -!35 = !{i32 7, !"PIE Level", i32 2} -!36 = !{i32 7, !"uwtable", i32 2} -!37 = !{i32 7, !"frame-pointer", i32 2} -!38 = !{!"clang version 16.0.0"} -!39 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_loop_01_bad", scope: !2, file: !2, line: 23, type: !40, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !42) -!40 = !DISubroutineType(types: !41) -!41 = !{null} -!42 = !{} -!43 = !DILocalVariable(name: "data", scope: !39, file: !2, line: 25, type: !25) -!44 = !DILocation(line: 25, column: 15, scope: !39) -!45 = !DILocalVariable(name: "dataBadBuffer", scope: !39, file: !2, line: 26, type: !25) -!46 = !DILocation(line: 26, column: 15, scope: !39) -!47 = !DILocation(line: 26, column: 42, scope: !39) -!48 = !DILocalVariable(name: "dataGoodBuffer", scope: !39, file: !2, line: 27, type: !25) -!49 = !DILocation(line: 27, column: 15, scope: !39) -!50 = !DILocation(line: 27, column: 43, scope: !39) -!51 = !DILocation(line: 30, column: 12, scope: !39) -!52 = !DILocation(line: 30, column: 10, scope: !39) -!53 = !DILocation(line: 31, column: 5, scope: !39) -!54 = !DILocation(line: 31, column: 13, scope: !39) -!55 = !DILocalVariable(name: "i", scope: !56, file: !2, line: 33, type: !57) -!56 = distinct !DILexicalBlock(scope: !39, file: !2, line: 32, column: 5) -!57 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !27, line: 46, baseType: !58) -!58 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) -!59 = !DILocation(line: 33, column: 16, scope: !56) -!60 = !DILocalVariable(name: "source", scope: !56, file: !2, line: 34, type: !61) -!61 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 3200, elements: !62) -!62 = !{!63} -!63 = !DISubrange(count: 100) -!64 = !DILocation(line: 34, column: 17, scope: !56) -!65 = !DILocation(line: 35, column: 17, scope: !56) -!66 = !DILocation(line: 35, column: 9, scope: !56) -!67 = !DILocation(line: 36, column: 9, scope: !56) -!68 = !DILocation(line: 36, column: 23, scope: !56) -!69 = !DILocation(line: 38, column: 16, scope: !70) -!70 = distinct !DILexicalBlock(scope: !56, file: !2, line: 38, column: 9) -!71 = !DILocation(line: 38, column: 14, scope: !70) -!72 = !DILocation(line: 38, column: 21, scope: !73) -!73 = distinct !DILexicalBlock(scope: !70, file: !2, line: 38, column: 9) -!74 = !DILocation(line: 38, column: 23, scope: !73) -!75 = !DILocation(line: 38, column: 9, scope: !70) -!76 = !DILocation(line: 40, column: 30, scope: !77) -!77 = distinct !DILexicalBlock(scope: !73, file: !2, line: 39, column: 9) -!78 = !DILocation(line: 40, column: 23, scope: !77) -!79 = !DILocation(line: 40, column: 13, scope: !77) -!80 = !DILocation(line: 40, column: 18, scope: !77) -!81 = !DILocation(line: 40, column: 21, scope: !77) -!82 = !DILocation(line: 41, column: 9, scope: !77) -!83 = !DILocation(line: 38, column: 31, scope: !73) -!84 = !DILocation(line: 38, column: 9, scope: !73) -!85 = distinct !{!85, !75, !86, !87} -!86 = !DILocation(line: 41, column: 9, scope: !70) -!87 = !{!"llvm.loop.mustprogress"} -!88 = !DILocation(line: 42, column: 9, scope: !56) -!89 = !DILocation(line: 42, column: 21, scope: !56) -!90 = !DILocation(line: 43, column: 26, scope: !56) -!91 = !DILocation(line: 43, column: 9, scope: !56) -!92 = !DILocation(line: 44, column: 24, scope: !56) -!93 = !DILocation(line: 44, column: 9, scope: !56) -!94 = !DILocation(line: 45, column: 20, scope: !56) -!95 = !DILocation(line: 45, column: 9, scope: !56) -!96 = !DILocation(line: 47, column: 1, scope: !39) -!97 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_loop_01_good", scope: !2, file: !2, line: 79, type: !40, scopeLine: 80, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !42) -!98 = !DILocation(line: 81, column: 5, scope: !97) -!99 = !DILocation(line: 82, column: 1, scope: !97) -!100 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 94, type: !101, scopeLine: 95, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !42) -!101 = !DISubroutineType(types: !102) -!102 = !{!28, !28, !103} -!103 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !104, size: 64) -!104 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!105 = !DILocalVariable(name: "argc", arg: 1, scope: !100, file: !2, line: 94, type: !28) -!106 = !DILocation(line: 94, column: 14, scope: !100) -!107 = !DILocalVariable(name: "argv", arg: 2, scope: !100, file: !2, line: 94, type: !103) -!108 = !DILocation(line: 94, column: 27, scope: !100) -!109 = !DILocation(line: 97, column: 22, scope: !100) -!110 = !DILocation(line: 97, column: 12, scope: !100) -!111 = !DILocation(line: 97, column: 5, scope: !100) -!112 = !DILocation(line: 99, column: 5, scope: !100) -!113 = !DILocation(line: 100, column: 5, scope: !100) -!114 = !DILocation(line: 101, column: 5, scope: !100) -!115 = !DILocation(line: 104, column: 5, scope: !100) -!116 = !DILocation(line: 105, column: 5, scope: !100) -!117 = !DILocation(line: 106, column: 5, scope: !100) -!118 = !DILocation(line: 108, column: 5, scope: !100) -!119 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 54, type: !40, scopeLine: 55, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !42) -!120 = !DILocalVariable(name: "data", scope: !119, file: !2, line: 56, type: !25) -!121 = !DILocation(line: 56, column: 15, scope: !119) -!122 = !DILocalVariable(name: "dataBadBuffer", scope: !119, file: !2, line: 57, type: !25) -!123 = !DILocation(line: 57, column: 15, scope: !119) -!124 = !DILocation(line: 57, column: 42, scope: !119) -!125 = !DILocalVariable(name: "dataGoodBuffer", scope: !119, file: !2, line: 58, type: !25) -!126 = !DILocation(line: 58, column: 15, scope: !119) -!127 = !DILocation(line: 58, column: 43, scope: !119) -!128 = !DILocation(line: 60, column: 12, scope: !119) -!129 = !DILocation(line: 60, column: 10, scope: !119) -!130 = !DILocation(line: 61, column: 5, scope: !119) -!131 = !DILocation(line: 61, column: 13, scope: !119) -!132 = !DILocalVariable(name: "i", scope: !133, file: !2, line: 63, type: !57) -!133 = distinct !DILexicalBlock(scope: !119, file: !2, line: 62, column: 5) -!134 = !DILocation(line: 63, column: 16, scope: !133) -!135 = !DILocalVariable(name: "source", scope: !133, file: !2, line: 64, type: !61) -!136 = !DILocation(line: 64, column: 17, scope: !133) -!137 = !DILocation(line: 65, column: 17, scope: !133) -!138 = !DILocation(line: 65, column: 9, scope: !133) -!139 = !DILocation(line: 66, column: 9, scope: !133) -!140 = !DILocation(line: 66, column: 23, scope: !133) -!141 = !DILocation(line: 68, column: 16, scope: !142) -!142 = distinct !DILexicalBlock(scope: !133, file: !2, line: 68, column: 9) -!143 = !DILocation(line: 68, column: 14, scope: !142) -!144 = !DILocation(line: 68, column: 21, scope: !145) -!145 = distinct !DILexicalBlock(scope: !142, file: !2, line: 68, column: 9) -!146 = !DILocation(line: 68, column: 23, scope: !145) -!147 = !DILocation(line: 68, column: 9, scope: !142) -!148 = !DILocation(line: 70, column: 30, scope: !149) -!149 = distinct !DILexicalBlock(scope: !145, file: !2, line: 69, column: 9) -!150 = !DILocation(line: 70, column: 23, scope: !149) -!151 = !DILocation(line: 70, column: 13, scope: !149) -!152 = !DILocation(line: 70, column: 18, scope: !149) -!153 = !DILocation(line: 70, column: 21, scope: !149) -!154 = !DILocation(line: 71, column: 9, scope: !149) -!155 = !DILocation(line: 68, column: 31, scope: !145) -!156 = !DILocation(line: 68, column: 9, scope: !145) -!157 = distinct !{!157, !147, !158, !87} -!158 = !DILocation(line: 71, column: 9, scope: !142) -!159 = !DILocation(line: 72, column: 9, scope: !133) -!160 = !DILocation(line: 72, column: 21, scope: !133) -!161 = !DILocation(line: 73, column: 24, scope: !133) -!162 = !DILocation(line: 73, column: 9, scope: !133) -!163 = !DILocation(line: 74, column: 24, scope: !133) -!164 = !DILocation(line: 74, column: 9, scope: !133) -!165 = !DILocation(line: 75, column: 20, scope: !133) -!166 = !DILocation(line: 75, column: 9, scope: !133) -!167 = !DILocation(line: 77, column: 1, scope: !119) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_snprintf_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_snprintf_01.c.bc deleted file mode 100644 index 678c9ffa..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_snprintf_01.c.bc +++ /dev/null @@ -1,278 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_snprintf_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_snprintf_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [3 x i32] [i32 37, i32 115, i32 0], align 4, !dbg !0 -@.str.1 = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !13 -@.str.3 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !18 -@.str.4 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !23 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_snprintf_01_bad() #0 !dbg !44 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !48, metadata !DIExpression()), !dbg !49 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !50, metadata !DIExpression()), !dbg !51 - %0 = alloca i8, i64 200, align 16, !dbg !52 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !51 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !53, metadata !DIExpression()), !dbg !54 - %1 = alloca i8, i64 400, align 16, !dbg !55 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !54 - %2 = load ptr, ptr %dataBadBuffer, align 8, !dbg !56 - store ptr %2, ptr %data, align 8, !dbg !57 - %3 = load ptr, ptr %data, align 8, !dbg !58 - %arrayidx = getelementptr inbounds i32, ptr %3, i64 0, !dbg !58 - store i32 0, ptr %arrayidx, align 4, !dbg !59 - call void @llvm.dbg.declare(metadata ptr %source, metadata !60, metadata !DIExpression()), !dbg !65 - %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !66 - %call = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #4, !dbg !67 - %arrayidx1 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !68 - store i32 0, ptr %arrayidx1, align 4, !dbg !69 - %4 = load ptr, ptr %data, align 8, !dbg !70 - %arraydecay2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !71 - %call3 = call i32 (ptr, i64, ptr, ...) @swprintf(ptr noundef %4, i64 noundef 100, ptr noundef @.str, ptr noundef %arraydecay2) #4, !dbg !72 - %5 = load ptr, ptr %data, align 8, !dbg !73 - %call4 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %5, i64 noundef 399), !dbg !74 - %arraydecay5 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !75 - %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay5, i64 noundef 399), !dbg !76 - %6 = load ptr, ptr %data, align 8, !dbg !77 - call void @printWLine(ptr noundef %6), !dbg !78 - ret void, !dbg !79 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #2 - -; Function Attrs: nounwind -declare i32 @swprintf(ptr noundef, i64 noundef, ptr noundef, ...) #2 - -declare i32 @UNSAFE_BUFACCESS(...) #3 - -declare i32 @SAFE_BUFACCESS(...) #3 - -declare void @printWLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_snprintf_01_good() #0 !dbg !80 { -entry: - call void @goodG2B(), !dbg !81 - ret void, !dbg !82 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !83 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !88, metadata !DIExpression()), !dbg !89 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !90, metadata !DIExpression()), !dbg !91 - %call = call i64 @time(ptr noundef null) #4, !dbg !92 - %conv = trunc i64 %call to i32, !dbg !93 - call void @srand(i32 noundef %conv) #4, !dbg !94 - call void @printLine(ptr noundef @.str.1), !dbg !95 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_snprintf_01_good(), !dbg !96 - call void @printLine(ptr noundef @.str.2), !dbg !97 - call void @printLine(ptr noundef @.str.3), !dbg !98 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_snprintf_01_bad(), !dbg !99 - call void @printLine(ptr noundef @.str.4), !dbg !100 - ret i32 0, !dbg !101 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 - -declare void @printLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !102 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !103, metadata !DIExpression()), !dbg !104 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !105, metadata !DIExpression()), !dbg !106 - %0 = alloca i8, i64 200, align 16, !dbg !107 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !106 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !108, metadata !DIExpression()), !dbg !109 - %1 = alloca i8, i64 400, align 16, !dbg !110 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !109 - %2 = load ptr, ptr %dataGoodBuffer, align 8, !dbg !111 - store ptr %2, ptr %data, align 8, !dbg !112 - %3 = load ptr, ptr %data, align 8, !dbg !113 - %arrayidx = getelementptr inbounds i32, ptr %3, i64 0, !dbg !113 - store i32 0, ptr %arrayidx, align 4, !dbg !114 - call void @llvm.dbg.declare(metadata ptr %source, metadata !115, metadata !DIExpression()), !dbg !117 - %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !118 - %call = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #4, !dbg !119 - %arrayidx1 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !120 - store i32 0, ptr %arrayidx1, align 4, !dbg !121 - %4 = load ptr, ptr %data, align 8, !dbg !122 - %arraydecay2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !123 - %call3 = call i32 (ptr, i64, ptr, ...) @swprintf(ptr noundef %4, i64 noundef 100, ptr noundef @.str, ptr noundef %arraydecay2) #4, !dbg !124 - %5 = load ptr, ptr %data, align 8, !dbg !125 - %call4 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %5, i64 noundef 399), !dbg !126 - %arraydecay5 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !127 - %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay5, i64 noundef 399), !dbg !128 - %6 = load ptr, ptr %data, align 8, !dbg !129 - call void @printWLine(ptr noundef %6), !dbg !130 - ret void, !dbg !131 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind } - -!llvm.dbg.cu = !{!28} -!llvm.module.flags = !{!36, !37, !38, !39, !40, !41, !42} -!llvm.ident = !{!43} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 43, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_snprintf_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d12db9fda271778abc5ffcb0ec1c8b65") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 96, elements: !5) -!4 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!5 = !{!6} -!6 = !DISubrange(count: 3) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 95, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 144, elements: !11) -!10 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!11 = !{!12} -!12 = !DISubrange(count: 18) -!13 = !DIGlobalVariableExpression(var: !14, expr: !DIExpression()) -!14 = distinct !DIGlobalVariable(scope: null, file: !2, line: 97, type: !15, isLocal: true, isDefinition: true) -!15 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 128, elements: !16) -!16 = !{!17} -!17 = !DISubrange(count: 16) -!18 = !DIGlobalVariableExpression(var: !19, expr: !DIExpression()) -!19 = distinct !DIGlobalVariable(scope: null, file: !2, line: 100, type: !20, isLocal: true, isDefinition: true) -!20 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 136, elements: !21) -!21 = !{!22} -!22 = !DISubrange(count: 17) -!23 = !DIGlobalVariableExpression(var: !24, expr: !DIExpression()) -!24 = distinct !DIGlobalVariable(scope: null, file: !2, line: 102, type: !25, isLocal: true, isDefinition: true) -!25 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 120, elements: !26) -!26 = !{!27} -!27 = !DISubrange(count: 15) -!28 = distinct !DICompileUnit(language: DW_LANG_C11, file: !29, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !30, globals: !35, splitDebugInlining: false, nameTableKind: None) -!29 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_snprintf_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d12db9fda271778abc5ffcb0ec1c8b65") -!30 = !{!31, !34} -!31 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !32, size: 64) -!32 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !33, line: 74, baseType: !4) -!33 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!34 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!35 = !{!0, !7, !13, !18, !23} -!36 = !{i32 7, !"Dwarf Version", i32 5} -!37 = !{i32 2, !"Debug Info Version", i32 3} -!38 = !{i32 1, !"wchar_size", i32 4} -!39 = !{i32 8, !"PIC Level", i32 2} -!40 = !{i32 7, !"PIE Level", i32 2} -!41 = !{i32 7, !"uwtable", i32 2} -!42 = !{i32 7, !"frame-pointer", i32 2} -!43 = !{!"clang version 16.0.0"} -!44 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_snprintf_01_bad", scope: !2, file: !2, line: 29, type: !45, scopeLine: 30, spFlags: DISPFlagDefinition, unit: !28, retainedNodes: !47) -!45 = !DISubroutineType(types: !46) -!46 = !{null} -!47 = !{} -!48 = !DILocalVariable(name: "data", scope: !44, file: !2, line: 31, type: !31) -!49 = !DILocation(line: 31, column: 15, scope: !44) -!50 = !DILocalVariable(name: "dataBadBuffer", scope: !44, file: !2, line: 32, type: !31) -!51 = !DILocation(line: 32, column: 15, scope: !44) -!52 = !DILocation(line: 32, column: 42, scope: !44) -!53 = !DILocalVariable(name: "dataGoodBuffer", scope: !44, file: !2, line: 33, type: !31) -!54 = !DILocation(line: 33, column: 15, scope: !44) -!55 = !DILocation(line: 33, column: 43, scope: !44) -!56 = !DILocation(line: 36, column: 12, scope: !44) -!57 = !DILocation(line: 36, column: 10, scope: !44) -!58 = !DILocation(line: 37, column: 5, scope: !44) -!59 = !DILocation(line: 37, column: 13, scope: !44) -!60 = !DILocalVariable(name: "source", scope: !61, file: !2, line: 39, type: !62) -!61 = distinct !DILexicalBlock(scope: !44, file: !2, line: 38, column: 5) -!62 = !DICompositeType(tag: DW_TAG_array_type, baseType: !32, size: 3200, elements: !63) -!63 = !{!64} -!64 = !DISubrange(count: 100) -!65 = !DILocation(line: 39, column: 17, scope: !61) -!66 = !DILocation(line: 40, column: 17, scope: !61) -!67 = !DILocation(line: 40, column: 9, scope: !61) -!68 = !DILocation(line: 41, column: 9, scope: !61) -!69 = !DILocation(line: 41, column: 23, scope: !61) -!70 = !DILocation(line: 43, column: 18, scope: !61) -!71 = !DILocation(line: 43, column: 36, scope: !61) -!72 = !DILocation(line: 43, column: 9, scope: !61) -!73 = !DILocation(line: 44, column: 26, scope: !61) -!74 = !DILocation(line: 44, column: 9, scope: !61) -!75 = !DILocation(line: 45, column: 24, scope: !61) -!76 = !DILocation(line: 45, column: 9, scope: !61) -!77 = !DILocation(line: 46, column: 20, scope: !61) -!78 = !DILocation(line: 46, column: 9, scope: !61) -!79 = !DILocation(line: 48, column: 1, scope: !44) -!80 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_alloca_snprintf_01_good", scope: !2, file: !2, line: 75, type: !45, scopeLine: 76, spFlags: DISPFlagDefinition, unit: !28, retainedNodes: !47) -!81 = !DILocation(line: 77, column: 5, scope: !80) -!82 = !DILocation(line: 78, column: 1, scope: !80) -!83 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 90, type: !84, scopeLine: 91, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !28, retainedNodes: !47) -!84 = !DISubroutineType(types: !85) -!85 = !{!4, !4, !86} -!86 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !87, size: 64) -!87 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !10, size: 64) -!88 = !DILocalVariable(name: "argc", arg: 1, scope: !83, file: !2, line: 90, type: !4) -!89 = !DILocation(line: 90, column: 14, scope: !83) -!90 = !DILocalVariable(name: "argv", arg: 2, scope: !83, file: !2, line: 90, type: !86) -!91 = !DILocation(line: 90, column: 27, scope: !83) -!92 = !DILocation(line: 93, column: 22, scope: !83) -!93 = !DILocation(line: 93, column: 12, scope: !83) -!94 = !DILocation(line: 93, column: 5, scope: !83) -!95 = !DILocation(line: 95, column: 5, scope: !83) -!96 = !DILocation(line: 96, column: 5, scope: !83) -!97 = !DILocation(line: 97, column: 5, scope: !83) -!98 = !DILocation(line: 100, column: 5, scope: !83) -!99 = !DILocation(line: 101, column: 5, scope: !83) -!100 = !DILocation(line: 102, column: 5, scope: !83) -!101 = !DILocation(line: 104, column: 5, scope: !83) -!102 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 55, type: !45, scopeLine: 56, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !28, retainedNodes: !47) -!103 = !DILocalVariable(name: "data", scope: !102, file: !2, line: 57, type: !31) -!104 = !DILocation(line: 57, column: 15, scope: !102) -!105 = !DILocalVariable(name: "dataBadBuffer", scope: !102, file: !2, line: 58, type: !31) -!106 = !DILocation(line: 58, column: 15, scope: !102) -!107 = !DILocation(line: 58, column: 42, scope: !102) -!108 = !DILocalVariable(name: "dataGoodBuffer", scope: !102, file: !2, line: 59, type: !31) -!109 = !DILocation(line: 59, column: 15, scope: !102) -!110 = !DILocation(line: 59, column: 43, scope: !102) -!111 = !DILocation(line: 61, column: 12, scope: !102) -!112 = !DILocation(line: 61, column: 10, scope: !102) -!113 = !DILocation(line: 62, column: 5, scope: !102) -!114 = !DILocation(line: 62, column: 13, scope: !102) -!115 = !DILocalVariable(name: "source", scope: !116, file: !2, line: 64, type: !62) -!116 = distinct !DILexicalBlock(scope: !102, file: !2, line: 63, column: 5) -!117 = !DILocation(line: 64, column: 17, scope: !116) -!118 = !DILocation(line: 65, column: 17, scope: !116) -!119 = !DILocation(line: 65, column: 9, scope: !116) -!120 = !DILocation(line: 66, column: 9, scope: !116) -!121 = !DILocation(line: 66, column: 23, scope: !116) -!122 = !DILocation(line: 68, column: 18, scope: !116) -!123 = !DILocation(line: 68, column: 36, scope: !116) -!124 = !DILocation(line: 68, column: 9, scope: !116) -!125 = !DILocation(line: 69, column: 24, scope: !116) -!126 = !DILocation(line: 69, column: 9, scope: !116) -!127 = !DILocation(line: 70, column: 24, scope: !116) -!128 = !DILocation(line: 70, column: 9, scope: !116) -!129 = !DILocation(line: 71, column: 20, scope: !116) -!130 = !DILocation(line: 71, column: 9, scope: !116) -!131 = !DILocation(line: 73, column: 1, scope: !102) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01.c.bc deleted file mode 100644 index b42880c3..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01.c.bc +++ /dev/null @@ -1,355 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01_bad() #0 !dbg !35 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i32], align 16 - %dataGoodBuffer = alloca [100 x i32], align 16 - %i = alloca i64, align 8 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !39, metadata !DIExpression()), !dbg !44 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !45, metadata !DIExpression()), !dbg !49 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !50, metadata !DIExpression()), !dbg !54 - %arraydecay = getelementptr inbounds [50 x i32], ptr %dataBadBuffer, i64 0, i64 0, !dbg !55 - store ptr %arraydecay, ptr %data, align 8, !dbg !56 - %0 = load ptr, ptr %data, align 8, !dbg !57 - %arrayidx = getelementptr inbounds i32, ptr %0, i64 0, !dbg !57 - store i32 0, ptr %arrayidx, align 4, !dbg !58 - call void @llvm.dbg.declare(metadata ptr %i, metadata !59, metadata !DIExpression()), !dbg !63 - call void @llvm.dbg.declare(metadata ptr %source, metadata !64, metadata !DIExpression()), !dbg !65 - %arraydecay1 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !66 - %call = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 67, i64 noundef 99) #4, !dbg !67 - %arrayidx2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !68 - store i32 0, ptr %arrayidx2, align 4, !dbg !69 - store i64 0, ptr %i, align 8, !dbg !70 - br label %for.cond, !dbg !72 - -for.cond: ; preds = %for.inc, %entry - %1 = load i64, ptr %i, align 8, !dbg !73 - %cmp = icmp ult i64 %1, 100, !dbg !75 - br i1 %cmp, label %for.body, label %for.end, !dbg !76 - -for.body: ; preds = %for.cond - %2 = load i64, ptr %i, align 8, !dbg !77 - %arrayidx3 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 %2, !dbg !79 - %3 = load i32, ptr %arrayidx3, align 4, !dbg !79 - %4 = load ptr, ptr %data, align 8, !dbg !80 - %5 = load i64, ptr %i, align 8, !dbg !81 - %arrayidx4 = getelementptr inbounds i32, ptr %4, i64 %5, !dbg !80 - store i32 %3, ptr %arrayidx4, align 4, !dbg !82 - br label %for.inc, !dbg !83 - -for.inc: ; preds = %for.body - %6 = load i64, ptr %i, align 8, !dbg !84 - %inc = add i64 %6, 1, !dbg !84 - store i64 %inc, ptr %i, align 8, !dbg !84 - br label %for.cond, !dbg !85, !llvm.loop !86 - -for.end: ; preds = %for.cond - %7 = load ptr, ptr %data, align 8, !dbg !89 - %arrayidx5 = getelementptr inbounds i32, ptr %7, i64 99, !dbg !89 - store i32 0, ptr %arrayidx5, align 4, !dbg !90 - %8 = load ptr, ptr %data, align 8, !dbg !91 - %call6 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %8, i64 noundef 399), !dbg !92 - %arraydecay7 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !93 - %call8 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay7, i64 noundef 399), !dbg !94 - %9 = load ptr, ptr %data, align 8, !dbg !95 - call void @printWLine(ptr noundef %9), !dbg !96 - ret void, !dbg !97 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #2 - -declare i32 @UNSAFE_BUFACCESS(...) #3 - -declare i32 @SAFE_BUFACCESS(...) #3 - -declare void @printWLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01_good() #0 !dbg !98 { -entry: - call void @goodG2B(), !dbg !99 - ret void, !dbg !100 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !101 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !106, metadata !DIExpression()), !dbg !107 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !108, metadata !DIExpression()), !dbg !109 - %call = call i64 @time(ptr noundef null) #4, !dbg !110 - %conv = trunc i64 %call to i32, !dbg !111 - call void @srand(i32 noundef %conv) #4, !dbg !112 - call void @printLine(ptr noundef @.str), !dbg !113 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01_good(), !dbg !114 - call void @printLine(ptr noundef @.str.1), !dbg !115 - call void @printLine(ptr noundef @.str.2), !dbg !116 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01_bad(), !dbg !117 - call void @printLine(ptr noundef @.str.3), !dbg !118 - ret i32 0, !dbg !119 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 - -declare void @printLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !120 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i32], align 16 - %dataGoodBuffer = alloca [100 x i32], align 16 - %i = alloca i64, align 8 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !121, metadata !DIExpression()), !dbg !122 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !123, metadata !DIExpression()), !dbg !124 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !125, metadata !DIExpression()), !dbg !126 - %arraydecay = getelementptr inbounds [100 x i32], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !127 - store ptr %arraydecay, ptr %data, align 8, !dbg !128 - %0 = load ptr, ptr %data, align 8, !dbg !129 - %arrayidx = getelementptr inbounds i32, ptr %0, i64 0, !dbg !129 - store i32 0, ptr %arrayidx, align 4, !dbg !130 - call void @llvm.dbg.declare(metadata ptr %i, metadata !131, metadata !DIExpression()), !dbg !133 - call void @llvm.dbg.declare(metadata ptr %source, metadata !134, metadata !DIExpression()), !dbg !135 - %arraydecay1 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !136 - %call = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 67, i64 noundef 99) #4, !dbg !137 - %arrayidx2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !138 - store i32 0, ptr %arrayidx2, align 4, !dbg !139 - store i64 0, ptr %i, align 8, !dbg !140 - br label %for.cond, !dbg !142 - -for.cond: ; preds = %for.inc, %entry - %1 = load i64, ptr %i, align 8, !dbg !143 - %cmp = icmp ult i64 %1, 100, !dbg !145 - br i1 %cmp, label %for.body, label %for.end, !dbg !146 - -for.body: ; preds = %for.cond - %2 = load i64, ptr %i, align 8, !dbg !147 - %arrayidx3 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 %2, !dbg !149 - %3 = load i32, ptr %arrayidx3, align 4, !dbg !149 - %4 = load ptr, ptr %data, align 8, !dbg !150 - %5 = load i64, ptr %i, align 8, !dbg !151 - %arrayidx4 = getelementptr inbounds i32, ptr %4, i64 %5, !dbg !150 - store i32 %3, ptr %arrayidx4, align 4, !dbg !152 - br label %for.inc, !dbg !153 - -for.inc: ; preds = %for.body - %6 = load i64, ptr %i, align 8, !dbg !154 - %inc = add i64 %6, 1, !dbg !154 - store i64 %inc, ptr %i, align 8, !dbg !154 - br label %for.cond, !dbg !155, !llvm.loop !156 - -for.end: ; preds = %for.cond - %7 = load ptr, ptr %data, align 8, !dbg !158 - %arrayidx5 = getelementptr inbounds i32, ptr %7, i64 99, !dbg !158 - store i32 0, ptr %arrayidx5, align 4, !dbg !159 - %8 = load ptr, ptr %data, align 8, !dbg !160 - %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %8, i64 noundef 399), !dbg !161 - %arraydecay7 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !162 - %call8 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay7, i64 noundef 399), !dbg !163 - %9 = load ptr, ptr %data, align 8, !dbg !164 - call void @printWLine(ptr noundef %9), !dbg !165 - ret void, !dbg !166 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} -!llvm.ident = !{!34} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 99, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ed042e31d81dcd4f1c02de1b569f7377") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 101, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 104, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 106, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "ed042e31d81dcd4f1c02de1b569f7377") -!24 = !{!25} -!25 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!26 = !{!0, !7, !12, !17} -!27 = !{i32 7, !"Dwarf Version", i32 5} -!28 = !{i32 2, !"Debug Info Version", i32 3} -!29 = !{i32 1, !"wchar_size", i32 4} -!30 = !{i32 8, !"PIC Level", i32 2} -!31 = !{i32 7, !"PIE Level", i32 2} -!32 = !{i32 7, !"uwtable", i32 2} -!33 = !{i32 7, !"frame-pointer", i32 2} -!34 = !{!"clang version 16.0.0"} -!35 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01_bad", scope: !2, file: !2, line: 23, type: !36, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!36 = !DISubroutineType(types: !37) -!37 = !{null} -!38 = !{} -!39 = !DILocalVariable(name: "data", scope: !35, file: !2, line: 25, type: !40) -!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !41, size: 64) -!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !42, line: 74, baseType: !43) -!42 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!43 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!44 = !DILocation(line: 25, column: 15, scope: !35) -!45 = !DILocalVariable(name: "dataBadBuffer", scope: !35, file: !2, line: 26, type: !46) -!46 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 1600, elements: !47) -!47 = !{!48} -!48 = !DISubrange(count: 50) -!49 = !DILocation(line: 26, column: 13, scope: !35) -!50 = !DILocalVariable(name: "dataGoodBuffer", scope: !35, file: !2, line: 27, type: !51) -!51 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 3200, elements: !52) -!52 = !{!53} -!53 = !DISubrange(count: 100) -!54 = !DILocation(line: 27, column: 13, scope: !35) -!55 = !DILocation(line: 30, column: 12, scope: !35) -!56 = !DILocation(line: 30, column: 10, scope: !35) -!57 = !DILocation(line: 31, column: 5, scope: !35) -!58 = !DILocation(line: 31, column: 13, scope: !35) -!59 = !DILocalVariable(name: "i", scope: !60, file: !2, line: 33, type: !61) -!60 = distinct !DILexicalBlock(scope: !35, file: !2, line: 32, column: 5) -!61 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !42, line: 46, baseType: !62) -!62 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) -!63 = !DILocation(line: 33, column: 16, scope: !60) -!64 = !DILocalVariable(name: "source", scope: !60, file: !2, line: 34, type: !51) -!65 = !DILocation(line: 34, column: 17, scope: !60) -!66 = !DILocation(line: 35, column: 17, scope: !60) -!67 = !DILocation(line: 35, column: 9, scope: !60) -!68 = !DILocation(line: 36, column: 9, scope: !60) -!69 = !DILocation(line: 36, column: 23, scope: !60) -!70 = !DILocation(line: 38, column: 16, scope: !71) -!71 = distinct !DILexicalBlock(scope: !60, file: !2, line: 38, column: 9) -!72 = !DILocation(line: 38, column: 14, scope: !71) -!73 = !DILocation(line: 38, column: 21, scope: !74) -!74 = distinct !DILexicalBlock(scope: !71, file: !2, line: 38, column: 9) -!75 = !DILocation(line: 38, column: 23, scope: !74) -!76 = !DILocation(line: 38, column: 9, scope: !71) -!77 = !DILocation(line: 40, column: 30, scope: !78) -!78 = distinct !DILexicalBlock(scope: !74, file: !2, line: 39, column: 9) -!79 = !DILocation(line: 40, column: 23, scope: !78) -!80 = !DILocation(line: 40, column: 13, scope: !78) -!81 = !DILocation(line: 40, column: 18, scope: !78) -!82 = !DILocation(line: 40, column: 21, scope: !78) -!83 = !DILocation(line: 41, column: 9, scope: !78) -!84 = !DILocation(line: 38, column: 31, scope: !74) -!85 = !DILocation(line: 38, column: 9, scope: !74) -!86 = distinct !{!86, !76, !87, !88} -!87 = !DILocation(line: 41, column: 9, scope: !71) -!88 = !{!"llvm.loop.mustprogress"} -!89 = !DILocation(line: 42, column: 9, scope: !60) -!90 = !DILocation(line: 42, column: 21, scope: !60) -!91 = !DILocation(line: 43, column: 26, scope: !60) -!92 = !DILocation(line: 43, column: 9, scope: !60) -!93 = !DILocation(line: 44, column: 24, scope: !60) -!94 = !DILocation(line: 44, column: 9, scope: !60) -!95 = !DILocation(line: 45, column: 20, scope: !60) -!96 = !DILocation(line: 45, column: 9, scope: !60) -!97 = !DILocation(line: 47, column: 1, scope: !35) -!98 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_loop_01_good", scope: !2, file: !2, line: 79, type: !36, scopeLine: 80, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!99 = !DILocation(line: 81, column: 5, scope: !98) -!100 = !DILocation(line: 82, column: 1, scope: !98) -!101 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 94, type: !102, scopeLine: 95, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!102 = !DISubroutineType(types: !103) -!103 = !{!43, !43, !104} -!104 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !105, size: 64) -!105 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!106 = !DILocalVariable(name: "argc", arg: 1, scope: !101, file: !2, line: 94, type: !43) -!107 = !DILocation(line: 94, column: 14, scope: !101) -!108 = !DILocalVariable(name: "argv", arg: 2, scope: !101, file: !2, line: 94, type: !104) -!109 = !DILocation(line: 94, column: 27, scope: !101) -!110 = !DILocation(line: 97, column: 22, scope: !101) -!111 = !DILocation(line: 97, column: 12, scope: !101) -!112 = !DILocation(line: 97, column: 5, scope: !101) -!113 = !DILocation(line: 99, column: 5, scope: !101) -!114 = !DILocation(line: 100, column: 5, scope: !101) -!115 = !DILocation(line: 101, column: 5, scope: !101) -!116 = !DILocation(line: 104, column: 5, scope: !101) -!117 = !DILocation(line: 105, column: 5, scope: !101) -!118 = !DILocation(line: 106, column: 5, scope: !101) -!119 = !DILocation(line: 108, column: 5, scope: !101) -!120 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 54, type: !36, scopeLine: 55, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) -!121 = !DILocalVariable(name: "data", scope: !120, file: !2, line: 56, type: !40) -!122 = !DILocation(line: 56, column: 15, scope: !120) -!123 = !DILocalVariable(name: "dataBadBuffer", scope: !120, file: !2, line: 57, type: !46) -!124 = !DILocation(line: 57, column: 13, scope: !120) -!125 = !DILocalVariable(name: "dataGoodBuffer", scope: !120, file: !2, line: 58, type: !51) -!126 = !DILocation(line: 58, column: 13, scope: !120) -!127 = !DILocation(line: 60, column: 12, scope: !120) -!128 = !DILocation(line: 60, column: 10, scope: !120) -!129 = !DILocation(line: 61, column: 5, scope: !120) -!130 = !DILocation(line: 61, column: 13, scope: !120) -!131 = !DILocalVariable(name: "i", scope: !132, file: !2, line: 63, type: !61) -!132 = distinct !DILexicalBlock(scope: !120, file: !2, line: 62, column: 5) -!133 = !DILocation(line: 63, column: 16, scope: !132) -!134 = !DILocalVariable(name: "source", scope: !132, file: !2, line: 64, type: !51) -!135 = !DILocation(line: 64, column: 17, scope: !132) -!136 = !DILocation(line: 65, column: 17, scope: !132) -!137 = !DILocation(line: 65, column: 9, scope: !132) -!138 = !DILocation(line: 66, column: 9, scope: !132) -!139 = !DILocation(line: 66, column: 23, scope: !132) -!140 = !DILocation(line: 68, column: 16, scope: !141) -!141 = distinct !DILexicalBlock(scope: !132, file: !2, line: 68, column: 9) -!142 = !DILocation(line: 68, column: 14, scope: !141) -!143 = !DILocation(line: 68, column: 21, scope: !144) -!144 = distinct !DILexicalBlock(scope: !141, file: !2, line: 68, column: 9) -!145 = !DILocation(line: 68, column: 23, scope: !144) -!146 = !DILocation(line: 68, column: 9, scope: !141) -!147 = !DILocation(line: 70, column: 30, scope: !148) -!148 = distinct !DILexicalBlock(scope: !144, file: !2, line: 69, column: 9) -!149 = !DILocation(line: 70, column: 23, scope: !148) -!150 = !DILocation(line: 70, column: 13, scope: !148) -!151 = !DILocation(line: 70, column: 18, scope: !148) -!152 = !DILocation(line: 70, column: 21, scope: !148) -!153 = !DILocation(line: 71, column: 9, scope: !148) -!154 = !DILocation(line: 68, column: 31, scope: !144) -!155 = !DILocation(line: 68, column: 9, scope: !144) -!156 = distinct !{!156, !146, !157, !88} -!157 = !DILocation(line: 71, column: 9, scope: !141) -!158 = !DILocation(line: 72, column: 9, scope: !132) -!159 = !DILocation(line: 72, column: 21, scope: !132) -!160 = !DILocation(line: 73, column: 24, scope: !132) -!161 = !DILocation(line: 73, column: 9, scope: !132) -!162 = !DILocation(line: 74, column: 24, scope: !132) -!163 = !DILocation(line: 74, column: 9, scope: !132) -!164 = !DILocation(line: 75, column: 20, scope: !132) -!165 = !DILocation(line: 75, column: 9, scope: !132) -!166 = !DILocation(line: 77, column: 1, scope: !120) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memcpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memcpy_01.c.bc deleted file mode 100644 index 58b79b23..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memcpy_01.c.bc +++ /dev/null @@ -1,272 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memcpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memcpy_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memcpy_01_bad() #0 !dbg !35 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i32], align 16 - %dataGoodBuffer = alloca [100 x i32], align 16 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !39, metadata !DIExpression()), !dbg !44 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !45, metadata !DIExpression()), !dbg !49 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !50, metadata !DIExpression()), !dbg !54 - %arraydecay = getelementptr inbounds [50 x i32], ptr %dataBadBuffer, i64 0, i64 0, !dbg !55 - store ptr %arraydecay, ptr %data, align 8, !dbg !56 - %0 = load ptr, ptr %data, align 8, !dbg !57 - %arrayidx = getelementptr inbounds i32, ptr %0, i64 0, !dbg !57 - store i32 0, ptr %arrayidx, align 4, !dbg !58 - call void @llvm.dbg.declare(metadata ptr %source, metadata !59, metadata !DIExpression()), !dbg !61 - %arraydecay1 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !62 - %call = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 67, i64 noundef 99) #5, !dbg !63 - %arrayidx2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !64 - store i32 0, ptr %arrayidx2, align 4, !dbg !65 - %1 = load ptr, ptr %data, align 8, !dbg !66 - %arraydecay3 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !67 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1, ptr align 16 %arraydecay3, i64 400, i1 false), !dbg !67 - %2 = load ptr, ptr %data, align 8, !dbg !68 - %call4 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %2, i64 noundef 399), !dbg !69 - %arraydecay5 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !70 - %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay5, i64 noundef 399), !dbg !71 - %3 = load ptr, ptr %data, align 8, !dbg !72 - %arrayidx7 = getelementptr inbounds i32, ptr %3, i64 99, !dbg !72 - store i32 0, ptr %arrayidx7, align 4, !dbg !73 - %4 = load ptr, ptr %data, align 8, !dbg !74 - call void @printWLine(ptr noundef %4), !dbg !75 - ret void, !dbg !76 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #2 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare i32 @SAFE_BUFACCESS(...) #4 - -declare void @printWLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memcpy_01_good() #0 !dbg !77 { -entry: - call void @goodG2B(), !dbg !78 - ret void, !dbg !79 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !80 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !85, metadata !DIExpression()), !dbg !86 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !87, metadata !DIExpression()), !dbg !88 - %call = call i64 @time(ptr noundef null) #5, !dbg !89 - %conv = trunc i64 %call to i32, !dbg !90 - call void @srand(i32 noundef %conv) #5, !dbg !91 - call void @printLine(ptr noundef @.str), !dbg !92 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memcpy_01_good(), !dbg !93 - call void @printLine(ptr noundef @.str.1), !dbg !94 - call void @printLine(ptr noundef @.str.2), !dbg !95 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memcpy_01_bad(), !dbg !96 - call void @printLine(ptr noundef @.str.3), !dbg !97 - ret i32 0, !dbg !98 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !99 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i32], align 16 - %dataGoodBuffer = alloca [100 x i32], align 16 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !100, metadata !DIExpression()), !dbg !101 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !102, metadata !DIExpression()), !dbg !103 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !104, metadata !DIExpression()), !dbg !105 - %arraydecay = getelementptr inbounds [100 x i32], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !106 - store ptr %arraydecay, ptr %data, align 8, !dbg !107 - %0 = load ptr, ptr %data, align 8, !dbg !108 - %arrayidx = getelementptr inbounds i32, ptr %0, i64 0, !dbg !108 - store i32 0, ptr %arrayidx, align 4, !dbg !109 - call void @llvm.dbg.declare(metadata ptr %source, metadata !110, metadata !DIExpression()), !dbg !112 - %arraydecay1 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !113 - %call = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 67, i64 noundef 99) #5, !dbg !114 - %arrayidx2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !115 - store i32 0, ptr %arrayidx2, align 4, !dbg !116 - %1 = load ptr, ptr %data, align 8, !dbg !117 - %arraydecay3 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !118 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1, ptr align 16 %arraydecay3, i64 400, i1 false), !dbg !118 - %2 = load ptr, ptr %data, align 8, !dbg !119 - %arrayidx4 = getelementptr inbounds i32, ptr %2, i64 99, !dbg !119 - store i32 0, ptr %arrayidx4, align 4, !dbg !120 - %3 = load ptr, ptr %data, align 8, !dbg !121 - %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %3, i64 noundef 399), !dbg !122 - %arraydecay6 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !123 - %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef 399), !dbg !124 - %4 = load ptr, ptr %data, align 8, !dbg !125 - call void @printWLine(ptr noundef %4), !dbg !126 - ret void, !dbg !127 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} -!llvm.ident = !{!34} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 91, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "546f0b322d9b5bf8d146b7d0391f51c6") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 93, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 96, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 98, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "546f0b322d9b5bf8d146b7d0391f51c6") -!24 = !{!25} -!25 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!26 = !{!0, !7, !12, !17} -!27 = !{i32 7, !"Dwarf Version", i32 5} -!28 = !{i32 2, !"Debug Info Version", i32 3} -!29 = !{i32 1, !"wchar_size", i32 4} -!30 = !{i32 8, !"PIC Level", i32 2} -!31 = !{i32 7, !"PIE Level", i32 2} -!32 = !{i32 7, !"uwtable", i32 2} -!33 = !{i32 7, !"frame-pointer", i32 2} -!34 = !{!"clang version 16.0.0"} -!35 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memcpy_01_bad", scope: !2, file: !2, line: 23, type: !36, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!36 = !DISubroutineType(types: !37) -!37 = !{null} -!38 = !{} -!39 = !DILocalVariable(name: "data", scope: !35, file: !2, line: 25, type: !40) -!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !41, size: 64) -!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !42, line: 74, baseType: !43) -!42 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!43 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!44 = !DILocation(line: 25, column: 15, scope: !35) -!45 = !DILocalVariable(name: "dataBadBuffer", scope: !35, file: !2, line: 26, type: !46) -!46 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 1600, elements: !47) -!47 = !{!48} -!48 = !DISubrange(count: 50) -!49 = !DILocation(line: 26, column: 13, scope: !35) -!50 = !DILocalVariable(name: "dataGoodBuffer", scope: !35, file: !2, line: 27, type: !51) -!51 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 3200, elements: !52) -!52 = !{!53} -!53 = !DISubrange(count: 100) -!54 = !DILocation(line: 27, column: 13, scope: !35) -!55 = !DILocation(line: 30, column: 12, scope: !35) -!56 = !DILocation(line: 30, column: 10, scope: !35) -!57 = !DILocation(line: 31, column: 5, scope: !35) -!58 = !DILocation(line: 31, column: 13, scope: !35) -!59 = !DILocalVariable(name: "source", scope: !60, file: !2, line: 33, type: !51) -!60 = distinct !DILexicalBlock(scope: !35, file: !2, line: 32, column: 5) -!61 = !DILocation(line: 33, column: 17, scope: !60) -!62 = !DILocation(line: 34, column: 17, scope: !60) -!63 = !DILocation(line: 34, column: 9, scope: !60) -!64 = !DILocation(line: 35, column: 9, scope: !60) -!65 = !DILocation(line: 35, column: 23, scope: !60) -!66 = !DILocation(line: 37, column: 16, scope: !60) -!67 = !DILocation(line: 37, column: 9, scope: !60) -!68 = !DILocation(line: 38, column: 26, scope: !60) -!69 = !DILocation(line: 38, column: 9, scope: !60) -!70 = !DILocation(line: 39, column: 24, scope: !60) -!71 = !DILocation(line: 39, column: 9, scope: !60) -!72 = !DILocation(line: 40, column: 9, scope: !60) -!73 = !DILocation(line: 40, column: 21, scope: !60) -!74 = !DILocation(line: 41, column: 20, scope: !60) -!75 = !DILocation(line: 41, column: 9, scope: !60) -!76 = !DILocation(line: 43, column: 1, scope: !35) -!77 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memcpy_01_good", scope: !2, file: !2, line: 71, type: !36, scopeLine: 72, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!78 = !DILocation(line: 73, column: 5, scope: !77) -!79 = !DILocation(line: 74, column: 1, scope: !77) -!80 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 86, type: !81, scopeLine: 87, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!81 = !DISubroutineType(types: !82) -!82 = !{!43, !43, !83} -!83 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !84, size: 64) -!84 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!85 = !DILocalVariable(name: "argc", arg: 1, scope: !80, file: !2, line: 86, type: !43) -!86 = !DILocation(line: 86, column: 14, scope: !80) -!87 = !DILocalVariable(name: "argv", arg: 2, scope: !80, file: !2, line: 86, type: !83) -!88 = !DILocation(line: 86, column: 27, scope: !80) -!89 = !DILocation(line: 89, column: 22, scope: !80) -!90 = !DILocation(line: 89, column: 12, scope: !80) -!91 = !DILocation(line: 89, column: 5, scope: !80) -!92 = !DILocation(line: 91, column: 5, scope: !80) -!93 = !DILocation(line: 92, column: 5, scope: !80) -!94 = !DILocation(line: 93, column: 5, scope: !80) -!95 = !DILocation(line: 96, column: 5, scope: !80) -!96 = !DILocation(line: 97, column: 5, scope: !80) -!97 = !DILocation(line: 98, column: 5, scope: !80) -!98 = !DILocation(line: 100, column: 5, scope: !80) -!99 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 50, type: !36, scopeLine: 51, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) -!100 = !DILocalVariable(name: "data", scope: !99, file: !2, line: 52, type: !40) -!101 = !DILocation(line: 52, column: 15, scope: !99) -!102 = !DILocalVariable(name: "dataBadBuffer", scope: !99, file: !2, line: 53, type: !46) -!103 = !DILocation(line: 53, column: 13, scope: !99) -!104 = !DILocalVariable(name: "dataGoodBuffer", scope: !99, file: !2, line: 54, type: !51) -!105 = !DILocation(line: 54, column: 13, scope: !99) -!106 = !DILocation(line: 56, column: 12, scope: !99) -!107 = !DILocation(line: 56, column: 10, scope: !99) -!108 = !DILocation(line: 57, column: 5, scope: !99) -!109 = !DILocation(line: 57, column: 13, scope: !99) -!110 = !DILocalVariable(name: "source", scope: !111, file: !2, line: 59, type: !51) -!111 = distinct !DILexicalBlock(scope: !99, file: !2, line: 58, column: 5) -!112 = !DILocation(line: 59, column: 17, scope: !111) -!113 = !DILocation(line: 60, column: 17, scope: !111) -!114 = !DILocation(line: 60, column: 9, scope: !111) -!115 = !DILocation(line: 61, column: 9, scope: !111) -!116 = !DILocation(line: 61, column: 23, scope: !111) -!117 = !DILocation(line: 63, column: 16, scope: !111) -!118 = !DILocation(line: 63, column: 9, scope: !111) -!119 = !DILocation(line: 64, column: 9, scope: !111) -!120 = !DILocation(line: 64, column: 21, scope: !111) -!121 = !DILocation(line: 65, column: 24, scope: !111) -!122 = !DILocation(line: 65, column: 9, scope: !111) -!123 = !DILocation(line: 66, column: 24, scope: !111) -!124 = !DILocation(line: 66, column: 9, scope: !111) -!125 = !DILocation(line: 67, column: 20, scope: !111) -!126 = !DILocation(line: 67, column: 9, scope: !111) -!127 = !DILocation(line: 69, column: 1, scope: !99) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memmove_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memmove_01.c.bc deleted file mode 100644 index 41f785d7..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memmove_01.c.bc +++ /dev/null @@ -1,272 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memmove_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memmove_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memmove_01_bad() #0 !dbg !35 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i32], align 16 - %dataGoodBuffer = alloca [100 x i32], align 16 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !39, metadata !DIExpression()), !dbg !44 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !45, metadata !DIExpression()), !dbg !49 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !50, metadata !DIExpression()), !dbg !54 - %arraydecay = getelementptr inbounds [50 x i32], ptr %dataBadBuffer, i64 0, i64 0, !dbg !55 - store ptr %arraydecay, ptr %data, align 8, !dbg !56 - %0 = load ptr, ptr %data, align 8, !dbg !57 - %arrayidx = getelementptr inbounds i32, ptr %0, i64 0, !dbg !57 - store i32 0, ptr %arrayidx, align 4, !dbg !58 - call void @llvm.dbg.declare(metadata ptr %source, metadata !59, metadata !DIExpression()), !dbg !61 - %arraydecay1 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !62 - %call = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 67, i64 noundef 99) #5, !dbg !63 - %arrayidx2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !64 - store i32 0, ptr %arrayidx2, align 4, !dbg !65 - %1 = load ptr, ptr %data, align 8, !dbg !66 - %arraydecay3 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !67 - call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 16 %arraydecay3, i64 400, i1 false), !dbg !67 - %2 = load ptr, ptr %data, align 8, !dbg !68 - %call4 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %2, i64 noundef 399), !dbg !69 - %arraydecay5 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !70 - %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay5, i64 noundef 399), !dbg !71 - %3 = load ptr, ptr %data, align 8, !dbg !72 - %arrayidx7 = getelementptr inbounds i32, ptr %3, i64 99, !dbg !72 - store i32 0, ptr %arrayidx7, align 4, !dbg !73 - %4 = load ptr, ptr %data, align 8, !dbg !74 - call void @printWLine(ptr noundef %4), !dbg !75 - ret void, !dbg !76 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #2 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare i32 @SAFE_BUFACCESS(...) #4 - -declare void @printWLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memmove_01_good() #0 !dbg !77 { -entry: - call void @goodG2B(), !dbg !78 - ret void, !dbg !79 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !80 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !85, metadata !DIExpression()), !dbg !86 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !87, metadata !DIExpression()), !dbg !88 - %call = call i64 @time(ptr noundef null) #5, !dbg !89 - %conv = trunc i64 %call to i32, !dbg !90 - call void @srand(i32 noundef %conv) #5, !dbg !91 - call void @printLine(ptr noundef @.str), !dbg !92 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memmove_01_good(), !dbg !93 - call void @printLine(ptr noundef @.str.1), !dbg !94 - call void @printLine(ptr noundef @.str.2), !dbg !95 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memmove_01_bad(), !dbg !96 - call void @printLine(ptr noundef @.str.3), !dbg !97 - ret i32 0, !dbg !98 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !99 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i32], align 16 - %dataGoodBuffer = alloca [100 x i32], align 16 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !100, metadata !DIExpression()), !dbg !101 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !102, metadata !DIExpression()), !dbg !103 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !104, metadata !DIExpression()), !dbg !105 - %arraydecay = getelementptr inbounds [100 x i32], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !106 - store ptr %arraydecay, ptr %data, align 8, !dbg !107 - %0 = load ptr, ptr %data, align 8, !dbg !108 - %arrayidx = getelementptr inbounds i32, ptr %0, i64 0, !dbg !108 - store i32 0, ptr %arrayidx, align 4, !dbg !109 - call void @llvm.dbg.declare(metadata ptr %source, metadata !110, metadata !DIExpression()), !dbg !112 - %arraydecay1 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !113 - %call = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 67, i64 noundef 99) #5, !dbg !114 - %arrayidx2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !115 - store i32 0, ptr %arrayidx2, align 4, !dbg !116 - %1 = load ptr, ptr %data, align 8, !dbg !117 - %arraydecay3 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !118 - call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 16 %arraydecay3, i64 400, i1 false), !dbg !118 - %2 = load ptr, ptr %data, align 8, !dbg !119 - %call4 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %2, i64 noundef 399), !dbg !120 - %arraydecay5 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !121 - %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay5, i64 noundef 399), !dbg !122 - %3 = load ptr, ptr %data, align 8, !dbg !123 - %arrayidx7 = getelementptr inbounds i32, ptr %3, i64 99, !dbg !123 - store i32 0, ptr %arrayidx7, align 4, !dbg !124 - %4 = load ptr, ptr %data, align 8, !dbg !125 - call void @printWLine(ptr noundef %4), !dbg !126 - ret void, !dbg !127 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} -!llvm.ident = !{!34} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 91, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "35d3f11cc688a9d239bbc044ed0bf76f") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 93, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 96, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 98, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "35d3f11cc688a9d239bbc044ed0bf76f") -!24 = !{!25} -!25 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!26 = !{!0, !7, !12, !17} -!27 = !{i32 7, !"Dwarf Version", i32 5} -!28 = !{i32 2, !"Debug Info Version", i32 3} -!29 = !{i32 1, !"wchar_size", i32 4} -!30 = !{i32 8, !"PIC Level", i32 2} -!31 = !{i32 7, !"PIE Level", i32 2} -!32 = !{i32 7, !"uwtable", i32 2} -!33 = !{i32 7, !"frame-pointer", i32 2} -!34 = !{!"clang version 16.0.0"} -!35 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memmove_01_bad", scope: !2, file: !2, line: 23, type: !36, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!36 = !DISubroutineType(types: !37) -!37 = !{null} -!38 = !{} -!39 = !DILocalVariable(name: "data", scope: !35, file: !2, line: 25, type: !40) -!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !41, size: 64) -!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !42, line: 74, baseType: !43) -!42 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!43 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!44 = !DILocation(line: 25, column: 15, scope: !35) -!45 = !DILocalVariable(name: "dataBadBuffer", scope: !35, file: !2, line: 26, type: !46) -!46 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 1600, elements: !47) -!47 = !{!48} -!48 = !DISubrange(count: 50) -!49 = !DILocation(line: 26, column: 13, scope: !35) -!50 = !DILocalVariable(name: "dataGoodBuffer", scope: !35, file: !2, line: 27, type: !51) -!51 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 3200, elements: !52) -!52 = !{!53} -!53 = !DISubrange(count: 100) -!54 = !DILocation(line: 27, column: 13, scope: !35) -!55 = !DILocation(line: 30, column: 12, scope: !35) -!56 = !DILocation(line: 30, column: 10, scope: !35) -!57 = !DILocation(line: 31, column: 5, scope: !35) -!58 = !DILocation(line: 31, column: 13, scope: !35) -!59 = !DILocalVariable(name: "source", scope: !60, file: !2, line: 33, type: !51) -!60 = distinct !DILexicalBlock(scope: !35, file: !2, line: 32, column: 5) -!61 = !DILocation(line: 33, column: 17, scope: !60) -!62 = !DILocation(line: 34, column: 17, scope: !60) -!63 = !DILocation(line: 34, column: 9, scope: !60) -!64 = !DILocation(line: 35, column: 9, scope: !60) -!65 = !DILocation(line: 35, column: 23, scope: !60) -!66 = !DILocation(line: 37, column: 17, scope: !60) -!67 = !DILocation(line: 37, column: 9, scope: !60) -!68 = !DILocation(line: 38, column: 26, scope: !60) -!69 = !DILocation(line: 38, column: 9, scope: !60) -!70 = !DILocation(line: 39, column: 24, scope: !60) -!71 = !DILocation(line: 39, column: 9, scope: !60) -!72 = !DILocation(line: 40, column: 9, scope: !60) -!73 = !DILocation(line: 40, column: 21, scope: !60) -!74 = !DILocation(line: 41, column: 20, scope: !60) -!75 = !DILocation(line: 41, column: 9, scope: !60) -!76 = !DILocation(line: 43, column: 1, scope: !35) -!77 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_memmove_01_good", scope: !2, file: !2, line: 71, type: !36, scopeLine: 72, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!78 = !DILocation(line: 73, column: 5, scope: !77) -!79 = !DILocation(line: 74, column: 1, scope: !77) -!80 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 86, type: !81, scopeLine: 87, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!81 = !DISubroutineType(types: !82) -!82 = !{!43, !43, !83} -!83 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !84, size: 64) -!84 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!85 = !DILocalVariable(name: "argc", arg: 1, scope: !80, file: !2, line: 86, type: !43) -!86 = !DILocation(line: 86, column: 14, scope: !80) -!87 = !DILocalVariable(name: "argv", arg: 2, scope: !80, file: !2, line: 86, type: !83) -!88 = !DILocation(line: 86, column: 27, scope: !80) -!89 = !DILocation(line: 89, column: 22, scope: !80) -!90 = !DILocation(line: 89, column: 12, scope: !80) -!91 = !DILocation(line: 89, column: 5, scope: !80) -!92 = !DILocation(line: 91, column: 5, scope: !80) -!93 = !DILocation(line: 92, column: 5, scope: !80) -!94 = !DILocation(line: 93, column: 5, scope: !80) -!95 = !DILocation(line: 96, column: 5, scope: !80) -!96 = !DILocation(line: 97, column: 5, scope: !80) -!97 = !DILocation(line: 98, column: 5, scope: !80) -!98 = !DILocation(line: 100, column: 5, scope: !80) -!99 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 50, type: !36, scopeLine: 51, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) -!100 = !DILocalVariable(name: "data", scope: !99, file: !2, line: 52, type: !40) -!101 = !DILocation(line: 52, column: 15, scope: !99) -!102 = !DILocalVariable(name: "dataBadBuffer", scope: !99, file: !2, line: 53, type: !46) -!103 = !DILocation(line: 53, column: 13, scope: !99) -!104 = !DILocalVariable(name: "dataGoodBuffer", scope: !99, file: !2, line: 54, type: !51) -!105 = !DILocation(line: 54, column: 13, scope: !99) -!106 = !DILocation(line: 56, column: 12, scope: !99) -!107 = !DILocation(line: 56, column: 10, scope: !99) -!108 = !DILocation(line: 57, column: 5, scope: !99) -!109 = !DILocation(line: 57, column: 13, scope: !99) -!110 = !DILocalVariable(name: "source", scope: !111, file: !2, line: 59, type: !51) -!111 = distinct !DILexicalBlock(scope: !99, file: !2, line: 58, column: 5) -!112 = !DILocation(line: 59, column: 17, scope: !111) -!113 = !DILocation(line: 60, column: 17, scope: !111) -!114 = !DILocation(line: 60, column: 9, scope: !111) -!115 = !DILocation(line: 61, column: 9, scope: !111) -!116 = !DILocation(line: 61, column: 23, scope: !111) -!117 = !DILocation(line: 63, column: 17, scope: !111) -!118 = !DILocation(line: 63, column: 9, scope: !111) -!119 = !DILocation(line: 64, column: 24, scope: !111) -!120 = !DILocation(line: 64, column: 9, scope: !111) -!121 = !DILocation(line: 65, column: 24, scope: !111) -!122 = !DILocation(line: 65, column: 9, scope: !111) -!123 = !DILocation(line: 66, column: 9, scope: !111) -!124 = !DILocation(line: 66, column: 21, scope: !111) -!125 = !DILocation(line: 67, column: 20, scope: !111) -!126 = !DILocation(line: 67, column: 9, scope: !111) -!127 = !DILocation(line: 69, column: 1, scope: !99) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_snprintf_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_snprintf_01.c.bc deleted file mode 100644 index 9179a8ea..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_snprintf_01.c.bc +++ /dev/null @@ -1,269 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_snprintf_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_snprintf_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [3 x i32] [i32 37, i32 115, i32 0], align 4, !dbg !0 -@.str.1 = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !13 -@.str.3 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !18 -@.str.4 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !23 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_snprintf_01_bad() #0 !dbg !41 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i32], align 16 - %dataGoodBuffer = alloca [100 x i32], align 16 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !45, metadata !DIExpression()), !dbg !49 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !50, metadata !DIExpression()), !dbg !54 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !55, metadata !DIExpression()), !dbg !59 - %arraydecay = getelementptr inbounds [50 x i32], ptr %dataBadBuffer, i64 0, i64 0, !dbg !60 - store ptr %arraydecay, ptr %data, align 8, !dbg !61 - %0 = load ptr, ptr %data, align 8, !dbg !62 - %arrayidx = getelementptr inbounds i32, ptr %0, i64 0, !dbg !62 - store i32 0, ptr %arrayidx, align 4, !dbg !63 - call void @llvm.dbg.declare(metadata ptr %source, metadata !64, metadata !DIExpression()), !dbg !66 - %arraydecay1 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !67 - %call = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 67, i64 noundef 99) #4, !dbg !68 - %arrayidx2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !69 - store i32 0, ptr %arrayidx2, align 4, !dbg !70 - %1 = load ptr, ptr %data, align 8, !dbg !71 - %arraydecay3 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !72 - %call4 = call i32 (ptr, i64, ptr, ...) @swprintf(ptr noundef %1, i64 noundef 100, ptr noundef @.str, ptr noundef %arraydecay3) #4, !dbg !73 - %2 = load ptr, ptr %data, align 8, !dbg !74 - %call5 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %2, i64 noundef 399), !dbg !75 - %arraydecay6 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !76 - %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef 399), !dbg !77 - %3 = load ptr, ptr %data, align 8, !dbg !78 - call void @printWLine(ptr noundef %3), !dbg !79 - ret void, !dbg !80 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #2 - -; Function Attrs: nounwind -declare i32 @swprintf(ptr noundef, i64 noundef, ptr noundef, ...) #2 - -declare i32 @UNSAFE_BUFACCESS(...) #3 - -declare i32 @SAFE_BUFACCESS(...) #3 - -declare void @printWLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_snprintf_01_good() #0 !dbg !81 { -entry: - call void @goodG2B(), !dbg !82 - ret void, !dbg !83 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !84 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !89, metadata !DIExpression()), !dbg !90 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !91, metadata !DIExpression()), !dbg !92 - %call = call i64 @time(ptr noundef null) #4, !dbg !93 - %conv = trunc i64 %call to i32, !dbg !94 - call void @srand(i32 noundef %conv) #4, !dbg !95 - call void @printLine(ptr noundef @.str.1), !dbg !96 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_snprintf_01_good(), !dbg !97 - call void @printLine(ptr noundef @.str.2), !dbg !98 - call void @printLine(ptr noundef @.str.3), !dbg !99 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_snprintf_01_bad(), !dbg !100 - call void @printLine(ptr noundef @.str.4), !dbg !101 - ret i32 0, !dbg !102 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 - -declare void @printLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !103 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i32], align 16 - %dataGoodBuffer = alloca [100 x i32], align 16 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !104, metadata !DIExpression()), !dbg !105 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !106, metadata !DIExpression()), !dbg !107 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !108, metadata !DIExpression()), !dbg !109 - %arraydecay = getelementptr inbounds [100 x i32], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !110 - store ptr %arraydecay, ptr %data, align 8, !dbg !111 - %0 = load ptr, ptr %data, align 8, !dbg !112 - %arrayidx = getelementptr inbounds i32, ptr %0, i64 0, !dbg !112 - store i32 0, ptr %arrayidx, align 4, !dbg !113 - call void @llvm.dbg.declare(metadata ptr %source, metadata !114, metadata !DIExpression()), !dbg !116 - %arraydecay1 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !117 - %call = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 67, i64 noundef 99) #4, !dbg !118 - %arrayidx2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !119 - store i32 0, ptr %arrayidx2, align 4, !dbg !120 - %1 = load ptr, ptr %data, align 8, !dbg !121 - %arraydecay3 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !122 - %call4 = call i32 (ptr, i64, ptr, ...) @swprintf(ptr noundef %1, i64 noundef 100, ptr noundef @.str, ptr noundef %arraydecay3) #4, !dbg !123 - %2 = load ptr, ptr %data, align 8, !dbg !124 - %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %2, i64 noundef 399), !dbg !125 - %arraydecay6 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !126 - %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef 399), !dbg !127 - %3 = load ptr, ptr %data, align 8, !dbg !128 - call void @printWLine(ptr noundef %3), !dbg !129 - ret void, !dbg !130 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind } - -!llvm.dbg.cu = !{!28} -!llvm.module.flags = !{!33, !34, !35, !36, !37, !38, !39} -!llvm.ident = !{!40} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 43, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_snprintf_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f2416b550d2c26ac7e2d8fe67773b995") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 96, elements: !5) -!4 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!5 = !{!6} -!6 = !DISubrange(count: 3) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 95, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 144, elements: !11) -!10 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!11 = !{!12} -!12 = !DISubrange(count: 18) -!13 = !DIGlobalVariableExpression(var: !14, expr: !DIExpression()) -!14 = distinct !DIGlobalVariable(scope: null, file: !2, line: 97, type: !15, isLocal: true, isDefinition: true) -!15 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 128, elements: !16) -!16 = !{!17} -!17 = !DISubrange(count: 16) -!18 = !DIGlobalVariableExpression(var: !19, expr: !DIExpression()) -!19 = distinct !DIGlobalVariable(scope: null, file: !2, line: 100, type: !20, isLocal: true, isDefinition: true) -!20 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 136, elements: !21) -!21 = !{!22} -!22 = !DISubrange(count: 17) -!23 = !DIGlobalVariableExpression(var: !24, expr: !DIExpression()) -!24 = distinct !DIGlobalVariable(scope: null, file: !2, line: 102, type: !25, isLocal: true, isDefinition: true) -!25 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 120, elements: !26) -!26 = !{!27} -!27 = !DISubrange(count: 15) -!28 = distinct !DICompileUnit(language: DW_LANG_C11, file: !29, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !30, globals: !32, splitDebugInlining: false, nameTableKind: None) -!29 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_snprintf_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f2416b550d2c26ac7e2d8fe67773b995") -!30 = !{!31} -!31 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!32 = !{!0, !7, !13, !18, !23} -!33 = !{i32 7, !"Dwarf Version", i32 5} -!34 = !{i32 2, !"Debug Info Version", i32 3} -!35 = !{i32 1, !"wchar_size", i32 4} -!36 = !{i32 8, !"PIC Level", i32 2} -!37 = !{i32 7, !"PIE Level", i32 2} -!38 = !{i32 7, !"uwtable", i32 2} -!39 = !{i32 7, !"frame-pointer", i32 2} -!40 = !{!"clang version 16.0.0"} -!41 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_snprintf_01_bad", scope: !2, file: !2, line: 29, type: !42, scopeLine: 30, spFlags: DISPFlagDefinition, unit: !28, retainedNodes: !44) -!42 = !DISubroutineType(types: !43) -!43 = !{null} -!44 = !{} -!45 = !DILocalVariable(name: "data", scope: !41, file: !2, line: 31, type: !46) -!46 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !47, size: 64) -!47 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !48, line: 74, baseType: !4) -!48 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!49 = !DILocation(line: 31, column: 15, scope: !41) -!50 = !DILocalVariable(name: "dataBadBuffer", scope: !41, file: !2, line: 32, type: !51) -!51 = !DICompositeType(tag: DW_TAG_array_type, baseType: !47, size: 1600, elements: !52) -!52 = !{!53} -!53 = !DISubrange(count: 50) -!54 = !DILocation(line: 32, column: 13, scope: !41) -!55 = !DILocalVariable(name: "dataGoodBuffer", scope: !41, file: !2, line: 33, type: !56) -!56 = !DICompositeType(tag: DW_TAG_array_type, baseType: !47, size: 3200, elements: !57) -!57 = !{!58} -!58 = !DISubrange(count: 100) -!59 = !DILocation(line: 33, column: 13, scope: !41) -!60 = !DILocation(line: 36, column: 12, scope: !41) -!61 = !DILocation(line: 36, column: 10, scope: !41) -!62 = !DILocation(line: 37, column: 5, scope: !41) -!63 = !DILocation(line: 37, column: 13, scope: !41) -!64 = !DILocalVariable(name: "source", scope: !65, file: !2, line: 39, type: !56) -!65 = distinct !DILexicalBlock(scope: !41, file: !2, line: 38, column: 5) -!66 = !DILocation(line: 39, column: 17, scope: !65) -!67 = !DILocation(line: 40, column: 17, scope: !65) -!68 = !DILocation(line: 40, column: 9, scope: !65) -!69 = !DILocation(line: 41, column: 9, scope: !65) -!70 = !DILocation(line: 41, column: 23, scope: !65) -!71 = !DILocation(line: 43, column: 18, scope: !65) -!72 = !DILocation(line: 43, column: 36, scope: !65) -!73 = !DILocation(line: 43, column: 9, scope: !65) -!74 = !DILocation(line: 44, column: 26, scope: !65) -!75 = !DILocation(line: 44, column: 9, scope: !65) -!76 = !DILocation(line: 45, column: 24, scope: !65) -!77 = !DILocation(line: 45, column: 9, scope: !65) -!78 = !DILocation(line: 46, column: 20, scope: !65) -!79 = !DILocation(line: 46, column: 9, scope: !65) -!80 = !DILocation(line: 48, column: 1, scope: !41) -!81 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE805_wchar_t_declare_snprintf_01_good", scope: !2, file: !2, line: 75, type: !42, scopeLine: 76, spFlags: DISPFlagDefinition, unit: !28, retainedNodes: !44) -!82 = !DILocation(line: 77, column: 5, scope: !81) -!83 = !DILocation(line: 78, column: 1, scope: !81) -!84 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 90, type: !85, scopeLine: 91, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !28, retainedNodes: !44) -!85 = !DISubroutineType(types: !86) -!86 = !{!4, !4, !87} -!87 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !88, size: 64) -!88 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !10, size: 64) -!89 = !DILocalVariable(name: "argc", arg: 1, scope: !84, file: !2, line: 90, type: !4) -!90 = !DILocation(line: 90, column: 14, scope: !84) -!91 = !DILocalVariable(name: "argv", arg: 2, scope: !84, file: !2, line: 90, type: !87) -!92 = !DILocation(line: 90, column: 27, scope: !84) -!93 = !DILocation(line: 93, column: 22, scope: !84) -!94 = !DILocation(line: 93, column: 12, scope: !84) -!95 = !DILocation(line: 93, column: 5, scope: !84) -!96 = !DILocation(line: 95, column: 5, scope: !84) -!97 = !DILocation(line: 96, column: 5, scope: !84) -!98 = !DILocation(line: 97, column: 5, scope: !84) -!99 = !DILocation(line: 100, column: 5, scope: !84) -!100 = !DILocation(line: 101, column: 5, scope: !84) -!101 = !DILocation(line: 102, column: 5, scope: !84) -!102 = !DILocation(line: 104, column: 5, scope: !84) -!103 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 55, type: !42, scopeLine: 56, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !28, retainedNodes: !44) -!104 = !DILocalVariable(name: "data", scope: !103, file: !2, line: 57, type: !46) -!105 = !DILocation(line: 57, column: 15, scope: !103) -!106 = !DILocalVariable(name: "dataBadBuffer", scope: !103, file: !2, line: 58, type: !51) -!107 = !DILocation(line: 58, column: 13, scope: !103) -!108 = !DILocalVariable(name: "dataGoodBuffer", scope: !103, file: !2, line: 59, type: !56) -!109 = !DILocation(line: 59, column: 13, scope: !103) -!110 = !DILocation(line: 61, column: 12, scope: !103) -!111 = !DILocation(line: 61, column: 10, scope: !103) -!112 = !DILocation(line: 62, column: 5, scope: !103) -!113 = !DILocation(line: 62, column: 13, scope: !103) -!114 = !DILocalVariable(name: "source", scope: !115, file: !2, line: 64, type: !56) -!115 = distinct !DILexicalBlock(scope: !103, file: !2, line: 63, column: 5) -!116 = !DILocation(line: 64, column: 17, scope: !115) -!117 = !DILocation(line: 65, column: 17, scope: !115) -!118 = !DILocation(line: 65, column: 9, scope: !115) -!119 = !DILocation(line: 66, column: 9, scope: !115) -!120 = !DILocation(line: 66, column: 23, scope: !115) -!121 = !DILocation(line: 68, column: 18, scope: !115) -!122 = !DILocation(line: 68, column: 36, scope: !115) -!123 = !DILocation(line: 68, column: 9, scope: !115) -!124 = !DILocation(line: 69, column: 24, scope: !115) -!125 = !DILocation(line: 69, column: 9, scope: !115) -!126 = !DILocation(line: 70, column: 24, scope: !115) -!127 = !DILocation(line: 70, column: 9, scope: !115) -!128 = !DILocation(line: 71, column: 20, scope: !115) -!129 = !DILocation(line: 71, column: 9, scope: !115) -!130 = !DILocation(line: 73, column: 1, scope: !103) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_loop_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_loop_01.c.bc deleted file mode 100644 index 27132712..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_loop_01.c.bc +++ /dev/null @@ -1,393 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_loop_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_loop_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_loop_01_bad() #0 !dbg !35 { -entry: - %data = alloca ptr, align 8 - %dataBuffer = alloca [100 x i8], align 16 - %dest = alloca [50 x i8], align 16 - %i = alloca i64, align 8 - %dataLen = alloca i64, align 8 - call void @llvm.dbg.declare(metadata ptr %data, metadata !39, metadata !DIExpression()), !dbg !41 - call void @llvm.dbg.declare(metadata ptr %dataBuffer, metadata !42, metadata !DIExpression()), !dbg !46 - %arraydecay = getelementptr inbounds [100 x i8], ptr %dataBuffer, i64 0, i64 0, !dbg !47 - store ptr %arraydecay, ptr %data, align 8, !dbg !48 - %0 = load ptr, ptr %data, align 8, !dbg !49 - call void @llvm.memset.p0.i64(ptr align 1 %0, i8 65, i64 99, i1 false), !dbg !50 - %1 = load ptr, ptr %data, align 8, !dbg !51 - %arrayidx = getelementptr inbounds i8, ptr %1, i64 99, !dbg !51 - store i8 0, ptr %arrayidx, align 1, !dbg !52 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !53, metadata !DIExpression()), !dbg !58 - call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 50, i1 false), !dbg !58 - call void @llvm.dbg.declare(metadata ptr %i, metadata !59, metadata !DIExpression()), !dbg !63 - call void @llvm.dbg.declare(metadata ptr %dataLen, metadata !64, metadata !DIExpression()), !dbg !65 - %2 = load ptr, ptr %data, align 8, !dbg !66 - %call = call i64 @strlen(ptr noundef %2) #6, !dbg !67 - store i64 %call, ptr %dataLen, align 8, !dbg !68 - store i64 0, ptr %i, align 8, !dbg !69 - br label %for.cond, !dbg !71 - -for.cond: ; preds = %for.inc, %entry - %3 = load i64, ptr %i, align 8, !dbg !72 - %4 = load i64, ptr %dataLen, align 8, !dbg !74 - %cmp = icmp ult i64 %3, %4, !dbg !75 - br i1 %cmp, label %for.body, label %for.end, !dbg !76 - -for.body: ; preds = %for.cond - %5 = load ptr, ptr %data, align 8, !dbg !77 - %6 = load i64, ptr %i, align 8, !dbg !79 - %arrayidx1 = getelementptr inbounds i8, ptr %5, i64 %6, !dbg !77 - %7 = load i8, ptr %arrayidx1, align 1, !dbg !77 - %8 = load i64, ptr %i, align 8, !dbg !80 - %arrayidx2 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 %8, !dbg !81 - store i8 %7, ptr %arrayidx2, align 1, !dbg !82 - br label %for.inc, !dbg !83 - -for.inc: ; preds = %for.body - %9 = load i64, ptr %i, align 8, !dbg !84 - %inc = add i64 %9, 1, !dbg !84 - store i64 %inc, ptr %i, align 8, !dbg !84 - br label %for.cond, !dbg !85, !llvm.loop !86 - -for.end: ; preds = %for.cond - %arrayidx3 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 49, !dbg !89 - store i8 0, ptr %arrayidx3, align 1, !dbg !90 - %arraydecay4 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !91 - %10 = load i64, ptr %dataLen, align 8, !dbg !92 - %sub = sub i64 %10, 1, !dbg !93 - %call5 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay4, i64 noundef %sub), !dbg !94 - %11 = load ptr, ptr %data, align 8, !dbg !95 - %12 = load i64, ptr %dataLen, align 8, !dbg !96 - %sub6 = sub i64 %12, 1, !dbg !97 - %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %11, i64 noundef %sub6), !dbg !98 - %13 = load ptr, ptr %data, align 8, !dbg !99 - call void @printLine(ptr noundef %13), !dbg !100 - ret void, !dbg !101 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare i32 @SAFE_BUFACCESS(...) #4 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_loop_01_good() #0 !dbg !102 { -entry: - call void @goodG2B(), !dbg !103 - ret void, !dbg !104 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !105 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !110, metadata !DIExpression()), !dbg !111 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !112, metadata !DIExpression()), !dbg !113 - %call = call i64 @time(ptr noundef null) #7, !dbg !114 - %conv = trunc i64 %call to i32, !dbg !115 - call void @srand(i32 noundef %conv) #7, !dbg !116 - call void @printLine(ptr noundef @.str), !dbg !117 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_loop_01_good(), !dbg !118 - call void @printLine(ptr noundef @.str.1), !dbg !119 - call void @printLine(ptr noundef @.str.2), !dbg !120 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_loop_01_bad(), !dbg !121 - call void @printLine(ptr noundef @.str.3), !dbg !122 - ret i32 0, !dbg !123 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !124 { -entry: - %data = alloca ptr, align 8 - %dataBuffer = alloca [100 x i8], align 16 - %dest = alloca [50 x i8], align 16 - %i = alloca i64, align 8 - %dataLen = alloca i64, align 8 - call void @llvm.dbg.declare(metadata ptr %data, metadata !125, metadata !DIExpression()), !dbg !126 - call void @llvm.dbg.declare(metadata ptr %dataBuffer, metadata !127, metadata !DIExpression()), !dbg !128 - %arraydecay = getelementptr inbounds [100 x i8], ptr %dataBuffer, i64 0, i64 0, !dbg !129 - store ptr %arraydecay, ptr %data, align 8, !dbg !130 - %0 = load ptr, ptr %data, align 8, !dbg !131 - call void @llvm.memset.p0.i64(ptr align 1 %0, i8 65, i64 49, i1 false), !dbg !132 - %1 = load ptr, ptr %data, align 8, !dbg !133 - %arrayidx = getelementptr inbounds i8, ptr %1, i64 49, !dbg !133 - store i8 0, ptr %arrayidx, align 1, !dbg !134 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !135, metadata !DIExpression()), !dbg !137 - call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 50, i1 false), !dbg !137 - call void @llvm.dbg.declare(metadata ptr %i, metadata !138, metadata !DIExpression()), !dbg !139 - call void @llvm.dbg.declare(metadata ptr %dataLen, metadata !140, metadata !DIExpression()), !dbg !141 - %2 = load ptr, ptr %data, align 8, !dbg !142 - %call = call i64 @strlen(ptr noundef %2) #6, !dbg !143 - store i64 %call, ptr %dataLen, align 8, !dbg !144 - store i64 0, ptr %i, align 8, !dbg !145 - br label %for.cond, !dbg !147 - -for.cond: ; preds = %for.inc, %entry - %3 = load i64, ptr %i, align 8, !dbg !148 - %4 = load i64, ptr %dataLen, align 8, !dbg !150 - %cmp = icmp ult i64 %3, %4, !dbg !151 - br i1 %cmp, label %for.body, label %for.end, !dbg !152 - -for.body: ; preds = %for.cond - %5 = load ptr, ptr %data, align 8, !dbg !153 - %6 = load i64, ptr %i, align 8, !dbg !155 - %arrayidx1 = getelementptr inbounds i8, ptr %5, i64 %6, !dbg !153 - %7 = load i8, ptr %arrayidx1, align 1, !dbg !153 - %8 = load i64, ptr %i, align 8, !dbg !156 - %arrayidx2 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 %8, !dbg !157 - store i8 %7, ptr %arrayidx2, align 1, !dbg !158 - %arraydecay3 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !159 - %9 = load i64, ptr %i, align 8, !dbg !160 - %call4 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay3, i64 noundef %9), !dbg !161 - %10 = load ptr, ptr %data, align 8, !dbg !162 - %11 = load i64, ptr %i, align 8, !dbg !163 - %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %10, i64 noundef %11), !dbg !164 - br label %for.inc, !dbg !165 - -for.inc: ; preds = %for.body - %12 = load i64, ptr %i, align 8, !dbg !166 - %inc = add i64 %12, 1, !dbg !166 - store i64 %inc, ptr %i, align 8, !dbg !166 - br label %for.cond, !dbg !167, !llvm.loop !168 - -for.end: ; preds = %for.cond - %arraydecay6 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !170 - %13 = load i64, ptr %dataLen, align 8, !dbg !171 - %sub = sub i64 %13, 1, !dbg !172 - %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef %sub), !dbg !173 - %14 = load ptr, ptr %data, align 8, !dbg !174 - %15 = load i64, ptr %dataLen, align 8, !dbg !175 - %sub8 = sub i64 %15, 1, !dbg !176 - %call9 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %14, i64 noundef %sub8), !dbg !177 - %arrayidx10 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 49, !dbg !178 - store i8 0, ptr %arrayidx10, align 1, !dbg !179 - %16 = load ptr, ptr %data, align 8, !dbg !180 - call void @printLine(ptr noundef %16), !dbg !181 - ret void, !dbg !182 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind willreturn memory(read) } -attributes #7 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} -!llvm.ident = !{!34} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 98, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "9d701b805c41687811bbe6830fa17d01") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 100, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 103, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 105, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "9d701b805c41687811bbe6830fa17d01") -!24 = !{!25} -!25 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!26 = !{!0, !7, !12, !17} -!27 = !{i32 7, !"Dwarf Version", i32 5} -!28 = !{i32 2, !"Debug Info Version", i32 3} -!29 = !{i32 1, !"wchar_size", i32 4} -!30 = !{i32 8, !"PIC Level", i32 2} -!31 = !{i32 7, !"PIE Level", i32 2} -!32 = !{i32 7, !"uwtable", i32 2} -!33 = !{i32 7, !"frame-pointer", i32 2} -!34 = !{!"clang version 16.0.0"} -!35 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_loop_01_bad", scope: !2, file: !2, line: 23, type: !36, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!36 = !DISubroutineType(types: !37) -!37 = !{null} -!38 = !{} -!39 = !DILocalVariable(name: "data", scope: !35, file: !2, line: 25, type: !40) -!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!41 = !DILocation(line: 25, column: 12, scope: !35) -!42 = !DILocalVariable(name: "dataBuffer", scope: !35, file: !2, line: 26, type: !43) -!43 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 800, elements: !44) -!44 = !{!45} -!45 = !DISubrange(count: 100) -!46 = !DILocation(line: 26, column: 10, scope: !35) -!47 = !DILocation(line: 27, column: 12, scope: !35) -!48 = !DILocation(line: 27, column: 10, scope: !35) -!49 = !DILocation(line: 29, column: 12, scope: !35) -!50 = !DILocation(line: 29, column: 5, scope: !35) -!51 = !DILocation(line: 30, column: 5, scope: !35) -!52 = !DILocation(line: 30, column: 17, scope: !35) -!53 = !DILocalVariable(name: "dest", scope: !54, file: !2, line: 32, type: !55) -!54 = distinct !DILexicalBlock(scope: !35, file: !2, line: 31, column: 5) -!55 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 400, elements: !56) -!56 = !{!57} -!57 = !DISubrange(count: 50) -!58 = !DILocation(line: 32, column: 14, scope: !54) -!59 = !DILocalVariable(name: "i", scope: !54, file: !2, line: 33, type: !60) -!60 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !61, line: 46, baseType: !62) -!61 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!62 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) -!63 = !DILocation(line: 33, column: 16, scope: !54) -!64 = !DILocalVariable(name: "dataLen", scope: !54, file: !2, line: 33, type: !60) -!65 = !DILocation(line: 33, column: 19, scope: !54) -!66 = !DILocation(line: 34, column: 26, scope: !54) -!67 = !DILocation(line: 34, column: 19, scope: !54) -!68 = !DILocation(line: 34, column: 17, scope: !54) -!69 = !DILocation(line: 36, column: 16, scope: !70) -!70 = distinct !DILexicalBlock(scope: !54, file: !2, line: 36, column: 9) -!71 = !DILocation(line: 36, column: 14, scope: !70) -!72 = !DILocation(line: 36, column: 21, scope: !73) -!73 = distinct !DILexicalBlock(scope: !70, file: !2, line: 36, column: 9) -!74 = !DILocation(line: 36, column: 25, scope: !73) -!75 = !DILocation(line: 36, column: 23, scope: !73) -!76 = !DILocation(line: 36, column: 9, scope: !70) -!77 = !DILocation(line: 38, column: 23, scope: !78) -!78 = distinct !DILexicalBlock(scope: !73, file: !2, line: 37, column: 9) -!79 = !DILocation(line: 38, column: 28, scope: !78) -!80 = !DILocation(line: 38, column: 18, scope: !78) -!81 = !DILocation(line: 38, column: 13, scope: !78) -!82 = !DILocation(line: 38, column: 21, scope: !78) -!83 = !DILocation(line: 39, column: 9, scope: !78) -!84 = !DILocation(line: 36, column: 35, scope: !73) -!85 = !DILocation(line: 36, column: 9, scope: !73) -!86 = distinct !{!86, !76, !87, !88} -!87 = !DILocation(line: 39, column: 9, scope: !70) -!88 = !{!"llvm.loop.mustprogress"} -!89 = !DILocation(line: 40, column: 9, scope: !54) -!90 = !DILocation(line: 40, column: 20, scope: !54) -!91 = !DILocation(line: 41, column: 26, scope: !54) -!92 = !DILocation(line: 41, column: 32, scope: !54) -!93 = !DILocation(line: 41, column: 40, scope: !54) -!94 = !DILocation(line: 41, column: 9, scope: !54) -!95 = !DILocation(line: 42, column: 24, scope: !54) -!96 = !DILocation(line: 42, column: 30, scope: !54) -!97 = !DILocation(line: 42, column: 38, scope: !54) -!98 = !DILocation(line: 42, column: 9, scope: !54) -!99 = !DILocation(line: 43, column: 19, scope: !54) -!100 = !DILocation(line: 43, column: 9, scope: !54) -!101 = !DILocation(line: 45, column: 1, scope: !35) -!102 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_loop_01_good", scope: !2, file: !2, line: 78, type: !36, scopeLine: 79, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!103 = !DILocation(line: 80, column: 5, scope: !102) -!104 = !DILocation(line: 81, column: 1, scope: !102) -!105 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 93, type: !106, scopeLine: 94, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!106 = !DISubroutineType(types: !107) -!107 = !{!108, !108, !109} -!108 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!109 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !40, size: 64) -!110 = !DILocalVariable(name: "argc", arg: 1, scope: !105, file: !2, line: 93, type: !108) -!111 = !DILocation(line: 93, column: 14, scope: !105) -!112 = !DILocalVariable(name: "argv", arg: 2, scope: !105, file: !2, line: 93, type: !109) -!113 = !DILocation(line: 93, column: 27, scope: !105) -!114 = !DILocation(line: 96, column: 22, scope: !105) -!115 = !DILocation(line: 96, column: 12, scope: !105) -!116 = !DILocation(line: 96, column: 5, scope: !105) -!117 = !DILocation(line: 98, column: 5, scope: !105) -!118 = !DILocation(line: 99, column: 5, scope: !105) -!119 = !DILocation(line: 100, column: 5, scope: !105) -!120 = !DILocation(line: 103, column: 5, scope: !105) -!121 = !DILocation(line: 104, column: 5, scope: !105) -!122 = !DILocation(line: 105, column: 5, scope: !105) -!123 = !DILocation(line: 107, column: 5, scope: !105) -!124 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 52, type: !36, scopeLine: 53, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) -!125 = !DILocalVariable(name: "data", scope: !124, file: !2, line: 54, type: !40) -!126 = !DILocation(line: 54, column: 12, scope: !124) -!127 = !DILocalVariable(name: "dataBuffer", scope: !124, file: !2, line: 55, type: !43) -!128 = !DILocation(line: 55, column: 10, scope: !124) -!129 = !DILocation(line: 56, column: 12, scope: !124) -!130 = !DILocation(line: 56, column: 10, scope: !124) -!131 = !DILocation(line: 58, column: 12, scope: !124) -!132 = !DILocation(line: 58, column: 5, scope: !124) -!133 = !DILocation(line: 59, column: 5, scope: !124) -!134 = !DILocation(line: 59, column: 16, scope: !124) -!135 = !DILocalVariable(name: "dest", scope: !136, file: !2, line: 61, type: !55) -!136 = distinct !DILexicalBlock(scope: !124, file: !2, line: 60, column: 5) -!137 = !DILocation(line: 61, column: 14, scope: !136) -!138 = !DILocalVariable(name: "i", scope: !136, file: !2, line: 62, type: !60) -!139 = !DILocation(line: 62, column: 16, scope: !136) -!140 = !DILocalVariable(name: "dataLen", scope: !136, file: !2, line: 62, type: !60) -!141 = !DILocation(line: 62, column: 19, scope: !136) -!142 = !DILocation(line: 63, column: 26, scope: !136) -!143 = !DILocation(line: 63, column: 19, scope: !136) -!144 = !DILocation(line: 63, column: 17, scope: !136) -!145 = !DILocation(line: 65, column: 16, scope: !146) -!146 = distinct !DILexicalBlock(scope: !136, file: !2, line: 65, column: 9) -!147 = !DILocation(line: 65, column: 14, scope: !146) -!148 = !DILocation(line: 65, column: 21, scope: !149) -!149 = distinct !DILexicalBlock(scope: !146, file: !2, line: 65, column: 9) -!150 = !DILocation(line: 65, column: 25, scope: !149) -!151 = !DILocation(line: 65, column: 23, scope: !149) -!152 = !DILocation(line: 65, column: 9, scope: !146) -!153 = !DILocation(line: 67, column: 23, scope: !154) -!154 = distinct !DILexicalBlock(scope: !149, file: !2, line: 66, column: 9) -!155 = !DILocation(line: 67, column: 28, scope: !154) -!156 = !DILocation(line: 67, column: 18, scope: !154) -!157 = !DILocation(line: 67, column: 13, scope: !154) -!158 = !DILocation(line: 67, column: 21, scope: !154) -!159 = !DILocation(line: 68, column: 28, scope: !154) -!160 = !DILocation(line: 68, column: 34, scope: !154) -!161 = !DILocation(line: 68, column: 13, scope: !154) -!162 = !DILocation(line: 69, column: 28, scope: !154) -!163 = !DILocation(line: 69, column: 34, scope: !154) -!164 = !DILocation(line: 69, column: 13, scope: !154) -!165 = !DILocation(line: 70, column: 9, scope: !154) -!166 = !DILocation(line: 65, column: 35, scope: !149) -!167 = !DILocation(line: 65, column: 9, scope: !149) -!168 = distinct !{!168, !152, !169, !88} -!169 = !DILocation(line: 70, column: 9, scope: !146) -!170 = !DILocation(line: 71, column: 24, scope: !136) -!171 = !DILocation(line: 71, column: 30, scope: !136) -!172 = !DILocation(line: 71, column: 38, scope: !136) -!173 = !DILocation(line: 71, column: 9, scope: !136) -!174 = !DILocation(line: 72, column: 24, scope: !136) -!175 = !DILocation(line: 72, column: 30, scope: !136) -!176 = !DILocation(line: 72, column: 38, scope: !136) -!177 = !DILocation(line: 72, column: 9, scope: !136) -!178 = !DILocation(line: 73, column: 9, scope: !136) -!179 = !DILocation(line: 73, column: 20, scope: !136) -!180 = !DILocation(line: 74, column: 19, scope: !136) -!181 = !DILocation(line: 74, column: 9, scope: !136) -!182 = !DILocation(line: 76, column: 1, scope: !124) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_ncpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_ncpy_01.c.bc deleted file mode 100644 index 23325c19..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_ncpy_01.c.bc +++ /dev/null @@ -1,290 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_ncpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_ncpy_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_ncpy_01_bad() #0 !dbg !35 { -entry: - %data = alloca ptr, align 8 - %dataBuffer = alloca [100 x i8], align 16 - %dest = alloca [50 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !39, metadata !DIExpression()), !dbg !41 - call void @llvm.dbg.declare(metadata ptr %dataBuffer, metadata !42, metadata !DIExpression()), !dbg !46 - %arraydecay = getelementptr inbounds [100 x i8], ptr %dataBuffer, i64 0, i64 0, !dbg !47 - store ptr %arraydecay, ptr %data, align 8, !dbg !48 - %0 = load ptr, ptr %data, align 8, !dbg !49 - call void @llvm.memset.p0.i64(ptr align 1 %0, i8 65, i64 99, i1 false), !dbg !50 - %1 = load ptr, ptr %data, align 8, !dbg !51 - %arrayidx = getelementptr inbounds i8, ptr %1, i64 99, !dbg !51 - store i8 0, ptr %arrayidx, align 1, !dbg !52 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !53, metadata !DIExpression()), !dbg !58 - call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 50, i1 false), !dbg !58 - %arraydecay1 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !59 - %2 = load ptr, ptr %data, align 8, !dbg !60 - %3 = load ptr, ptr %data, align 8, !dbg !61 - %call = call i64 @strlen(ptr noundef %3) #6, !dbg !62 - %call2 = call ptr @strncpy(ptr noundef %arraydecay1, ptr noundef %2, i64 noundef %call) #7, !dbg !63 - %arraydecay3 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !64 - %4 = load ptr, ptr %data, align 8, !dbg !65 - %call4 = call i64 @strlen(ptr noundef %4) #6, !dbg !66 - %sub = sub i64 %call4, 1, !dbg !67 - %call5 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay3, i64 noundef %sub), !dbg !68 - %5 = load ptr, ptr %data, align 8, !dbg !69 - %6 = load ptr, ptr %data, align 8, !dbg !70 - %call6 = call i64 @strlen(ptr noundef %6) #6, !dbg !71 - %sub7 = sub i64 %call6, 1, !dbg !72 - %call8 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %5, i64 noundef %sub7), !dbg !73 - %arrayidx9 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 49, !dbg !74 - store i8 0, ptr %arrayidx9, align 1, !dbg !75 - %7 = load ptr, ptr %data, align 8, !dbg !76 - call void @printLine(ptr noundef %7), !dbg !77 - ret void, !dbg !78 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -; Function Attrs: nounwind -declare ptr @strncpy(ptr noundef, ptr noundef, i64 noundef) #3 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #4 - -declare i32 @UNSAFE_BUFACCESS(...) #5 - -declare i32 @SAFE_BUFACCESS(...) #5 - -declare void @printLine(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_ncpy_01_good() #0 !dbg !79 { -entry: - call void @goodG2B(), !dbg !80 - ret void, !dbg !81 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !82 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !87, metadata !DIExpression()), !dbg !88 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !89, metadata !DIExpression()), !dbg !90 - %call = call i64 @time(ptr noundef null) #7, !dbg !91 - %conv = trunc i64 %call to i32, !dbg !92 - call void @srand(i32 noundef %conv) #7, !dbg !93 - call void @printLine(ptr noundef @.str), !dbg !94 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_ncpy_01_good(), !dbg !95 - call void @printLine(ptr noundef @.str.1), !dbg !96 - call void @printLine(ptr noundef @.str.2), !dbg !97 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_ncpy_01_bad(), !dbg !98 - call void @printLine(ptr noundef @.str.3), !dbg !99 - ret i32 0, !dbg !100 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #3 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !101 { -entry: - %data = alloca ptr, align 8 - %dataBuffer = alloca [100 x i8], align 16 - %dest = alloca [50 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !102, metadata !DIExpression()), !dbg !103 - call void @llvm.dbg.declare(metadata ptr %dataBuffer, metadata !104, metadata !DIExpression()), !dbg !105 - %arraydecay = getelementptr inbounds [100 x i8], ptr %dataBuffer, i64 0, i64 0, !dbg !106 - store ptr %arraydecay, ptr %data, align 8, !dbg !107 - %0 = load ptr, ptr %data, align 8, !dbg !108 - call void @llvm.memset.p0.i64(ptr align 1 %0, i8 65, i64 49, i1 false), !dbg !109 - %1 = load ptr, ptr %data, align 8, !dbg !110 - %arrayidx = getelementptr inbounds i8, ptr %1, i64 49, !dbg !110 - store i8 0, ptr %arrayidx, align 1, !dbg !111 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !112, metadata !DIExpression()), !dbg !114 - call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 50, i1 false), !dbg !114 - %arraydecay1 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !115 - %2 = load ptr, ptr %data, align 8, !dbg !116 - %3 = load ptr, ptr %data, align 8, !dbg !117 - %call = call i64 @strlen(ptr noundef %3) #6, !dbg !118 - %call2 = call ptr @strncpy(ptr noundef %arraydecay1, ptr noundef %2, i64 noundef %call) #7, !dbg !119 - %arraydecay3 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !120 - %4 = load ptr, ptr %data, align 8, !dbg !121 - %call4 = call i64 @strlen(ptr noundef %4) #6, !dbg !122 - %sub = sub i64 %call4, 1, !dbg !123 - %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay3, i64 noundef %sub), !dbg !124 - %5 = load ptr, ptr %data, align 8, !dbg !125 - %6 = load ptr, ptr %data, align 8, !dbg !126 - %call6 = call i64 @strlen(ptr noundef %6) #6, !dbg !127 - %sub7 = sub i64 %call6, 1, !dbg !128 - %call8 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %5, i64 noundef %sub7), !dbg !129 - %arrayidx9 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 49, !dbg !130 - store i8 0, ptr %arrayidx9, align 1, !dbg !131 - %7 = load ptr, ptr %data, align 8, !dbg !132 - call void @printLine(ptr noundef %7), !dbg !133 - ret void, !dbg !134 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind willreturn memory(read) } -attributes #7 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} -!llvm.ident = !{!34} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 86, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_ncpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "0605ede31250268674f4ba51f301c825") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 88, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 91, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 93, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_ncpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "0605ede31250268674f4ba51f301c825") -!24 = !{!25} -!25 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!26 = !{!0, !7, !12, !17} -!27 = !{i32 7, !"Dwarf Version", i32 5} -!28 = !{i32 2, !"Debug Info Version", i32 3} -!29 = !{i32 1, !"wchar_size", i32 4} -!30 = !{i32 8, !"PIC Level", i32 2} -!31 = !{i32 7, !"PIE Level", i32 2} -!32 = !{i32 7, !"uwtable", i32 2} -!33 = !{i32 7, !"frame-pointer", i32 2} -!34 = !{!"clang version 16.0.0"} -!35 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_ncpy_01_bad", scope: !2, file: !2, line: 23, type: !36, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!36 = !DISubroutineType(types: !37) -!37 = !{null} -!38 = !{} -!39 = !DILocalVariable(name: "data", scope: !35, file: !2, line: 25, type: !40) -!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!41 = !DILocation(line: 25, column: 12, scope: !35) -!42 = !DILocalVariable(name: "dataBuffer", scope: !35, file: !2, line: 26, type: !43) -!43 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 800, elements: !44) -!44 = !{!45} -!45 = !DISubrange(count: 100) -!46 = !DILocation(line: 26, column: 10, scope: !35) -!47 = !DILocation(line: 27, column: 12, scope: !35) -!48 = !DILocation(line: 27, column: 10, scope: !35) -!49 = !DILocation(line: 29, column: 12, scope: !35) -!50 = !DILocation(line: 29, column: 5, scope: !35) -!51 = !DILocation(line: 30, column: 5, scope: !35) -!52 = !DILocation(line: 30, column: 17, scope: !35) -!53 = !DILocalVariable(name: "dest", scope: !54, file: !2, line: 32, type: !55) -!54 = distinct !DILexicalBlock(scope: !35, file: !2, line: 31, column: 5) -!55 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 400, elements: !56) -!56 = !{!57} -!57 = !DISubrange(count: 50) -!58 = !DILocation(line: 32, column: 14, scope: !54) -!59 = !DILocation(line: 34, column: 17, scope: !54) -!60 = !DILocation(line: 34, column: 23, scope: !54) -!61 = !DILocation(line: 34, column: 36, scope: !54) -!62 = !DILocation(line: 34, column: 29, scope: !54) -!63 = !DILocation(line: 34, column: 9, scope: !54) -!64 = !DILocation(line: 35, column: 26, scope: !54) -!65 = !DILocation(line: 35, column: 39, scope: !54) -!66 = !DILocation(line: 35, column: 32, scope: !54) -!67 = !DILocation(line: 35, column: 45, scope: !54) -!68 = !DILocation(line: 35, column: 9, scope: !54) -!69 = !DILocation(line: 36, column: 24, scope: !54) -!70 = !DILocation(line: 36, column: 37, scope: !54) -!71 = !DILocation(line: 36, column: 30, scope: !54) -!72 = !DILocation(line: 36, column: 43, scope: !54) -!73 = !DILocation(line: 36, column: 9, scope: !54) -!74 = !DILocation(line: 37, column: 9, scope: !54) -!75 = !DILocation(line: 37, column: 20, scope: !54) -!76 = !DILocation(line: 38, column: 19, scope: !54) -!77 = !DILocation(line: 38, column: 9, scope: !54) -!78 = !DILocation(line: 40, column: 1, scope: !35) -!79 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE806_char_declare_ncpy_01_good", scope: !2, file: !2, line: 66, type: !36, scopeLine: 67, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!80 = !DILocation(line: 68, column: 5, scope: !79) -!81 = !DILocation(line: 69, column: 1, scope: !79) -!82 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 81, type: !83, scopeLine: 82, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!83 = !DISubroutineType(types: !84) -!84 = !{!85, !85, !86} -!85 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!86 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !40, size: 64) -!87 = !DILocalVariable(name: "argc", arg: 1, scope: !82, file: !2, line: 81, type: !85) -!88 = !DILocation(line: 81, column: 14, scope: !82) -!89 = !DILocalVariable(name: "argv", arg: 2, scope: !82, file: !2, line: 81, type: !86) -!90 = !DILocation(line: 81, column: 27, scope: !82) -!91 = !DILocation(line: 84, column: 22, scope: !82) -!92 = !DILocation(line: 84, column: 12, scope: !82) -!93 = !DILocation(line: 84, column: 5, scope: !82) -!94 = !DILocation(line: 86, column: 5, scope: !82) -!95 = !DILocation(line: 87, column: 5, scope: !82) -!96 = !DILocation(line: 88, column: 5, scope: !82) -!97 = !DILocation(line: 91, column: 5, scope: !82) -!98 = !DILocation(line: 92, column: 5, scope: !82) -!99 = !DILocation(line: 93, column: 5, scope: !82) -!100 = !DILocation(line: 95, column: 5, scope: !82) -!101 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 47, type: !36, scopeLine: 48, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) -!102 = !DILocalVariable(name: "data", scope: !101, file: !2, line: 49, type: !40) -!103 = !DILocation(line: 49, column: 12, scope: !101) -!104 = !DILocalVariable(name: "dataBuffer", scope: !101, file: !2, line: 50, type: !43) -!105 = !DILocation(line: 50, column: 10, scope: !101) -!106 = !DILocation(line: 51, column: 12, scope: !101) -!107 = !DILocation(line: 51, column: 10, scope: !101) -!108 = !DILocation(line: 53, column: 12, scope: !101) -!109 = !DILocation(line: 53, column: 5, scope: !101) -!110 = !DILocation(line: 54, column: 5, scope: !101) -!111 = !DILocation(line: 54, column: 16, scope: !101) -!112 = !DILocalVariable(name: "dest", scope: !113, file: !2, line: 56, type: !55) -!113 = distinct !DILexicalBlock(scope: !101, file: !2, line: 55, column: 5) -!114 = !DILocation(line: 56, column: 14, scope: !113) -!115 = !DILocation(line: 58, column: 17, scope: !113) -!116 = !DILocation(line: 58, column: 23, scope: !113) -!117 = !DILocation(line: 58, column: 36, scope: !113) -!118 = !DILocation(line: 58, column: 29, scope: !113) -!119 = !DILocation(line: 58, column: 9, scope: !113) -!120 = !DILocation(line: 59, column: 24, scope: !113) -!121 = !DILocation(line: 59, column: 37, scope: !113) -!122 = !DILocation(line: 59, column: 30, scope: !113) -!123 = !DILocation(line: 59, column: 43, scope: !113) -!124 = !DILocation(line: 59, column: 9, scope: !113) -!125 = !DILocation(line: 60, column: 24, scope: !113) -!126 = !DILocation(line: 60, column: 37, scope: !113) -!127 = !DILocation(line: 60, column: 30, scope: !113) -!128 = !DILocation(line: 60, column: 43, scope: !113) -!129 = !DILocation(line: 60, column: 9, scope: !113) -!130 = !DILocation(line: 61, column: 9, scope: !113) -!131 = !DILocation(line: 61, column: 20, scope: !113) -!132 = !DILocation(line: 62, column: 19, scope: !113) -!133 = !DILocation(line: 62, column: 9, scope: !113) -!134 = !DILocation(line: 64, column: 1, scope: !101) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_declare_memcpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_declare_memcpy_01.c.bc deleted file mode 100644 index 2642d497..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_declare_memcpy_01.c.bc +++ /dev/null @@ -1,309 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_declare_memcpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_declare_memcpy_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_declare_memcpy_01_bad() #0 !dbg !35 { -entry: - %data = alloca ptr, align 8 - %dataBuffer = alloca [100 x i32], align 16 - %dest = alloca [50 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !39, metadata !DIExpression()), !dbg !44 - call void @llvm.dbg.declare(metadata ptr %dataBuffer, metadata !45, metadata !DIExpression()), !dbg !49 - %arraydecay = getelementptr inbounds [100 x i32], ptr %dataBuffer, i64 0, i64 0, !dbg !50 - store ptr %arraydecay, ptr %data, align 8, !dbg !51 - %0 = load ptr, ptr %data, align 8, !dbg !52 - %call = call ptr @wmemset(ptr noundef %0, i32 noundef 65, i64 noundef 99) #7, !dbg !53 - %1 = load ptr, ptr %data, align 8, !dbg !54 - %arrayidx = getelementptr inbounds i32, ptr %1, i64 99, !dbg !54 - store i32 0, ptr %arrayidx, align 4, !dbg !55 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !56, metadata !DIExpression()), !dbg !61 - call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 200, i1 false), !dbg !61 - %arraydecay1 = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 0, !dbg !62 - %2 = load ptr, ptr %data, align 8, !dbg !63 - %3 = load ptr, ptr %data, align 8, !dbg !64 - %call2 = call i64 @wcslen(ptr noundef %3) #8, !dbg !65 - %mul = mul i64 %call2, 4, !dbg !66 - call void @llvm.memcpy.p0.p0.i64(ptr align 16 %arraydecay1, ptr align 4 %2, i64 %mul, i1 false), !dbg !62 - %arraydecay3 = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 0, !dbg !67 - %4 = load ptr, ptr %data, align 8, !dbg !68 - %call4 = call i64 @wcslen(ptr noundef %4) #8, !dbg !69 - %mul5 = mul i64 %call4, 4, !dbg !70 - %sub = sub i64 %mul5, 1, !dbg !71 - %call6 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay3, i64 noundef %sub), !dbg !72 - %5 = load ptr, ptr %data, align 8, !dbg !73 - %6 = load ptr, ptr %data, align 8, !dbg !74 - %call7 = call i64 @wcslen(ptr noundef %6) #8, !dbg !75 - %mul8 = mul i64 %call7, 4, !dbg !76 - %sub9 = sub i64 %mul8, 1, !dbg !77 - %call10 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %5, i64 noundef %sub9), !dbg !78 - %arrayidx11 = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 49, !dbg !79 - store i32 0, ptr %arrayidx11, align 4, !dbg !80 - %7 = load ptr, ptr %data, align 8, !dbg !81 - call void @printWLine(ptr noundef %7), !dbg !82 - ret void, !dbg !83 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #2 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @wcslen(ptr noundef) #4 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #5 - -declare i32 @UNSAFE_BUFACCESS(...) #6 - -declare i32 @SAFE_BUFACCESS(...) #6 - -declare void @printWLine(ptr noundef) #6 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_declare_memcpy_01_good() #0 !dbg !84 { -entry: - call void @goodG2B(), !dbg !85 - ret void, !dbg !86 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !87 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !92, metadata !DIExpression()), !dbg !93 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !94, metadata !DIExpression()), !dbg !95 - %call = call i64 @time(ptr noundef null) #7, !dbg !96 - %conv = trunc i64 %call to i32, !dbg !97 - call void @srand(i32 noundef %conv) #7, !dbg !98 - call void @printLine(ptr noundef @.str), !dbg !99 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_declare_memcpy_01_good(), !dbg !100 - call void @printLine(ptr noundef @.str.1), !dbg !101 - call void @printLine(ptr noundef @.str.2), !dbg !102 - call void @CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_declare_memcpy_01_bad(), !dbg !103 - call void @printLine(ptr noundef @.str.3), !dbg !104 - ret i32 0, !dbg !105 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 - -declare void @printLine(ptr noundef) #6 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !106 { -entry: - %data = alloca ptr, align 8 - %dataBuffer = alloca [100 x i32], align 16 - %dest = alloca [50 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !107, metadata !DIExpression()), !dbg !108 - call void @llvm.dbg.declare(metadata ptr %dataBuffer, metadata !109, metadata !DIExpression()), !dbg !110 - %arraydecay = getelementptr inbounds [100 x i32], ptr %dataBuffer, i64 0, i64 0, !dbg !111 - store ptr %arraydecay, ptr %data, align 8, !dbg !112 - %0 = load ptr, ptr %data, align 8, !dbg !113 - %call = call ptr @wmemset(ptr noundef %0, i32 noundef 65, i64 noundef 49) #7, !dbg !114 - %1 = load ptr, ptr %data, align 8, !dbg !115 - %arrayidx = getelementptr inbounds i32, ptr %1, i64 49, !dbg !115 - store i32 0, ptr %arrayidx, align 4, !dbg !116 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !117, metadata !DIExpression()), !dbg !119 - call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 200, i1 false), !dbg !119 - %arraydecay1 = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 0, !dbg !120 - %2 = load ptr, ptr %data, align 8, !dbg !121 - %3 = load ptr, ptr %data, align 8, !dbg !122 - %call2 = call i64 @wcslen(ptr noundef %3) #8, !dbg !123 - %mul = mul i64 %call2, 4, !dbg !124 - call void @llvm.memcpy.p0.p0.i64(ptr align 16 %arraydecay1, ptr align 4 %2, i64 %mul, i1 false), !dbg !120 - %arraydecay3 = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 0, !dbg !125 - %4 = load ptr, ptr %data, align 8, !dbg !126 - %call4 = call i64 @wcslen(ptr noundef %4) #8, !dbg !127 - %mul5 = mul i64 %call4, 4, !dbg !128 - %sub = sub i64 %mul5, 1, !dbg !129 - %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay3, i64 noundef %sub), !dbg !130 - %5 = load ptr, ptr %data, align 8, !dbg !131 - %6 = load ptr, ptr %data, align 8, !dbg !132 - %call7 = call i64 @wcslen(ptr noundef %6) #8, !dbg !133 - %mul8 = mul i64 %call7, 4, !dbg !134 - %sub9 = sub i64 %mul8, 1, !dbg !135 - %call10 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %5, i64 noundef %sub9), !dbg !136 - %arrayidx11 = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 49, !dbg !137 - store i32 0, ptr %arrayidx11, align 4, !dbg !138 - %7 = load ptr, ptr %data, align 8, !dbg !139 - call void @printWLine(ptr noundef %7), !dbg !140 - ret void, !dbg !141 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #4 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #6 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind } -attributes #8 = { nounwind willreturn memory(read) } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} -!llvm.ident = !{!34} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 86, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_declare_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7e4f0985e3b580f69782124bb4153e3f") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 88, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 91, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 93, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_declare_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "7e4f0985e3b580f69782124bb4153e3f") -!24 = !{!25} -!25 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!26 = !{!0, !7, !12, !17} -!27 = !{i32 7, !"Dwarf Version", i32 5} -!28 = !{i32 2, !"Debug Info Version", i32 3} -!29 = !{i32 1, !"wchar_size", i32 4} -!30 = !{i32 8, !"PIC Level", i32 2} -!31 = !{i32 7, !"PIE Level", i32 2} -!32 = !{i32 7, !"uwtable", i32 2} -!33 = !{i32 7, !"frame-pointer", i32 2} -!34 = !{!"clang version 16.0.0"} -!35 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_declare_memcpy_01_bad", scope: !2, file: !2, line: 23, type: !36, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!36 = !DISubroutineType(types: !37) -!37 = !{null} -!38 = !{} -!39 = !DILocalVariable(name: "data", scope: !35, file: !2, line: 25, type: !40) -!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !41, size: 64) -!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !42, line: 74, baseType: !43) -!42 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!43 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!44 = !DILocation(line: 25, column: 15, scope: !35) -!45 = !DILocalVariable(name: "dataBuffer", scope: !35, file: !2, line: 26, type: !46) -!46 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 3200, elements: !47) -!47 = !{!48} -!48 = !DISubrange(count: 100) -!49 = !DILocation(line: 26, column: 13, scope: !35) -!50 = !DILocation(line: 27, column: 12, scope: !35) -!51 = !DILocation(line: 27, column: 10, scope: !35) -!52 = !DILocation(line: 29, column: 13, scope: !35) -!53 = !DILocation(line: 29, column: 5, scope: !35) -!54 = !DILocation(line: 30, column: 5, scope: !35) -!55 = !DILocation(line: 30, column: 17, scope: !35) -!56 = !DILocalVariable(name: "dest", scope: !57, file: !2, line: 32, type: !58) -!57 = distinct !DILexicalBlock(scope: !35, file: !2, line: 31, column: 5) -!58 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 1600, elements: !59) -!59 = !{!60} -!60 = !DISubrange(count: 50) -!61 = !DILocation(line: 32, column: 17, scope: !57) -!62 = !DILocation(line: 34, column: 9, scope: !57) -!63 = !DILocation(line: 34, column: 22, scope: !57) -!64 = !DILocation(line: 34, column: 35, scope: !57) -!65 = !DILocation(line: 34, column: 28, scope: !57) -!66 = !DILocation(line: 34, column: 40, scope: !57) -!67 = !DILocation(line: 35, column: 26, scope: !57) -!68 = !DILocation(line: 35, column: 39, scope: !57) -!69 = !DILocation(line: 35, column: 32, scope: !57) -!70 = !DILocation(line: 35, column: 44, scope: !57) -!71 = !DILocation(line: 35, column: 61, scope: !57) -!72 = !DILocation(line: 35, column: 9, scope: !57) -!73 = !DILocation(line: 36, column: 24, scope: !57) -!74 = !DILocation(line: 36, column: 37, scope: !57) -!75 = !DILocation(line: 36, column: 30, scope: !57) -!76 = !DILocation(line: 36, column: 42, scope: !57) -!77 = !DILocation(line: 36, column: 59, scope: !57) -!78 = !DILocation(line: 36, column: 9, scope: !57) -!79 = !DILocation(line: 37, column: 9, scope: !57) -!80 = !DILocation(line: 37, column: 20, scope: !57) -!81 = !DILocation(line: 38, column: 20, scope: !57) -!82 = !DILocation(line: 38, column: 9, scope: !57) -!83 = !DILocation(line: 40, column: 1, scope: !35) -!84 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__CWE806_wchar_t_declare_memcpy_01_good", scope: !2, file: !2, line: 66, type: !36, scopeLine: 67, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!85 = !DILocation(line: 68, column: 5, scope: !84) -!86 = !DILocation(line: 69, column: 1, scope: !84) -!87 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 81, type: !88, scopeLine: 82, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!88 = !DISubroutineType(types: !89) -!89 = !{!43, !43, !90} -!90 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !91, size: 64) -!91 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!92 = !DILocalVariable(name: "argc", arg: 1, scope: !87, file: !2, line: 81, type: !43) -!93 = !DILocation(line: 81, column: 14, scope: !87) -!94 = !DILocalVariable(name: "argv", arg: 2, scope: !87, file: !2, line: 81, type: !90) -!95 = !DILocation(line: 81, column: 27, scope: !87) -!96 = !DILocation(line: 84, column: 22, scope: !87) -!97 = !DILocation(line: 84, column: 12, scope: !87) -!98 = !DILocation(line: 84, column: 5, scope: !87) -!99 = !DILocation(line: 86, column: 5, scope: !87) -!100 = !DILocation(line: 87, column: 5, scope: !87) -!101 = !DILocation(line: 88, column: 5, scope: !87) -!102 = !DILocation(line: 91, column: 5, scope: !87) -!103 = !DILocation(line: 92, column: 5, scope: !87) -!104 = !DILocation(line: 93, column: 5, scope: !87) -!105 = !DILocation(line: 95, column: 5, scope: !87) -!106 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 47, type: !36, scopeLine: 48, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) -!107 = !DILocalVariable(name: "data", scope: !106, file: !2, line: 49, type: !40) -!108 = !DILocation(line: 49, column: 15, scope: !106) -!109 = !DILocalVariable(name: "dataBuffer", scope: !106, file: !2, line: 50, type: !46) -!110 = !DILocation(line: 50, column: 13, scope: !106) -!111 = !DILocation(line: 51, column: 12, scope: !106) -!112 = !DILocation(line: 51, column: 10, scope: !106) -!113 = !DILocation(line: 53, column: 13, scope: !106) -!114 = !DILocation(line: 53, column: 5, scope: !106) -!115 = !DILocation(line: 54, column: 5, scope: !106) -!116 = !DILocation(line: 54, column: 16, scope: !106) -!117 = !DILocalVariable(name: "dest", scope: !118, file: !2, line: 56, type: !58) -!118 = distinct !DILexicalBlock(scope: !106, file: !2, line: 55, column: 5) -!119 = !DILocation(line: 56, column: 17, scope: !118) -!120 = !DILocation(line: 58, column: 9, scope: !118) -!121 = !DILocation(line: 58, column: 22, scope: !118) -!122 = !DILocation(line: 58, column: 35, scope: !118) -!123 = !DILocation(line: 58, column: 28, scope: !118) -!124 = !DILocation(line: 58, column: 40, scope: !118) -!125 = !DILocation(line: 59, column: 24, scope: !118) -!126 = !DILocation(line: 59, column: 37, scope: !118) -!127 = !DILocation(line: 59, column: 30, scope: !118) -!128 = !DILocation(line: 59, column: 42, scope: !118) -!129 = !DILocation(line: 59, column: 59, scope: !118) -!130 = !DILocation(line: 59, column: 9, scope: !118) -!131 = !DILocation(line: 60, column: 24, scope: !118) -!132 = !DILocation(line: 60, column: 37, scope: !118) -!133 = !DILocation(line: 60, column: 30, scope: !118) -!134 = !DILocation(line: 60, column: 42, scope: !118) -!135 = !DILocation(line: 60, column: 59, scope: !118) -!136 = !DILocation(line: 60, column: 9, scope: !118) -!137 = !DILocation(line: 61, column: 9, scope: !118) -!138 = !DILocation(line: 61, column: 20, scope: !118) -!139 = !DILocation(line: 62, column: 20, scope: !118) -!140 = !DILocation(line: 62, column: 9, scope: !118) -!141 = !DILocation(line: 64, column: 1, scope: !106) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__dest_wchar_t_alloca_cpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__dest_wchar_t_alloca_cpy_01.c.bc deleted file mode 100644 index 1782e95f..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__dest_wchar_t_alloca_cpy_01.c.bc +++ /dev/null @@ -1,272 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__dest_wchar_t_alloca_cpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__dest_wchar_t_alloca_cpy_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__dest_wchar_t_alloca_cpy_01_bad() #0 !dbg !39 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !43, metadata !DIExpression()), !dbg !44 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !45, metadata !DIExpression()), !dbg !46 - %0 = alloca i8, i64 200, align 16, !dbg !47 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !46 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !48, metadata !DIExpression()), !dbg !49 - %1 = alloca i8, i64 400, align 16, !dbg !50 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !49 - %2 = load ptr, ptr %dataBadBuffer, align 8, !dbg !51 - store ptr %2, ptr %data, align 8, !dbg !52 - %3 = load ptr, ptr %data, align 8, !dbg !53 - %arrayidx = getelementptr inbounds i32, ptr %3, i64 0, !dbg !53 - store i32 0, ptr %arrayidx, align 4, !dbg !54 - call void @llvm.dbg.declare(metadata ptr %source, metadata !55, metadata !DIExpression()), !dbg !60 - %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !61 - %call = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #4, !dbg !62 - %arrayidx1 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !63 - store i32 0, ptr %arrayidx1, align 4, !dbg !64 - %4 = load ptr, ptr %data, align 8, !dbg !65 - %arraydecay2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !66 - %call3 = call ptr @wcscpy(ptr noundef %4, ptr noundef %arraydecay2) #4, !dbg !67 - %5 = load ptr, ptr %data, align 8, !dbg !68 - %call4 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %5, i64 noundef 399), !dbg !69 - %arraydecay5 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !70 - %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay5, i64 noundef 399), !dbg !71 - %6 = load ptr, ptr %data, align 8, !dbg !72 - call void @printWLine(ptr noundef %6), !dbg !73 - ret void, !dbg !74 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #2 - -; Function Attrs: nounwind -declare ptr @wcscpy(ptr noundef, ptr noundef) #2 - -declare i32 @UNSAFE_BUFACCESS(...) #3 - -declare i32 @SAFE_BUFACCESS(...) #3 - -declare void @printWLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__dest_wchar_t_alloca_cpy_01_good() #0 !dbg !75 { -entry: - call void @goodG2B(), !dbg !76 - ret void, !dbg !77 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !78 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !83, metadata !DIExpression()), !dbg !84 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !85, metadata !DIExpression()), !dbg !86 - %call = call i64 @time(ptr noundef null) #4, !dbg !87 - %conv = trunc i64 %call to i32, !dbg !88 - call void @srand(i32 noundef %conv) #4, !dbg !89 - call void @printLine(ptr noundef @.str), !dbg !90 - call void @CWE121_Stack_Based_Buffer_Overflow__dest_wchar_t_alloca_cpy_01_good(), !dbg !91 - call void @printLine(ptr noundef @.str.1), !dbg !92 - call void @printLine(ptr noundef @.str.2), !dbg !93 - call void @CWE121_Stack_Based_Buffer_Overflow__dest_wchar_t_alloca_cpy_01_bad(), !dbg !94 - call void @printLine(ptr noundef @.str.3), !dbg !95 - ret i32 0, !dbg !96 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 - -declare void @printLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !97 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !98, metadata !DIExpression()), !dbg !99 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !100, metadata !DIExpression()), !dbg !101 - %0 = alloca i8, i64 200, align 16, !dbg !102 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !101 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !103, metadata !DIExpression()), !dbg !104 - %1 = alloca i8, i64 400, align 16, !dbg !105 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !104 - %2 = load ptr, ptr %dataGoodBuffer, align 8, !dbg !106 - store ptr %2, ptr %data, align 8, !dbg !107 - %3 = load ptr, ptr %data, align 8, !dbg !108 - %arrayidx = getelementptr inbounds i32, ptr %3, i64 0, !dbg !108 - store i32 0, ptr %arrayidx, align 4, !dbg !109 - call void @llvm.dbg.declare(metadata ptr %source, metadata !110, metadata !DIExpression()), !dbg !112 - %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !113 - %call = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #4, !dbg !114 - %arrayidx1 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !115 - store i32 0, ptr %arrayidx1, align 4, !dbg !116 - %4 = load ptr, ptr %data, align 8, !dbg !117 - %arraydecay2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !118 - %call3 = call ptr @wcscpy(ptr noundef %4, ptr noundef %arraydecay2) #4, !dbg !119 - %arraydecay4 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !120 - %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay4, i64 noundef 399), !dbg !121 - %5 = load ptr, ptr %data, align 8, !dbg !122 - %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %5, i64 noundef 399), !dbg !123 - %6 = load ptr, ptr %data, align 8, !dbg !124 - call void @printWLine(ptr noundef %6), !dbg !125 - ret void, !dbg !126 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!31, !32, !33, !34, !35, !36, !37} -!llvm.ident = !{!38} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 89, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__dest_wchar_t_alloca_cpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c50fce4e894376470592c42a4aed7ec6") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 91, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 94, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 96, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !30, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__dest_wchar_t_alloca_cpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c50fce4e894376470592c42a4aed7ec6") -!24 = !{!25, !29} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) -!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !27, line: 74, baseType: !28) -!27 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!28 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!29 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!30 = !{!0, !7, !12, !17} -!31 = !{i32 7, !"Dwarf Version", i32 5} -!32 = !{i32 2, !"Debug Info Version", i32 3} -!33 = !{i32 1, !"wchar_size", i32 4} -!34 = !{i32 8, !"PIC Level", i32 2} -!35 = !{i32 7, !"PIE Level", i32 2} -!36 = !{i32 7, !"uwtable", i32 2} -!37 = !{i32 7, !"frame-pointer", i32 2} -!38 = !{!"clang version 16.0.0"} -!39 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__dest_wchar_t_alloca_cpy_01_bad", scope: !2, file: !2, line: 23, type: !40, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !42) -!40 = !DISubroutineType(types: !41) -!41 = !{null} -!42 = !{} -!43 = !DILocalVariable(name: "data", scope: !39, file: !2, line: 25, type: !25) -!44 = !DILocation(line: 25, column: 15, scope: !39) -!45 = !DILocalVariable(name: "dataBadBuffer", scope: !39, file: !2, line: 26, type: !25) -!46 = !DILocation(line: 26, column: 15, scope: !39) -!47 = !DILocation(line: 26, column: 42, scope: !39) -!48 = !DILocalVariable(name: "dataGoodBuffer", scope: !39, file: !2, line: 27, type: !25) -!49 = !DILocation(line: 27, column: 15, scope: !39) -!50 = !DILocation(line: 27, column: 43, scope: !39) -!51 = !DILocation(line: 30, column: 12, scope: !39) -!52 = !DILocation(line: 30, column: 10, scope: !39) -!53 = !DILocation(line: 31, column: 5, scope: !39) -!54 = !DILocation(line: 31, column: 13, scope: !39) -!55 = !DILocalVariable(name: "source", scope: !56, file: !2, line: 33, type: !57) -!56 = distinct !DILexicalBlock(scope: !39, file: !2, line: 32, column: 5) -!57 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 3200, elements: !58) -!58 = !{!59} -!59 = !DISubrange(count: 100) -!60 = !DILocation(line: 33, column: 17, scope: !56) -!61 = !DILocation(line: 34, column: 17, scope: !56) -!62 = !DILocation(line: 34, column: 9, scope: !56) -!63 = !DILocation(line: 35, column: 9, scope: !56) -!64 = !DILocation(line: 35, column: 23, scope: !56) -!65 = !DILocation(line: 37, column: 16, scope: !56) -!66 = !DILocation(line: 37, column: 22, scope: !56) -!67 = !DILocation(line: 37, column: 9, scope: !56) -!68 = !DILocation(line: 38, column: 26, scope: !56) -!69 = !DILocation(line: 38, column: 9, scope: !56) -!70 = !DILocation(line: 39, column: 24, scope: !56) -!71 = !DILocation(line: 39, column: 9, scope: !56) -!72 = !DILocation(line: 40, column: 20, scope: !56) -!73 = !DILocation(line: 40, column: 9, scope: !56) -!74 = !DILocation(line: 42, column: 1, scope: !39) -!75 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__dest_wchar_t_alloca_cpy_01_good", scope: !2, file: !2, line: 69, type: !40, scopeLine: 70, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !42) -!76 = !DILocation(line: 71, column: 5, scope: !75) -!77 = !DILocation(line: 72, column: 1, scope: !75) -!78 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 84, type: !79, scopeLine: 85, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !42) -!79 = !DISubroutineType(types: !80) -!80 = !{!28, !28, !81} -!81 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !82, size: 64) -!82 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!83 = !DILocalVariable(name: "argc", arg: 1, scope: !78, file: !2, line: 84, type: !28) -!84 = !DILocation(line: 84, column: 14, scope: !78) -!85 = !DILocalVariable(name: "argv", arg: 2, scope: !78, file: !2, line: 84, type: !81) -!86 = !DILocation(line: 84, column: 27, scope: !78) -!87 = !DILocation(line: 87, column: 22, scope: !78) -!88 = !DILocation(line: 87, column: 12, scope: !78) -!89 = !DILocation(line: 87, column: 5, scope: !78) -!90 = !DILocation(line: 89, column: 5, scope: !78) -!91 = !DILocation(line: 90, column: 5, scope: !78) -!92 = !DILocation(line: 91, column: 5, scope: !78) -!93 = !DILocation(line: 94, column: 5, scope: !78) -!94 = !DILocation(line: 95, column: 5, scope: !78) -!95 = !DILocation(line: 96, column: 5, scope: !78) -!96 = !DILocation(line: 98, column: 5, scope: !78) -!97 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 49, type: !40, scopeLine: 50, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !42) -!98 = !DILocalVariable(name: "data", scope: !97, file: !2, line: 51, type: !25) -!99 = !DILocation(line: 51, column: 15, scope: !97) -!100 = !DILocalVariable(name: "dataBadBuffer", scope: !97, file: !2, line: 52, type: !25) -!101 = !DILocation(line: 52, column: 15, scope: !97) -!102 = !DILocation(line: 52, column: 42, scope: !97) -!103 = !DILocalVariable(name: "dataGoodBuffer", scope: !97, file: !2, line: 53, type: !25) -!104 = !DILocation(line: 53, column: 15, scope: !97) -!105 = !DILocation(line: 53, column: 43, scope: !97) -!106 = !DILocation(line: 55, column: 12, scope: !97) -!107 = !DILocation(line: 55, column: 10, scope: !97) -!108 = !DILocation(line: 56, column: 5, scope: !97) -!109 = !DILocation(line: 56, column: 13, scope: !97) -!110 = !DILocalVariable(name: "source", scope: !111, file: !2, line: 58, type: !57) -!111 = distinct !DILexicalBlock(scope: !97, file: !2, line: 57, column: 5) -!112 = !DILocation(line: 58, column: 17, scope: !111) -!113 = !DILocation(line: 59, column: 17, scope: !111) -!114 = !DILocation(line: 59, column: 9, scope: !111) -!115 = !DILocation(line: 60, column: 9, scope: !111) -!116 = !DILocation(line: 60, column: 23, scope: !111) -!117 = !DILocation(line: 62, column: 16, scope: !111) -!118 = !DILocation(line: 62, column: 22, scope: !111) -!119 = !DILocation(line: 62, column: 9, scope: !111) -!120 = !DILocation(line: 63, column: 24, scope: !111) -!121 = !DILocation(line: 63, column: 9, scope: !111) -!122 = !DILocation(line: 64, column: 24, scope: !111) -!123 = !DILocation(line: 64, column: 9, scope: !111) -!124 = !DILocation(line: 65, column: 20, scope: !111) -!125 = !DILocation(line: 65, column: 9, scope: !111) -!126 = !DILocation(line: 67, column: 1, scope: !97) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_char_alloca_cpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_char_alloca_cpy_01.c.bc deleted file mode 100644 index 0aeaa6ec..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_char_alloca_cpy_01.c.bc +++ /dev/null @@ -1,248 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_char_alloca_cpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_char_alloca_cpy_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__src_char_alloca_cpy_01_bad() #0 !dbg !36 { -entry: - %data = alloca ptr, align 8 - %dataBuffer = alloca ptr, align 8 - %dest = alloca [50 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !40, metadata !DIExpression()), !dbg !41 - call void @llvm.dbg.declare(metadata ptr %dataBuffer, metadata !42, metadata !DIExpression()), !dbg !43 - %0 = alloca i8, i64 100, align 16, !dbg !44 - store ptr %0, ptr %dataBuffer, align 8, !dbg !43 - %1 = load ptr, ptr %dataBuffer, align 8, !dbg !45 - store ptr %1, ptr %data, align 8, !dbg !46 - %2 = load ptr, ptr %data, align 8, !dbg !47 - call void @llvm.memset.p0.i64(ptr align 1 %2, i8 65, i64 99, i1 false), !dbg !48 - %3 = load ptr, ptr %data, align 8, !dbg !49 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 99, !dbg !49 - store i8 0, ptr %arrayidx, align 1, !dbg !50 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !51, metadata !DIExpression()), !dbg !56 - call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 50, i1 false), !dbg !56 - %arraydecay = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !57 - %4 = load ptr, ptr %data, align 8, !dbg !58 - %call = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef %4) #5, !dbg !59 - %arraydecay1 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !60 - %call2 = call i32 (ptr, i32, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay1, i32 noundef 99), !dbg !61 - %5 = load ptr, ptr %data, align 8, !dbg !62 - %call3 = call i32 (ptr, i32, ...) @SAFE_BUFACCESS(ptr noundef %5, i32 noundef 99), !dbg !63 - %6 = load ptr, ptr %data, align 8, !dbg !64 - call void @printLine(ptr noundef %6), !dbg !65 - ret void, !dbg !66 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare i32 @SAFE_BUFACCESS(...) #4 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__src_char_alloca_cpy_01_good() #0 !dbg !67 { -entry: - call void @goodG2B(), !dbg !68 - ret void, !dbg !69 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !70 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !75, metadata !DIExpression()), !dbg !76 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !77, metadata !DIExpression()), !dbg !78 - %call = call i64 @time(ptr noundef null) #5, !dbg !79 - %conv = trunc i64 %call to i32, !dbg !80 - call void @srand(i32 noundef %conv) #5, !dbg !81 - call void @printLine(ptr noundef @.str), !dbg !82 - call void @CWE121_Stack_Based_Buffer_Overflow__src_char_alloca_cpy_01_good(), !dbg !83 - call void @printLine(ptr noundef @.str.1), !dbg !84 - call void @printLine(ptr noundef @.str.2), !dbg !85 - call void @CWE121_Stack_Based_Buffer_Overflow__src_char_alloca_cpy_01_bad(), !dbg !86 - call void @printLine(ptr noundef @.str.3), !dbg !87 - ret i32 0, !dbg !88 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #3 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !89 { -entry: - %data = alloca ptr, align 8 - %dataBuffer = alloca ptr, align 8 - %dest = alloca [50 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !90, metadata !DIExpression()), !dbg !91 - call void @llvm.dbg.declare(metadata ptr %dataBuffer, metadata !92, metadata !DIExpression()), !dbg !93 - %0 = alloca i8, i64 100, align 16, !dbg !94 - store ptr %0, ptr %dataBuffer, align 8, !dbg !93 - %1 = load ptr, ptr %dataBuffer, align 8, !dbg !95 - store ptr %1, ptr %data, align 8, !dbg !96 - %2 = load ptr, ptr %data, align 8, !dbg !97 - call void @llvm.memset.p0.i64(ptr align 1 %2, i8 65, i64 49, i1 false), !dbg !98 - %3 = load ptr, ptr %data, align 8, !dbg !99 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 49, !dbg !99 - store i8 0, ptr %arrayidx, align 1, !dbg !100 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !101, metadata !DIExpression()), !dbg !103 - call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 50, i1 false), !dbg !103 - %arraydecay = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !104 - %4 = load ptr, ptr %data, align 8, !dbg !105 - %call = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef %4) #5, !dbg !106 - %arraydecay1 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !107 - %call2 = call i32 (ptr, i32, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay1, i32 noundef 49), !dbg !108 - %5 = load ptr, ptr %data, align 8, !dbg !109 - %call3 = call i32 (ptr, i32, ...) @SAFE_BUFACCESS(ptr noundef %5, i32 noundef 49), !dbg !110 - %6 = load ptr, ptr %data, align 8, !dbg !111 - call void @printLine(ptr noundef %6), !dbg !112 - ret void, !dbg !113 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!28, !29, !30, !31, !32, !33, !34} -!llvm.ident = !{!35} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 84, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_char_alloca_cpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "6250ce27cfca7df136b644e63083b2d9") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 86, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 89, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 91, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_char_alloca_cpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "6250ce27cfca7df136b644e63083b2d9") -!24 = !{!25, !26} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!26 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!27 = !{!0, !7, !12, !17} -!28 = !{i32 7, !"Dwarf Version", i32 5} -!29 = !{i32 2, !"Debug Info Version", i32 3} -!30 = !{i32 1, !"wchar_size", i32 4} -!31 = !{i32 8, !"PIC Level", i32 2} -!32 = !{i32 7, !"PIE Level", i32 2} -!33 = !{i32 7, !"uwtable", i32 2} -!34 = !{i32 7, !"frame-pointer", i32 2} -!35 = !{!"clang version 16.0.0"} -!36 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__src_char_alloca_cpy_01_bad", scope: !2, file: !2, line: 23, type: !37, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!37 = !DISubroutineType(types: !38) -!38 = !{null} -!39 = !{} -!40 = !DILocalVariable(name: "data", scope: !36, file: !2, line: 25, type: !25) -!41 = !DILocation(line: 25, column: 12, scope: !36) -!42 = !DILocalVariable(name: "dataBuffer", scope: !36, file: !2, line: 26, type: !25) -!43 = !DILocation(line: 26, column: 12, scope: !36) -!44 = !DILocation(line: 26, column: 33, scope: !36) -!45 = !DILocation(line: 27, column: 12, scope: !36) -!46 = !DILocation(line: 27, column: 10, scope: !36) -!47 = !DILocation(line: 29, column: 12, scope: !36) -!48 = !DILocation(line: 29, column: 5, scope: !36) -!49 = !DILocation(line: 30, column: 5, scope: !36) -!50 = !DILocation(line: 30, column: 17, scope: !36) -!51 = !DILocalVariable(name: "dest", scope: !52, file: !2, line: 32, type: !53) -!52 = distinct !DILexicalBlock(scope: !36, file: !2, line: 31, column: 5) -!53 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 400, elements: !54) -!54 = !{!55} -!55 = !DISubrange(count: 50) -!56 = !DILocation(line: 32, column: 14, scope: !52) -!57 = !DILocation(line: 34, column: 16, scope: !52) -!58 = !DILocation(line: 34, column: 22, scope: !52) -!59 = !DILocation(line: 34, column: 9, scope: !52) -!60 = !DILocation(line: 35, column: 26, scope: !52) -!61 = !DILocation(line: 35, column: 9, scope: !52) -!62 = !DILocation(line: 36, column: 24, scope: !52) -!63 = !DILocation(line: 36, column: 9, scope: !52) -!64 = !DILocation(line: 37, column: 19, scope: !52) -!65 = !DILocation(line: 37, column: 9, scope: !52) -!66 = !DILocation(line: 39, column: 1, scope: !36) -!67 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__src_char_alloca_cpy_01_good", scope: !2, file: !2, line: 64, type: !37, scopeLine: 65, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!68 = !DILocation(line: 66, column: 5, scope: !67) -!69 = !DILocation(line: 67, column: 1, scope: !67) -!70 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 79, type: !71, scopeLine: 80, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!71 = !DISubroutineType(types: !72) -!72 = !{!73, !73, !74} -!73 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!74 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64) -!75 = !DILocalVariable(name: "argc", arg: 1, scope: !70, file: !2, line: 79, type: !73) -!76 = !DILocation(line: 79, column: 14, scope: !70) -!77 = !DILocalVariable(name: "argv", arg: 2, scope: !70, file: !2, line: 79, type: !74) -!78 = !DILocation(line: 79, column: 27, scope: !70) -!79 = !DILocation(line: 82, column: 22, scope: !70) -!80 = !DILocation(line: 82, column: 12, scope: !70) -!81 = !DILocation(line: 82, column: 5, scope: !70) -!82 = !DILocation(line: 84, column: 5, scope: !70) -!83 = !DILocation(line: 85, column: 5, scope: !70) -!84 = !DILocation(line: 86, column: 5, scope: !70) -!85 = !DILocation(line: 89, column: 5, scope: !70) -!86 = !DILocation(line: 90, column: 5, scope: !70) -!87 = !DILocation(line: 91, column: 5, scope: !70) -!88 = !DILocation(line: 93, column: 5, scope: !70) -!89 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 46, type: !37, scopeLine: 47, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !39) -!90 = !DILocalVariable(name: "data", scope: !89, file: !2, line: 48, type: !25) -!91 = !DILocation(line: 48, column: 12, scope: !89) -!92 = !DILocalVariable(name: "dataBuffer", scope: !89, file: !2, line: 49, type: !25) -!93 = !DILocation(line: 49, column: 12, scope: !89) -!94 = !DILocation(line: 49, column: 33, scope: !89) -!95 = !DILocation(line: 50, column: 12, scope: !89) -!96 = !DILocation(line: 50, column: 10, scope: !89) -!97 = !DILocation(line: 52, column: 12, scope: !89) -!98 = !DILocation(line: 52, column: 5, scope: !89) -!99 = !DILocation(line: 53, column: 5, scope: !89) -!100 = !DILocation(line: 53, column: 16, scope: !89) -!101 = !DILocalVariable(name: "dest", scope: !102, file: !2, line: 55, type: !53) -!102 = distinct !DILexicalBlock(scope: !89, file: !2, line: 54, column: 5) -!103 = !DILocation(line: 55, column: 14, scope: !102) -!104 = !DILocation(line: 57, column: 16, scope: !102) -!105 = !DILocation(line: 57, column: 22, scope: !102) -!106 = !DILocation(line: 57, column: 9, scope: !102) -!107 = !DILocation(line: 58, column: 24, scope: !102) -!108 = !DILocation(line: 58, column: 9, scope: !102) -!109 = !DILocation(line: 59, column: 24, scope: !102) -!110 = !DILocation(line: 59, column: 9, scope: !102) -!111 = !DILocation(line: 60, column: 19, scope: !102) -!112 = !DILocation(line: 60, column: 9, scope: !102) -!113 = !DILocation(line: 62, column: 1, scope: !89) diff --git a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_wchar_t_declare_cpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_wchar_t_declare_cpy_01.c.bc deleted file mode 100644 index d2550c4f..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_wchar_t_declare_cpy_01.c.bc +++ /dev/null @@ -1,253 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_wchar_t_declare_cpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_wchar_t_declare_cpy_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__src_wchar_t_declare_cpy_01_bad() #0 !dbg !35 { -entry: - %data = alloca ptr, align 8 - %dataBuffer = alloca [100 x i32], align 16 - %dest = alloca [50 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !39, metadata !DIExpression()), !dbg !44 - call void @llvm.dbg.declare(metadata ptr %dataBuffer, metadata !45, metadata !DIExpression()), !dbg !49 - %arraydecay = getelementptr inbounds [100 x i32], ptr %dataBuffer, i64 0, i64 0, !dbg !50 - store ptr %arraydecay, ptr %data, align 8, !dbg !51 - %0 = load ptr, ptr %data, align 8, !dbg !52 - %call = call ptr @wmemset(ptr noundef %0, i32 noundef 65, i64 noundef 99) #5, !dbg !53 - %1 = load ptr, ptr %data, align 8, !dbg !54 - %arrayidx = getelementptr inbounds i32, ptr %1, i64 99, !dbg !54 - store i32 0, ptr %arrayidx, align 4, !dbg !55 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !56, metadata !DIExpression()), !dbg !61 - call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 200, i1 false), !dbg !61 - %arraydecay1 = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 0, !dbg !62 - %2 = load ptr, ptr %data, align 8, !dbg !63 - %call2 = call ptr @wcscpy(ptr noundef %arraydecay1, ptr noundef %2) #5, !dbg !64 - %arraydecay3 = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 0, !dbg !65 - %call4 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay3, i64 noundef 399), !dbg !66 - %3 = load ptr, ptr %data, align 8, !dbg !67 - %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %3, i64 noundef 399), !dbg !68 - %4 = load ptr, ptr %data, align 8, !dbg !69 - call void @printWLine(ptr noundef %4), !dbg !70 - ret void, !dbg !71 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #2 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3 - -; Function Attrs: nounwind -declare ptr @wcscpy(ptr noundef, ptr noundef) #2 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare i32 @SAFE_BUFACCESS(...) #4 - -declare void @printWLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE121_Stack_Based_Buffer_Overflow__src_wchar_t_declare_cpy_01_good() #0 !dbg !72 { -entry: - call void @goodG2B(), !dbg !73 - ret void, !dbg !74 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !75 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !80, metadata !DIExpression()), !dbg !81 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !82, metadata !DIExpression()), !dbg !83 - %call = call i64 @time(ptr noundef null) #5, !dbg !84 - %conv = trunc i64 %call to i32, !dbg !85 - call void @srand(i32 noundef %conv) #5, !dbg !86 - call void @printLine(ptr noundef @.str), !dbg !87 - call void @CWE121_Stack_Based_Buffer_Overflow__src_wchar_t_declare_cpy_01_good(), !dbg !88 - call void @printLine(ptr noundef @.str.1), !dbg !89 - call void @printLine(ptr noundef @.str.2), !dbg !90 - call void @CWE121_Stack_Based_Buffer_Overflow__src_wchar_t_declare_cpy_01_bad(), !dbg !91 - call void @printLine(ptr noundef @.str.3), !dbg !92 - ret i32 0, !dbg !93 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !94 { -entry: - %data = alloca ptr, align 8 - %dataBuffer = alloca [100 x i32], align 16 - %dest = alloca [50 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !95, metadata !DIExpression()), !dbg !96 - call void @llvm.dbg.declare(metadata ptr %dataBuffer, metadata !97, metadata !DIExpression()), !dbg !98 - %arraydecay = getelementptr inbounds [100 x i32], ptr %dataBuffer, i64 0, i64 0, !dbg !99 - store ptr %arraydecay, ptr %data, align 8, !dbg !100 - %0 = load ptr, ptr %data, align 8, !dbg !101 - %call = call ptr @wmemset(ptr noundef %0, i32 noundef 65, i64 noundef 49) #5, !dbg !102 - %1 = load ptr, ptr %data, align 8, !dbg !103 - %arrayidx = getelementptr inbounds i32, ptr %1, i64 49, !dbg !103 - store i32 0, ptr %arrayidx, align 4, !dbg !104 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !105, metadata !DIExpression()), !dbg !107 - call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 200, i1 false), !dbg !107 - %arraydecay1 = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 0, !dbg !108 - %2 = load ptr, ptr %data, align 8, !dbg !109 - %call2 = call ptr @wcscpy(ptr noundef %arraydecay1, ptr noundef %2) #5, !dbg !110 - %arraydecay3 = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 0, !dbg !111 - %call4 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay3, i64 noundef 199), !dbg !112 - %3 = load ptr, ptr %data, align 8, !dbg !113 - %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %3, i64 noundef 199), !dbg !114 - %4 = load ptr, ptr %data, align 8, !dbg !115 - call void @printWLine(ptr noundef %4), !dbg !116 - ret void, !dbg !117 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} -!llvm.ident = !{!34} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 84, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_wchar_t_declare_cpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3ea4c0d9c702304b61cc4992203b08df") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 86, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 89, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 91, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE121_Stack_Based_Buffer_Overflow__src_wchar_t_declare_cpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "3ea4c0d9c702304b61cc4992203b08df") -!24 = !{!25} -!25 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!26 = !{!0, !7, !12, !17} -!27 = !{i32 7, !"Dwarf Version", i32 5} -!28 = !{i32 2, !"Debug Info Version", i32 3} -!29 = !{i32 1, !"wchar_size", i32 4} -!30 = !{i32 8, !"PIC Level", i32 2} -!31 = !{i32 7, !"PIE Level", i32 2} -!32 = !{i32 7, !"uwtable", i32 2} -!33 = !{i32 7, !"frame-pointer", i32 2} -!34 = !{!"clang version 16.0.0"} -!35 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__src_wchar_t_declare_cpy_01_bad", scope: !2, file: !2, line: 23, type: !36, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!36 = !DISubroutineType(types: !37) -!37 = !{null} -!38 = !{} -!39 = !DILocalVariable(name: "data", scope: !35, file: !2, line: 25, type: !40) -!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !41, size: 64) -!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !42, line: 74, baseType: !43) -!42 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!43 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!44 = !DILocation(line: 25, column: 15, scope: !35) -!45 = !DILocalVariable(name: "dataBuffer", scope: !35, file: !2, line: 26, type: !46) -!46 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 3200, elements: !47) -!47 = !{!48} -!48 = !DISubrange(count: 100) -!49 = !DILocation(line: 26, column: 13, scope: !35) -!50 = !DILocation(line: 27, column: 12, scope: !35) -!51 = !DILocation(line: 27, column: 10, scope: !35) -!52 = !DILocation(line: 29, column: 13, scope: !35) -!53 = !DILocation(line: 29, column: 5, scope: !35) -!54 = !DILocation(line: 30, column: 5, scope: !35) -!55 = !DILocation(line: 30, column: 17, scope: !35) -!56 = !DILocalVariable(name: "dest", scope: !57, file: !2, line: 32, type: !58) -!57 = distinct !DILexicalBlock(scope: !35, file: !2, line: 31, column: 5) -!58 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 1600, elements: !59) -!59 = !{!60} -!60 = !DISubrange(count: 50) -!61 = !DILocation(line: 32, column: 17, scope: !57) -!62 = !DILocation(line: 34, column: 16, scope: !57) -!63 = !DILocation(line: 34, column: 22, scope: !57) -!64 = !DILocation(line: 34, column: 9, scope: !57) -!65 = !DILocation(line: 35, column: 26, scope: !57) -!66 = !DILocation(line: 35, column: 9, scope: !57) -!67 = !DILocation(line: 36, column: 24, scope: !57) -!68 = !DILocation(line: 36, column: 9, scope: !57) -!69 = !DILocation(line: 37, column: 20, scope: !57) -!70 = !DILocation(line: 37, column: 9, scope: !57) -!71 = !DILocation(line: 39, column: 1, scope: !35) -!72 = distinct !DISubprogram(name: "CWE121_Stack_Based_Buffer_Overflow__src_wchar_t_declare_cpy_01_good", scope: !2, file: !2, line: 64, type: !36, scopeLine: 65, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!73 = !DILocation(line: 66, column: 5, scope: !72) -!74 = !DILocation(line: 67, column: 1, scope: !72) -!75 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 79, type: !76, scopeLine: 80, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!76 = !DISubroutineType(types: !77) -!77 = !{!43, !43, !78} -!78 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !79, size: 64) -!79 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!80 = !DILocalVariable(name: "argc", arg: 1, scope: !75, file: !2, line: 79, type: !43) -!81 = !DILocation(line: 79, column: 14, scope: !75) -!82 = !DILocalVariable(name: "argv", arg: 2, scope: !75, file: !2, line: 79, type: !78) -!83 = !DILocation(line: 79, column: 27, scope: !75) -!84 = !DILocation(line: 82, column: 22, scope: !75) -!85 = !DILocation(line: 82, column: 12, scope: !75) -!86 = !DILocation(line: 82, column: 5, scope: !75) -!87 = !DILocation(line: 84, column: 5, scope: !75) -!88 = !DILocation(line: 85, column: 5, scope: !75) -!89 = !DILocation(line: 86, column: 5, scope: !75) -!90 = !DILocation(line: 89, column: 5, scope: !75) -!91 = !DILocation(line: 90, column: 5, scope: !75) -!92 = !DILocation(line: 91, column: 5, scope: !75) -!93 = !DILocation(line: 93, column: 5, scope: !75) -!94 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 46, type: !36, scopeLine: 47, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) -!95 = !DILocalVariable(name: "data", scope: !94, file: !2, line: 48, type: !40) -!96 = !DILocation(line: 48, column: 15, scope: !94) -!97 = !DILocalVariable(name: "dataBuffer", scope: !94, file: !2, line: 49, type: !46) -!98 = !DILocation(line: 49, column: 13, scope: !94) -!99 = !DILocation(line: 50, column: 12, scope: !94) -!100 = !DILocation(line: 50, column: 10, scope: !94) -!101 = !DILocation(line: 52, column: 13, scope: !94) -!102 = !DILocation(line: 52, column: 5, scope: !94) -!103 = !DILocation(line: 53, column: 5, scope: !94) -!104 = !DILocation(line: 53, column: 16, scope: !94) -!105 = !DILocalVariable(name: "dest", scope: !106, file: !2, line: 55, type: !58) -!106 = distinct !DILexicalBlock(scope: !94, file: !2, line: 54, column: 5) -!107 = !DILocation(line: 55, column: 17, scope: !106) -!108 = !DILocation(line: 57, column: 16, scope: !106) -!109 = !DILocation(line: 57, column: 22, scope: !106) -!110 = !DILocation(line: 57, column: 9, scope: !106) -!111 = !DILocation(line: 58, column: 24, scope: !106) -!112 = !DILocation(line: 58, column: 9, scope: !106) -!113 = !DILocation(line: 59, column: 24, scope: !106) -!114 = !DILocation(line: 59, column: 9, scope: !106) -!115 = !DILocation(line: 60, column: 20, scope: !106) -!116 = !DILocation(line: 60, column: 9, scope: !106) -!117 = !DILocation(line: 62, column: 1, scope: !94) diff --git a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01.c.bc deleted file mode 100644 index 92942809..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01.c.bc +++ /dev/null @@ -1,366 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01_bad() #0 !dbg !38 { -entry: - %data = alloca ptr, align 8 - %source = alloca [10 x i32], align 16 - %i = alloca i64, align 8 - call void @llvm.dbg.declare(metadata ptr %data, metadata !42, metadata !DIExpression()), !dbg !43 - store ptr null, ptr %data, align 8, !dbg !44 - %call = call noalias ptr @malloc(i64 noundef 10) #7, !dbg !45 - store ptr %call, ptr %data, align 8, !dbg !46 - %0 = load ptr, ptr %data, align 8, !dbg !47 - %cmp = icmp eq ptr %0, null, !dbg !49 - br i1 %cmp, label %if.then, label %if.end, !dbg !50 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #8, !dbg !51 - unreachable, !dbg !51 - -if.end: ; preds = %entry - call void @llvm.dbg.declare(metadata ptr %source, metadata !53, metadata !DIExpression()), !dbg !58 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 40, i1 false), !dbg !58 - call void @llvm.dbg.declare(metadata ptr %i, metadata !59, metadata !DIExpression()), !dbg !63 - store i64 0, ptr %i, align 8, !dbg !64 - br label %for.cond, !dbg !66 - -for.cond: ; preds = %for.inc, %if.end - %1 = load i64, ptr %i, align 8, !dbg !67 - %cmp1 = icmp ult i64 %1, 10, !dbg !69 - br i1 %cmp1, label %for.body, label %for.end, !dbg !70 - -for.body: ; preds = %for.cond - %2 = load i64, ptr %i, align 8, !dbg !71 - %arrayidx = getelementptr inbounds [10 x i32], ptr %source, i64 0, i64 %2, !dbg !73 - %3 = load i32, ptr %arrayidx, align 4, !dbg !73 - %4 = load ptr, ptr %data, align 8, !dbg !74 - %5 = load i64, ptr %i, align 8, !dbg !75 - %arrayidx2 = getelementptr inbounds i32, ptr %4, i64 %5, !dbg !74 - store i32 %3, ptr %arrayidx2, align 4, !dbg !76 - br label %for.inc, !dbg !77 - -for.inc: ; preds = %for.body - %6 = load i64, ptr %i, align 8, !dbg !78 - %inc = add i64 %6, 1, !dbg !78 - store i64 %inc, ptr %i, align 8, !dbg !78 - br label %for.cond, !dbg !79, !llvm.loop !80 - -for.end: ; preds = %for.cond - %7 = load ptr, ptr %data, align 8, !dbg !83 - %call3 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %7, i64 noundef 39), !dbg !84 - %8 = load ptr, ptr %data, align 8, !dbg !85 - %arrayidx4 = getelementptr inbounds i32, ptr %8, i64 0, !dbg !85 - %9 = load i32, ptr %arrayidx4, align 4, !dbg !85 - call void @printIntLine(i32 noundef %9), !dbg !86 - %10 = load ptr, ptr %data, align 8, !dbg !87 - call void @free(ptr noundef %10) #9, !dbg !88 - ret void, !dbg !89 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4 - -declare i32 @UNSAFE_BUFACCESS(...) #5 - -declare void @printIntLine(i32 noundef) #5 - -; Function Attrs: nounwind -declare void @free(ptr noundef) #6 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01_good() #0 !dbg !90 { -entry: - call void @goodG2B(), !dbg !91 - ret void, !dbg !92 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !93 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !98, metadata !DIExpression()), !dbg !99 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !100, metadata !DIExpression()), !dbg !101 - %call = call i64 @time(ptr noundef null) #9, !dbg !102 - %conv = trunc i64 %call to i32, !dbg !103 - call void @srand(i32 noundef %conv) #9, !dbg !104 - call void @printLine(ptr noundef @.str), !dbg !105 - call void @CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01_good(), !dbg !106 - call void @printLine(ptr noundef @.str.1), !dbg !107 - call void @printLine(ptr noundef @.str.2), !dbg !108 - call void @CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01_bad(), !dbg !109 - call void @printLine(ptr noundef @.str.3), !dbg !110 - ret i32 0, !dbg !111 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #6 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #6 - -declare void @printLine(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !112 { -entry: - %data = alloca ptr, align 8 - %source = alloca [10 x i32], align 16 - %i = alloca i64, align 8 - call void @llvm.dbg.declare(metadata ptr %data, metadata !113, metadata !DIExpression()), !dbg !114 - store ptr null, ptr %data, align 8, !dbg !115 - %call = call noalias ptr @malloc(i64 noundef 40) #7, !dbg !116 - store ptr %call, ptr %data, align 8, !dbg !117 - %0 = load ptr, ptr %data, align 8, !dbg !118 - %cmp = icmp eq ptr %0, null, !dbg !120 - br i1 %cmp, label %if.then, label %if.end, !dbg !121 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #8, !dbg !122 - unreachable, !dbg !122 - -if.end: ; preds = %entry - call void @llvm.dbg.declare(metadata ptr %source, metadata !124, metadata !DIExpression()), !dbg !126 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 40, i1 false), !dbg !126 - call void @llvm.dbg.declare(metadata ptr %i, metadata !127, metadata !DIExpression()), !dbg !128 - store i64 0, ptr %i, align 8, !dbg !129 - br label %for.cond, !dbg !131 - -for.cond: ; preds = %for.inc, %if.end - %1 = load i64, ptr %i, align 8, !dbg !132 - %cmp1 = icmp ult i64 %1, 10, !dbg !134 - br i1 %cmp1, label %for.body, label %for.end, !dbg !135 - -for.body: ; preds = %for.cond - %2 = load i64, ptr %i, align 8, !dbg !136 - %arrayidx = getelementptr inbounds [10 x i32], ptr %source, i64 0, i64 %2, !dbg !138 - %3 = load i32, ptr %arrayidx, align 4, !dbg !138 - %4 = load ptr, ptr %data, align 8, !dbg !139 - %5 = load i64, ptr %i, align 8, !dbg !140 - %arrayidx2 = getelementptr inbounds i32, ptr %4, i64 %5, !dbg !139 - store i32 %3, ptr %arrayidx2, align 4, !dbg !141 - %6 = load ptr, ptr %data, align 8, !dbg !142 - %7 = load i64, ptr %i, align 8, !dbg !143 - %add = add i64 %7, 1, !dbg !144 - %mul = mul i64 %add, 4, !dbg !145 - %sub = sub i64 %mul, 1, !dbg !146 - %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %6, i64 noundef %sub), !dbg !147 - br label %for.inc, !dbg !148 - -for.inc: ; preds = %for.body - %8 = load i64, ptr %i, align 8, !dbg !149 - %inc = add i64 %8, 1, !dbg !149 - store i64 %inc, ptr %i, align 8, !dbg !149 - br label %for.cond, !dbg !150, !llvm.loop !151 - -for.end: ; preds = %for.cond - %9 = load ptr, ptr %data, align 8, !dbg !153 - %call4 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %9, i64 noundef 39), !dbg !154 - %10 = load ptr, ptr %data, align 8, !dbg !155 - %arrayidx5 = getelementptr inbounds i32, ptr %10, i64 0, !dbg !155 - %11 = load i32, ptr %arrayidx5, align 4, !dbg !155 - call void @printIntLine(i32 noundef %11), !dbg !156 - %12 = load ptr, ptr %data, align 8, !dbg !157 - call void @free(ptr noundef %12) #9, !dbg !158 - ret void, !dbg !159 -} - -declare i32 @SAFE_BUFACCESS(...) #5 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #5 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind allocsize(0) } -attributes #8 = { noreturn nounwind } -attributes #9 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!30, !31, !32, !33, !34, !35, !36} -!llvm.ident = !{!37} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 89, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "356d824faf5cff00bdc0db7b9a4ceaab") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 91, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 94, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 96, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !29, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "356d824faf5cff00bdc0db7b9a4ceaab") -!24 = !{!25, !27, !28} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) -!26 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!27 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!28 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!29 = !{!0, !7, !12, !17} -!30 = !{i32 7, !"Dwarf Version", i32 5} -!31 = !{i32 2, !"Debug Info Version", i32 3} -!32 = !{i32 1, !"wchar_size", i32 4} -!33 = !{i32 8, !"PIC Level", i32 2} -!34 = !{i32 7, !"PIE Level", i32 2} -!35 = !{i32 7, !"uwtable", i32 2} -!36 = !{i32 7, !"frame-pointer", i32 2} -!37 = !{!"clang version 16.0.0"} -!38 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01_bad", scope: !2, file: !2, line: 21, type: !39, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !41) -!39 = !DISubroutineType(types: !40) -!40 = !{null} -!41 = !{} -!42 = !DILocalVariable(name: "data", scope: !38, file: !2, line: 23, type: !25) -!43 = !DILocation(line: 23, column: 11, scope: !38) -!44 = !DILocation(line: 24, column: 10, scope: !38) -!45 = !DILocation(line: 26, column: 19, scope: !38) -!46 = !DILocation(line: 26, column: 10, scope: !38) -!47 = !DILocation(line: 27, column: 9, scope: !48) -!48 = distinct !DILexicalBlock(scope: !38, file: !2, line: 27, column: 9) -!49 = !DILocation(line: 27, column: 14, scope: !48) -!50 = !DILocation(line: 27, column: 9, scope: !38) -!51 = !DILocation(line: 27, column: 24, scope: !52) -!52 = distinct !DILexicalBlock(scope: !48, file: !2, line: 27, column: 23) -!53 = !DILocalVariable(name: "source", scope: !54, file: !2, line: 29, type: !55) -!54 = distinct !DILexicalBlock(scope: !38, file: !2, line: 28, column: 5) -!55 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 320, elements: !56) -!56 = !{!57} -!57 = !DISubrange(count: 10) -!58 = !DILocation(line: 29, column: 13, scope: !54) -!59 = !DILocalVariable(name: "i", scope: !54, file: !2, line: 30, type: !60) -!60 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !61, line: 46, baseType: !62) -!61 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!62 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) -!63 = !DILocation(line: 30, column: 16, scope: !54) -!64 = !DILocation(line: 32, column: 16, scope: !65) -!65 = distinct !DILexicalBlock(scope: !54, file: !2, line: 32, column: 9) -!66 = !DILocation(line: 32, column: 14, scope: !65) -!67 = !DILocation(line: 32, column: 21, scope: !68) -!68 = distinct !DILexicalBlock(scope: !65, file: !2, line: 32, column: 9) -!69 = !DILocation(line: 32, column: 23, scope: !68) -!70 = !DILocation(line: 32, column: 9, scope: !65) -!71 = !DILocation(line: 34, column: 30, scope: !72) -!72 = distinct !DILexicalBlock(scope: !68, file: !2, line: 33, column: 9) -!73 = !DILocation(line: 34, column: 23, scope: !72) -!74 = !DILocation(line: 34, column: 13, scope: !72) -!75 = !DILocation(line: 34, column: 18, scope: !72) -!76 = !DILocation(line: 34, column: 21, scope: !72) -!77 = !DILocation(line: 35, column: 9, scope: !72) -!78 = !DILocation(line: 32, column: 30, scope: !68) -!79 = !DILocation(line: 32, column: 9, scope: !68) -!80 = distinct !{!80, !70, !81, !82} -!81 = !DILocation(line: 35, column: 9, scope: !65) -!82 = !{!"llvm.loop.mustprogress"} -!83 = !DILocation(line: 36, column: 26, scope: !54) -!84 = !DILocation(line: 36, column: 9, scope: !54) -!85 = !DILocation(line: 37, column: 22, scope: !54) -!86 = !DILocation(line: 37, column: 9, scope: !54) -!87 = !DILocation(line: 38, column: 14, scope: !54) -!88 = !DILocation(line: 38, column: 9, scope: !54) -!89 = !DILocation(line: 40, column: 1, scope: !38) -!90 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__CWE131_loop_01_good", scope: !2, file: !2, line: 69, type: !39, scopeLine: 70, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !41) -!91 = !DILocation(line: 71, column: 5, scope: !90) -!92 = !DILocation(line: 72, column: 1, scope: !90) -!93 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 84, type: !94, scopeLine: 85, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !41) -!94 = !DISubroutineType(types: !95) -!95 = !{!26, !26, !96} -!96 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !97, size: 64) -!97 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!98 = !DILocalVariable(name: "argc", arg: 1, scope: !93, file: !2, line: 84, type: !26) -!99 = !DILocation(line: 84, column: 14, scope: !93) -!100 = !DILocalVariable(name: "argv", arg: 2, scope: !93, file: !2, line: 84, type: !96) -!101 = !DILocation(line: 84, column: 27, scope: !93) -!102 = !DILocation(line: 87, column: 22, scope: !93) -!103 = !DILocation(line: 87, column: 12, scope: !93) -!104 = !DILocation(line: 87, column: 5, scope: !93) -!105 = !DILocation(line: 89, column: 5, scope: !93) -!106 = !DILocation(line: 90, column: 5, scope: !93) -!107 = !DILocation(line: 91, column: 5, scope: !93) -!108 = !DILocation(line: 94, column: 5, scope: !93) -!109 = !DILocation(line: 95, column: 5, scope: !93) -!110 = !DILocation(line: 96, column: 5, scope: !93) -!111 = !DILocation(line: 98, column: 5, scope: !93) -!112 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 47, type: !39, scopeLine: 48, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !41) -!113 = !DILocalVariable(name: "data", scope: !112, file: !2, line: 49, type: !25) -!114 = !DILocation(line: 49, column: 11, scope: !112) -!115 = !DILocation(line: 50, column: 10, scope: !112) -!116 = !DILocation(line: 52, column: 19, scope: !112) -!117 = !DILocation(line: 52, column: 10, scope: !112) -!118 = !DILocation(line: 53, column: 9, scope: !119) -!119 = distinct !DILexicalBlock(scope: !112, file: !2, line: 53, column: 9) -!120 = !DILocation(line: 53, column: 14, scope: !119) -!121 = !DILocation(line: 53, column: 9, scope: !112) -!122 = !DILocation(line: 53, column: 24, scope: !123) -!123 = distinct !DILexicalBlock(scope: !119, file: !2, line: 53, column: 23) -!124 = !DILocalVariable(name: "source", scope: !125, file: !2, line: 55, type: !55) -!125 = distinct !DILexicalBlock(scope: !112, file: !2, line: 54, column: 5) -!126 = !DILocation(line: 55, column: 13, scope: !125) -!127 = !DILocalVariable(name: "i", scope: !125, file: !2, line: 56, type: !60) -!128 = !DILocation(line: 56, column: 16, scope: !125) -!129 = !DILocation(line: 58, column: 16, scope: !130) -!130 = distinct !DILexicalBlock(scope: !125, file: !2, line: 58, column: 9) -!131 = !DILocation(line: 58, column: 14, scope: !130) -!132 = !DILocation(line: 58, column: 21, scope: !133) -!133 = distinct !DILexicalBlock(scope: !130, file: !2, line: 58, column: 9) -!134 = !DILocation(line: 58, column: 23, scope: !133) -!135 = !DILocation(line: 58, column: 9, scope: !130) -!136 = !DILocation(line: 60, column: 30, scope: !137) -!137 = distinct !DILexicalBlock(scope: !133, file: !2, line: 59, column: 9) -!138 = !DILocation(line: 60, column: 23, scope: !137) -!139 = !DILocation(line: 60, column: 13, scope: !137) -!140 = !DILocation(line: 60, column: 18, scope: !137) -!141 = !DILocation(line: 60, column: 21, scope: !137) -!142 = !DILocation(line: 61, column: 28, scope: !137) -!143 = !DILocation(line: 61, column: 35, scope: !137) -!144 = !DILocation(line: 61, column: 37, scope: !137) -!145 = !DILocation(line: 61, column: 42, scope: !137) -!146 = !DILocation(line: 61, column: 56, scope: !137) -!147 = !DILocation(line: 61, column: 13, scope: !137) -!148 = !DILocation(line: 62, column: 9, scope: !137) -!149 = !DILocation(line: 58, column: 30, scope: !133) -!150 = !DILocation(line: 58, column: 9, scope: !133) -!151 = distinct !{!151, !135, !152, !82} -!152 = !DILocation(line: 62, column: 9, scope: !130) -!153 = !DILocation(line: 63, column: 24, scope: !125) -!154 = !DILocation(line: 63, column: 9, scope: !125) -!155 = !DILocation(line: 64, column: 22, scope: !125) -!156 = !DILocation(line: 64, column: 9, scope: !125) -!157 = !DILocation(line: 65, column: 14, scope: !125) -!158 = !DILocation(line: 65, column: 9, scope: !125) -!159 = !DILocation(line: 67, column: 1, scope: !112) diff --git a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01.c.bc deleted file mode 100644 index 899031e4..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01.c.bc +++ /dev/null @@ -1,278 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01_bad() #0 !dbg !38 { -entry: - %data = alloca ptr, align 8 - %source = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !42, metadata !DIExpression()), !dbg !43 - store ptr null, ptr %data, align 8, !dbg !44 - %call = call noalias ptr @malloc(i64 noundef 10) #8, !dbg !45 - store ptr %call, ptr %data, align 8, !dbg !46 - %0 = load ptr, ptr %data, align 8, !dbg !47 - %cmp = icmp eq ptr %0, null, !dbg !49 - br i1 %cmp, label %if.then, label %if.end, !dbg !50 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !51 - unreachable, !dbg !51 - -if.end: ; preds = %entry - call void @llvm.dbg.declare(metadata ptr %source, metadata !53, metadata !DIExpression()), !dbg !58 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 40, i1 false), !dbg !58 - %1 = load ptr, ptr %data, align 8, !dbg !59 - %arraydecay = getelementptr inbounds [10 x i32], ptr %source, i64 0, i64 0, !dbg !60 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1, ptr align 16 %arraydecay, i64 40, i1 false), !dbg !60 - %2 = load ptr, ptr %data, align 8, !dbg !61 - %call1 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %2, i64 noundef 39), !dbg !62 - %arraydecay2 = getelementptr inbounds [10 x i32], ptr %source, i64 0, i64 0, !dbg !63 - %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 39), !dbg !64 - %3 = load ptr, ptr %data, align 8, !dbg !65 - %arrayidx = getelementptr inbounds i32, ptr %3, i64 0, !dbg !65 - %4 = load i32, ptr %arrayidx, align 4, !dbg !65 - call void @printIntLine(i32 noundef %4), !dbg !66 - %5 = load ptr, ptr %data, align 8, !dbg !67 - call void @free(ptr noundef %5) #10, !dbg !68 - ret void, !dbg !69 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #5 - -declare i32 @UNSAFE_BUFACCESS(...) #6 - -declare i32 @SAFE_BUFACCESS(...) #6 - -declare void @printIntLine(i32 noundef) #6 - -; Function Attrs: nounwind -declare void @free(ptr noundef) #7 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01_good() #0 !dbg !70 { -entry: - call void @goodG2B(), !dbg !71 - ret void, !dbg !72 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !73 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !78, metadata !DIExpression()), !dbg !79 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !80, metadata !DIExpression()), !dbg !81 - %call = call i64 @time(ptr noundef null) #10, !dbg !82 - %conv = trunc i64 %call to i32, !dbg !83 - call void @srand(i32 noundef %conv) #10, !dbg !84 - call void @printLine(ptr noundef @.str), !dbg !85 - call void @CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01_good(), !dbg !86 - call void @printLine(ptr noundef @.str.1), !dbg !87 - call void @printLine(ptr noundef @.str.2), !dbg !88 - call void @CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01_bad(), !dbg !89 - call void @printLine(ptr noundef @.str.3), !dbg !90 - ret i32 0, !dbg !91 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #7 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #7 - -declare void @printLine(ptr noundef) #6 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !92 { -entry: - %data = alloca ptr, align 8 - %source = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !93, metadata !DIExpression()), !dbg !94 - store ptr null, ptr %data, align 8, !dbg !95 - %call = call noalias ptr @malloc(i64 noundef 40) #8, !dbg !96 - store ptr %call, ptr %data, align 8, !dbg !97 - %0 = load ptr, ptr %data, align 8, !dbg !98 - %cmp = icmp eq ptr %0, null, !dbg !100 - br i1 %cmp, label %if.then, label %if.end, !dbg !101 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !102 - unreachable, !dbg !102 - -if.end: ; preds = %entry - call void @llvm.dbg.declare(metadata ptr %source, metadata !104, metadata !DIExpression()), !dbg !106 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 40, i1 false), !dbg !106 - %1 = load ptr, ptr %data, align 8, !dbg !107 - %arraydecay = getelementptr inbounds [10 x i32], ptr %source, i64 0, i64 0, !dbg !108 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1, ptr align 16 %arraydecay, i64 40, i1 false), !dbg !108 - %2 = load ptr, ptr %data, align 8, !dbg !109 - %call1 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %2, i64 noundef 39), !dbg !110 - %arraydecay2 = getelementptr inbounds [10 x i32], ptr %source, i64 0, i64 0, !dbg !111 - %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 39), !dbg !112 - %3 = load ptr, ptr %data, align 8, !dbg !113 - %arrayidx = getelementptr inbounds i32, ptr %3, i64 0, !dbg !113 - %4 = load i32, ptr %arrayidx, align 4, !dbg !113 - call void @printIntLine(i32 noundef %4), !dbg !114 - %5 = load ptr, ptr %data, align 8, !dbg !115 - call void @free(ptr noundef %5) #10, !dbg !116 - ret void, !dbg !117 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #6 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nounwind allocsize(0) } -attributes #9 = { noreturn nounwind } -attributes #10 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!30, !31, !32, !33, !34, !35, !36} -!llvm.ident = !{!37} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 84, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f207e002d50758b756ee19106bbecc1a") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 86, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 89, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 91, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !29, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "f207e002d50758b756ee19106bbecc1a") -!24 = !{!25, !27, !28} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) -!26 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!27 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!28 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!29 = !{!0, !7, !12, !17} -!30 = !{i32 7, !"Dwarf Version", i32 5} -!31 = !{i32 2, !"Debug Info Version", i32 3} -!32 = !{i32 1, !"wchar_size", i32 4} -!33 = !{i32 8, !"PIC Level", i32 2} -!34 = !{i32 7, !"PIE Level", i32 2} -!35 = !{i32 7, !"uwtable", i32 2} -!36 = !{i32 7, !"frame-pointer", i32 2} -!37 = !{!"clang version 16.0.0"} -!38 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01_bad", scope: !2, file: !2, line: 21, type: !39, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !41) -!39 = !DISubroutineType(types: !40) -!40 = !{null} -!41 = !{} -!42 = !DILocalVariable(name: "data", scope: !38, file: !2, line: 23, type: !25) -!43 = !DILocation(line: 23, column: 11, scope: !38) -!44 = !DILocation(line: 24, column: 10, scope: !38) -!45 = !DILocation(line: 26, column: 19, scope: !38) -!46 = !DILocation(line: 26, column: 10, scope: !38) -!47 = !DILocation(line: 27, column: 9, scope: !48) -!48 = distinct !DILexicalBlock(scope: !38, file: !2, line: 27, column: 9) -!49 = !DILocation(line: 27, column: 14, scope: !48) -!50 = !DILocation(line: 27, column: 9, scope: !38) -!51 = !DILocation(line: 27, column: 24, scope: !52) -!52 = distinct !DILexicalBlock(scope: !48, file: !2, line: 27, column: 23) -!53 = !DILocalVariable(name: "source", scope: !54, file: !2, line: 29, type: !55) -!54 = distinct !DILexicalBlock(scope: !38, file: !2, line: 28, column: 5) -!55 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 320, elements: !56) -!56 = !{!57} -!57 = !DISubrange(count: 10) -!58 = !DILocation(line: 29, column: 13, scope: !54) -!59 = !DILocation(line: 31, column: 16, scope: !54) -!60 = !DILocation(line: 31, column: 9, scope: !54) -!61 = !DILocation(line: 32, column: 26, scope: !54) -!62 = !DILocation(line: 32, column: 9, scope: !54) -!63 = !DILocation(line: 33, column: 24, scope: !54) -!64 = !DILocation(line: 33, column: 9, scope: !54) -!65 = !DILocation(line: 35, column: 22, scope: !54) -!66 = !DILocation(line: 35, column: 9, scope: !54) -!67 = !DILocation(line: 36, column: 14, scope: !54) -!68 = !DILocation(line: 36, column: 9, scope: !54) -!69 = !DILocation(line: 38, column: 1, scope: !38) -!70 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__CWE131_memcpy_01_good", scope: !2, file: !2, line: 64, type: !39, scopeLine: 65, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !41) -!71 = !DILocation(line: 66, column: 5, scope: !70) -!72 = !DILocation(line: 67, column: 1, scope: !70) -!73 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 79, type: !74, scopeLine: 80, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !41) -!74 = !DISubroutineType(types: !75) -!75 = !{!26, !26, !76} -!76 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !77, size: 64) -!77 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!78 = !DILocalVariable(name: "argc", arg: 1, scope: !73, file: !2, line: 79, type: !26) -!79 = !DILocation(line: 79, column: 14, scope: !73) -!80 = !DILocalVariable(name: "argv", arg: 2, scope: !73, file: !2, line: 79, type: !76) -!81 = !DILocation(line: 79, column: 27, scope: !73) -!82 = !DILocation(line: 82, column: 22, scope: !73) -!83 = !DILocation(line: 82, column: 12, scope: !73) -!84 = !DILocation(line: 82, column: 5, scope: !73) -!85 = !DILocation(line: 84, column: 5, scope: !73) -!86 = !DILocation(line: 85, column: 5, scope: !73) -!87 = !DILocation(line: 86, column: 5, scope: !73) -!88 = !DILocation(line: 89, column: 5, scope: !73) -!89 = !DILocation(line: 90, column: 5, scope: !73) -!90 = !DILocation(line: 91, column: 5, scope: !73) -!91 = !DILocation(line: 93, column: 5, scope: !73) -!92 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 45, type: !39, scopeLine: 46, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !41) -!93 = !DILocalVariable(name: "data", scope: !92, file: !2, line: 47, type: !25) -!94 = !DILocation(line: 47, column: 11, scope: !92) -!95 = !DILocation(line: 48, column: 10, scope: !92) -!96 = !DILocation(line: 50, column: 19, scope: !92) -!97 = !DILocation(line: 50, column: 10, scope: !92) -!98 = !DILocation(line: 51, column: 9, scope: !99) -!99 = distinct !DILexicalBlock(scope: !92, file: !2, line: 51, column: 9) -!100 = !DILocation(line: 51, column: 14, scope: !99) -!101 = !DILocation(line: 51, column: 9, scope: !92) -!102 = !DILocation(line: 51, column: 24, scope: !103) -!103 = distinct !DILexicalBlock(scope: !99, file: !2, line: 51, column: 23) -!104 = !DILocalVariable(name: "source", scope: !105, file: !2, line: 53, type: !55) -!105 = distinct !DILexicalBlock(scope: !92, file: !2, line: 52, column: 5) -!106 = !DILocation(line: 53, column: 13, scope: !105) -!107 = !DILocation(line: 55, column: 16, scope: !105) -!108 = !DILocation(line: 55, column: 9, scope: !105) -!109 = !DILocation(line: 56, column: 24, scope: !105) -!110 = !DILocation(line: 56, column: 9, scope: !105) -!111 = !DILocation(line: 57, column: 24, scope: !105) -!112 = !DILocation(line: 57, column: 9, scope: !105) -!113 = !DILocation(line: 59, column: 22, scope: !105) -!114 = !DILocation(line: 59, column: 9, scope: !105) -!115 = !DILocation(line: 60, column: 14, scope: !105) -!116 = !DILocation(line: 60, column: 9, scope: !105) -!117 = !DILocation(line: 62, column: 1, scope: !92) diff --git a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01.c.bc deleted file mode 100644 index a5186da5..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01.c.bc +++ /dev/null @@ -1,283 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01_bad() #0 !dbg !42 { -entry: - %data = alloca ptr, align 8 - %source = alloca [100 x i64], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !46, metadata !DIExpression()), !dbg !47 - store ptr null, ptr %data, align 8, !dbg !48 - %call = call noalias ptr @malloc(i64 noundef 400) #8, !dbg !49 - store ptr %call, ptr %data, align 8, !dbg !50 - %0 = load ptr, ptr %data, align 8, !dbg !51 - %cmp = icmp eq ptr %0, null, !dbg !53 - br i1 %cmp, label %if.then, label %if.end, !dbg !54 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !55 - unreachable, !dbg !55 - -if.end: ; preds = %entry - call void @llvm.dbg.declare(metadata ptr %source, metadata !57, metadata !DIExpression()), !dbg !62 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 800, i1 false), !dbg !62 - %1 = load ptr, ptr %data, align 8, !dbg !63 - %arraydecay = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !64 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1, ptr align 16 %arraydecay, i64 800, i1 false), !dbg !64 - %2 = load ptr, ptr %data, align 8, !dbg !65 - %call1 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %2, i64 noundef 799), !dbg !66 - %arraydecay2 = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !67 - %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 799), !dbg !68 - %3 = load ptr, ptr %data, align 8, !dbg !69 - %arrayidx = getelementptr inbounds i64, ptr %3, i64 0, !dbg !69 - %4 = load i64, ptr %arrayidx, align 8, !dbg !69 - call void @printLongLongLine(i64 noundef %4), !dbg !70 - %5 = load ptr, ptr %data, align 8, !dbg !71 - call void @free(ptr noundef %5) #10, !dbg !72 - ret void, !dbg !73 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #5 - -declare i32 @UNSAFE_BUFACCESS(...) #6 - -declare i32 @SAFE_BUFACCESS(...) #6 - -declare void @printLongLongLine(i64 noundef) #6 - -; Function Attrs: nounwind -declare void @free(ptr noundef) #7 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01_good() #0 !dbg !74 { -entry: - call void @goodG2B(), !dbg !75 - ret void, !dbg !76 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !77 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !83, metadata !DIExpression()), !dbg !84 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !85, metadata !DIExpression()), !dbg !86 - %call = call i64 @time(ptr noundef null) #10, !dbg !87 - %conv = trunc i64 %call to i32, !dbg !88 - call void @srand(i32 noundef %conv) #10, !dbg !89 - call void @printLine(ptr noundef @.str), !dbg !90 - call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01_good(), !dbg !91 - call void @printLine(ptr noundef @.str.1), !dbg !92 - call void @printLine(ptr noundef @.str.2), !dbg !93 - call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01_bad(), !dbg !94 - call void @printLine(ptr noundef @.str.3), !dbg !95 - ret i32 0, !dbg !96 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #7 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #7 - -declare void @printLine(ptr noundef) #6 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !97 { -entry: - %data = alloca ptr, align 8 - %source = alloca [100 x i64], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !98, metadata !DIExpression()), !dbg !99 - store ptr null, ptr %data, align 8, !dbg !100 - %call = call noalias ptr @malloc(i64 noundef 800) #8, !dbg !101 - store ptr %call, ptr %data, align 8, !dbg !102 - %0 = load ptr, ptr %data, align 8, !dbg !103 - %cmp = icmp eq ptr %0, null, !dbg !105 - br i1 %cmp, label %if.then, label %if.end, !dbg !106 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !107 - unreachable, !dbg !107 - -if.end: ; preds = %entry - call void @llvm.dbg.declare(metadata ptr %source, metadata !109, metadata !DIExpression()), !dbg !111 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 800, i1 false), !dbg !111 - %1 = load ptr, ptr %data, align 8, !dbg !112 - %arraydecay = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !113 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1, ptr align 16 %arraydecay, i64 800, i1 false), !dbg !113 - %2 = load ptr, ptr %data, align 8, !dbg !114 - %call1 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %2, i64 noundef 799), !dbg !115 - %arraydecay2 = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !116 - %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 799), !dbg !117 - %3 = load ptr, ptr %data, align 8, !dbg !118 - %arrayidx = getelementptr inbounds i64, ptr %3, i64 0, !dbg !118 - %4 = load i64, ptr %arrayidx, align 8, !dbg !118 - call void @printLongLongLine(i64 noundef %4), !dbg !119 - %5 = load ptr, ptr %data, align 8, !dbg !120 - call void @free(ptr noundef %5) #10, !dbg !121 - ret void, !dbg !122 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #6 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nounwind allocsize(0) } -attributes #9 = { noreturn nounwind } -attributes #10 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!34, !35, !36, !37, !38, !39, !40} -!llvm.ident = !{!41} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 82, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "2aec0201cc969637d1553c828b1f99c8") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 84, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 87, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 89, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !33, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "2aec0201cc969637d1553c828b1f99c8") -!24 = !{!25, !31, !32} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) -!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "int64_t", file: !27, line: 27, baseType: !28) -!27 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h", directory: "", checksumkind: CSK_MD5, checksum: "081edea97425b3437dded4a7fe223193") -!28 = !DIDerivedType(tag: DW_TAG_typedef, name: "__int64_t", file: !29, line: 44, baseType: !30) -!29 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "f6304b1a6dcfc6bee76e9a51043b5090") -!30 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) -!31 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!32 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!33 = !{!0, !7, !12, !17} -!34 = !{i32 7, !"Dwarf Version", i32 5} -!35 = !{i32 2, !"Debug Info Version", i32 3} -!36 = !{i32 1, !"wchar_size", i32 4} -!37 = !{i32 8, !"PIC Level", i32 2} -!38 = !{i32 7, !"PIE Level", i32 2} -!39 = !{i32 7, !"uwtable", i32 2} -!40 = !{i32 7, !"frame-pointer", i32 2} -!41 = !{!"clang version 16.0.0"} -!42 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01_bad", scope: !2, file: !2, line: 21, type: !43, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !45) -!43 = !DISubroutineType(types: !44) -!44 = !{null} -!45 = !{} -!46 = !DILocalVariable(name: "data", scope: !42, file: !2, line: 23, type: !25) -!47 = !DILocation(line: 23, column: 15, scope: !42) -!48 = !DILocation(line: 24, column: 10, scope: !42) -!49 = !DILocation(line: 26, column: 23, scope: !42) -!50 = !DILocation(line: 26, column: 10, scope: !42) -!51 = !DILocation(line: 27, column: 9, scope: !52) -!52 = distinct !DILexicalBlock(scope: !42, file: !2, line: 27, column: 9) -!53 = !DILocation(line: 27, column: 14, scope: !52) -!54 = !DILocation(line: 27, column: 9, scope: !42) -!55 = !DILocation(line: 27, column: 24, scope: !56) -!56 = distinct !DILexicalBlock(scope: !52, file: !2, line: 27, column: 23) -!57 = !DILocalVariable(name: "source", scope: !58, file: !2, line: 29, type: !59) -!58 = distinct !DILexicalBlock(scope: !42, file: !2, line: 28, column: 5) -!59 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 6400, elements: !60) -!60 = !{!61} -!61 = !DISubrange(count: 100) -!62 = !DILocation(line: 29, column: 17, scope: !58) -!63 = !DILocation(line: 31, column: 16, scope: !58) -!64 = !DILocation(line: 31, column: 9, scope: !58) -!65 = !DILocation(line: 32, column: 26, scope: !58) -!66 = !DILocation(line: 32, column: 9, scope: !58) -!67 = !DILocation(line: 33, column: 24, scope: !58) -!68 = !DILocation(line: 33, column: 9, scope: !58) -!69 = !DILocation(line: 34, column: 27, scope: !58) -!70 = !DILocation(line: 34, column: 9, scope: !58) -!71 = !DILocation(line: 35, column: 14, scope: !58) -!72 = !DILocation(line: 35, column: 9, scope: !58) -!73 = !DILocation(line: 37, column: 1, scope: !42) -!74 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memcpy_01_good", scope: !2, file: !2, line: 62, type: !43, scopeLine: 63, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !45) -!75 = !DILocation(line: 64, column: 5, scope: !74) -!76 = !DILocation(line: 65, column: 1, scope: !74) -!77 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 77, type: !78, scopeLine: 78, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !45) -!78 = !DISubroutineType(types: !79) -!79 = !{!80, !80, !81} -!80 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!81 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !82, size: 64) -!82 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!83 = !DILocalVariable(name: "argc", arg: 1, scope: !77, file: !2, line: 77, type: !80) -!84 = !DILocation(line: 77, column: 14, scope: !77) -!85 = !DILocalVariable(name: "argv", arg: 2, scope: !77, file: !2, line: 77, type: !81) -!86 = !DILocation(line: 77, column: 27, scope: !77) -!87 = !DILocation(line: 80, column: 22, scope: !77) -!88 = !DILocation(line: 80, column: 12, scope: !77) -!89 = !DILocation(line: 80, column: 5, scope: !77) -!90 = !DILocation(line: 82, column: 5, scope: !77) -!91 = !DILocation(line: 83, column: 5, scope: !77) -!92 = !DILocation(line: 84, column: 5, scope: !77) -!93 = !DILocation(line: 87, column: 5, scope: !77) -!94 = !DILocation(line: 88, column: 5, scope: !77) -!95 = !DILocation(line: 89, column: 5, scope: !77) -!96 = !DILocation(line: 91, column: 5, scope: !77) -!97 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 44, type: !43, scopeLine: 45, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !45) -!98 = !DILocalVariable(name: "data", scope: !97, file: !2, line: 46, type: !25) -!99 = !DILocation(line: 46, column: 15, scope: !97) -!100 = !DILocation(line: 47, column: 10, scope: !97) -!101 = !DILocation(line: 49, column: 23, scope: !97) -!102 = !DILocation(line: 49, column: 10, scope: !97) -!103 = !DILocation(line: 50, column: 9, scope: !104) -!104 = distinct !DILexicalBlock(scope: !97, file: !2, line: 50, column: 9) -!105 = !DILocation(line: 50, column: 14, scope: !104) -!106 = !DILocation(line: 50, column: 9, scope: !97) -!107 = !DILocation(line: 50, column: 24, scope: !108) -!108 = distinct !DILexicalBlock(scope: !104, file: !2, line: 50, column: 23) -!109 = !DILocalVariable(name: "source", scope: !110, file: !2, line: 52, type: !59) -!110 = distinct !DILexicalBlock(scope: !97, file: !2, line: 51, column: 5) -!111 = !DILocation(line: 52, column: 17, scope: !110) -!112 = !DILocation(line: 54, column: 16, scope: !110) -!113 = !DILocation(line: 54, column: 9, scope: !110) -!114 = !DILocation(line: 55, column: 24, scope: !110) -!115 = !DILocation(line: 55, column: 9, scope: !110) -!116 = !DILocation(line: 56, column: 24, scope: !110) -!117 = !DILocation(line: 56, column: 9, scope: !110) -!118 = !DILocation(line: 57, column: 27, scope: !110) -!119 = !DILocation(line: 57, column: 9, scope: !110) -!120 = !DILocation(line: 58, column: 14, scope: !110) -!121 = !DILocation(line: 58, column: 9, scope: !110) -!122 = !DILocation(line: 60, column: 1, scope: !97) diff --git a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01.c.bc deleted file mode 100644 index 6a19a0d8..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01.c.bc +++ /dev/null @@ -1,283 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01_bad() #0 !dbg !42 { -entry: - %data = alloca ptr, align 8 - %source = alloca [100 x i64], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !46, metadata !DIExpression()), !dbg !47 - store ptr null, ptr %data, align 8, !dbg !48 - %call = call noalias ptr @malloc(i64 noundef 400) #8, !dbg !49 - store ptr %call, ptr %data, align 8, !dbg !50 - %0 = load ptr, ptr %data, align 8, !dbg !51 - %cmp = icmp eq ptr %0, null, !dbg !53 - br i1 %cmp, label %if.then, label %if.end, !dbg !54 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !55 - unreachable, !dbg !55 - -if.end: ; preds = %entry - call void @llvm.dbg.declare(metadata ptr %source, metadata !57, metadata !DIExpression()), !dbg !62 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 800, i1 false), !dbg !62 - %1 = load ptr, ptr %data, align 8, !dbg !63 - %arraydecay = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !64 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 16 %arraydecay, i64 800, i1 false), !dbg !64 - %2 = load ptr, ptr %data, align 8, !dbg !65 - %call1 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %2, i64 noundef 799), !dbg !66 - %arraydecay2 = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !67 - %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 799), !dbg !68 - %3 = load ptr, ptr %data, align 8, !dbg !69 - %arrayidx = getelementptr inbounds i64, ptr %3, i64 0, !dbg !69 - %4 = load i64, ptr %arrayidx, align 8, !dbg !69 - call void @printLongLongLine(i64 noundef %4), !dbg !70 - %5 = load ptr, ptr %data, align 8, !dbg !71 - call void @free(ptr noundef %5) #10, !dbg !72 - ret void, !dbg !73 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #5 - -declare i32 @UNSAFE_BUFACCESS(...) #6 - -declare i32 @SAFE_BUFACCESS(...) #6 - -declare void @printLongLongLine(i64 noundef) #6 - -; Function Attrs: nounwind -declare void @free(ptr noundef) #7 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01_good() #0 !dbg !74 { -entry: - call void @goodG2B(), !dbg !75 - ret void, !dbg !76 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !77 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !83, metadata !DIExpression()), !dbg !84 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !85, metadata !DIExpression()), !dbg !86 - %call = call i64 @time(ptr noundef null) #10, !dbg !87 - %conv = trunc i64 %call to i32, !dbg !88 - call void @srand(i32 noundef %conv) #10, !dbg !89 - call void @printLine(ptr noundef @.str), !dbg !90 - call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01_good(), !dbg !91 - call void @printLine(ptr noundef @.str.1), !dbg !92 - call void @printLine(ptr noundef @.str.2), !dbg !93 - call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01_bad(), !dbg !94 - call void @printLine(ptr noundef @.str.3), !dbg !95 - ret i32 0, !dbg !96 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #7 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #7 - -declare void @printLine(ptr noundef) #6 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !97 { -entry: - %data = alloca ptr, align 8 - %source = alloca [100 x i64], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !98, metadata !DIExpression()), !dbg !99 - store ptr null, ptr %data, align 8, !dbg !100 - %call = call noalias ptr @malloc(i64 noundef 800) #8, !dbg !101 - store ptr %call, ptr %data, align 8, !dbg !102 - %0 = load ptr, ptr %data, align 8, !dbg !103 - %cmp = icmp eq ptr %0, null, !dbg !105 - br i1 %cmp, label %if.then, label %if.end, !dbg !106 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !107 - unreachable, !dbg !107 - -if.end: ; preds = %entry - call void @llvm.dbg.declare(metadata ptr %source, metadata !109, metadata !DIExpression()), !dbg !111 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 800, i1 false), !dbg !111 - %1 = load ptr, ptr %data, align 8, !dbg !112 - %arraydecay = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !113 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 16 %arraydecay, i64 800, i1 false), !dbg !113 - %2 = load ptr, ptr %data, align 8, !dbg !114 - %call1 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %2, i64 noundef 799), !dbg !115 - %arraydecay2 = getelementptr inbounds [100 x i64], ptr %source, i64 0, i64 0, !dbg !116 - %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 799), !dbg !117 - %3 = load ptr, ptr %data, align 8, !dbg !118 - %arrayidx = getelementptr inbounds i64, ptr %3, i64 0, !dbg !118 - %4 = load i64, ptr %arrayidx, align 8, !dbg !118 - call void @printLongLongLine(i64 noundef %4), !dbg !119 - %5 = load ptr, ptr %data, align 8, !dbg !120 - call void @free(ptr noundef %5) #10, !dbg !121 - ret void, !dbg !122 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #6 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nounwind allocsize(0) } -attributes #9 = { noreturn nounwind } -attributes #10 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!34, !35, !36, !37, !38, !39, !40} -!llvm.ident = !{!41} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 82, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fc1519a6bde8e2aaaebdad408f028496") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 84, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 87, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 89, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !33, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fc1519a6bde8e2aaaebdad408f028496") -!24 = !{!25, !31, !32} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) -!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "int64_t", file: !27, line: 27, baseType: !28) -!27 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h", directory: "", checksumkind: CSK_MD5, checksum: "081edea97425b3437dded4a7fe223193") -!28 = !DIDerivedType(tag: DW_TAG_typedef, name: "__int64_t", file: !29, line: 44, baseType: !30) -!29 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "f6304b1a6dcfc6bee76e9a51043b5090") -!30 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) -!31 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!32 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!33 = !{!0, !7, !12, !17} -!34 = !{i32 7, !"Dwarf Version", i32 5} -!35 = !{i32 2, !"Debug Info Version", i32 3} -!36 = !{i32 1, !"wchar_size", i32 4} -!37 = !{i32 8, !"PIC Level", i32 2} -!38 = !{i32 7, !"PIE Level", i32 2} -!39 = !{i32 7, !"uwtable", i32 2} -!40 = !{i32 7, !"frame-pointer", i32 2} -!41 = !{!"clang version 16.0.0"} -!42 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01_bad", scope: !2, file: !2, line: 21, type: !43, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !45) -!43 = !DISubroutineType(types: !44) -!44 = !{null} -!45 = !{} -!46 = !DILocalVariable(name: "data", scope: !42, file: !2, line: 23, type: !25) -!47 = !DILocation(line: 23, column: 15, scope: !42) -!48 = !DILocation(line: 24, column: 10, scope: !42) -!49 = !DILocation(line: 26, column: 23, scope: !42) -!50 = !DILocation(line: 26, column: 10, scope: !42) -!51 = !DILocation(line: 27, column: 9, scope: !52) -!52 = distinct !DILexicalBlock(scope: !42, file: !2, line: 27, column: 9) -!53 = !DILocation(line: 27, column: 14, scope: !52) -!54 = !DILocation(line: 27, column: 9, scope: !42) -!55 = !DILocation(line: 27, column: 24, scope: !56) -!56 = distinct !DILexicalBlock(scope: !52, file: !2, line: 27, column: 23) -!57 = !DILocalVariable(name: "source", scope: !58, file: !2, line: 29, type: !59) -!58 = distinct !DILexicalBlock(scope: !42, file: !2, line: 28, column: 5) -!59 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 6400, elements: !60) -!60 = !{!61} -!61 = !DISubrange(count: 100) -!62 = !DILocation(line: 29, column: 17, scope: !58) -!63 = !DILocation(line: 31, column: 17, scope: !58) -!64 = !DILocation(line: 31, column: 9, scope: !58) -!65 = !DILocation(line: 32, column: 26, scope: !58) -!66 = !DILocation(line: 32, column: 9, scope: !58) -!67 = !DILocation(line: 33, column: 24, scope: !58) -!68 = !DILocation(line: 33, column: 9, scope: !58) -!69 = !DILocation(line: 34, column: 27, scope: !58) -!70 = !DILocation(line: 34, column: 9, scope: !58) -!71 = !DILocation(line: 35, column: 14, scope: !58) -!72 = !DILocation(line: 35, column: 9, scope: !58) -!73 = !DILocation(line: 37, column: 1, scope: !42) -!74 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int64_t_memmove_01_good", scope: !2, file: !2, line: 62, type: !43, scopeLine: 63, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !45) -!75 = !DILocation(line: 64, column: 5, scope: !74) -!76 = !DILocation(line: 65, column: 1, scope: !74) -!77 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 77, type: !78, scopeLine: 78, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !45) -!78 = !DISubroutineType(types: !79) -!79 = !{!80, !80, !81} -!80 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!81 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !82, size: 64) -!82 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!83 = !DILocalVariable(name: "argc", arg: 1, scope: !77, file: !2, line: 77, type: !80) -!84 = !DILocation(line: 77, column: 14, scope: !77) -!85 = !DILocalVariable(name: "argv", arg: 2, scope: !77, file: !2, line: 77, type: !81) -!86 = !DILocation(line: 77, column: 27, scope: !77) -!87 = !DILocation(line: 80, column: 22, scope: !77) -!88 = !DILocation(line: 80, column: 12, scope: !77) -!89 = !DILocation(line: 80, column: 5, scope: !77) -!90 = !DILocation(line: 82, column: 5, scope: !77) -!91 = !DILocation(line: 83, column: 5, scope: !77) -!92 = !DILocation(line: 84, column: 5, scope: !77) -!93 = !DILocation(line: 87, column: 5, scope: !77) -!94 = !DILocation(line: 88, column: 5, scope: !77) -!95 = !DILocation(line: 89, column: 5, scope: !77) -!96 = !DILocation(line: 91, column: 5, scope: !77) -!97 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 44, type: !43, scopeLine: 45, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !45) -!98 = !DILocalVariable(name: "data", scope: !97, file: !2, line: 46, type: !25) -!99 = !DILocation(line: 46, column: 15, scope: !97) -!100 = !DILocation(line: 47, column: 10, scope: !97) -!101 = !DILocation(line: 49, column: 23, scope: !97) -!102 = !DILocation(line: 49, column: 10, scope: !97) -!103 = !DILocation(line: 50, column: 9, scope: !104) -!104 = distinct !DILexicalBlock(scope: !97, file: !2, line: 50, column: 9) -!105 = !DILocation(line: 50, column: 14, scope: !104) -!106 = !DILocation(line: 50, column: 9, scope: !97) -!107 = !DILocation(line: 50, column: 24, scope: !108) -!108 = distinct !DILexicalBlock(scope: !104, file: !2, line: 50, column: 23) -!109 = !DILocalVariable(name: "source", scope: !110, file: !2, line: 52, type: !59) -!110 = distinct !DILexicalBlock(scope: !97, file: !2, line: 51, column: 5) -!111 = !DILocation(line: 52, column: 17, scope: !110) -!112 = !DILocation(line: 54, column: 17, scope: !110) -!113 = !DILocation(line: 54, column: 9, scope: !110) -!114 = !DILocation(line: 55, column: 24, scope: !110) -!115 = !DILocation(line: 55, column: 9, scope: !110) -!116 = !DILocation(line: 56, column: 24, scope: !110) -!117 = !DILocation(line: 56, column: 9, scope: !110) -!118 = !DILocation(line: 57, column: 27, scope: !110) -!119 = !DILocation(line: 57, column: 9, scope: !110) -!120 = !DILocation(line: 58, column: 14, scope: !110) -!121 = !DILocation(line: 58, column: 9, scope: !110) -!122 = !DILocation(line: 60, column: 1, scope: !97) diff --git a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01.c.bc deleted file mode 100644 index bd9c9f06..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01.c.bc +++ /dev/null @@ -1,278 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01_bad() #0 !dbg !38 { -entry: - %data = alloca ptr, align 8 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !42, metadata !DIExpression()), !dbg !43 - store ptr null, ptr %data, align 8, !dbg !44 - %call = call noalias ptr @malloc(i64 noundef 200) #8, !dbg !45 - store ptr %call, ptr %data, align 8, !dbg !46 - %0 = load ptr, ptr %data, align 8, !dbg !47 - %cmp = icmp eq ptr %0, null, !dbg !49 - br i1 %cmp, label %if.then, label %if.end, !dbg !50 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !51 - unreachable, !dbg !51 - -if.end: ; preds = %entry - call void @llvm.dbg.declare(metadata ptr %source, metadata !53, metadata !DIExpression()), !dbg !58 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 400, i1 false), !dbg !58 - %1 = load ptr, ptr %data, align 8, !dbg !59 - %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !60 - call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 16 %arraydecay, i64 400, i1 false), !dbg !60 - %2 = load ptr, ptr %data, align 8, !dbg !61 - %call1 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %2, i64 noundef 399), !dbg !62 - %arraydecay2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !63 - %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 399), !dbg !64 - %3 = load ptr, ptr %data, align 8, !dbg !65 - %arrayidx = getelementptr inbounds i32, ptr %3, i64 0, !dbg !65 - %4 = load i32, ptr %arrayidx, align 4, !dbg !65 - call void @printIntLine(i32 noundef %4), !dbg !66 - %5 = load ptr, ptr %data, align 8, !dbg !67 - call void @free(ptr noundef %5) #10, !dbg !68 - ret void, !dbg !69 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #5 - -declare i32 @UNSAFE_BUFACCESS(...) #6 - -declare i32 @SAFE_BUFACCESS(...) #6 - -declare void @printIntLine(i32 noundef) #6 - -; Function Attrs: nounwind -declare void @free(ptr noundef) #7 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01_good() #0 !dbg !70 { -entry: - call void @goodG2B(), !dbg !71 - ret void, !dbg !72 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !73 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !78, metadata !DIExpression()), !dbg !79 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !80, metadata !DIExpression()), !dbg !81 - %call = call i64 @time(ptr noundef null) #10, !dbg !82 - %conv = trunc i64 %call to i32, !dbg !83 - call void @srand(i32 noundef %conv) #10, !dbg !84 - call void @printLine(ptr noundef @.str), !dbg !85 - call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01_good(), !dbg !86 - call void @printLine(ptr noundef @.str.1), !dbg !87 - call void @printLine(ptr noundef @.str.2), !dbg !88 - call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01_bad(), !dbg !89 - call void @printLine(ptr noundef @.str.3), !dbg !90 - ret i32 0, !dbg !91 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #7 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #7 - -declare void @printLine(ptr noundef) #6 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !92 { -entry: - %data = alloca ptr, align 8 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !93, metadata !DIExpression()), !dbg !94 - store ptr null, ptr %data, align 8, !dbg !95 - %call = call noalias ptr @malloc(i64 noundef 400) #8, !dbg !96 - store ptr %call, ptr %data, align 8, !dbg !97 - %0 = load ptr, ptr %data, align 8, !dbg !98 - %cmp = icmp eq ptr %0, null, !dbg !100 - br i1 %cmp, label %if.then, label %if.end, !dbg !101 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !102 - unreachable, !dbg !102 - -if.end: ; preds = %entry - call void @llvm.dbg.declare(metadata ptr %source, metadata !104, metadata !DIExpression()), !dbg !106 - call void @llvm.memset.p0.i64(ptr align 16 %source, i8 0, i64 400, i1 false), !dbg !106 - %1 = load ptr, ptr %data, align 8, !dbg !107 - %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !108 - call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 16 %arraydecay, i64 400, i1 false), !dbg !108 - %2 = load ptr, ptr %data, align 8, !dbg !109 - %call1 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %2, i64 noundef 399), !dbg !110 - %arraydecay2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !111 - %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef 399), !dbg !112 - %3 = load ptr, ptr %data, align 8, !dbg !113 - %arrayidx = getelementptr inbounds i32, ptr %3, i64 0, !dbg !113 - %4 = load i32, ptr %arrayidx, align 4, !dbg !113 - call void @printIntLine(i32 noundef %4), !dbg !114 - %5 = load ptr, ptr %data, align 8, !dbg !115 - call void @free(ptr noundef %5) #10, !dbg !116 - ret void, !dbg !117 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #6 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nounwind allocsize(0) } -attributes #9 = { noreturn nounwind } -attributes #10 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!30, !31, !32, !33, !34, !35, !36} -!llvm.ident = !{!37} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 82, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "867a2918c841acddc7bb6b01bb4ff4a0") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 84, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 87, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 89, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !29, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "867a2918c841acddc7bb6b01bb4ff4a0") -!24 = !{!25, !27, !28} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) -!26 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!27 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!28 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!29 = !{!0, !7, !12, !17} -!30 = !{i32 7, !"Dwarf Version", i32 5} -!31 = !{i32 2, !"Debug Info Version", i32 3} -!32 = !{i32 1, !"wchar_size", i32 4} -!33 = !{i32 8, !"PIC Level", i32 2} -!34 = !{i32 7, !"PIE Level", i32 2} -!35 = !{i32 7, !"uwtable", i32 2} -!36 = !{i32 7, !"frame-pointer", i32 2} -!37 = !{!"clang version 16.0.0"} -!38 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01_bad", scope: !2, file: !2, line: 21, type: !39, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !41) -!39 = !DISubroutineType(types: !40) -!40 = !{null} -!41 = !{} -!42 = !DILocalVariable(name: "data", scope: !38, file: !2, line: 23, type: !25) -!43 = !DILocation(line: 23, column: 11, scope: !38) -!44 = !DILocation(line: 24, column: 10, scope: !38) -!45 = !DILocation(line: 26, column: 19, scope: !38) -!46 = !DILocation(line: 26, column: 10, scope: !38) -!47 = !DILocation(line: 27, column: 9, scope: !48) -!48 = distinct !DILexicalBlock(scope: !38, file: !2, line: 27, column: 9) -!49 = !DILocation(line: 27, column: 14, scope: !48) -!50 = !DILocation(line: 27, column: 9, scope: !38) -!51 = !DILocation(line: 27, column: 24, scope: !52) -!52 = distinct !DILexicalBlock(scope: !48, file: !2, line: 27, column: 23) -!53 = !DILocalVariable(name: "source", scope: !54, file: !2, line: 29, type: !55) -!54 = distinct !DILexicalBlock(scope: !38, file: !2, line: 28, column: 5) -!55 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 3200, elements: !56) -!56 = !{!57} -!57 = !DISubrange(count: 100) -!58 = !DILocation(line: 29, column: 13, scope: !54) -!59 = !DILocation(line: 31, column: 17, scope: !54) -!60 = !DILocation(line: 31, column: 9, scope: !54) -!61 = !DILocation(line: 32, column: 26, scope: !54) -!62 = !DILocation(line: 32, column: 9, scope: !54) -!63 = !DILocation(line: 33, column: 24, scope: !54) -!64 = !DILocation(line: 33, column: 9, scope: !54) -!65 = !DILocation(line: 34, column: 22, scope: !54) -!66 = !DILocation(line: 34, column: 9, scope: !54) -!67 = !DILocation(line: 35, column: 14, scope: !54) -!68 = !DILocation(line: 35, column: 9, scope: !54) -!69 = !DILocation(line: 37, column: 1, scope: !38) -!70 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_CWE805_int_memmove_01_good", scope: !2, file: !2, line: 62, type: !39, scopeLine: 63, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !41) -!71 = !DILocation(line: 64, column: 5, scope: !70) -!72 = !DILocation(line: 65, column: 1, scope: !70) -!73 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 77, type: !74, scopeLine: 78, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !41) -!74 = !DISubroutineType(types: !75) -!75 = !{!26, !26, !76} -!76 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !77, size: 64) -!77 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!78 = !DILocalVariable(name: "argc", arg: 1, scope: !73, file: !2, line: 77, type: !26) -!79 = !DILocation(line: 77, column: 14, scope: !73) -!80 = !DILocalVariable(name: "argv", arg: 2, scope: !73, file: !2, line: 77, type: !76) -!81 = !DILocation(line: 77, column: 27, scope: !73) -!82 = !DILocation(line: 80, column: 22, scope: !73) -!83 = !DILocation(line: 80, column: 12, scope: !73) -!84 = !DILocation(line: 80, column: 5, scope: !73) -!85 = !DILocation(line: 82, column: 5, scope: !73) -!86 = !DILocation(line: 83, column: 5, scope: !73) -!87 = !DILocation(line: 84, column: 5, scope: !73) -!88 = !DILocation(line: 87, column: 5, scope: !73) -!89 = !DILocation(line: 88, column: 5, scope: !73) -!90 = !DILocation(line: 89, column: 5, scope: !73) -!91 = !DILocation(line: 91, column: 5, scope: !73) -!92 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 44, type: !39, scopeLine: 45, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !41) -!93 = !DILocalVariable(name: "data", scope: !92, file: !2, line: 46, type: !25) -!94 = !DILocation(line: 46, column: 11, scope: !92) -!95 = !DILocation(line: 47, column: 10, scope: !92) -!96 = !DILocation(line: 49, column: 19, scope: !92) -!97 = !DILocation(line: 49, column: 10, scope: !92) -!98 = !DILocation(line: 50, column: 9, scope: !99) -!99 = distinct !DILexicalBlock(scope: !92, file: !2, line: 50, column: 9) -!100 = !DILocation(line: 50, column: 14, scope: !99) -!101 = !DILocation(line: 50, column: 9, scope: !92) -!102 = !DILocation(line: 50, column: 24, scope: !103) -!103 = distinct !DILexicalBlock(scope: !99, file: !2, line: 50, column: 23) -!104 = !DILocalVariable(name: "source", scope: !105, file: !2, line: 52, type: !55) -!105 = distinct !DILexicalBlock(scope: !92, file: !2, line: 51, column: 5) -!106 = !DILocation(line: 52, column: 13, scope: !105) -!107 = !DILocation(line: 54, column: 17, scope: !105) -!108 = !DILocation(line: 54, column: 9, scope: !105) -!109 = !DILocation(line: 55, column: 24, scope: !105) -!110 = !DILocation(line: 55, column: 9, scope: !105) -!111 = !DILocation(line: 56, column: 24, scope: !105) -!112 = !DILocation(line: 56, column: 9, scope: !105) -!113 = !DILocation(line: 57, column: 22, scope: !105) -!114 = !DILocation(line: 57, column: 9, scope: !105) -!115 = !DILocation(line: 58, column: 14, scope: !105) -!116 = !DILocation(line: 58, column: 9, scope: !105) -!117 = !DILocation(line: 60, column: 1, scope: !92) diff --git a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01.c.bc deleted file mode 100644 index 1c924910..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01.c.bc +++ /dev/null @@ -1,386 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01.c" -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-unknown-linux-gnu" - -%struct._twoIntsStruct = type { i32, i32 } - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01_bad() #0 !dbg !44 { -entry: - %data = alloca ptr, align 8 - %source = alloca [100 x %struct._twoIntsStruct], align 16 - %i = alloca i64, align 8 - call void @llvm.dbg.declare(metadata ptr %data, metadata !48, metadata !DIExpression()), !dbg !49 - store ptr null, ptr %data, align 8, !dbg !50 - %call = call noalias ptr @malloc(i64 noundef 400) #7, !dbg !51 - store ptr %call, ptr %data, align 8, !dbg !52 - %0 = load ptr, ptr %data, align 8, !dbg !53 - %cmp = icmp eq ptr %0, null, !dbg !55 - br i1 %cmp, label %if.then, label %if.end, !dbg !56 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #8, !dbg !57 - unreachable, !dbg !57 - -if.end: ; preds = %entry - call void @llvm.dbg.declare(metadata ptr %source, metadata !59, metadata !DIExpression()), !dbg !64 - call void @llvm.dbg.declare(metadata ptr %i, metadata !65, metadata !DIExpression()), !dbg !70 - store i64 0, ptr %i, align 8, !dbg !71 - br label %for.cond, !dbg !73 - -for.cond: ; preds = %for.inc, %if.end - %1 = load i64, ptr %i, align 8, !dbg !74 - %cmp1 = icmp ult i64 %1, 100, !dbg !76 - br i1 %cmp1, label %for.body, label %for.end, !dbg !77 - -for.body: ; preds = %for.cond - %2 = load i64, ptr %i, align 8, !dbg !78 - %arrayidx = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %2, !dbg !80 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %arrayidx, i32 0, i32 0, !dbg !81 - store i32 0, ptr %intOne, align 8, !dbg !82 - %3 = load i64, ptr %i, align 8, !dbg !83 - %arrayidx2 = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %3, !dbg !84 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %arrayidx2, i32 0, i32 1, !dbg !85 - store i32 0, ptr %intTwo, align 4, !dbg !86 - br label %for.inc, !dbg !87 - -for.inc: ; preds = %for.body - %4 = load i64, ptr %i, align 8, !dbg !88 - %inc = add i64 %4, 1, !dbg !88 - store i64 %inc, ptr %i, align 8, !dbg !88 - br label %for.cond, !dbg !89, !llvm.loop !90 - -for.end: ; preds = %for.cond - %5 = load ptr, ptr %data, align 8, !dbg !93 - %arraydecay = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 0, !dbg !94 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %5, ptr align 16 %arraydecay, i64 800, i1 false), !dbg !94 - %6 = load ptr, ptr %data, align 8, !dbg !95 - %call3 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %6, i64 noundef 799), !dbg !96 - %arraydecay4 = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 0, !dbg !97 - %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay4, i64 noundef 799), !dbg !98 - %7 = load ptr, ptr %data, align 8, !dbg !99 - %arrayidx6 = getelementptr inbounds %struct._twoIntsStruct, ptr %7, i64 0, !dbg !99 - call void @printStructLine(ptr noundef %arrayidx6), !dbg !100 - %8 = load ptr, ptr %data, align 8, !dbg !101 - call void @free(ptr noundef %8) #9, !dbg !102 - ret void, !dbg !103 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4 - -declare i32 @UNSAFE_BUFACCESS(...) #5 - -declare i32 @SAFE_BUFACCESS(...) #5 - -declare void @printStructLine(ptr noundef) #5 - -; Function Attrs: nounwind -declare void @free(ptr noundef) #6 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01_good() #0 !dbg !104 { -entry: - call void @goodG2B(), !dbg !105 - ret void, !dbg !106 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !107 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !112, metadata !DIExpression()), !dbg !113 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !114, metadata !DIExpression()), !dbg !115 - %call = call i64 @time(ptr noundef null) #9, !dbg !116 - %conv = trunc i64 %call to i32, !dbg !117 - call void @srand(i32 noundef %conv) #9, !dbg !118 - call void @printLine(ptr noundef @.str), !dbg !119 - call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01_good(), !dbg !120 - call void @printLine(ptr noundef @.str.1), !dbg !121 - call void @printLine(ptr noundef @.str.2), !dbg !122 - call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01_bad(), !dbg !123 - call void @printLine(ptr noundef @.str.3), !dbg !124 - ret i32 0, !dbg !125 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #6 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #6 - -declare void @printLine(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !126 { -entry: - %data = alloca ptr, align 8 - %source = alloca [100 x %struct._twoIntsStruct], align 16 - %i = alloca i64, align 8 - call void @llvm.dbg.declare(metadata ptr %data, metadata !127, metadata !DIExpression()), !dbg !128 - store ptr null, ptr %data, align 8, !dbg !129 - %call = call noalias ptr @malloc(i64 noundef 800) #7, !dbg !130 - store ptr %call, ptr %data, align 8, !dbg !131 - %0 = load ptr, ptr %data, align 8, !dbg !132 - %cmp = icmp eq ptr %0, null, !dbg !134 - br i1 %cmp, label %if.then, label %if.end, !dbg !135 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #8, !dbg !136 - unreachable, !dbg !136 - -if.end: ; preds = %entry - call void @llvm.dbg.declare(metadata ptr %source, metadata !138, metadata !DIExpression()), !dbg !140 - call void @llvm.dbg.declare(metadata ptr %i, metadata !141, metadata !DIExpression()), !dbg !143 - store i64 0, ptr %i, align 8, !dbg !144 - br label %for.cond, !dbg !146 - -for.cond: ; preds = %for.inc, %if.end - %1 = load i64, ptr %i, align 8, !dbg !147 - %cmp1 = icmp ult i64 %1, 100, !dbg !149 - br i1 %cmp1, label %for.body, label %for.end, !dbg !150 - -for.body: ; preds = %for.cond - %2 = load i64, ptr %i, align 8, !dbg !151 - %arrayidx = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %2, !dbg !153 - %intOne = getelementptr inbounds %struct._twoIntsStruct, ptr %arrayidx, i32 0, i32 0, !dbg !154 - store i32 0, ptr %intOne, align 8, !dbg !155 - %3 = load i64, ptr %i, align 8, !dbg !156 - %arrayidx2 = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 %3, !dbg !157 - %intTwo = getelementptr inbounds %struct._twoIntsStruct, ptr %arrayidx2, i32 0, i32 1, !dbg !158 - store i32 0, ptr %intTwo, align 4, !dbg !159 - br label %for.inc, !dbg !160 - -for.inc: ; preds = %for.body - %4 = load i64, ptr %i, align 8, !dbg !161 - %inc = add i64 %4, 1, !dbg !161 - store i64 %inc, ptr %i, align 8, !dbg !161 - br label %for.cond, !dbg !162, !llvm.loop !163 - -for.end: ; preds = %for.cond - %5 = load ptr, ptr %data, align 8, !dbg !165 - %arraydecay = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 0, !dbg !166 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %5, ptr align 16 %arraydecay, i64 800, i1 false), !dbg !166 - %6 = load ptr, ptr %data, align 8, !dbg !167 - %call3 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %6, i64 noundef 799), !dbg !168 - %arraydecay4 = getelementptr inbounds [100 x %struct._twoIntsStruct], ptr %source, i64 0, i64 0, !dbg !169 - %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay4, i64 noundef 799), !dbg !170 - %7 = load ptr, ptr %data, align 8, !dbg !171 - %arrayidx6 = getelementptr inbounds %struct._twoIntsStruct, ptr %7, i64 0, !dbg !171 - call void @printStructLine(ptr noundef %arrayidx6), !dbg !172 - %8 = load ptr, ptr %data, align 8, !dbg !173 - call void @free(ptr noundef %8) #9, !dbg !174 - ret void, !dbg !175 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #5 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind allocsize(0) } -attributes #8 = { noreturn nounwind } -attributes #9 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!36, !37, !38, !39, !40, !41, !42} -!llvm.ident = !{!43} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 101, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "0506068d7b490dc18cbe33905bd77fdf") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 103, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 106, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 108, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !35, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "0506068d7b490dc18cbe33905bd77fdf") -!24 = !{!25, !33, !34} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) -!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "twoIntsStruct", file: !27, line: 103, baseType: !28) -!27 = !DIFile(filename: "src/ae_overflow_tests/std_testcase.h", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "88a24111f8dafef29ef3f03c1f00803c") -!28 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_twoIntsStruct", file: !27, line: 99, size: 64, elements: !29) -!29 = !{!30, !32} -!30 = !DIDerivedType(tag: DW_TAG_member, name: "intOne", scope: !28, file: !27, line: 101, baseType: !31, size: 32) -!31 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!32 = !DIDerivedType(tag: DW_TAG_member, name: "intTwo", scope: !28, file: !27, line: 102, baseType: !31, size: 32, offset: 32) -!33 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!34 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!35 = !{!0, !7, !12, !17} -!36 = !{i32 7, !"Dwarf Version", i32 5} -!37 = !{i32 2, !"Debug Info Version", i32 3} -!38 = !{i32 1, !"wchar_size", i32 4} -!39 = !{i32 8, !"PIC Level", i32 2} -!40 = !{i32 7, !"PIE Level", i32 2} -!41 = !{i32 7, !"uwtable", i32 2} -!42 = !{i32 7, !"frame-pointer", i32 2} -!43 = !{!"clang version 16.0.0"} -!44 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01_bad", scope: !2, file: !2, line: 21, type: !45, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !47) -!45 = !DISubroutineType(types: !46) -!46 = !{null} -!47 = !{} -!48 = !DILocalVariable(name: "data", scope: !44, file: !2, line: 23, type: !25) -!49 = !DILocation(line: 23, column: 21, scope: !44) -!50 = !DILocation(line: 24, column: 10, scope: !44) -!51 = !DILocation(line: 26, column: 29, scope: !44) -!52 = !DILocation(line: 26, column: 10, scope: !44) -!53 = !DILocation(line: 27, column: 9, scope: !54) -!54 = distinct !DILexicalBlock(scope: !44, file: !2, line: 27, column: 9) -!55 = !DILocation(line: 27, column: 14, scope: !54) -!56 = !DILocation(line: 27, column: 9, scope: !44) -!57 = !DILocation(line: 27, column: 24, scope: !58) -!58 = distinct !DILexicalBlock(scope: !54, file: !2, line: 27, column: 23) -!59 = !DILocalVariable(name: "source", scope: !60, file: !2, line: 29, type: !61) -!60 = distinct !DILexicalBlock(scope: !44, file: !2, line: 28, column: 5) -!61 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 6400, elements: !62) -!62 = !{!63} -!63 = !DISubrange(count: 100) -!64 = !DILocation(line: 29, column: 23, scope: !60) -!65 = !DILocalVariable(name: "i", scope: !66, file: !2, line: 31, type: !67) -!66 = distinct !DILexicalBlock(scope: !60, file: !2, line: 30, column: 9) -!67 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !68, line: 46, baseType: !69) -!68 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!69 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) -!70 = !DILocation(line: 31, column: 20, scope: !66) -!71 = !DILocation(line: 33, column: 20, scope: !72) -!72 = distinct !DILexicalBlock(scope: !66, file: !2, line: 33, column: 13) -!73 = !DILocation(line: 33, column: 18, scope: !72) -!74 = !DILocation(line: 33, column: 25, scope: !75) -!75 = distinct !DILexicalBlock(scope: !72, file: !2, line: 33, column: 13) -!76 = !DILocation(line: 33, column: 27, scope: !75) -!77 = !DILocation(line: 33, column: 13, scope: !72) -!78 = !DILocation(line: 35, column: 24, scope: !79) -!79 = distinct !DILexicalBlock(scope: !75, file: !2, line: 34, column: 13) -!80 = !DILocation(line: 35, column: 17, scope: !79) -!81 = !DILocation(line: 35, column: 27, scope: !79) -!82 = !DILocation(line: 35, column: 34, scope: !79) -!83 = !DILocation(line: 36, column: 24, scope: !79) -!84 = !DILocation(line: 36, column: 17, scope: !79) -!85 = !DILocation(line: 36, column: 27, scope: !79) -!86 = !DILocation(line: 36, column: 34, scope: !79) -!87 = !DILocation(line: 37, column: 13, scope: !79) -!88 = !DILocation(line: 33, column: 35, scope: !75) -!89 = !DILocation(line: 33, column: 13, scope: !75) -!90 = distinct !{!90, !77, !91, !92} -!91 = !DILocation(line: 37, column: 13, scope: !72) -!92 = !{!"llvm.loop.mustprogress"} -!93 = !DILocation(line: 40, column: 16, scope: !60) -!94 = !DILocation(line: 40, column: 9, scope: !60) -!95 = !DILocation(line: 41, column: 26, scope: !60) -!96 = !DILocation(line: 41, column: 9, scope: !60) -!97 = !DILocation(line: 42, column: 24, scope: !60) -!98 = !DILocation(line: 42, column: 9, scope: !60) -!99 = !DILocation(line: 43, column: 26, scope: !60) -!100 = !DILocation(line: 43, column: 9, scope: !60) -!101 = !DILocation(line: 44, column: 14, scope: !60) -!102 = !DILocation(line: 44, column: 9, scope: !60) -!103 = !DILocation(line: 46, column: 1, scope: !44) -!104 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_CWE805_struct_memcpy_01_good", scope: !2, file: !2, line: 81, type: !45, scopeLine: 82, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !47) -!105 = !DILocation(line: 83, column: 5, scope: !104) -!106 = !DILocation(line: 84, column: 1, scope: !104) -!107 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 96, type: !108, scopeLine: 97, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !47) -!108 = !DISubroutineType(types: !109) -!109 = !{!31, !31, !110} -!110 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !111, size: 64) -!111 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!112 = !DILocalVariable(name: "argc", arg: 1, scope: !107, file: !2, line: 96, type: !31) -!113 = !DILocation(line: 96, column: 14, scope: !107) -!114 = !DILocalVariable(name: "argv", arg: 2, scope: !107, file: !2, line: 96, type: !110) -!115 = !DILocation(line: 96, column: 27, scope: !107) -!116 = !DILocation(line: 99, column: 22, scope: !107) -!117 = !DILocation(line: 99, column: 12, scope: !107) -!118 = !DILocation(line: 99, column: 5, scope: !107) -!119 = !DILocation(line: 101, column: 5, scope: !107) -!120 = !DILocation(line: 102, column: 5, scope: !107) -!121 = !DILocation(line: 103, column: 5, scope: !107) -!122 = !DILocation(line: 106, column: 5, scope: !107) -!123 = !DILocation(line: 107, column: 5, scope: !107) -!124 = !DILocation(line: 108, column: 5, scope: !107) -!125 = !DILocation(line: 110, column: 5, scope: !107) -!126 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 53, type: !45, scopeLine: 54, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !47) -!127 = !DILocalVariable(name: "data", scope: !126, file: !2, line: 55, type: !25) -!128 = !DILocation(line: 55, column: 21, scope: !126) -!129 = !DILocation(line: 56, column: 10, scope: !126) -!130 = !DILocation(line: 58, column: 29, scope: !126) -!131 = !DILocation(line: 58, column: 10, scope: !126) -!132 = !DILocation(line: 59, column: 9, scope: !133) -!133 = distinct !DILexicalBlock(scope: !126, file: !2, line: 59, column: 9) -!134 = !DILocation(line: 59, column: 14, scope: !133) -!135 = !DILocation(line: 59, column: 9, scope: !126) -!136 = !DILocation(line: 59, column: 24, scope: !137) -!137 = distinct !DILexicalBlock(scope: !133, file: !2, line: 59, column: 23) -!138 = !DILocalVariable(name: "source", scope: !139, file: !2, line: 61, type: !61) -!139 = distinct !DILexicalBlock(scope: !126, file: !2, line: 60, column: 5) -!140 = !DILocation(line: 61, column: 23, scope: !139) -!141 = !DILocalVariable(name: "i", scope: !142, file: !2, line: 63, type: !67) -!142 = distinct !DILexicalBlock(scope: !139, file: !2, line: 62, column: 9) -!143 = !DILocation(line: 63, column: 20, scope: !142) -!144 = !DILocation(line: 65, column: 20, scope: !145) -!145 = distinct !DILexicalBlock(scope: !142, file: !2, line: 65, column: 13) -!146 = !DILocation(line: 65, column: 18, scope: !145) -!147 = !DILocation(line: 65, column: 25, scope: !148) -!148 = distinct !DILexicalBlock(scope: !145, file: !2, line: 65, column: 13) -!149 = !DILocation(line: 65, column: 27, scope: !148) -!150 = !DILocation(line: 65, column: 13, scope: !145) -!151 = !DILocation(line: 67, column: 24, scope: !152) -!152 = distinct !DILexicalBlock(scope: !148, file: !2, line: 66, column: 13) -!153 = !DILocation(line: 67, column: 17, scope: !152) -!154 = !DILocation(line: 67, column: 27, scope: !152) -!155 = !DILocation(line: 67, column: 34, scope: !152) -!156 = !DILocation(line: 68, column: 24, scope: !152) -!157 = !DILocation(line: 68, column: 17, scope: !152) -!158 = !DILocation(line: 68, column: 27, scope: !152) -!159 = !DILocation(line: 68, column: 34, scope: !152) -!160 = !DILocation(line: 69, column: 13, scope: !152) -!161 = !DILocation(line: 65, column: 35, scope: !148) -!162 = !DILocation(line: 65, column: 13, scope: !148) -!163 = distinct !{!163, !150, !164, !92} -!164 = !DILocation(line: 69, column: 13, scope: !145) -!165 = !DILocation(line: 72, column: 16, scope: !139) -!166 = !DILocation(line: 72, column: 9, scope: !139) -!167 = !DILocation(line: 73, column: 24, scope: !139) -!168 = !DILocation(line: 73, column: 9, scope: !139) -!169 = !DILocation(line: 74, column: 24, scope: !139) -!170 = !DILocation(line: 74, column: 9, scope: !139) -!171 = !DILocation(line: 76, column: 26, scope: !139) -!172 = !DILocation(line: 76, column: 9, scope: !139) -!173 = !DILocation(line: 77, column: 14, scope: !139) -!174 = !DILocation(line: 77, column: 9, scope: !139) -!175 = !DILocation(line: 79, column: 1, scope: !126) diff --git a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmove_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmove_01.c.bc deleted file mode 100644 index 84899fbf..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmove_01.c.bc +++ /dev/null @@ -1,309 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmove_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmove_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmove_01_bad() #0 !dbg !40 { -entry: - %data = alloca ptr, align 8 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !44, metadata !DIExpression()), !dbg !45 - store ptr null, ptr %data, align 8, !dbg !46 - %call = call noalias ptr @malloc(i64 noundef 200) #7, !dbg !47 - store ptr %call, ptr %data, align 8, !dbg !48 - %0 = load ptr, ptr %data, align 8, !dbg !49 - %cmp = icmp eq ptr %0, null, !dbg !51 - br i1 %cmp, label %if.then, label %if.end, !dbg !52 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #8, !dbg !53 - unreachable, !dbg !53 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !55 - %arrayidx = getelementptr inbounds i32, ptr %1, i64 0, !dbg !55 - store i32 0, ptr %arrayidx, align 4, !dbg !56 - call void @llvm.dbg.declare(metadata ptr %source, metadata !57, metadata !DIExpression()), !dbg !62 - %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !63 - %call1 = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #9, !dbg !64 - %arrayidx2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !65 - store i32 0, ptr %arrayidx2, align 4, !dbg !66 - %2 = load ptr, ptr %data, align 8, !dbg !67 - %arraydecay3 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !68 - call void @llvm.memmove.p0.p0.i64(ptr align 4 %2, ptr align 16 %arraydecay3, i64 400, i1 false), !dbg !68 - %3 = load ptr, ptr %data, align 8, !dbg !69 - %call4 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %3, i64 noundef 399), !dbg !70 - %arraydecay5 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !71 - %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay5, i64 noundef 399), !dbg !72 - %4 = load ptr, ptr %data, align 8, !dbg !73 - %arrayidx7 = getelementptr inbounds i32, ptr %4, i64 99, !dbg !73 - store i32 0, ptr %arrayidx7, align 4, !dbg !74 - %5 = load ptr, ptr %data, align 8, !dbg !75 - call void @printWLine(ptr noundef %5), !dbg !76 - %6 = load ptr, ptr %data, align 8, !dbg !77 - call void @free(ptr noundef %6) #9, !dbg !78 - ret void, !dbg !79 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 - -; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #4 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #5 - -declare i32 @UNSAFE_BUFACCESS(...) #6 - -declare i32 @SAFE_BUFACCESS(...) #6 - -declare void @printWLine(ptr noundef) #6 - -; Function Attrs: nounwind -declare void @free(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmove_01_good() #0 !dbg !80 { -entry: - call void @goodG2B(), !dbg !81 - ret void, !dbg !82 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !83 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !88, metadata !DIExpression()), !dbg !89 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !90, metadata !DIExpression()), !dbg !91 - %call = call i64 @time(ptr noundef null) #9, !dbg !92 - %conv = trunc i64 %call to i32, !dbg !93 - call void @srand(i32 noundef %conv) #9, !dbg !94 - call void @printLine(ptr noundef @.str), !dbg !95 - call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmove_01_good(), !dbg !96 - call void @printLine(ptr noundef @.str.1), !dbg !97 - call void @printLine(ptr noundef @.str.2), !dbg !98 - call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmove_01_bad(), !dbg !99 - call void @printLine(ptr noundef @.str.3), !dbg !100 - ret i32 0, !dbg !101 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 - -declare void @printLine(ptr noundef) #6 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !102 { -entry: - %data = alloca ptr, align 8 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !103, metadata !DIExpression()), !dbg !104 - store ptr null, ptr %data, align 8, !dbg !105 - %call = call noalias ptr @malloc(i64 noundef 400) #7, !dbg !106 - store ptr %call, ptr %data, align 8, !dbg !107 - %0 = load ptr, ptr %data, align 8, !dbg !108 - %cmp = icmp eq ptr %0, null, !dbg !110 - br i1 %cmp, label %if.then, label %if.end, !dbg !111 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #8, !dbg !112 - unreachable, !dbg !112 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !114 - %arrayidx = getelementptr inbounds i32, ptr %1, i64 0, !dbg !114 - store i32 0, ptr %arrayidx, align 4, !dbg !115 - call void @llvm.dbg.declare(metadata ptr %source, metadata !116, metadata !DIExpression()), !dbg !118 - %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !119 - %call1 = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #9, !dbg !120 - %arrayidx2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !121 - store i32 0, ptr %arrayidx2, align 4, !dbg !122 - %2 = load ptr, ptr %data, align 8, !dbg !123 - %arraydecay3 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !124 - call void @llvm.memmove.p0.p0.i64(ptr align 4 %2, ptr align 16 %arraydecay3, i64 400, i1 false), !dbg !124 - %3 = load ptr, ptr %data, align 8, !dbg !125 - %call4 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %3, i64 noundef 399), !dbg !126 - %arraydecay5 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !127 - %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay5, i64 noundef 399), !dbg !128 - %4 = load ptr, ptr %data, align 8, !dbg !129 - %arrayidx7 = getelementptr inbounds i32, ptr %4, i64 99, !dbg !129 - store i32 0, ptr %arrayidx7, align 4, !dbg !130 - %5 = load ptr, ptr %data, align 8, !dbg !131 - call void @printWLine(ptr noundef %5), !dbg !132 - %6 = load ptr, ptr %data, align 8, !dbg !133 - call void @free(ptr noundef %6) #9, !dbg !134 - ret void, !dbg !135 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #6 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind allocsize(0) } -attributes #8 = { noreturn nounwind } -attributes #9 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!32, !33, !34, !35, !36, !37, !38} -!llvm.ident = !{!39} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 93, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "47d40031f9df60de4af663ed491cc3a3") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 95, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 98, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 100, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !31, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "47d40031f9df60de4af663ed491cc3a3") -!24 = !{!25, !29, !30} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) -!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !27, line: 74, baseType: !28) -!27 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!28 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!29 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!30 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!31 = !{!0, !7, !12, !17} -!32 = !{i32 7, !"Dwarf Version", i32 5} -!33 = !{i32 2, !"Debug Info Version", i32 3} -!34 = !{i32 1, !"wchar_size", i32 4} -!35 = !{i32 8, !"PIC Level", i32 2} -!36 = !{i32 7, !"PIE Level", i32 2} -!37 = !{i32 7, !"uwtable", i32 2} -!38 = !{i32 7, !"frame-pointer", i32 2} -!39 = !{!"clang version 16.0.0"} -!40 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmove_01_bad", scope: !2, file: !2, line: 23, type: !41, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !43) -!41 = !DISubroutineType(types: !42) -!42 = !{null} -!43 = !{} -!44 = !DILocalVariable(name: "data", scope: !40, file: !2, line: 25, type: !25) -!45 = !DILocation(line: 25, column: 15, scope: !40) -!46 = !DILocation(line: 26, column: 10, scope: !40) -!47 = !DILocation(line: 28, column: 23, scope: !40) -!48 = !DILocation(line: 28, column: 10, scope: !40) -!49 = !DILocation(line: 29, column: 9, scope: !50) -!50 = distinct !DILexicalBlock(scope: !40, file: !2, line: 29, column: 9) -!51 = !DILocation(line: 29, column: 14, scope: !50) -!52 = !DILocation(line: 29, column: 9, scope: !40) -!53 = !DILocation(line: 29, column: 24, scope: !54) -!54 = distinct !DILexicalBlock(scope: !50, file: !2, line: 29, column: 23) -!55 = !DILocation(line: 30, column: 5, scope: !40) -!56 = !DILocation(line: 30, column: 13, scope: !40) -!57 = !DILocalVariable(name: "source", scope: !58, file: !2, line: 32, type: !59) -!58 = distinct !DILexicalBlock(scope: !40, file: !2, line: 31, column: 5) -!59 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 3200, elements: !60) -!60 = !{!61} -!61 = !DISubrange(count: 100) -!62 = !DILocation(line: 32, column: 17, scope: !58) -!63 = !DILocation(line: 33, column: 17, scope: !58) -!64 = !DILocation(line: 33, column: 9, scope: !58) -!65 = !DILocation(line: 34, column: 9, scope: !58) -!66 = !DILocation(line: 34, column: 23, scope: !58) -!67 = !DILocation(line: 36, column: 17, scope: !58) -!68 = !DILocation(line: 36, column: 9, scope: !58) -!69 = !DILocation(line: 37, column: 26, scope: !58) -!70 = !DILocation(line: 37, column: 9, scope: !58) -!71 = !DILocation(line: 38, column: 24, scope: !58) -!72 = !DILocation(line: 38, column: 9, scope: !58) -!73 = !DILocation(line: 40, column: 9, scope: !58) -!74 = !DILocation(line: 40, column: 21, scope: !58) -!75 = !DILocation(line: 41, column: 20, scope: !58) -!76 = !DILocation(line: 41, column: 9, scope: !58) -!77 = !DILocation(line: 42, column: 14, scope: !58) -!78 = !DILocation(line: 42, column: 9, scope: !58) -!79 = !DILocation(line: 44, column: 1, scope: !40) -!80 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_memmove_01_good", scope: !2, file: !2, line: 73, type: !41, scopeLine: 74, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !43) -!81 = !DILocation(line: 75, column: 5, scope: !80) -!82 = !DILocation(line: 76, column: 1, scope: !80) -!83 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 88, type: !84, scopeLine: 89, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !43) -!84 = !DISubroutineType(types: !85) -!85 = !{!28, !28, !86} -!86 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !87, size: 64) -!87 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!88 = !DILocalVariable(name: "argc", arg: 1, scope: !83, file: !2, line: 88, type: !28) -!89 = !DILocation(line: 88, column: 14, scope: !83) -!90 = !DILocalVariable(name: "argv", arg: 2, scope: !83, file: !2, line: 88, type: !86) -!91 = !DILocation(line: 88, column: 27, scope: !83) -!92 = !DILocation(line: 91, column: 22, scope: !83) -!93 = !DILocation(line: 91, column: 12, scope: !83) -!94 = !DILocation(line: 91, column: 5, scope: !83) -!95 = !DILocation(line: 93, column: 5, scope: !83) -!96 = !DILocation(line: 94, column: 5, scope: !83) -!97 = !DILocation(line: 95, column: 5, scope: !83) -!98 = !DILocation(line: 98, column: 5, scope: !83) -!99 = !DILocation(line: 99, column: 5, scope: !83) -!100 = !DILocation(line: 100, column: 5, scope: !83) -!101 = !DILocation(line: 102, column: 5, scope: !83) -!102 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 51, type: !41, scopeLine: 52, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !43) -!103 = !DILocalVariable(name: "data", scope: !102, file: !2, line: 53, type: !25) -!104 = !DILocation(line: 53, column: 15, scope: !102) -!105 = !DILocation(line: 54, column: 10, scope: !102) -!106 = !DILocation(line: 56, column: 23, scope: !102) -!107 = !DILocation(line: 56, column: 10, scope: !102) -!108 = !DILocation(line: 57, column: 9, scope: !109) -!109 = distinct !DILexicalBlock(scope: !102, file: !2, line: 57, column: 9) -!110 = !DILocation(line: 57, column: 14, scope: !109) -!111 = !DILocation(line: 57, column: 9, scope: !102) -!112 = !DILocation(line: 57, column: 24, scope: !113) -!113 = distinct !DILexicalBlock(scope: !109, file: !2, line: 57, column: 23) -!114 = !DILocation(line: 58, column: 5, scope: !102) -!115 = !DILocation(line: 58, column: 13, scope: !102) -!116 = !DILocalVariable(name: "source", scope: !117, file: !2, line: 60, type: !59) -!117 = distinct !DILexicalBlock(scope: !102, file: !2, line: 59, column: 5) -!118 = !DILocation(line: 60, column: 17, scope: !117) -!119 = !DILocation(line: 61, column: 17, scope: !117) -!120 = !DILocation(line: 61, column: 9, scope: !117) -!121 = !DILocation(line: 62, column: 9, scope: !117) -!122 = !DILocation(line: 62, column: 23, scope: !117) -!123 = !DILocation(line: 64, column: 17, scope: !117) -!124 = !DILocation(line: 64, column: 9, scope: !117) -!125 = !DILocation(line: 65, column: 24, scope: !117) -!126 = !DILocation(line: 65, column: 9, scope: !117) -!127 = !DILocation(line: 66, column: 24, scope: !117) -!128 = !DILocation(line: 66, column: 9, scope: !117) -!129 = !DILocation(line: 67, column: 9, scope: !117) -!130 = !DILocation(line: 67, column: 21, scope: !117) -!131 = !DILocation(line: 68, column: 20, scope: !117) -!132 = !DILocation(line: 68, column: 9, scope: !117) -!133 = !DILocation(line: 69, column: 14, scope: !117) -!134 = !DILocation(line: 69, column: 9, scope: !117) -!135 = !DILocation(line: 71, column: 1, scope: !102) diff --git a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01.c.bc deleted file mode 100644 index ed9e02bf..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01.c.bc +++ /dev/null @@ -1,306 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [3 x i32] [i32 37, i32 115, i32 0], align 4, !dbg !0 -@.str.1 = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !13 -@.str.3 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !18 -@.str.4 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !23 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01_bad() #0 !dbg !45 { -entry: - %data = alloca ptr, align 8 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !49, metadata !DIExpression()), !dbg !50 - store ptr null, ptr %data, align 8, !dbg !51 - %call = call noalias ptr @malloc(i64 noundef 200) #6, !dbg !52 - store ptr %call, ptr %data, align 8, !dbg !53 - %0 = load ptr, ptr %data, align 8, !dbg !54 - %cmp = icmp eq ptr %0, null, !dbg !56 - br i1 %cmp, label %if.then, label %if.end, !dbg !57 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #7, !dbg !58 - unreachable, !dbg !58 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !60 - %arrayidx = getelementptr inbounds i32, ptr %1, i64 0, !dbg !60 - store i32 0, ptr %arrayidx, align 4, !dbg !61 - call void @llvm.dbg.declare(metadata ptr %source, metadata !62, metadata !DIExpression()), !dbg !67 - %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !68 - %call1 = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #8, !dbg !69 - %arrayidx2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !70 - store i32 0, ptr %arrayidx2, align 4, !dbg !71 - %2 = load ptr, ptr %data, align 8, !dbg !72 - %arraydecay3 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !73 - %call4 = call i32 (ptr, i64, ptr, ...) @swprintf(ptr noundef %2, i64 noundef 100, ptr noundef @.str, ptr noundef %arraydecay3) #8, !dbg !74 - %3 = load ptr, ptr %data, align 8, !dbg !75 - %call5 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %3, i64 noundef 399), !dbg !76 - %arraydecay6 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !77 - %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef 399), !dbg !78 - %4 = load ptr, ptr %data, align 8, !dbg !79 - call void @printWLine(ptr noundef %4), !dbg !80 - %5 = load ptr, ptr %data, align 8, !dbg !81 - call void @free(ptr noundef %5) #8, !dbg !82 - ret void, !dbg !83 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 - -; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #4 - -; Function Attrs: nounwind -declare i32 @swprintf(ptr noundef, i64 noundef, ptr noundef, ...) #4 - -declare i32 @UNSAFE_BUFACCESS(...) #5 - -declare i32 @SAFE_BUFACCESS(...) #5 - -declare void @printWLine(ptr noundef) #5 - -; Function Attrs: nounwind -declare void @free(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01_good() #0 !dbg !84 { -entry: - call void @goodG2B(), !dbg !85 - ret void, !dbg !86 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !87 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !92, metadata !DIExpression()), !dbg !93 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !94, metadata !DIExpression()), !dbg !95 - %call = call i64 @time(ptr noundef null) #8, !dbg !96 - %conv = trunc i64 %call to i32, !dbg !97 - call void @srand(i32 noundef %conv) #8, !dbg !98 - call void @printLine(ptr noundef @.str.1), !dbg !99 - call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01_good(), !dbg !100 - call void @printLine(ptr noundef @.str.2), !dbg !101 - call void @printLine(ptr noundef @.str.3), !dbg !102 - call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01_bad(), !dbg !103 - call void @printLine(ptr noundef @.str.4), !dbg !104 - ret i32 0, !dbg !105 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 - -declare void @printLine(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !106 { -entry: - %data = alloca ptr, align 8 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !107, metadata !DIExpression()), !dbg !108 - store ptr null, ptr %data, align 8, !dbg !109 - %call = call noalias ptr @malloc(i64 noundef 400) #6, !dbg !110 - store ptr %call, ptr %data, align 8, !dbg !111 - %0 = load ptr, ptr %data, align 8, !dbg !112 - %cmp = icmp eq ptr %0, null, !dbg !114 - br i1 %cmp, label %if.then, label %if.end, !dbg !115 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #7, !dbg !116 - unreachable, !dbg !116 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !118 - %arrayidx = getelementptr inbounds i32, ptr %1, i64 0, !dbg !118 - store i32 0, ptr %arrayidx, align 4, !dbg !119 - call void @llvm.dbg.declare(metadata ptr %source, metadata !120, metadata !DIExpression()), !dbg !122 - %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !123 - %call1 = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #8, !dbg !124 - %arrayidx2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !125 - store i32 0, ptr %arrayidx2, align 4, !dbg !126 - %2 = load ptr, ptr %data, align 8, !dbg !127 - %arraydecay3 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !128 - %call4 = call i32 (ptr, i64, ptr, ...) @swprintf(ptr noundef %2, i64 noundef 100, ptr noundef @.str, ptr noundef %arraydecay3) #8, !dbg !129 - %3 = load ptr, ptr %data, align 8, !dbg !130 - %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %3, i64 noundef 399), !dbg !131 - %arraydecay6 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !132 - %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef 399), !dbg !133 - %4 = load ptr, ptr %data, align 8, !dbg !134 - call void @printWLine(ptr noundef %4), !dbg !135 - %5 = load ptr, ptr %data, align 8, !dbg !136 - call void @free(ptr noundef %5) #8, !dbg !137 - ret void, !dbg !138 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind allocsize(0) } -attributes #7 = { noreturn nounwind } -attributes #8 = { nounwind } - -!llvm.dbg.cu = !{!28} -!llvm.module.flags = !{!37, !38, !39, !40, !41, !42, !43} -!llvm.ident = !{!44} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 42, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b252cf95367f0737fffb4dad814851c1") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 96, elements: !5) -!4 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!5 = !{!6} -!6 = !DISubrange(count: 3) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 96, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 144, elements: !11) -!10 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!11 = !{!12} -!12 = !DISubrange(count: 18) -!13 = !DIGlobalVariableExpression(var: !14, expr: !DIExpression()) -!14 = distinct !DIGlobalVariable(scope: null, file: !2, line: 98, type: !15, isLocal: true, isDefinition: true) -!15 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 128, elements: !16) -!16 = !{!17} -!17 = !DISubrange(count: 16) -!18 = !DIGlobalVariableExpression(var: !19, expr: !DIExpression()) -!19 = distinct !DIGlobalVariable(scope: null, file: !2, line: 101, type: !20, isLocal: true, isDefinition: true) -!20 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 136, elements: !21) -!21 = !{!22} -!22 = !DISubrange(count: 17) -!23 = !DIGlobalVariableExpression(var: !24, expr: !DIExpression()) -!24 = distinct !DIGlobalVariable(scope: null, file: !2, line: 103, type: !25, isLocal: true, isDefinition: true) -!25 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 120, elements: !26) -!26 = !{!27} -!27 = !DISubrange(count: 15) -!28 = distinct !DICompileUnit(language: DW_LANG_C11, file: !29, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !30, globals: !36, splitDebugInlining: false, nameTableKind: None) -!29 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b252cf95367f0737fffb4dad814851c1") -!30 = !{!31, !34, !35} -!31 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !32, size: 64) -!32 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !33, line: 74, baseType: !4) -!33 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!34 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!35 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!36 = !{!0, !7, !13, !18, !23} -!37 = !{i32 7, !"Dwarf Version", i32 5} -!38 = !{i32 2, !"Debug Info Version", i32 3} -!39 = !{i32 1, !"wchar_size", i32 4} -!40 = !{i32 8, !"PIC Level", i32 2} -!41 = !{i32 7, !"PIE Level", i32 2} -!42 = !{i32 7, !"uwtable", i32 2} -!43 = !{i32 7, !"frame-pointer", i32 2} -!44 = !{!"clang version 16.0.0"} -!45 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01_bad", scope: !2, file: !2, line: 29, type: !46, scopeLine: 30, spFlags: DISPFlagDefinition, unit: !28, retainedNodes: !48) -!46 = !DISubroutineType(types: !47) -!47 = !{null} -!48 = !{} -!49 = !DILocalVariable(name: "data", scope: !45, file: !2, line: 31, type: !31) -!50 = !DILocation(line: 31, column: 15, scope: !45) -!51 = !DILocation(line: 32, column: 10, scope: !45) -!52 = !DILocation(line: 34, column: 23, scope: !45) -!53 = !DILocation(line: 34, column: 10, scope: !45) -!54 = !DILocation(line: 35, column: 9, scope: !55) -!55 = distinct !DILexicalBlock(scope: !45, file: !2, line: 35, column: 9) -!56 = !DILocation(line: 35, column: 14, scope: !55) -!57 = !DILocation(line: 35, column: 9, scope: !45) -!58 = !DILocation(line: 35, column: 24, scope: !59) -!59 = distinct !DILexicalBlock(scope: !55, file: !2, line: 35, column: 23) -!60 = !DILocation(line: 36, column: 5, scope: !45) -!61 = !DILocation(line: 36, column: 13, scope: !45) -!62 = !DILocalVariable(name: "source", scope: !63, file: !2, line: 38, type: !64) -!63 = distinct !DILexicalBlock(scope: !45, file: !2, line: 37, column: 5) -!64 = !DICompositeType(tag: DW_TAG_array_type, baseType: !32, size: 3200, elements: !65) -!65 = !{!66} -!66 = !DISubrange(count: 100) -!67 = !DILocation(line: 38, column: 17, scope: !63) -!68 = !DILocation(line: 39, column: 17, scope: !63) -!69 = !DILocation(line: 39, column: 9, scope: !63) -!70 = !DILocation(line: 40, column: 9, scope: !63) -!71 = !DILocation(line: 40, column: 23, scope: !63) -!72 = !DILocation(line: 42, column: 18, scope: !63) -!73 = !DILocation(line: 42, column: 36, scope: !63) -!74 = !DILocation(line: 42, column: 9, scope: !63) -!75 = !DILocation(line: 43, column: 26, scope: !63) -!76 = !DILocation(line: 43, column: 9, scope: !63) -!77 = !DILocation(line: 44, column: 24, scope: !63) -!78 = !DILocation(line: 44, column: 9, scope: !63) -!79 = !DILocation(line: 45, column: 20, scope: !63) -!80 = !DILocation(line: 45, column: 9, scope: !63) -!81 = !DILocation(line: 46, column: 14, scope: !63) -!82 = !DILocation(line: 46, column: 9, scope: !63) -!83 = !DILocation(line: 48, column: 1, scope: !45) -!84 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_CWE805_wchar_t_snprintf_01_good", scope: !2, file: !2, line: 76, type: !46, scopeLine: 77, spFlags: DISPFlagDefinition, unit: !28, retainedNodes: !48) -!85 = !DILocation(line: 78, column: 5, scope: !84) -!86 = !DILocation(line: 79, column: 1, scope: !84) -!87 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 91, type: !88, scopeLine: 92, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !28, retainedNodes: !48) -!88 = !DISubroutineType(types: !89) -!89 = !{!4, !4, !90} -!90 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !91, size: 64) -!91 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !10, size: 64) -!92 = !DILocalVariable(name: "argc", arg: 1, scope: !87, file: !2, line: 91, type: !4) -!93 = !DILocation(line: 91, column: 14, scope: !87) -!94 = !DILocalVariable(name: "argv", arg: 2, scope: !87, file: !2, line: 91, type: !90) -!95 = !DILocation(line: 91, column: 27, scope: !87) -!96 = !DILocation(line: 94, column: 22, scope: !87) -!97 = !DILocation(line: 94, column: 12, scope: !87) -!98 = !DILocation(line: 94, column: 5, scope: !87) -!99 = !DILocation(line: 96, column: 5, scope: !87) -!100 = !DILocation(line: 97, column: 5, scope: !87) -!101 = !DILocation(line: 98, column: 5, scope: !87) -!102 = !DILocation(line: 101, column: 5, scope: !87) -!103 = !DILocation(line: 102, column: 5, scope: !87) -!104 = !DILocation(line: 103, column: 5, scope: !87) -!105 = !DILocation(line: 105, column: 5, scope: !87) -!106 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 55, type: !46, scopeLine: 56, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !28, retainedNodes: !48) -!107 = !DILocalVariable(name: "data", scope: !106, file: !2, line: 57, type: !31) -!108 = !DILocation(line: 57, column: 15, scope: !106) -!109 = !DILocation(line: 58, column: 10, scope: !106) -!110 = !DILocation(line: 60, column: 23, scope: !106) -!111 = !DILocation(line: 60, column: 10, scope: !106) -!112 = !DILocation(line: 61, column: 9, scope: !113) -!113 = distinct !DILexicalBlock(scope: !106, file: !2, line: 61, column: 9) -!114 = !DILocation(line: 61, column: 14, scope: !113) -!115 = !DILocation(line: 61, column: 9, scope: !106) -!116 = !DILocation(line: 61, column: 24, scope: !117) -!117 = distinct !DILexicalBlock(scope: !113, file: !2, line: 61, column: 23) -!118 = !DILocation(line: 62, column: 5, scope: !106) -!119 = !DILocation(line: 62, column: 13, scope: !106) -!120 = !DILocalVariable(name: "source", scope: !121, file: !2, line: 64, type: !64) -!121 = distinct !DILexicalBlock(scope: !106, file: !2, line: 63, column: 5) -!122 = !DILocation(line: 64, column: 17, scope: !121) -!123 = !DILocation(line: 65, column: 17, scope: !121) -!124 = !DILocation(line: 65, column: 9, scope: !121) -!125 = !DILocation(line: 66, column: 9, scope: !121) -!126 = !DILocation(line: 66, column: 23, scope: !121) -!127 = !DILocation(line: 68, column: 18, scope: !121) -!128 = !DILocation(line: 68, column: 36, scope: !121) -!129 = !DILocation(line: 68, column: 9, scope: !121) -!130 = !DILocation(line: 69, column: 24, scope: !121) -!131 = !DILocation(line: 69, column: 9, scope: !121) -!132 = !DILocation(line: 70, column: 24, scope: !121) -!133 = !DILocation(line: 70, column: 9, scope: !121) -!134 = !DILocation(line: 71, column: 20, scope: !121) -!135 = !DILocation(line: 71, column: 9, scope: !121) -!136 = !DILocation(line: 72, column: 14, scope: !121) -!137 = !DILocation(line: 72, column: 9, scope: !121) -!138 = !DILocation(line: 74, column: 1, scope: !106) diff --git a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01.c.bc deleted file mode 100644 index d695b387..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01.c.bc +++ /dev/null @@ -1,342 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01_bad() #0 !dbg !37 { -entry: - %data = alloca ptr, align 8 - %dest = alloca [50 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !41, metadata !DIExpression()), !dbg !42 - %call = call noalias ptr @malloc(i64 noundef 100) #9, !dbg !43 - store ptr %call, ptr %data, align 8, !dbg !44 - %0 = load ptr, ptr %data, align 8, !dbg !45 - %cmp = icmp eq ptr %0, null, !dbg !47 - br i1 %cmp, label %if.then, label %if.end, !dbg !48 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #10, !dbg !49 - unreachable, !dbg !49 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !51 - call void @llvm.memset.p0.i64(ptr align 1 %1, i8 65, i64 99, i1 false), !dbg !52 - %2 = load ptr, ptr %data, align 8, !dbg !53 - %arrayidx = getelementptr inbounds i8, ptr %2, i64 99, !dbg !53 - store i8 0, ptr %arrayidx, align 1, !dbg !54 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !55, metadata !DIExpression()), !dbg !60 - call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 50, i1 false), !dbg !60 - %arraydecay = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !61 - %3 = load ptr, ptr %data, align 8, !dbg !62 - %4 = load ptr, ptr %data, align 8, !dbg !63 - %call1 = call i64 @strlen(ptr noundef %4) #11, !dbg !64 - %mul = mul i64 %call1, 1, !dbg !65 - call void @llvm.memmove.p0.p0.i64(ptr align 16 %arraydecay, ptr align 1 %3, i64 %mul, i1 false), !dbg !61 - %arraydecay2 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !66 - %5 = load ptr, ptr %data, align 8, !dbg !67 - %call3 = call i64 @strlen(ptr noundef %5) #11, !dbg !68 - %mul4 = mul i64 %call3, 1, !dbg !69 - %sub = sub i64 %mul4, 1, !dbg !70 - %call5 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef %sub), !dbg !71 - %6 = load ptr, ptr %data, align 8, !dbg !72 - %7 = load ptr, ptr %data, align 8, !dbg !73 - %call6 = call i64 @strlen(ptr noundef %7) #11, !dbg !74 - %mul7 = mul i64 %call6, 1, !dbg !75 - %sub8 = sub i64 %mul7, 1, !dbg !76 - %call9 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %6, i64 noundef %sub8), !dbg !77 - %arrayidx10 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 49, !dbg !78 - store i8 0, ptr %arrayidx10, align 1, !dbg !79 - %8 = load ptr, ptr %data, align 8, !dbg !80 - call void @printLine(ptr noundef %8), !dbg !81 - %9 = load ptr, ptr %data, align 8, !dbg !82 - call void @free(ptr noundef %9) #12, !dbg !83 - ret void, !dbg !84 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #5 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #6 - -declare i32 @UNSAFE_BUFACCESS(...) #7 - -declare i32 @SAFE_BUFACCESS(...) #7 - -declare void @printLine(ptr noundef) #7 - -; Function Attrs: nounwind -declare void @free(ptr noundef) #8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01_good() #0 !dbg !85 { -entry: - call void @goodG2B(), !dbg !86 - ret void, !dbg !87 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !88 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !93, metadata !DIExpression()), !dbg !94 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !95, metadata !DIExpression()), !dbg !96 - %call = call i64 @time(ptr noundef null) #12, !dbg !97 - %conv = trunc i64 %call to i32, !dbg !98 - call void @srand(i32 noundef %conv) #12, !dbg !99 - call void @printLine(ptr noundef @.str), !dbg !100 - call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01_good(), !dbg !101 - call void @printLine(ptr noundef @.str.1), !dbg !102 - call void @printLine(ptr noundef @.str.2), !dbg !103 - call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01_bad(), !dbg !104 - call void @printLine(ptr noundef @.str.3), !dbg !105 - ret i32 0, !dbg !106 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #8 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #8 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !107 { -entry: - %data = alloca ptr, align 8 - %dest = alloca [50 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !108, metadata !DIExpression()), !dbg !109 - %call = call noalias ptr @malloc(i64 noundef 100) #9, !dbg !110 - store ptr %call, ptr %data, align 8, !dbg !111 - %0 = load ptr, ptr %data, align 8, !dbg !112 - %cmp = icmp eq ptr %0, null, !dbg !114 - br i1 %cmp, label %if.then, label %if.end, !dbg !115 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #10, !dbg !116 - unreachable, !dbg !116 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !118 - call void @llvm.memset.p0.i64(ptr align 1 %1, i8 65, i64 49, i1 false), !dbg !119 - %2 = load ptr, ptr %data, align 8, !dbg !120 - %arrayidx = getelementptr inbounds i8, ptr %2, i64 49, !dbg !120 - store i8 0, ptr %arrayidx, align 1, !dbg !121 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !122, metadata !DIExpression()), !dbg !124 - call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 50, i1 false), !dbg !124 - %arraydecay = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !125 - %3 = load ptr, ptr %data, align 8, !dbg !126 - %4 = load ptr, ptr %data, align 8, !dbg !127 - %call1 = call i64 @strlen(ptr noundef %4) #11, !dbg !128 - %mul = mul i64 %call1, 1, !dbg !129 - call void @llvm.memmove.p0.p0.i64(ptr align 16 %arraydecay, ptr align 1 %3, i64 %mul, i1 false), !dbg !125 - %arraydecay2 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !130 - %5 = load ptr, ptr %data, align 8, !dbg !131 - %call3 = call i64 @strlen(ptr noundef %5) #11, !dbg !132 - %mul4 = mul i64 %call3, 1, !dbg !133 - %sub = sub i64 %mul4, 1, !dbg !134 - %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef %sub), !dbg !135 - %6 = load ptr, ptr %data, align 8, !dbg !136 - %7 = load ptr, ptr %data, align 8, !dbg !137 - %call6 = call i64 @strlen(ptr noundef %7) #11, !dbg !138 - %mul7 = mul i64 %call6, 1, !dbg !139 - %sub8 = sub i64 %mul7, 1, !dbg !140 - %call9 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %6, i64 noundef %sub8), !dbg !141 - %arrayidx10 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 49, !dbg !142 - store i8 0, ptr %arrayidx10, align 1, !dbg !143 - %8 = load ptr, ptr %data, align 8, !dbg !144 - call void @printLine(ptr noundef %8), !dbg !145 - %9 = load ptr, ptr %data, align 8, !dbg !146 - call void @free(ptr noundef %9) #12, !dbg !147 - ret void, !dbg !148 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #5 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #7 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nounwind allocsize(0) } -attributes #10 = { noreturn nounwind } -attributes #11 = { nounwind willreturn memory(read) } -attributes #12 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!29, !30, !31, !32, !33, !34, !35} -!llvm.ident = !{!36} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 89, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b598979fb9b05d5a386d221f81d7c6a3") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 91, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 94, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 96, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "b598979fb9b05d5a386d221f81d7c6a3") -!24 = !{!25, !26, !27} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!26 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!27 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!28 = !{!0, !7, !12, !17} -!29 = !{i32 7, !"Dwarf Version", i32 5} -!30 = !{i32 2, !"Debug Info Version", i32 3} -!31 = !{i32 1, !"wchar_size", i32 4} -!32 = !{i32 8, !"PIC Level", i32 2} -!33 = !{i32 7, !"PIE Level", i32 2} -!34 = !{i32 7, !"uwtable", i32 2} -!35 = !{i32 7, !"frame-pointer", i32 2} -!36 = !{!"clang version 16.0.0"} -!37 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01_bad", scope: !2, file: !2, line: 23, type: !38, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!38 = !DISubroutineType(types: !39) -!39 = !{null} -!40 = !{} -!41 = !DILocalVariable(name: "data", scope: !37, file: !2, line: 25, type: !25) -!42 = !DILocation(line: 25, column: 12, scope: !37) -!43 = !DILocation(line: 26, column: 20, scope: !37) -!44 = !DILocation(line: 26, column: 10, scope: !37) -!45 = !DILocation(line: 27, column: 9, scope: !46) -!46 = distinct !DILexicalBlock(scope: !37, file: !2, line: 27, column: 9) -!47 = !DILocation(line: 27, column: 14, scope: !46) -!48 = !DILocation(line: 27, column: 9, scope: !37) -!49 = !DILocation(line: 27, column: 24, scope: !50) -!50 = distinct !DILexicalBlock(scope: !46, file: !2, line: 27, column: 23) -!51 = !DILocation(line: 29, column: 12, scope: !37) -!52 = !DILocation(line: 29, column: 5, scope: !37) -!53 = !DILocation(line: 30, column: 5, scope: !37) -!54 = !DILocation(line: 30, column: 17, scope: !37) -!55 = !DILocalVariable(name: "dest", scope: !56, file: !2, line: 32, type: !57) -!56 = distinct !DILexicalBlock(scope: !37, file: !2, line: 31, column: 5) -!57 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 400, elements: !58) -!58 = !{!59} -!59 = !DISubrange(count: 50) -!60 = !DILocation(line: 32, column: 14, scope: !56) -!61 = !DILocation(line: 34, column: 9, scope: !56) -!62 = !DILocation(line: 34, column: 23, scope: !56) -!63 = !DILocation(line: 34, column: 36, scope: !56) -!64 = !DILocation(line: 34, column: 29, scope: !56) -!65 = !DILocation(line: 34, column: 41, scope: !56) -!66 = !DILocation(line: 35, column: 26, scope: !56) -!67 = !DILocation(line: 35, column: 39, scope: !56) -!68 = !DILocation(line: 35, column: 32, scope: !56) -!69 = !DILocation(line: 35, column: 45, scope: !56) -!70 = !DILocation(line: 35, column: 60, scope: !56) -!71 = !DILocation(line: 35, column: 9, scope: !56) -!72 = !DILocation(line: 36, column: 24, scope: !56) -!73 = !DILocation(line: 36, column: 37, scope: !56) -!74 = !DILocation(line: 36, column: 30, scope: !56) -!75 = !DILocation(line: 36, column: 43, scope: !56) -!76 = !DILocation(line: 36, column: 58, scope: !56) -!77 = !DILocation(line: 36, column: 9, scope: !56) -!78 = !DILocation(line: 38, column: 9, scope: !56) -!79 = !DILocation(line: 38, column: 20, scope: !56) -!80 = !DILocation(line: 39, column: 19, scope: !56) -!81 = !DILocation(line: 39, column: 9, scope: !56) -!82 = !DILocation(line: 40, column: 14, scope: !56) -!83 = !DILocation(line: 40, column: 9, scope: !56) -!84 = !DILocation(line: 42, column: 1, scope: !37) -!85 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_CWE806_char_memmove_01_good", scope: !2, file: !2, line: 69, type: !38, scopeLine: 70, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!86 = !DILocation(line: 71, column: 5, scope: !85) -!87 = !DILocation(line: 72, column: 1, scope: !85) -!88 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 84, type: !89, scopeLine: 85, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!89 = !DISubroutineType(types: !90) -!90 = !{!91, !91, !92} -!91 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!92 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64) -!93 = !DILocalVariable(name: "argc", arg: 1, scope: !88, file: !2, line: 84, type: !91) -!94 = !DILocation(line: 84, column: 14, scope: !88) -!95 = !DILocalVariable(name: "argv", arg: 2, scope: !88, file: !2, line: 84, type: !92) -!96 = !DILocation(line: 84, column: 27, scope: !88) -!97 = !DILocation(line: 87, column: 22, scope: !88) -!98 = !DILocation(line: 87, column: 12, scope: !88) -!99 = !DILocation(line: 87, column: 5, scope: !88) -!100 = !DILocation(line: 89, column: 5, scope: !88) -!101 = !DILocation(line: 90, column: 5, scope: !88) -!102 = !DILocation(line: 91, column: 5, scope: !88) -!103 = !DILocation(line: 94, column: 5, scope: !88) -!104 = !DILocation(line: 95, column: 5, scope: !88) -!105 = !DILocation(line: 96, column: 5, scope: !88) -!106 = !DILocation(line: 98, column: 5, scope: !88) -!107 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 49, type: !38, scopeLine: 50, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !40) -!108 = !DILocalVariable(name: "data", scope: !107, file: !2, line: 51, type: !25) -!109 = !DILocation(line: 51, column: 12, scope: !107) -!110 = !DILocation(line: 52, column: 20, scope: !107) -!111 = !DILocation(line: 52, column: 10, scope: !107) -!112 = !DILocation(line: 53, column: 9, scope: !113) -!113 = distinct !DILexicalBlock(scope: !107, file: !2, line: 53, column: 9) -!114 = !DILocation(line: 53, column: 14, scope: !113) -!115 = !DILocation(line: 53, column: 9, scope: !107) -!116 = !DILocation(line: 53, column: 24, scope: !117) -!117 = distinct !DILexicalBlock(scope: !113, file: !2, line: 53, column: 23) -!118 = !DILocation(line: 55, column: 12, scope: !107) -!119 = !DILocation(line: 55, column: 5, scope: !107) -!120 = !DILocation(line: 56, column: 5, scope: !107) -!121 = !DILocation(line: 56, column: 16, scope: !107) -!122 = !DILocalVariable(name: "dest", scope: !123, file: !2, line: 58, type: !57) -!123 = distinct !DILexicalBlock(scope: !107, file: !2, line: 57, column: 5) -!124 = !DILocation(line: 58, column: 14, scope: !123) -!125 = !DILocation(line: 60, column: 9, scope: !123) -!126 = !DILocation(line: 60, column: 23, scope: !123) -!127 = !DILocation(line: 60, column: 36, scope: !123) -!128 = !DILocation(line: 60, column: 29, scope: !123) -!129 = !DILocation(line: 60, column: 41, scope: !123) -!130 = !DILocation(line: 61, column: 24, scope: !123) -!131 = !DILocation(line: 61, column: 37, scope: !123) -!132 = !DILocation(line: 61, column: 30, scope: !123) -!133 = !DILocation(line: 61, column: 43, scope: !123) -!134 = !DILocation(line: 61, column: 58, scope: !123) -!135 = !DILocation(line: 61, column: 9, scope: !123) -!136 = !DILocation(line: 62, column: 24, scope: !123) -!137 = !DILocation(line: 62, column: 37, scope: !123) -!138 = !DILocation(line: 62, column: 30, scope: !123) -!139 = !DILocation(line: 62, column: 43, scope: !123) -!140 = !DILocation(line: 62, column: 58, scope: !123) -!141 = !DILocation(line: 62, column: 9, scope: !123) -!142 = !DILocation(line: 63, column: 9, scope: !123) -!143 = !DILocation(line: 63, column: 20, scope: !123) -!144 = !DILocation(line: 64, column: 19, scope: !123) -!145 = !DILocation(line: 64, column: 9, scope: !123) -!146 = !DILocation(line: 65, column: 14, scope: !123) -!147 = !DILocation(line: 65, column: 9, scope: !123) -!148 = !DILocation(line: 67, column: 1, scope: !107) diff --git a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01.c.bc deleted file mode 100644 index 64c8bed6..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01.c.bc +++ /dev/null @@ -1,350 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01_bad() #0 !dbg !40 { -entry: - %data = alloca ptr, align 8 - %dest = alloca [50 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !44, metadata !DIExpression()), !dbg !45 - %call = call noalias ptr @malloc(i64 noundef 400) #9, !dbg !46 - store ptr %call, ptr %data, align 8, !dbg !47 - %0 = load ptr, ptr %data, align 8, !dbg !48 - %cmp = icmp eq ptr %0, null, !dbg !50 - br i1 %cmp, label %if.then, label %if.end, !dbg !51 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #10, !dbg !52 - unreachable, !dbg !52 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !54 - %call1 = call ptr @wmemset(ptr noundef %1, i32 noundef 65, i64 noundef 99) #11, !dbg !55 - %2 = load ptr, ptr %data, align 8, !dbg !56 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 99, !dbg !56 - store i32 0, ptr %arrayidx, align 4, !dbg !57 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !58, metadata !DIExpression()), !dbg !63 - call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 200, i1 false), !dbg !63 - %arraydecay = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 0, !dbg !64 - %3 = load ptr, ptr %data, align 8, !dbg !65 - %4 = load ptr, ptr %data, align 8, !dbg !66 - %call2 = call i64 @wcslen(ptr noundef %4) #12, !dbg !67 - %mul = mul i64 %call2, 4, !dbg !68 - call void @llvm.memmove.p0.p0.i64(ptr align 16 %arraydecay, ptr align 4 %3, i64 %mul, i1 false), !dbg !64 - %arraydecay3 = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 0, !dbg !69 - %5 = load ptr, ptr %data, align 8, !dbg !70 - %call4 = call i64 @wcslen(ptr noundef %5) #12, !dbg !71 - %mul5 = mul i64 %call4, 4, !dbg !72 - %sub = sub i64 %mul5, 1, !dbg !73 - %call6 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay3, i64 noundef %sub), !dbg !74 - %6 = load ptr, ptr %data, align 8, !dbg !75 - %7 = load ptr, ptr %data, align 8, !dbg !76 - %call7 = call i64 @wcslen(ptr noundef %7) #12, !dbg !77 - %mul8 = mul i64 %call7, 4, !dbg !78 - %sub9 = sub i64 %mul8, 1, !dbg !79 - %call10 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %6, i64 noundef %sub9), !dbg !80 - %arrayidx11 = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 49, !dbg !81 - store i32 0, ptr %arrayidx11, align 4, !dbg !82 - %8 = load ptr, ptr %data, align 8, !dbg !83 - call void @printWLine(ptr noundef %8), !dbg !84 - %9 = load ptr, ptr %data, align 8, !dbg !85 - call void @free(ptr noundef %9) #11, !dbg !86 - ret void, !dbg !87 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 - -; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #4 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @wcslen(ptr noundef) #6 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #7 - -declare i32 @UNSAFE_BUFACCESS(...) #8 - -declare i32 @SAFE_BUFACCESS(...) #8 - -declare void @printWLine(ptr noundef) #8 - -; Function Attrs: nounwind -declare void @free(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01_good() #0 !dbg !88 { -entry: - call void @goodG2B(), !dbg !89 - ret void, !dbg !90 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !91 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !96, metadata !DIExpression()), !dbg !97 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !98, metadata !DIExpression()), !dbg !99 - %call = call i64 @time(ptr noundef null) #11, !dbg !100 - %conv = trunc i64 %call to i32, !dbg !101 - call void @srand(i32 noundef %conv) #11, !dbg !102 - call void @printLine(ptr noundef @.str), !dbg !103 - call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01_good(), !dbg !104 - call void @printLine(ptr noundef @.str.1), !dbg !105 - call void @printLine(ptr noundef @.str.2), !dbg !106 - call void @CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01_bad(), !dbg !107 - call void @printLine(ptr noundef @.str.3), !dbg !108 - ret i32 0, !dbg !109 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 - -declare void @printLine(ptr noundef) #8 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !110 { -entry: - %data = alloca ptr, align 8 - %dest = alloca [50 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !111, metadata !DIExpression()), !dbg !112 - %call = call noalias ptr @malloc(i64 noundef 400) #9, !dbg !113 - store ptr %call, ptr %data, align 8, !dbg !114 - %0 = load ptr, ptr %data, align 8, !dbg !115 - %cmp = icmp eq ptr %0, null, !dbg !117 - br i1 %cmp, label %if.then, label %if.end, !dbg !118 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #10, !dbg !119 - unreachable, !dbg !119 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !121 - %call1 = call ptr @wmemset(ptr noundef %1, i32 noundef 65, i64 noundef 49) #11, !dbg !122 - %2 = load ptr, ptr %data, align 8, !dbg !123 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 49, !dbg !123 - store i32 0, ptr %arrayidx, align 4, !dbg !124 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !125, metadata !DIExpression()), !dbg !127 - call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 200, i1 false), !dbg !127 - %arraydecay = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 0, !dbg !128 - %3 = load ptr, ptr %data, align 8, !dbg !129 - %4 = load ptr, ptr %data, align 8, !dbg !130 - %call2 = call i64 @wcslen(ptr noundef %4) #12, !dbg !131 - %mul = mul i64 %call2, 4, !dbg !132 - call void @llvm.memmove.p0.p0.i64(ptr align 16 %arraydecay, ptr align 4 %3, i64 %mul, i1 false), !dbg !128 - %arraydecay3 = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 0, !dbg !133 - %5 = load ptr, ptr %data, align 8, !dbg !134 - %call4 = call i64 @wcslen(ptr noundef %5) #12, !dbg !135 - %mul5 = mul i64 %call4, 4, !dbg !136 - %sub = sub i64 %mul5, 1, !dbg !137 - %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay3, i64 noundef %sub), !dbg !138 - %6 = load ptr, ptr %data, align 8, !dbg !139 - %7 = load ptr, ptr %data, align 8, !dbg !140 - %call7 = call i64 @wcslen(ptr noundef %7) #12, !dbg !141 - %mul8 = mul i64 %call7, 4, !dbg !142 - %sub9 = sub i64 %mul8, 1, !dbg !143 - %call10 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %6, i64 noundef %sub9), !dbg !144 - %arrayidx11 = getelementptr inbounds [50 x i32], ptr %dest, i64 0, i64 49, !dbg !145 - store i32 0, ptr %arrayidx11, align 4, !dbg !146 - %8 = load ptr, ptr %data, align 8, !dbg !147 - call void @printWLine(ptr noundef %8), !dbg !148 - %9 = load ptr, ptr %data, align 8, !dbg !149 - call void @free(ptr noundef %9) #11, !dbg !150 - ret void, !dbg !151 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #6 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #8 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nounwind allocsize(0) } -attributes #10 = { noreturn nounwind } -attributes #11 = { nounwind } -attributes #12 = { nounwind willreturn memory(read) } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!32, !33, !34, !35, !36, !37, !38} -!llvm.ident = !{!39} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 90, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "0b00b6dda1e3158f71afbecf4bd3ef8b") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 92, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 95, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 97, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !31, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "0b00b6dda1e3158f71afbecf4bd3ef8b") -!24 = !{!25, !29, !30} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) -!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !27, line: 74, baseType: !28) -!27 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!28 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!29 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!30 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!31 = !{!0, !7, !12, !17} -!32 = !{i32 7, !"Dwarf Version", i32 5} -!33 = !{i32 2, !"Debug Info Version", i32 3} -!34 = !{i32 1, !"wchar_size", i32 4} -!35 = !{i32 8, !"PIC Level", i32 2} -!36 = !{i32 7, !"PIE Level", i32 2} -!37 = !{i32 7, !"uwtable", i32 2} -!38 = !{i32 7, !"frame-pointer", i32 2} -!39 = !{!"clang version 16.0.0"} -!40 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01_bad", scope: !2, file: !2, line: 23, type: !41, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !43) -!41 = !DISubroutineType(types: !42) -!42 = !{null} -!43 = !{} -!44 = !DILocalVariable(name: "data", scope: !40, file: !2, line: 25, type: !25) -!45 = !DILocation(line: 25, column: 15, scope: !40) -!46 = !DILocation(line: 26, column: 23, scope: !40) -!47 = !DILocation(line: 26, column: 10, scope: !40) -!48 = !DILocation(line: 27, column: 9, scope: !49) -!49 = distinct !DILexicalBlock(scope: !40, file: !2, line: 27, column: 9) -!50 = !DILocation(line: 27, column: 14, scope: !49) -!51 = !DILocation(line: 27, column: 9, scope: !40) -!52 = !DILocation(line: 27, column: 24, scope: !53) -!53 = distinct !DILexicalBlock(scope: !49, file: !2, line: 27, column: 23) -!54 = !DILocation(line: 29, column: 13, scope: !40) -!55 = !DILocation(line: 29, column: 5, scope: !40) -!56 = !DILocation(line: 30, column: 5, scope: !40) -!57 = !DILocation(line: 30, column: 17, scope: !40) -!58 = !DILocalVariable(name: "dest", scope: !59, file: !2, line: 32, type: !60) -!59 = distinct !DILexicalBlock(scope: !40, file: !2, line: 31, column: 5) -!60 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 1600, elements: !61) -!61 = !{!62} -!62 = !DISubrange(count: 50) -!63 = !DILocation(line: 32, column: 17, scope: !59) -!64 = !DILocation(line: 34, column: 9, scope: !59) -!65 = !DILocation(line: 34, column: 23, scope: !59) -!66 = !DILocation(line: 34, column: 36, scope: !59) -!67 = !DILocation(line: 34, column: 29, scope: !59) -!68 = !DILocation(line: 34, column: 41, scope: !59) -!69 = !DILocation(line: 35, column: 26, scope: !59) -!70 = !DILocation(line: 35, column: 39, scope: !59) -!71 = !DILocation(line: 35, column: 32, scope: !59) -!72 = !DILocation(line: 35, column: 44, scope: !59) -!73 = !DILocation(line: 35, column: 61, scope: !59) -!74 = !DILocation(line: 35, column: 9, scope: !59) -!75 = !DILocation(line: 36, column: 24, scope: !59) -!76 = !DILocation(line: 36, column: 37, scope: !59) -!77 = !DILocation(line: 36, column: 30, scope: !59) -!78 = !DILocation(line: 36, column: 42, scope: !59) -!79 = !DILocation(line: 36, column: 59, scope: !59) -!80 = !DILocation(line: 36, column: 9, scope: !59) -!81 = !DILocation(line: 38, column: 9, scope: !59) -!82 = !DILocation(line: 38, column: 20, scope: !59) -!83 = !DILocation(line: 39, column: 20, scope: !59) -!84 = !DILocation(line: 39, column: 9, scope: !59) -!85 = !DILocation(line: 40, column: 14, scope: !59) -!86 = !DILocation(line: 40, column: 9, scope: !59) -!87 = !DILocation(line: 42, column: 1, scope: !40) -!88 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_CWE806_wchar_t_memmove_01_good", scope: !2, file: !2, line: 70, type: !41, scopeLine: 71, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !43) -!89 = !DILocation(line: 72, column: 5, scope: !88) -!90 = !DILocation(line: 73, column: 1, scope: !88) -!91 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 85, type: !92, scopeLine: 86, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !43) -!92 = !DISubroutineType(types: !93) -!93 = !{!28, !28, !94} -!94 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !95, size: 64) -!95 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!96 = !DILocalVariable(name: "argc", arg: 1, scope: !91, file: !2, line: 85, type: !28) -!97 = !DILocation(line: 85, column: 14, scope: !91) -!98 = !DILocalVariable(name: "argv", arg: 2, scope: !91, file: !2, line: 85, type: !94) -!99 = !DILocation(line: 85, column: 27, scope: !91) -!100 = !DILocation(line: 88, column: 22, scope: !91) -!101 = !DILocation(line: 88, column: 12, scope: !91) -!102 = !DILocation(line: 88, column: 5, scope: !91) -!103 = !DILocation(line: 90, column: 5, scope: !91) -!104 = !DILocation(line: 91, column: 5, scope: !91) -!105 = !DILocation(line: 92, column: 5, scope: !91) -!106 = !DILocation(line: 95, column: 5, scope: !91) -!107 = !DILocation(line: 96, column: 5, scope: !91) -!108 = !DILocation(line: 97, column: 5, scope: !91) -!109 = !DILocation(line: 99, column: 5, scope: !91) -!110 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 49, type: !41, scopeLine: 50, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !43) -!111 = !DILocalVariable(name: "data", scope: !110, file: !2, line: 51, type: !25) -!112 = !DILocation(line: 51, column: 15, scope: !110) -!113 = !DILocation(line: 52, column: 23, scope: !110) -!114 = !DILocation(line: 52, column: 10, scope: !110) -!115 = !DILocation(line: 53, column: 9, scope: !116) -!116 = distinct !DILexicalBlock(scope: !110, file: !2, line: 53, column: 9) -!117 = !DILocation(line: 53, column: 14, scope: !116) -!118 = !DILocation(line: 53, column: 9, scope: !110) -!119 = !DILocation(line: 53, column: 24, scope: !120) -!120 = distinct !DILexicalBlock(scope: !116, file: !2, line: 53, column: 23) -!121 = !DILocation(line: 55, column: 13, scope: !110) -!122 = !DILocation(line: 55, column: 5, scope: !110) -!123 = !DILocation(line: 56, column: 5, scope: !110) -!124 = !DILocation(line: 56, column: 16, scope: !110) -!125 = !DILocalVariable(name: "dest", scope: !126, file: !2, line: 58, type: !60) -!126 = distinct !DILexicalBlock(scope: !110, file: !2, line: 57, column: 5) -!127 = !DILocation(line: 58, column: 17, scope: !126) -!128 = !DILocation(line: 60, column: 9, scope: !126) -!129 = !DILocation(line: 60, column: 23, scope: !126) -!130 = !DILocation(line: 60, column: 36, scope: !126) -!131 = !DILocation(line: 60, column: 29, scope: !126) -!132 = !DILocation(line: 60, column: 41, scope: !126) -!133 = !DILocation(line: 61, column: 24, scope: !126) -!134 = !DILocation(line: 61, column: 37, scope: !126) -!135 = !DILocation(line: 61, column: 30, scope: !126) -!136 = !DILocation(line: 61, column: 42, scope: !126) -!137 = !DILocation(line: 61, column: 59, scope: !126) -!138 = !DILocation(line: 61, column: 9, scope: !126) -!139 = !DILocation(line: 62, column: 24, scope: !126) -!140 = !DILocation(line: 62, column: 37, scope: !126) -!141 = !DILocation(line: 62, column: 30, scope: !126) -!142 = !DILocation(line: 62, column: 42, scope: !126) -!143 = !DILocation(line: 62, column: 59, scope: !126) -!144 = !DILocation(line: 62, column: 9, scope: !126) -!145 = !DILocation(line: 64, column: 9, scope: !126) -!146 = !DILocation(line: 64, column: 20, scope: !126) -!147 = !DILocation(line: 65, column: 20, scope: !126) -!148 = !DILocation(line: 65, column: 9, scope: !126) -!149 = !DILocation(line: 66, column: 14, scope: !126) -!150 = !DILocation(line: 66, column: 9, scope: !126) -!151 = !DILocation(line: 68, column: 1, scope: !110) diff --git a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01.c.bc deleted file mode 100644 index 9f2694a9..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01.c.bc +++ /dev/null @@ -1,294 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01_bad() #0 !dbg !37 { -entry: - %data = alloca ptr, align 8 - %source = alloca [100 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !41, metadata !DIExpression()), !dbg !42 - store ptr null, ptr %data, align 8, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef 50) #7, !dbg !44 - store ptr %call, ptr %data, align 8, !dbg !45 - %0 = load ptr, ptr %data, align 8, !dbg !46 - %cmp = icmp eq ptr %0, null, !dbg !48 - br i1 %cmp, label %if.then, label %if.end, !dbg !49 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #8, !dbg !50 - unreachable, !dbg !50 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !52 - %arrayidx = getelementptr inbounds i8, ptr %1, i64 0, !dbg !52 - store i8 0, ptr %arrayidx, align 1, !dbg !53 - call void @llvm.dbg.declare(metadata ptr %source, metadata !54, metadata !DIExpression()), !dbg !59 - %arraydecay = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !60 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 67, i64 99, i1 false), !dbg !60 - %arrayidx1 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 99, !dbg !61 - store i8 0, ptr %arrayidx1, align 1, !dbg !62 - %2 = load ptr, ptr %data, align 8, !dbg !63 - %arraydecay2 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !64 - %call3 = call ptr @strcpy(ptr noundef %2, ptr noundef %arraydecay2) #9, !dbg !65 - %3 = load ptr, ptr %data, align 8, !dbg !66 - %call4 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %3, i64 noundef 99), !dbg !67 - %arraydecay5 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !68 - %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay5, i64 noundef 99), !dbg !69 - %4 = load ptr, ptr %data, align 8, !dbg !70 - call void @printLine(ptr noundef %4), !dbg !71 - %5 = load ptr, ptr %data, align 8, !dbg !72 - call void @free(ptr noundef %5) #9, !dbg !73 - ret void, !dbg !74 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4 - -; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #5 - -declare i32 @UNSAFE_BUFACCESS(...) #6 - -declare i32 @SAFE_BUFACCESS(...) #6 - -declare void @printLine(ptr noundef) #6 - -; Function Attrs: nounwind -declare void @free(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01_good() #0 !dbg !75 { -entry: - call void @goodG2B(), !dbg !76 - ret void, !dbg !77 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !78 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !83, metadata !DIExpression()), !dbg !84 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !85, metadata !DIExpression()), !dbg !86 - %call = call i64 @time(ptr noundef null) #9, !dbg !87 - %conv = trunc i64 %call to i32, !dbg !88 - call void @srand(i32 noundef %conv) #9, !dbg !89 - call void @printLine(ptr noundef @.str), !dbg !90 - call void @CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01_good(), !dbg !91 - call void @printLine(ptr noundef @.str.1), !dbg !92 - call void @printLine(ptr noundef @.str.2), !dbg !93 - call void @CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01_bad(), !dbg !94 - call void @printLine(ptr noundef @.str.3), !dbg !95 - ret i32 0, !dbg !96 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !97 { -entry: - %data = alloca ptr, align 8 - %source = alloca [100 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !98, metadata !DIExpression()), !dbg !99 - store ptr null, ptr %data, align 8, !dbg !100 - %call = call noalias ptr @malloc(i64 noundef 100) #7, !dbg !101 - store ptr %call, ptr %data, align 8, !dbg !102 - %0 = load ptr, ptr %data, align 8, !dbg !103 - %cmp = icmp eq ptr %0, null, !dbg !105 - br i1 %cmp, label %if.then, label %if.end, !dbg !106 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #8, !dbg !107 - unreachable, !dbg !107 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !109 - %arrayidx = getelementptr inbounds i8, ptr %1, i64 0, !dbg !109 - store i8 0, ptr %arrayidx, align 1, !dbg !110 - call void @llvm.dbg.declare(metadata ptr %source, metadata !111, metadata !DIExpression()), !dbg !113 - %arraydecay = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !114 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 67, i64 99, i1 false), !dbg !114 - %arrayidx1 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 99, !dbg !115 - store i8 0, ptr %arrayidx1, align 1, !dbg !116 - %2 = load ptr, ptr %data, align 8, !dbg !117 - %arraydecay2 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !118 - %call3 = call ptr @strcpy(ptr noundef %2, ptr noundef %arraydecay2) #9, !dbg !119 - %3 = load ptr, ptr %data, align 8, !dbg !120 - %call4 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %3, i64 noundef 99), !dbg !121 - %arraydecay5 = getelementptr inbounds [100 x i8], ptr %source, i64 0, i64 0, !dbg !122 - %call6 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay5, i64 noundef 99), !dbg !123 - %4 = load ptr, ptr %data, align 8, !dbg !124 - call void @printLine(ptr noundef %4), !dbg !125 - %5 = load ptr, ptr %data, align 8, !dbg !126 - call void @free(ptr noundef %5) #9, !dbg !127 - ret void, !dbg !128 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #5 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind allocsize(0) } -attributes #8 = { noreturn nounwind } -attributes #9 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!29, !30, !31, !32, !33, !34, !35} -!llvm.ident = !{!36} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 91, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8a19d0e4f742dcf8376c17d4c5b806ab") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 93, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 96, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 98, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8a19d0e4f742dcf8376c17d4c5b806ab") -!24 = !{!25, !26, !27} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!26 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!27 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!28 = !{!0, !7, !12, !17} -!29 = !{i32 7, !"Dwarf Version", i32 5} -!30 = !{i32 2, !"Debug Info Version", i32 3} -!31 = !{i32 1, !"wchar_size", i32 4} -!32 = !{i32 8, !"PIC Level", i32 2} -!33 = !{i32 7, !"PIE Level", i32 2} -!34 = !{i32 7, !"uwtable", i32 2} -!35 = !{i32 7, !"frame-pointer", i32 2} -!36 = !{!"clang version 16.0.0"} -!37 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01_bad", scope: !2, file: !2, line: 23, type: !38, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!38 = !DISubroutineType(types: !39) -!39 = !{null} -!40 = !{} -!41 = !DILocalVariable(name: "data", scope: !37, file: !2, line: 25, type: !25) -!42 = !DILocation(line: 25, column: 12, scope: !37) -!43 = !DILocation(line: 26, column: 10, scope: !37) -!44 = !DILocation(line: 28, column: 20, scope: !37) -!45 = !DILocation(line: 28, column: 10, scope: !37) -!46 = !DILocation(line: 29, column: 9, scope: !47) -!47 = distinct !DILexicalBlock(scope: !37, file: !2, line: 29, column: 9) -!48 = !DILocation(line: 29, column: 14, scope: !47) -!49 = !DILocation(line: 29, column: 9, scope: !37) -!50 = !DILocation(line: 29, column: 24, scope: !51) -!51 = distinct !DILexicalBlock(scope: !47, file: !2, line: 29, column: 23) -!52 = !DILocation(line: 30, column: 5, scope: !37) -!53 = !DILocation(line: 30, column: 13, scope: !37) -!54 = !DILocalVariable(name: "source", scope: !55, file: !2, line: 32, type: !56) -!55 = distinct !DILexicalBlock(scope: !37, file: !2, line: 31, column: 5) -!56 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 800, elements: !57) -!57 = !{!58} -!58 = !DISubrange(count: 100) -!59 = !DILocation(line: 32, column: 14, scope: !55) -!60 = !DILocation(line: 33, column: 9, scope: !55) -!61 = !DILocation(line: 34, column: 9, scope: !55) -!62 = !DILocation(line: 34, column: 23, scope: !55) -!63 = !DILocation(line: 36, column: 16, scope: !55) -!64 = !DILocation(line: 36, column: 22, scope: !55) -!65 = !DILocation(line: 36, column: 9, scope: !55) -!66 = !DILocation(line: 37, column: 26, scope: !55) -!67 = !DILocation(line: 37, column: 9, scope: !55) -!68 = !DILocation(line: 38, column: 24, scope: !55) -!69 = !DILocation(line: 38, column: 9, scope: !55) -!70 = !DILocation(line: 39, column: 19, scope: !55) -!71 = !DILocation(line: 39, column: 9, scope: !55) -!72 = !DILocation(line: 40, column: 14, scope: !55) -!73 = !DILocation(line: 40, column: 9, scope: !55) -!74 = !DILocation(line: 42, column: 1, scope: !37) -!75 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_dest_char_cpy_01_good", scope: !2, file: !2, line: 71, type: !38, scopeLine: 72, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!76 = !DILocation(line: 73, column: 5, scope: !75) -!77 = !DILocation(line: 74, column: 1, scope: !75) -!78 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 86, type: !79, scopeLine: 87, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!79 = !DISubroutineType(types: !80) -!80 = !{!81, !81, !82} -!81 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!82 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64) -!83 = !DILocalVariable(name: "argc", arg: 1, scope: !78, file: !2, line: 86, type: !81) -!84 = !DILocation(line: 86, column: 14, scope: !78) -!85 = !DILocalVariable(name: "argv", arg: 2, scope: !78, file: !2, line: 86, type: !82) -!86 = !DILocation(line: 86, column: 27, scope: !78) -!87 = !DILocation(line: 89, column: 22, scope: !78) -!88 = !DILocation(line: 89, column: 12, scope: !78) -!89 = !DILocation(line: 89, column: 5, scope: !78) -!90 = !DILocation(line: 91, column: 5, scope: !78) -!91 = !DILocation(line: 92, column: 5, scope: !78) -!92 = !DILocation(line: 93, column: 5, scope: !78) -!93 = !DILocation(line: 96, column: 5, scope: !78) -!94 = !DILocation(line: 97, column: 5, scope: !78) -!95 = !DILocation(line: 98, column: 5, scope: !78) -!96 = !DILocation(line: 100, column: 5, scope: !78) -!97 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 49, type: !38, scopeLine: 50, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !40) -!98 = !DILocalVariable(name: "data", scope: !97, file: !2, line: 51, type: !25) -!99 = !DILocation(line: 51, column: 12, scope: !97) -!100 = !DILocation(line: 52, column: 10, scope: !97) -!101 = !DILocation(line: 54, column: 20, scope: !97) -!102 = !DILocation(line: 54, column: 10, scope: !97) -!103 = !DILocation(line: 55, column: 9, scope: !104) -!104 = distinct !DILexicalBlock(scope: !97, file: !2, line: 55, column: 9) -!105 = !DILocation(line: 55, column: 14, scope: !104) -!106 = !DILocation(line: 55, column: 9, scope: !97) -!107 = !DILocation(line: 55, column: 24, scope: !108) -!108 = distinct !DILexicalBlock(scope: !104, file: !2, line: 55, column: 23) -!109 = !DILocation(line: 56, column: 5, scope: !97) -!110 = !DILocation(line: 56, column: 13, scope: !97) -!111 = !DILocalVariable(name: "source", scope: !112, file: !2, line: 58, type: !56) -!112 = distinct !DILexicalBlock(scope: !97, file: !2, line: 57, column: 5) -!113 = !DILocation(line: 58, column: 14, scope: !112) -!114 = !DILocation(line: 59, column: 9, scope: !112) -!115 = !DILocation(line: 60, column: 9, scope: !112) -!116 = !DILocation(line: 60, column: 23, scope: !112) -!117 = !DILocation(line: 62, column: 16, scope: !112) -!118 = !DILocation(line: 62, column: 22, scope: !112) -!119 = !DILocation(line: 62, column: 9, scope: !112) -!120 = !DILocation(line: 63, column: 24, scope: !112) -!121 = !DILocation(line: 63, column: 9, scope: !112) -!122 = !DILocation(line: 64, column: 24, scope: !112) -!123 = !DILocation(line: 64, column: 9, scope: !112) -!124 = !DILocation(line: 66, column: 19, scope: !112) -!125 = !DILocation(line: 66, column: 9, scope: !112) -!126 = !DILocation(line: 67, column: 14, scope: !112) -!127 = !DILocation(line: 67, column: 9, scope: !112) -!128 = !DILocation(line: 69, column: 1, scope: !97) diff --git a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01.c.bc deleted file mode 100644 index 1cf69511..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01.c.bc +++ /dev/null @@ -1,300 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01_bad() #0 !dbg !40 { -entry: - %data = alloca ptr, align 8 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !44, metadata !DIExpression()), !dbg !45 - store ptr null, ptr %data, align 8, !dbg !46 - %call = call noalias ptr @malloc(i64 noundef 200) #6, !dbg !47 - store ptr %call, ptr %data, align 8, !dbg !48 - %0 = load ptr, ptr %data, align 8, !dbg !49 - %cmp = icmp eq ptr %0, null, !dbg !51 - br i1 %cmp, label %if.then, label %if.end, !dbg !52 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #7, !dbg !53 - unreachable, !dbg !53 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !55 - %arrayidx = getelementptr inbounds i32, ptr %1, i64 0, !dbg !55 - store i32 0, ptr %arrayidx, align 4, !dbg !56 - call void @llvm.dbg.declare(metadata ptr %source, metadata !57, metadata !DIExpression()), !dbg !62 - %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !63 - %call1 = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #8, !dbg !64 - %arrayidx2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !65 - store i32 0, ptr %arrayidx2, align 4, !dbg !66 - %2 = load ptr, ptr %data, align 8, !dbg !67 - %arraydecay3 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !68 - %call4 = call ptr @wcscpy(ptr noundef %2, ptr noundef %arraydecay3) #8, !dbg !69 - %3 = load ptr, ptr %data, align 8, !dbg !70 - %call5 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %3, i64 noundef 399), !dbg !71 - %arraydecay6 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !72 - %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef 399), !dbg !73 - %4 = load ptr, ptr %data, align 8, !dbg !74 - call void @printWLine(ptr noundef %4), !dbg !75 - %5 = load ptr, ptr %data, align 8, !dbg !76 - call void @free(ptr noundef %5) #8, !dbg !77 - ret void, !dbg !78 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 - -; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #4 - -; Function Attrs: nounwind -declare ptr @wcscpy(ptr noundef, ptr noundef) #4 - -declare i32 @UNSAFE_BUFACCESS(...) #5 - -declare i32 @SAFE_BUFACCESS(...) #5 - -declare void @printWLine(ptr noundef) #5 - -; Function Attrs: nounwind -declare void @free(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01_good() #0 !dbg !79 { -entry: - call void @goodG2B(), !dbg !80 - ret void, !dbg !81 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !82 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !87, metadata !DIExpression()), !dbg !88 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !89, metadata !DIExpression()), !dbg !90 - %call = call i64 @time(ptr noundef null) #8, !dbg !91 - %conv = trunc i64 %call to i32, !dbg !92 - call void @srand(i32 noundef %conv) #8, !dbg !93 - call void @printLine(ptr noundef @.str), !dbg !94 - call void @CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01_good(), !dbg !95 - call void @printLine(ptr noundef @.str.1), !dbg !96 - call void @printLine(ptr noundef @.str.2), !dbg !97 - call void @CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01_bad(), !dbg !98 - call void @printLine(ptr noundef @.str.3), !dbg !99 - ret i32 0, !dbg !100 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 - -declare void @printLine(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !101 { -entry: - %data = alloca ptr, align 8 - %source = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !102, metadata !DIExpression()), !dbg !103 - store ptr null, ptr %data, align 8, !dbg !104 - %call = call noalias ptr @malloc(i64 noundef 400) #6, !dbg !105 - store ptr %call, ptr %data, align 8, !dbg !106 - %0 = load ptr, ptr %data, align 8, !dbg !107 - %cmp = icmp eq ptr %0, null, !dbg !109 - br i1 %cmp, label %if.then, label %if.end, !dbg !110 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #7, !dbg !111 - unreachable, !dbg !111 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !113 - %arrayidx = getelementptr inbounds i32, ptr %1, i64 0, !dbg !113 - store i32 0, ptr %arrayidx, align 4, !dbg !114 - call void @llvm.dbg.declare(metadata ptr %source, metadata !115, metadata !DIExpression()), !dbg !117 - %arraydecay = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !118 - %call1 = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #8, !dbg !119 - %arrayidx2 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 99, !dbg !120 - store i32 0, ptr %arrayidx2, align 4, !dbg !121 - %2 = load ptr, ptr %data, align 8, !dbg !122 - %arraydecay3 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !123 - %call4 = call ptr @wcscpy(ptr noundef %2, ptr noundef %arraydecay3) #8, !dbg !124 - %3 = load ptr, ptr %data, align 8, !dbg !125 - %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %3, i64 noundef 399), !dbg !126 - %arraydecay6 = getelementptr inbounds [100 x i32], ptr %source, i64 0, i64 0, !dbg !127 - %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef 399), !dbg !128 - %4 = load ptr, ptr %data, align 8, !dbg !129 - call void @printWLine(ptr noundef %4), !dbg !130 - %5 = load ptr, ptr %data, align 8, !dbg !131 - call void @free(ptr noundef %5) #8, !dbg !132 - ret void, !dbg !133 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind allocsize(0) } -attributes #7 = { noreturn nounwind } -attributes #8 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!32, !33, !34, !35, !36, !37, !38} -!llvm.ident = !{!39} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 92, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "0ecfe8fe3d3c1db26d13918e6421a420") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 94, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 97, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 99, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !31, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "0ecfe8fe3d3c1db26d13918e6421a420") -!24 = !{!25, !29, !30} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) -!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !27, line: 74, baseType: !28) -!27 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!28 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!29 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!30 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!31 = !{!0, !7, !12, !17} -!32 = !{i32 7, !"Dwarf Version", i32 5} -!33 = !{i32 2, !"Debug Info Version", i32 3} -!34 = !{i32 1, !"wchar_size", i32 4} -!35 = !{i32 8, !"PIC Level", i32 2} -!36 = !{i32 7, !"PIE Level", i32 2} -!37 = !{i32 7, !"uwtable", i32 2} -!38 = !{i32 7, !"frame-pointer", i32 2} -!39 = !{!"clang version 16.0.0"} -!40 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01_bad", scope: !2, file: !2, line: 23, type: !41, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !43) -!41 = !DISubroutineType(types: !42) -!42 = !{null} -!43 = !{} -!44 = !DILocalVariable(name: "data", scope: !40, file: !2, line: 25, type: !25) -!45 = !DILocation(line: 25, column: 15, scope: !40) -!46 = !DILocation(line: 26, column: 10, scope: !40) -!47 = !DILocation(line: 28, column: 23, scope: !40) -!48 = !DILocation(line: 28, column: 10, scope: !40) -!49 = !DILocation(line: 29, column: 9, scope: !50) -!50 = distinct !DILexicalBlock(scope: !40, file: !2, line: 29, column: 9) -!51 = !DILocation(line: 29, column: 14, scope: !50) -!52 = !DILocation(line: 29, column: 9, scope: !40) -!53 = !DILocation(line: 29, column: 24, scope: !54) -!54 = distinct !DILexicalBlock(scope: !50, file: !2, line: 29, column: 23) -!55 = !DILocation(line: 30, column: 5, scope: !40) -!56 = !DILocation(line: 30, column: 13, scope: !40) -!57 = !DILocalVariable(name: "source", scope: !58, file: !2, line: 32, type: !59) -!58 = distinct !DILexicalBlock(scope: !40, file: !2, line: 31, column: 5) -!59 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 3200, elements: !60) -!60 = !{!61} -!61 = !DISubrange(count: 100) -!62 = !DILocation(line: 32, column: 17, scope: !58) -!63 = !DILocation(line: 33, column: 17, scope: !58) -!64 = !DILocation(line: 33, column: 9, scope: !58) -!65 = !DILocation(line: 34, column: 9, scope: !58) -!66 = !DILocation(line: 34, column: 23, scope: !58) -!67 = !DILocation(line: 36, column: 16, scope: !58) -!68 = !DILocation(line: 36, column: 22, scope: !58) -!69 = !DILocation(line: 36, column: 9, scope: !58) -!70 = !DILocation(line: 37, column: 26, scope: !58) -!71 = !DILocation(line: 37, column: 9, scope: !58) -!72 = !DILocation(line: 38, column: 24, scope: !58) -!73 = !DILocation(line: 38, column: 9, scope: !58) -!74 = !DILocation(line: 40, column: 20, scope: !58) -!75 = !DILocation(line: 40, column: 9, scope: !58) -!76 = !DILocation(line: 41, column: 14, scope: !58) -!77 = !DILocation(line: 41, column: 9, scope: !58) -!78 = !DILocation(line: 43, column: 1, scope: !40) -!79 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_dest_wchar_t_cpy_01_good", scope: !2, file: !2, line: 72, type: !41, scopeLine: 73, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !43) -!80 = !DILocation(line: 74, column: 5, scope: !79) -!81 = !DILocation(line: 75, column: 1, scope: !79) -!82 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 87, type: !83, scopeLine: 88, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !43) -!83 = !DISubroutineType(types: !84) -!84 = !{!28, !28, !85} -!85 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !86, size: 64) -!86 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!87 = !DILocalVariable(name: "argc", arg: 1, scope: !82, file: !2, line: 87, type: !28) -!88 = !DILocation(line: 87, column: 14, scope: !82) -!89 = !DILocalVariable(name: "argv", arg: 2, scope: !82, file: !2, line: 87, type: !85) -!90 = !DILocation(line: 87, column: 27, scope: !82) -!91 = !DILocation(line: 90, column: 22, scope: !82) -!92 = !DILocation(line: 90, column: 12, scope: !82) -!93 = !DILocation(line: 90, column: 5, scope: !82) -!94 = !DILocation(line: 92, column: 5, scope: !82) -!95 = !DILocation(line: 93, column: 5, scope: !82) -!96 = !DILocation(line: 94, column: 5, scope: !82) -!97 = !DILocation(line: 97, column: 5, scope: !82) -!98 = !DILocation(line: 98, column: 5, scope: !82) -!99 = !DILocation(line: 99, column: 5, scope: !82) -!100 = !DILocation(line: 101, column: 5, scope: !82) -!101 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 50, type: !41, scopeLine: 51, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !43) -!102 = !DILocalVariable(name: "data", scope: !101, file: !2, line: 52, type: !25) -!103 = !DILocation(line: 52, column: 15, scope: !101) -!104 = !DILocation(line: 53, column: 10, scope: !101) -!105 = !DILocation(line: 55, column: 23, scope: !101) -!106 = !DILocation(line: 55, column: 10, scope: !101) -!107 = !DILocation(line: 56, column: 9, scope: !108) -!108 = distinct !DILexicalBlock(scope: !101, file: !2, line: 56, column: 9) -!109 = !DILocation(line: 56, column: 14, scope: !108) -!110 = !DILocation(line: 56, column: 9, scope: !101) -!111 = !DILocation(line: 56, column: 24, scope: !112) -!112 = distinct !DILexicalBlock(scope: !108, file: !2, line: 56, column: 23) -!113 = !DILocation(line: 57, column: 5, scope: !101) -!114 = !DILocation(line: 57, column: 13, scope: !101) -!115 = !DILocalVariable(name: "source", scope: !116, file: !2, line: 59, type: !59) -!116 = distinct !DILexicalBlock(scope: !101, file: !2, line: 58, column: 5) -!117 = !DILocation(line: 59, column: 17, scope: !116) -!118 = !DILocation(line: 60, column: 17, scope: !116) -!119 = !DILocation(line: 60, column: 9, scope: !116) -!120 = !DILocation(line: 61, column: 9, scope: !116) -!121 = !DILocation(line: 61, column: 23, scope: !116) -!122 = !DILocation(line: 63, column: 16, scope: !116) -!123 = !DILocation(line: 63, column: 22, scope: !116) -!124 = !DILocation(line: 63, column: 9, scope: !116) -!125 = !DILocation(line: 64, column: 24, scope: !116) -!126 = !DILocation(line: 64, column: 9, scope: !116) -!127 = !DILocation(line: 65, column: 24, scope: !116) -!128 = !DILocation(line: 65, column: 9, scope: !116) -!129 = !DILocation(line: 67, column: 20, scope: !116) -!130 = !DILocation(line: 67, column: 9, scope: !116) -!131 = !DILocation(line: 68, column: 14, scope: !116) -!132 = !DILocation(line: 68, column: 9, scope: !116) -!133 = !DILocation(line: 70, column: 1, scope: !101) diff --git a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01.c.bc deleted file mode 100644 index 5b28be8b..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01.c.bc +++ /dev/null @@ -1,323 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01_bad() #0 !dbg !37 { -entry: - %data = alloca ptr, align 8 - %dest = alloca [50 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !41, metadata !DIExpression()), !dbg !42 - %call = call noalias ptr @malloc(i64 noundef 100) #8, !dbg !43 - store ptr %call, ptr %data, align 8, !dbg !44 - %0 = load ptr, ptr %data, align 8, !dbg !45 - %cmp = icmp eq ptr %0, null, !dbg !47 - br i1 %cmp, label %if.then, label %if.end, !dbg !48 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !49 - unreachable, !dbg !49 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !51 - call void @llvm.memset.p0.i64(ptr align 1 %1, i8 65, i64 99, i1 false), !dbg !52 - %2 = load ptr, ptr %data, align 8, !dbg !53 - %arrayidx = getelementptr inbounds i8, ptr %2, i64 99, !dbg !53 - store i8 0, ptr %arrayidx, align 1, !dbg !54 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !55, metadata !DIExpression()), !dbg !60 - call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 50, i1 false), !dbg !60 - %arraydecay = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !61 - %3 = load ptr, ptr %data, align 8, !dbg !62 - %call1 = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef %3) #10, !dbg !63 - %arraydecay2 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !64 - %4 = load ptr, ptr %data, align 8, !dbg !65 - %call3 = call i64 @strlen(ptr noundef %4) #11, !dbg !66 - %mul = mul i64 %call3, 1, !dbg !67 - %sub = sub i64 %mul, 1, !dbg !68 - %call4 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef %sub), !dbg !69 - %5 = load ptr, ptr %data, align 8, !dbg !70 - %6 = load ptr, ptr %data, align 8, !dbg !71 - %call5 = call i64 @strlen(ptr noundef %6) #11, !dbg !72 - %mul6 = mul i64 %call5, 1, !dbg !73 - %sub7 = sub i64 %mul6, 1, !dbg !74 - %call8 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %5, i64 noundef %sub7), !dbg !75 - %7 = load ptr, ptr %data, align 8, !dbg !76 - call void @printLine(ptr noundef %7), !dbg !77 - %8 = load ptr, ptr %data, align 8, !dbg !78 - call void @free(ptr noundef %8) #10, !dbg !79 - ret void, !dbg !80 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4 - -; Function Attrs: nounwind -declare ptr @strcpy(ptr noundef, ptr noundef) #5 - -declare i32 @UNSAFE_BUFACCESS(...) #6 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #7 - -declare i32 @SAFE_BUFACCESS(...) #6 - -declare void @printLine(ptr noundef) #6 - -; Function Attrs: nounwind -declare void @free(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01_good() #0 !dbg !81 { -entry: - call void @goodG2B(), !dbg !82 - ret void, !dbg !83 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !84 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !89, metadata !DIExpression()), !dbg !90 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !91, metadata !DIExpression()), !dbg !92 - %call = call i64 @time(ptr noundef null) #10, !dbg !93 - %conv = trunc i64 %call to i32, !dbg !94 - call void @srand(i32 noundef %conv) #10, !dbg !95 - call void @printLine(ptr noundef @.str), !dbg !96 - call void @CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01_good(), !dbg !97 - call void @printLine(ptr noundef @.str.1), !dbg !98 - call void @printLine(ptr noundef @.str.2), !dbg !99 - call void @CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01_bad(), !dbg !100 - call void @printLine(ptr noundef @.str.3), !dbg !101 - ret i32 0, !dbg !102 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !103 { -entry: - %data = alloca ptr, align 8 - %dest = alloca [50 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !104, metadata !DIExpression()), !dbg !105 - %call = call noalias ptr @malloc(i64 noundef 100) #8, !dbg !106 - store ptr %call, ptr %data, align 8, !dbg !107 - %0 = load ptr, ptr %data, align 8, !dbg !108 - %cmp = icmp eq ptr %0, null, !dbg !110 - br i1 %cmp, label %if.then, label %if.end, !dbg !111 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !112 - unreachable, !dbg !112 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !114 - call void @llvm.memset.p0.i64(ptr align 1 %1, i8 65, i64 49, i1 false), !dbg !115 - %2 = load ptr, ptr %data, align 8, !dbg !116 - %arrayidx = getelementptr inbounds i8, ptr %2, i64 49, !dbg !116 - store i8 0, ptr %arrayidx, align 1, !dbg !117 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !118, metadata !DIExpression()), !dbg !120 - call void @llvm.memset.p0.i64(ptr align 16 %dest, i8 0, i64 50, i1 false), !dbg !120 - %arraydecay = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !121 - %3 = load ptr, ptr %data, align 8, !dbg !122 - %call1 = call ptr @strcpy(ptr noundef %arraydecay, ptr noundef %3) #10, !dbg !123 - %arraydecay2 = getelementptr inbounds [50 x i8], ptr %dest, i64 0, i64 0, !dbg !124 - %4 = load ptr, ptr %data, align 8, !dbg !125 - %call3 = call i64 @strlen(ptr noundef %4) #11, !dbg !126 - %mul = mul i64 %call3, 1, !dbg !127 - %sub = sub i64 %mul, 1, !dbg !128 - %call4 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef %sub), !dbg !129 - %5 = load ptr, ptr %data, align 8, !dbg !130 - %6 = load ptr, ptr %data, align 8, !dbg !131 - %call5 = call i64 @strlen(ptr noundef %6) #11, !dbg !132 - %mul6 = mul i64 %call5, 1, !dbg !133 - %sub7 = sub i64 %mul6, 1, !dbg !134 - %call8 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %5, i64 noundef %sub7), !dbg !135 - %7 = load ptr, ptr %data, align 8, !dbg !136 - call void @printLine(ptr noundef %7), !dbg !137 - %8 = load ptr, ptr %data, align 8, !dbg !138 - call void @free(ptr noundef %8) #10, !dbg !139 - ret void, !dbg !140 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #5 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nounwind allocsize(0) } -attributes #9 = { noreturn nounwind } -attributes #10 = { nounwind } -attributes #11 = { nounwind willreturn memory(read) } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!29, !30, !31, !32, !33, !34, !35} -!llvm.ident = !{!36} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 87, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d03af0e7cb441c17db09625ca9fdec46") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 89, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 92, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 94, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "d03af0e7cb441c17db09625ca9fdec46") -!24 = !{!25, !26, !27} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!26 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!27 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!28 = !{!0, !7, !12, !17} -!29 = !{i32 7, !"Dwarf Version", i32 5} -!30 = !{i32 2, !"Debug Info Version", i32 3} -!31 = !{i32 1, !"wchar_size", i32 4} -!32 = !{i32 8, !"PIC Level", i32 2} -!33 = !{i32 7, !"PIE Level", i32 2} -!34 = !{i32 7, !"uwtable", i32 2} -!35 = !{i32 7, !"frame-pointer", i32 2} -!36 = !{!"clang version 16.0.0"} -!37 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01_bad", scope: !2, file: !2, line: 23, type: !38, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!38 = !DISubroutineType(types: !39) -!39 = !{null} -!40 = !{} -!41 = !DILocalVariable(name: "data", scope: !37, file: !2, line: 25, type: !25) -!42 = !DILocation(line: 25, column: 12, scope: !37) -!43 = !DILocation(line: 26, column: 20, scope: !37) -!44 = !DILocation(line: 26, column: 10, scope: !37) -!45 = !DILocation(line: 27, column: 9, scope: !46) -!46 = distinct !DILexicalBlock(scope: !37, file: !2, line: 27, column: 9) -!47 = !DILocation(line: 27, column: 14, scope: !46) -!48 = !DILocation(line: 27, column: 9, scope: !37) -!49 = !DILocation(line: 27, column: 24, scope: !50) -!50 = distinct !DILexicalBlock(scope: !46, file: !2, line: 27, column: 23) -!51 = !DILocation(line: 29, column: 12, scope: !37) -!52 = !DILocation(line: 29, column: 5, scope: !37) -!53 = !DILocation(line: 30, column: 5, scope: !37) -!54 = !DILocation(line: 30, column: 17, scope: !37) -!55 = !DILocalVariable(name: "dest", scope: !56, file: !2, line: 32, type: !57) -!56 = distinct !DILexicalBlock(scope: !37, file: !2, line: 31, column: 5) -!57 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 400, elements: !58) -!58 = !{!59} -!59 = !DISubrange(count: 50) -!60 = !DILocation(line: 32, column: 14, scope: !56) -!61 = !DILocation(line: 34, column: 16, scope: !56) -!62 = !DILocation(line: 34, column: 22, scope: !56) -!63 = !DILocation(line: 34, column: 9, scope: !56) -!64 = !DILocation(line: 35, column: 26, scope: !56) -!65 = !DILocation(line: 35, column: 39, scope: !56) -!66 = !DILocation(line: 35, column: 32, scope: !56) -!67 = !DILocation(line: 35, column: 44, scope: !56) -!68 = !DILocation(line: 35, column: 58, scope: !56) -!69 = !DILocation(line: 35, column: 9, scope: !56) -!70 = !DILocation(line: 36, column: 24, scope: !56) -!71 = !DILocation(line: 36, column: 37, scope: !56) -!72 = !DILocation(line: 36, column: 30, scope: !56) -!73 = !DILocation(line: 36, column: 42, scope: !56) -!74 = !DILocation(line: 36, column: 56, scope: !56) -!75 = !DILocation(line: 36, column: 9, scope: !56) -!76 = !DILocation(line: 38, column: 19, scope: !56) -!77 = !DILocation(line: 38, column: 9, scope: !56) -!78 = !DILocation(line: 39, column: 14, scope: !56) -!79 = !DILocation(line: 39, column: 9, scope: !56) -!80 = !DILocation(line: 41, column: 1, scope: !37) -!81 = distinct !DISubprogram(name: "CWE122_Heap_Based_Buffer_Overflow__c_src_char_cpy_01_good", scope: !2, file: !2, line: 67, type: !38, scopeLine: 68, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!82 = !DILocation(line: 69, column: 5, scope: !81) -!83 = !DILocation(line: 70, column: 1, scope: !81) -!84 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 82, type: !85, scopeLine: 83, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!85 = !DISubroutineType(types: !86) -!86 = !{!87, !87, !88} -!87 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!88 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64) -!89 = !DILocalVariable(name: "argc", arg: 1, scope: !84, file: !2, line: 82, type: !87) -!90 = !DILocation(line: 82, column: 14, scope: !84) -!91 = !DILocalVariable(name: "argv", arg: 2, scope: !84, file: !2, line: 82, type: !88) -!92 = !DILocation(line: 82, column: 27, scope: !84) -!93 = !DILocation(line: 85, column: 22, scope: !84) -!94 = !DILocation(line: 85, column: 12, scope: !84) -!95 = !DILocation(line: 85, column: 5, scope: !84) -!96 = !DILocation(line: 87, column: 5, scope: !84) -!97 = !DILocation(line: 88, column: 5, scope: !84) -!98 = !DILocation(line: 89, column: 5, scope: !84) -!99 = !DILocation(line: 92, column: 5, scope: !84) -!100 = !DILocation(line: 93, column: 5, scope: !84) -!101 = !DILocation(line: 94, column: 5, scope: !84) -!102 = !DILocation(line: 96, column: 5, scope: !84) -!103 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 48, type: !38, scopeLine: 49, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !40) -!104 = !DILocalVariable(name: "data", scope: !103, file: !2, line: 50, type: !25) -!105 = !DILocation(line: 50, column: 12, scope: !103) -!106 = !DILocation(line: 51, column: 20, scope: !103) -!107 = !DILocation(line: 51, column: 10, scope: !103) -!108 = !DILocation(line: 52, column: 9, scope: !109) -!109 = distinct !DILexicalBlock(scope: !103, file: !2, line: 52, column: 9) -!110 = !DILocation(line: 52, column: 14, scope: !109) -!111 = !DILocation(line: 52, column: 9, scope: !103) -!112 = !DILocation(line: 52, column: 24, scope: !113) -!113 = distinct !DILexicalBlock(scope: !109, file: !2, line: 52, column: 23) -!114 = !DILocation(line: 54, column: 12, scope: !103) -!115 = !DILocation(line: 54, column: 5, scope: !103) -!116 = !DILocation(line: 55, column: 5, scope: !103) -!117 = !DILocation(line: 55, column: 16, scope: !103) -!118 = !DILocalVariable(name: "dest", scope: !119, file: !2, line: 57, type: !57) -!119 = distinct !DILexicalBlock(scope: !103, file: !2, line: 56, column: 5) -!120 = !DILocation(line: 57, column: 14, scope: !119) -!121 = !DILocation(line: 59, column: 16, scope: !119) -!122 = !DILocation(line: 59, column: 22, scope: !119) -!123 = !DILocation(line: 59, column: 9, scope: !119) -!124 = !DILocation(line: 60, column: 24, scope: !119) -!125 = !DILocation(line: 60, column: 37, scope: !119) -!126 = !DILocation(line: 60, column: 30, scope: !119) -!127 = !DILocation(line: 60, column: 42, scope: !119) -!128 = !DILocation(line: 60, column: 56, scope: !119) -!129 = !DILocation(line: 60, column: 9, scope: !119) -!130 = !DILocation(line: 61, column: 24, scope: !119) -!131 = !DILocation(line: 61, column: 37, scope: !119) -!132 = !DILocation(line: 61, column: 30, scope: !119) -!133 = !DILocation(line: 61, column: 42, scope: !119) -!134 = !DILocation(line: 61, column: 56, scope: !119) -!135 = !DILocation(line: 61, column: 9, scope: !119) -!136 = !DILocation(line: 62, column: 19, scope: !119) -!137 = !DILocation(line: 62, column: 9, scope: !119) -!138 = !DILocation(line: 63, column: 14, scope: !119) -!139 = !DILocation(line: 63, column: 9, scope: !119) -!140 = !DILocation(line: 65, column: 1, scope: !103) diff --git a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fgets_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fgets_01.c.bc deleted file mode 100644 index c77711b8..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fgets_01.c.bc +++ /dev/null @@ -1,408 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fgets_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fgets_01.c" -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-unknown-linux-gnu" - -@stdin = external global ptr, align 8 -@.str = private unnamed_addr constant [16 x i8] c"fgets() failed.\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [31 x i8] c"ERROR: Array index is negative\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !17 -@.str.4 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !19 -@.str.5 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !24 -@.str.6 = private unnamed_addr constant [36 x i8] c"ERROR: Array index is out-of-bounds\00", align 1, !dbg !29 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__CWE129_fgets_01_bad() #0 !dbg !48 { -entry: - %data = alloca i32, align 4 - %inputBuffer = alloca [14 x i8], align 1 - %buffer = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !52, metadata !DIExpression()), !dbg !54 - store i32 -1, ptr %data, align 4, !dbg !55 - call void @llvm.dbg.declare(metadata ptr %inputBuffer, metadata !56, metadata !DIExpression()), !dbg !61 - call void @llvm.memset.p0.i64(ptr align 1 %inputBuffer, i8 0, i64 14, i1 false), !dbg !61 - %arraydecay = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !62 - %0 = load ptr, ptr @stdin, align 8, !dbg !64 - %call = call ptr @fgets(ptr noundef %arraydecay, i32 noundef 14, ptr noundef %0), !dbg !65 - %cmp = icmp ne ptr %call, null, !dbg !66 - br i1 %cmp, label %if.then, label %if.else, !dbg !67 - -if.then: ; preds = %entry - %arraydecay1 = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !68 - %call2 = call i32 @atoi(ptr noundef %arraydecay1) #6, !dbg !70 - store i32 %call2, ptr %data, align 4, !dbg !71 - br label %if.end, !dbg !72 - -if.else: ; preds = %entry - call void @printLine(ptr noundef @.str), !dbg !73 - br label %if.end - -if.end: ; preds = %if.else, %if.then - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !75, metadata !DIExpression()), !dbg !80 - call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !80 - %1 = load i32, ptr %data, align 4, !dbg !81 - %cmp3 = icmp sge i32 %1, 0, !dbg !83 - br i1 %cmp3, label %if.then4, label %if.else7, !dbg !84 - -if.then4: ; preds = %if.end - %2 = load i32, ptr %data, align 4, !dbg !85 - %idxprom = sext i32 %2 to i64, !dbg !87 - %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !87 - %3 = load i32, ptr %arrayidx, align 4, !dbg !87 - call void @printIntLine(i32 noundef %3), !dbg !88 - %arraydecay5 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !89 - %4 = load i32, ptr %data, align 4, !dbg !90 - %conv = sext i32 %4 to i64, !dbg !90 - %mul = mul i64 %conv, 4, !dbg !91 - %call6 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay5, i64 noundef %mul), !dbg !92 - br label %if.end8, !dbg !93 - -if.else7: ; preds = %if.end - call void @printLine(ptr noundef @.str.1), !dbg !94 - br label %if.end8 - -if.end8: ; preds = %if.else7, %if.then4 - ret void, !dbg !96 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -declare ptr @fgets(ptr noundef, i32 noundef, ptr noundef) #3 - -; Function Attrs: nounwind willreturn memory(read) -declare i32 @atoi(ptr noundef) #4 - -declare void @printLine(ptr noundef) #3 - -declare void @printIntLine(i32 noundef) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__CWE129_fgets_01_good() #0 !dbg !97 { -entry: - call void @goodG2B(), !dbg !98 - call void @goodB2G(), !dbg !99 - ret void, !dbg !100 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !101 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !106, metadata !DIExpression()), !dbg !107 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !108, metadata !DIExpression()), !dbg !109 - %call = call i64 @time(ptr noundef null) #7, !dbg !110 - %conv = trunc i64 %call to i32, !dbg !111 - call void @srand(i32 noundef %conv) #7, !dbg !112 - call void @printLine(ptr noundef @.str.2), !dbg !113 - call void @CWE126_Buffer_Overread__CWE129_fgets_01_good(), !dbg !114 - call void @printLine(ptr noundef @.str.3), !dbg !115 - call void @printLine(ptr noundef @.str.4), !dbg !116 - call void @CWE126_Buffer_Overread__CWE129_fgets_01_bad(), !dbg !117 - call void @printLine(ptr noundef @.str.5), !dbg !118 - ret i32 0, !dbg !119 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !120 { -entry: - %data = alloca i32, align 4 - %buffer = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !121, metadata !DIExpression()), !dbg !122 - store i32 -1, ptr %data, align 4, !dbg !123 - store i32 7, ptr %data, align 4, !dbg !124 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !125, metadata !DIExpression()), !dbg !127 - call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !127 - %0 = load i32, ptr %data, align 4, !dbg !128 - %cmp = icmp sge i32 %0, 0, !dbg !130 - br i1 %cmp, label %if.then, label %if.else, !dbg !131 - -if.then: ; preds = %entry - %1 = load i32, ptr %data, align 4, !dbg !132 - %idxprom = sext i32 %1 to i64, !dbg !134 - %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !134 - %2 = load i32, ptr %arrayidx, align 4, !dbg !134 - call void @printIntLine(i32 noundef %2), !dbg !135 - %arraydecay = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !136 - %3 = load i32, ptr %data, align 4, !dbg !137 - %conv = sext i32 %3 to i64, !dbg !137 - %mul = mul i64 %conv, 4, !dbg !138 - %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay, i64 noundef %mul), !dbg !139 - br label %if.end, !dbg !140 - -if.else: ; preds = %entry - call void @printLine(ptr noundef @.str.1), !dbg !141 - br label %if.end - -if.end: ; preds = %if.else, %if.then - ret void, !dbg !143 -} - -declare i32 @SAFE_BUFACCESS(...) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodB2G() #0 !dbg !144 { -entry: - %data = alloca i32, align 4 - %inputBuffer = alloca [14 x i8], align 1 - %buffer = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !145, metadata !DIExpression()), !dbg !146 - store i32 -1, ptr %data, align 4, !dbg !147 - call void @llvm.dbg.declare(metadata ptr %inputBuffer, metadata !148, metadata !DIExpression()), !dbg !150 - call void @llvm.memset.p0.i64(ptr align 1 %inputBuffer, i8 0, i64 14, i1 false), !dbg !150 - %arraydecay = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !151 - %0 = load ptr, ptr @stdin, align 8, !dbg !153 - %call = call ptr @fgets(ptr noundef %arraydecay, i32 noundef 14, ptr noundef %0), !dbg !154 - %cmp = icmp ne ptr %call, null, !dbg !155 - br i1 %cmp, label %if.then, label %if.else, !dbg !156 - -if.then: ; preds = %entry - %arraydecay1 = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !157 - %call2 = call i32 @atoi(ptr noundef %arraydecay1) #6, !dbg !159 - store i32 %call2, ptr %data, align 4, !dbg !160 - br label %if.end, !dbg !161 - -if.else: ; preds = %entry - call void @printLine(ptr noundef @.str), !dbg !162 - br label %if.end - -if.end: ; preds = %if.else, %if.then - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !164, metadata !DIExpression()), !dbg !166 - call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !166 - %1 = load i32, ptr %data, align 4, !dbg !167 - %cmp3 = icmp sge i32 %1, 0, !dbg !169 - br i1 %cmp3, label %land.lhs.true, label %if.else6, !dbg !170 - -land.lhs.true: ; preds = %if.end - %2 = load i32, ptr %data, align 4, !dbg !171 - %cmp4 = icmp slt i32 %2, 10, !dbg !172 - br i1 %cmp4, label %if.then5, label %if.else6, !dbg !173 - -if.then5: ; preds = %land.lhs.true - %3 = load i32, ptr %data, align 4, !dbg !174 - %idxprom = sext i32 %3 to i64, !dbg !176 - %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !176 - %4 = load i32, ptr %arrayidx, align 4, !dbg !176 - call void @printIntLine(i32 noundef %4), !dbg !177 - br label %if.end7, !dbg !178 - -if.else6: ; preds = %land.lhs.true, %if.end - call void @printLine(ptr noundef @.str.6), !dbg !179 - br label %if.end7 - -if.end7: ; preds = %if.else6, %if.then5 - ret void, !dbg !181 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind willreturn memory(read) } -attributes #7 = { nounwind } - -!llvm.dbg.cu = !{!34} -!llvm.module.flags = !{!40, !41, !42, !43, !44, !45, !46} -!llvm.ident = !{!47} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 39, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fgets_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a179e9a2901e63afe956806572d6a04a") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 16) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 53, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 248, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 31) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 140, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 18) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 142, type: !3, isLocal: true, isDefinition: true) -!19 = !DIGlobalVariableExpression(var: !20, expr: !DIExpression()) -!20 = distinct !DIGlobalVariable(scope: null, file: !2, line: 145, type: !21, isLocal: true, isDefinition: true) -!21 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !22) -!22 = !{!23} -!23 = !DISubrange(count: 17) -!24 = !DIGlobalVariableExpression(var: !25, expr: !DIExpression()) -!25 = distinct !DIGlobalVariable(scope: null, file: !2, line: 147, type: !26, isLocal: true, isDefinition: true) -!26 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !27) -!27 = !{!28} -!28 = !DISubrange(count: 15) -!29 = !DIGlobalVariableExpression(var: !30, expr: !DIExpression()) -!30 = distinct !DIGlobalVariable(scope: null, file: !2, line: 115, type: !31, isLocal: true, isDefinition: true) -!31 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 288, elements: !32) -!32 = !{!33} -!33 = !DISubrange(count: 36) -!34 = distinct !DICompileUnit(language: DW_LANG_C11, file: !35, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !36, globals: !39, splitDebugInlining: false, nameTableKind: None) -!35 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fgets_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a179e9a2901e63afe956806572d6a04a") -!36 = !{!37, !38} -!37 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!38 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!39 = !{!0, !7, !12, !17, !19, !24, !29} -!40 = !{i32 7, !"Dwarf Version", i32 5} -!41 = !{i32 2, !"Debug Info Version", i32 3} -!42 = !{i32 1, !"wchar_size", i32 4} -!43 = !{i32 8, !"PIC Level", i32 2} -!44 = !{i32 7, !"PIE Level", i32 2} -!45 = !{i32 7, !"uwtable", i32 2} -!46 = !{i32 7, !"frame-pointer", i32 2} -!47 = !{!"clang version 16.0.0"} -!48 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__CWE129_fgets_01_bad", scope: !2, file: !2, line: 24, type: !49, scopeLine: 25, spFlags: DISPFlagDefinition, unit: !34, retainedNodes: !51) -!49 = !DISubroutineType(types: !50) -!50 = !{null} -!51 = !{} -!52 = !DILocalVariable(name: "data", scope: !48, file: !2, line: 26, type: !53) -!53 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!54 = !DILocation(line: 26, column: 9, scope: !48) -!55 = !DILocation(line: 28, column: 10, scope: !48) -!56 = !DILocalVariable(name: "inputBuffer", scope: !57, file: !2, line: 30, type: !58) -!57 = distinct !DILexicalBlock(scope: !48, file: !2, line: 29, column: 5) -!58 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 112, elements: !59) -!59 = !{!60} -!60 = !DISubrange(count: 14) -!61 = !DILocation(line: 30, column: 14, scope: !57) -!62 = !DILocation(line: 32, column: 19, scope: !63) -!63 = distinct !DILexicalBlock(scope: !57, file: !2, line: 32, column: 13) -!64 = !DILocation(line: 32, column: 49, scope: !63) -!65 = !DILocation(line: 32, column: 13, scope: !63) -!66 = !DILocation(line: 32, column: 56, scope: !63) -!67 = !DILocation(line: 32, column: 13, scope: !57) -!68 = !DILocation(line: 35, column: 25, scope: !69) -!69 = distinct !DILexicalBlock(scope: !63, file: !2, line: 33, column: 9) -!70 = !DILocation(line: 35, column: 20, scope: !69) -!71 = !DILocation(line: 35, column: 18, scope: !69) -!72 = !DILocation(line: 36, column: 9, scope: !69) -!73 = !DILocation(line: 39, column: 13, scope: !74) -!74 = distinct !DILexicalBlock(scope: !63, file: !2, line: 38, column: 9) -!75 = !DILocalVariable(name: "buffer", scope: !76, file: !2, line: 43, type: !77) -!76 = distinct !DILexicalBlock(scope: !48, file: !2, line: 42, column: 5) -!77 = !DICompositeType(tag: DW_TAG_array_type, baseType: !53, size: 320, elements: !78) -!78 = !{!79} -!79 = !DISubrange(count: 10) -!80 = !DILocation(line: 43, column: 13, scope: !76) -!81 = !DILocation(line: 46, column: 13, scope: !82) -!82 = distinct !DILexicalBlock(scope: !76, file: !2, line: 46, column: 13) -!83 = !DILocation(line: 46, column: 18, scope: !82) -!84 = !DILocation(line: 46, column: 13, scope: !76) -!85 = !DILocation(line: 48, column: 33, scope: !86) -!86 = distinct !DILexicalBlock(scope: !82, file: !2, line: 47, column: 9) -!87 = !DILocation(line: 48, column: 26, scope: !86) -!88 = !DILocation(line: 48, column: 13, scope: !86) -!89 = !DILocation(line: 49, column: 30, scope: !86) -!90 = !DILocation(line: 49, column: 38, scope: !86) -!91 = !DILocation(line: 49, column: 42, scope: !86) -!92 = !DILocation(line: 49, column: 13, scope: !86) -!93 = !DILocation(line: 50, column: 9, scope: !86) -!94 = !DILocation(line: 53, column: 13, scope: !95) -!95 = distinct !DILexicalBlock(scope: !82, file: !2, line: 52, column: 9) -!96 = !DILocation(line: 56, column: 1, scope: !48) -!97 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__CWE129_fgets_01_good", scope: !2, file: !2, line: 120, type: !49, scopeLine: 121, spFlags: DISPFlagDefinition, unit: !34, retainedNodes: !51) -!98 = !DILocation(line: 122, column: 5, scope: !97) -!99 = !DILocation(line: 123, column: 5, scope: !97) -!100 = !DILocation(line: 124, column: 1, scope: !97) -!101 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 135, type: !102, scopeLine: 136, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !34, retainedNodes: !51) -!102 = !DISubroutineType(types: !103) -!103 = !{!53, !53, !104} -!104 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !105, size: 64) -!105 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!106 = !DILocalVariable(name: "argc", arg: 1, scope: !101, file: !2, line: 135, type: !53) -!107 = !DILocation(line: 135, column: 14, scope: !101) -!108 = !DILocalVariable(name: "argv", arg: 2, scope: !101, file: !2, line: 135, type: !104) -!109 = !DILocation(line: 135, column: 27, scope: !101) -!110 = !DILocation(line: 138, column: 22, scope: !101) -!111 = !DILocation(line: 138, column: 12, scope: !101) -!112 = !DILocation(line: 138, column: 5, scope: !101) -!113 = !DILocation(line: 140, column: 5, scope: !101) -!114 = !DILocation(line: 141, column: 5, scope: !101) -!115 = !DILocation(line: 142, column: 5, scope: !101) -!116 = !DILocation(line: 145, column: 5, scope: !101) -!117 = !DILocation(line: 146, column: 5, scope: !101) -!118 = !DILocation(line: 147, column: 5, scope: !101) -!119 = !DILocation(line: 149, column: 5, scope: !101) -!120 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 63, type: !49, scopeLine: 64, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !34, retainedNodes: !51) -!121 = !DILocalVariable(name: "data", scope: !120, file: !2, line: 65, type: !53) -!122 = !DILocation(line: 65, column: 9, scope: !120) -!123 = !DILocation(line: 67, column: 10, scope: !120) -!124 = !DILocation(line: 70, column: 10, scope: !120) -!125 = !DILocalVariable(name: "buffer", scope: !126, file: !2, line: 72, type: !77) -!126 = distinct !DILexicalBlock(scope: !120, file: !2, line: 71, column: 5) -!127 = !DILocation(line: 72, column: 13, scope: !126) -!128 = !DILocation(line: 75, column: 13, scope: !129) -!129 = distinct !DILexicalBlock(scope: !126, file: !2, line: 75, column: 13) -!130 = !DILocation(line: 75, column: 18, scope: !129) -!131 = !DILocation(line: 75, column: 13, scope: !126) -!132 = !DILocation(line: 77, column: 33, scope: !133) -!133 = distinct !DILexicalBlock(scope: !129, file: !2, line: 76, column: 9) -!134 = !DILocation(line: 77, column: 26, scope: !133) -!135 = !DILocation(line: 77, column: 13, scope: !133) -!136 = !DILocation(line: 78, column: 28, scope: !133) -!137 = !DILocation(line: 78, column: 36, scope: !133) -!138 = !DILocation(line: 78, column: 40, scope: !133) -!139 = !DILocation(line: 78, column: 13, scope: !133) -!140 = !DILocation(line: 79, column: 9, scope: !133) -!141 = !DILocation(line: 82, column: 13, scope: !142) -!142 = distinct !DILexicalBlock(scope: !129, file: !2, line: 81, column: 9) -!143 = !DILocation(line: 85, column: 1, scope: !120) -!144 = distinct !DISubprogram(name: "goodB2G", scope: !2, file: !2, line: 88, type: !49, scopeLine: 89, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !34, retainedNodes: !51) -!145 = !DILocalVariable(name: "data", scope: !144, file: !2, line: 90, type: !53) -!146 = !DILocation(line: 90, column: 9, scope: !144) -!147 = !DILocation(line: 92, column: 10, scope: !144) -!148 = !DILocalVariable(name: "inputBuffer", scope: !149, file: !2, line: 94, type: !58) -!149 = distinct !DILexicalBlock(scope: !144, file: !2, line: 93, column: 5) -!150 = !DILocation(line: 94, column: 14, scope: !149) -!151 = !DILocation(line: 96, column: 19, scope: !152) -!152 = distinct !DILexicalBlock(scope: !149, file: !2, line: 96, column: 13) -!153 = !DILocation(line: 96, column: 49, scope: !152) -!154 = !DILocation(line: 96, column: 13, scope: !152) -!155 = !DILocation(line: 96, column: 56, scope: !152) -!156 = !DILocation(line: 96, column: 13, scope: !149) -!157 = !DILocation(line: 99, column: 25, scope: !158) -!158 = distinct !DILexicalBlock(scope: !152, file: !2, line: 97, column: 9) -!159 = !DILocation(line: 99, column: 20, scope: !158) -!160 = !DILocation(line: 99, column: 18, scope: !158) -!161 = !DILocation(line: 100, column: 9, scope: !158) -!162 = !DILocation(line: 103, column: 13, scope: !163) -!163 = distinct !DILexicalBlock(scope: !152, file: !2, line: 102, column: 9) -!164 = !DILocalVariable(name: "buffer", scope: !165, file: !2, line: 107, type: !77) -!165 = distinct !DILexicalBlock(scope: !144, file: !2, line: 106, column: 5) -!166 = !DILocation(line: 107, column: 13, scope: !165) -!167 = !DILocation(line: 109, column: 13, scope: !168) -!168 = distinct !DILexicalBlock(scope: !165, file: !2, line: 109, column: 13) -!169 = !DILocation(line: 109, column: 18, scope: !168) -!170 = !DILocation(line: 109, column: 23, scope: !168) -!171 = !DILocation(line: 109, column: 26, scope: !168) -!172 = !DILocation(line: 109, column: 31, scope: !168) -!173 = !DILocation(line: 109, column: 13, scope: !165) -!174 = !DILocation(line: 111, column: 33, scope: !175) -!175 = distinct !DILexicalBlock(scope: !168, file: !2, line: 110, column: 9) -!176 = !DILocation(line: 111, column: 26, scope: !175) -!177 = !DILocation(line: 111, column: 13, scope: !175) -!178 = !DILocation(line: 112, column: 9, scope: !175) -!179 = !DILocation(line: 115, column: 13, scope: !180) -!180 = distinct !DILexicalBlock(scope: !168, file: !2, line: 114, column: 9) -!181 = !DILocation(line: 118, column: 1, scope: !144) diff --git a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fscanf_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fscanf_01.c.bc deleted file mode 100644 index f15abd0d..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fscanf_01.c.bc +++ /dev/null @@ -1,338 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fscanf_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fscanf_01.c" -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-unknown-linux-gnu" - -@stdin = external global ptr, align 8 -@.str = private unnamed_addr constant [3 x i8] c"%d\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [31 x i8] c"ERROR: Array index is negative\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !17 -@.str.4 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !22 -@.str.5 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !27 -@.str.6 = private unnamed_addr constant [36 x i8] c"ERROR: Array index is out-of-bounds\00", align 1, !dbg !32 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__CWE129_fscanf_01_bad() #0 !dbg !50 { -entry: - %data = alloca i32, align 4 - %buffer = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !54, metadata !DIExpression()), !dbg !56 - store i32 -1, ptr %data, align 4, !dbg !57 - %0 = load ptr, ptr @stdin, align 8, !dbg !58 - %call = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %0, ptr noundef @.str, ptr noundef %data), !dbg !59 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !60, metadata !DIExpression()), !dbg !65 - call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !65 - %1 = load i32, ptr %data, align 4, !dbg !66 - %cmp = icmp sge i32 %1, 0, !dbg !68 - br i1 %cmp, label %if.then, label %if.else, !dbg !69 - -if.then: ; preds = %entry - %2 = load i32, ptr %data, align 4, !dbg !70 - %idxprom = sext i32 %2 to i64, !dbg !72 - %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !72 - %3 = load i32, ptr %arrayidx, align 4, !dbg !72 - call void @printIntLine(i32 noundef %3), !dbg !73 - %arraydecay = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !74 - %4 = load i32, ptr %data, align 4, !dbg !75 - %conv = sext i32 %4 to i64, !dbg !75 - %mul = mul i64 %conv, 4, !dbg !76 - %call1 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay, i64 noundef %mul), !dbg !77 - br label %if.end, !dbg !78 - -if.else: ; preds = %entry - call void @printLine(ptr noundef @.str.1), !dbg !79 - br label %if.end - -if.end: ; preds = %if.else, %if.then - ret void, !dbg !81 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -declare i32 @__isoc99_fscanf(ptr noundef, ptr noundef, ...) #2 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3 - -declare void @printIntLine(i32 noundef) #2 - -declare i32 @UNSAFE_BUFACCESS(...) #2 - -declare void @printLine(ptr noundef) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__CWE129_fscanf_01_good() #0 !dbg !82 { -entry: - call void @goodG2B(), !dbg !83 - call void @goodB2G(), !dbg !84 - ret void, !dbg !85 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !86 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !91, metadata !DIExpression()), !dbg !92 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !93, metadata !DIExpression()), !dbg !94 - %call = call i64 @time(ptr noundef null) #5, !dbg !95 - %conv = trunc i64 %call to i32, !dbg !96 - call void @srand(i32 noundef %conv) #5, !dbg !97 - call void @printLine(ptr noundef @.str.2), !dbg !98 - call void @CWE126_Buffer_Overread__CWE129_fscanf_01_good(), !dbg !99 - call void @printLine(ptr noundef @.str.3), !dbg !100 - call void @printLine(ptr noundef @.str.4), !dbg !101 - call void @CWE126_Buffer_Overread__CWE129_fscanf_01_bad(), !dbg !102 - call void @printLine(ptr noundef @.str.5), !dbg !103 - ret i32 0, !dbg !104 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !105 { -entry: - %data = alloca i32, align 4 - %buffer = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !106, metadata !DIExpression()), !dbg !107 - store i32 -1, ptr %data, align 4, !dbg !108 - store i32 7, ptr %data, align 4, !dbg !109 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !110, metadata !DIExpression()), !dbg !112 - call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !112 - %0 = load i32, ptr %data, align 4, !dbg !113 - %cmp = icmp sge i32 %0, 0, !dbg !115 - br i1 %cmp, label %if.then, label %if.else, !dbg !116 - -if.then: ; preds = %entry - %1 = load i32, ptr %data, align 4, !dbg !117 - %idxprom = sext i32 %1 to i64, !dbg !119 - %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !119 - %2 = load i32, ptr %arrayidx, align 4, !dbg !119 - call void @printIntLine(i32 noundef %2), !dbg !120 - %arraydecay = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !121 - %3 = load i32, ptr %data, align 4, !dbg !122 - %conv = sext i32 %3 to i64, !dbg !122 - %mul = mul i64 %conv, 4, !dbg !123 - %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay, i64 noundef %mul), !dbg !124 - br label %if.end, !dbg !125 - -if.else: ; preds = %entry - call void @printLine(ptr noundef @.str.1), !dbg !126 - br label %if.end - -if.end: ; preds = %if.else, %if.then - ret void, !dbg !128 -} - -declare i32 @SAFE_BUFACCESS(...) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodB2G() #0 !dbg !129 { -entry: - %data = alloca i32, align 4 - %buffer = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !130, metadata !DIExpression()), !dbg !131 - store i32 -1, ptr %data, align 4, !dbg !132 - %0 = load ptr, ptr @stdin, align 8, !dbg !133 - %call = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %0, ptr noundef @.str, ptr noundef %data), !dbg !134 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !135, metadata !DIExpression()), !dbg !137 - call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !137 - %1 = load i32, ptr %data, align 4, !dbg !138 - %cmp = icmp sge i32 %1, 0, !dbg !140 - br i1 %cmp, label %land.lhs.true, label %if.else, !dbg !141 - -land.lhs.true: ; preds = %entry - %2 = load i32, ptr %data, align 4, !dbg !142 - %cmp1 = icmp slt i32 %2, 10, !dbg !143 - br i1 %cmp1, label %if.then, label %if.else, !dbg !144 - -if.then: ; preds = %land.lhs.true - %3 = load i32, ptr %data, align 4, !dbg !145 - %idxprom = sext i32 %3 to i64, !dbg !147 - %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !147 - %4 = load i32, ptr %arrayidx, align 4, !dbg !147 - call void @printIntLine(i32 noundef %4), !dbg !148 - br label %if.end, !dbg !149 - -if.else: ; preds = %land.lhs.true, %entry - call void @printLine(ptr noundef @.str.6), !dbg !150 - br label %if.end - -if.end: ; preds = %if.else, %if.then - ret void, !dbg !152 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } - -!llvm.dbg.cu = !{!37} -!llvm.module.flags = !{!42, !43, !44, !45, !46, !47, !48} -!llvm.ident = !{!49} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 28, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fscanf_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "41aeea6fcf31b631ab24d92c7ac81d5a") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 24, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 3) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 40, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 248, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 31) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 116, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 18) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 118, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 16) -!22 = !DIGlobalVariableExpression(var: !23, expr: !DIExpression()) -!23 = distinct !DIGlobalVariable(scope: null, file: !2, line: 121, type: !24, isLocal: true, isDefinition: true) -!24 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !25) -!25 = !{!26} -!26 = !DISubrange(count: 17) -!27 = !DIGlobalVariableExpression(var: !28, expr: !DIExpression()) -!28 = distinct !DIGlobalVariable(scope: null, file: !2, line: 123, type: !29, isLocal: true, isDefinition: true) -!29 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !30) -!30 = !{!31} -!31 = !DISubrange(count: 15) -!32 = !DIGlobalVariableExpression(var: !33, expr: !DIExpression()) -!33 = distinct !DIGlobalVariable(scope: null, file: !2, line: 91, type: !34, isLocal: true, isDefinition: true) -!34 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 288, elements: !35) -!35 = !{!36} -!36 = !DISubrange(count: 36) -!37 = distinct !DICompileUnit(language: DW_LANG_C11, file: !38, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !39, globals: !41, splitDebugInlining: false, nameTableKind: None) -!38 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_fscanf_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "41aeea6fcf31b631ab24d92c7ac81d5a") -!39 = !{!40} -!40 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!41 = !{!0, !7, !12, !17, !22, !27, !32} -!42 = !{i32 7, !"Dwarf Version", i32 5} -!43 = !{i32 2, !"Debug Info Version", i32 3} -!44 = !{i32 1, !"wchar_size", i32 4} -!45 = !{i32 8, !"PIC Level", i32 2} -!46 = !{i32 7, !"PIE Level", i32 2} -!47 = !{i32 7, !"uwtable", i32 2} -!48 = !{i32 7, !"frame-pointer", i32 2} -!49 = !{!"clang version 16.0.0"} -!50 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__CWE129_fscanf_01_bad", scope: !2, file: !2, line: 22, type: !51, scopeLine: 23, spFlags: DISPFlagDefinition, unit: !37, retainedNodes: !53) -!51 = !DISubroutineType(types: !52) -!52 = !{null} -!53 = !{} -!54 = !DILocalVariable(name: "data", scope: !50, file: !2, line: 24, type: !55) -!55 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!56 = !DILocation(line: 24, column: 9, scope: !50) -!57 = !DILocation(line: 26, column: 10, scope: !50) -!58 = !DILocation(line: 28, column: 12, scope: !50) -!59 = !DILocation(line: 28, column: 5, scope: !50) -!60 = !DILocalVariable(name: "buffer", scope: !61, file: !2, line: 30, type: !62) -!61 = distinct !DILexicalBlock(scope: !50, file: !2, line: 29, column: 5) -!62 = !DICompositeType(tag: DW_TAG_array_type, baseType: !55, size: 320, elements: !63) -!63 = !{!64} -!64 = !DISubrange(count: 10) -!65 = !DILocation(line: 30, column: 13, scope: !61) -!66 = !DILocation(line: 33, column: 13, scope: !67) -!67 = distinct !DILexicalBlock(scope: !61, file: !2, line: 33, column: 13) -!68 = !DILocation(line: 33, column: 18, scope: !67) -!69 = !DILocation(line: 33, column: 13, scope: !61) -!70 = !DILocation(line: 35, column: 33, scope: !71) -!71 = distinct !DILexicalBlock(scope: !67, file: !2, line: 34, column: 9) -!72 = !DILocation(line: 35, column: 26, scope: !71) -!73 = !DILocation(line: 35, column: 13, scope: !71) -!74 = !DILocation(line: 36, column: 30, scope: !71) -!75 = !DILocation(line: 36, column: 38, scope: !71) -!76 = !DILocation(line: 36, column: 42, scope: !71) -!77 = !DILocation(line: 36, column: 13, scope: !71) -!78 = !DILocation(line: 37, column: 9, scope: !71) -!79 = !DILocation(line: 40, column: 13, scope: !80) -!80 = distinct !DILexicalBlock(scope: !67, file: !2, line: 39, column: 9) -!81 = !DILocation(line: 43, column: 1, scope: !50) -!82 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__CWE129_fscanf_01_good", scope: !2, file: !2, line: 96, type: !51, scopeLine: 97, spFlags: DISPFlagDefinition, unit: !37, retainedNodes: !53) -!83 = !DILocation(line: 98, column: 5, scope: !82) -!84 = !DILocation(line: 99, column: 5, scope: !82) -!85 = !DILocation(line: 100, column: 1, scope: !82) -!86 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 111, type: !87, scopeLine: 112, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !37, retainedNodes: !53) -!87 = !DISubroutineType(types: !88) -!88 = !{!55, !55, !89} -!89 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !90, size: 64) -!90 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!91 = !DILocalVariable(name: "argc", arg: 1, scope: !86, file: !2, line: 111, type: !55) -!92 = !DILocation(line: 111, column: 14, scope: !86) -!93 = !DILocalVariable(name: "argv", arg: 2, scope: !86, file: !2, line: 111, type: !89) -!94 = !DILocation(line: 111, column: 27, scope: !86) -!95 = !DILocation(line: 114, column: 22, scope: !86) -!96 = !DILocation(line: 114, column: 12, scope: !86) -!97 = !DILocation(line: 114, column: 5, scope: !86) -!98 = !DILocation(line: 116, column: 5, scope: !86) -!99 = !DILocation(line: 117, column: 5, scope: !86) -!100 = !DILocation(line: 118, column: 5, scope: !86) -!101 = !DILocation(line: 121, column: 5, scope: !86) -!102 = !DILocation(line: 122, column: 5, scope: !86) -!103 = !DILocation(line: 123, column: 5, scope: !86) -!104 = !DILocation(line: 125, column: 5, scope: !86) -!105 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 50, type: !51, scopeLine: 51, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !37, retainedNodes: !53) -!106 = !DILocalVariable(name: "data", scope: !105, file: !2, line: 52, type: !55) -!107 = !DILocation(line: 52, column: 9, scope: !105) -!108 = !DILocation(line: 54, column: 10, scope: !105) -!109 = !DILocation(line: 57, column: 10, scope: !105) -!110 = !DILocalVariable(name: "buffer", scope: !111, file: !2, line: 59, type: !62) -!111 = distinct !DILexicalBlock(scope: !105, file: !2, line: 58, column: 5) -!112 = !DILocation(line: 59, column: 13, scope: !111) -!113 = !DILocation(line: 62, column: 13, scope: !114) -!114 = distinct !DILexicalBlock(scope: !111, file: !2, line: 62, column: 13) -!115 = !DILocation(line: 62, column: 18, scope: !114) -!116 = !DILocation(line: 62, column: 13, scope: !111) -!117 = !DILocation(line: 64, column: 33, scope: !118) -!118 = distinct !DILexicalBlock(scope: !114, file: !2, line: 63, column: 9) -!119 = !DILocation(line: 64, column: 26, scope: !118) -!120 = !DILocation(line: 64, column: 13, scope: !118) -!121 = !DILocation(line: 65, column: 28, scope: !118) -!122 = !DILocation(line: 65, column: 36, scope: !118) -!123 = !DILocation(line: 65, column: 40, scope: !118) -!124 = !DILocation(line: 65, column: 13, scope: !118) -!125 = !DILocation(line: 66, column: 9, scope: !118) -!126 = !DILocation(line: 69, column: 13, scope: !127) -!127 = distinct !DILexicalBlock(scope: !114, file: !2, line: 68, column: 9) -!128 = !DILocation(line: 72, column: 1, scope: !105) -!129 = distinct !DISubprogram(name: "goodB2G", scope: !2, file: !2, line: 75, type: !51, scopeLine: 76, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !37, retainedNodes: !53) -!130 = !DILocalVariable(name: "data", scope: !129, file: !2, line: 77, type: !55) -!131 = !DILocation(line: 77, column: 9, scope: !129) -!132 = !DILocation(line: 79, column: 10, scope: !129) -!133 = !DILocation(line: 81, column: 12, scope: !129) -!134 = !DILocation(line: 81, column: 5, scope: !129) -!135 = !DILocalVariable(name: "buffer", scope: !136, file: !2, line: 83, type: !62) -!136 = distinct !DILexicalBlock(scope: !129, file: !2, line: 82, column: 5) -!137 = !DILocation(line: 83, column: 13, scope: !136) -!138 = !DILocation(line: 85, column: 13, scope: !139) -!139 = distinct !DILexicalBlock(scope: !136, file: !2, line: 85, column: 13) -!140 = !DILocation(line: 85, column: 18, scope: !139) -!141 = !DILocation(line: 85, column: 23, scope: !139) -!142 = !DILocation(line: 85, column: 26, scope: !139) -!143 = !DILocation(line: 85, column: 31, scope: !139) -!144 = !DILocation(line: 85, column: 13, scope: !136) -!145 = !DILocation(line: 87, column: 33, scope: !146) -!146 = distinct !DILexicalBlock(scope: !139, file: !2, line: 86, column: 9) -!147 = !DILocation(line: 87, column: 26, scope: !146) -!148 = !DILocation(line: 87, column: 13, scope: !146) -!149 = !DILocation(line: 88, column: 9, scope: !146) -!150 = !DILocation(line: 91, column: 13, scope: !151) -!151 = distinct !DILexicalBlock(scope: !139, file: !2, line: 90, column: 9) -!152 = !DILocation(line: 94, column: 1, scope: !129) diff --git a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_listen_socket_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_listen_socket_01.c.bc deleted file mode 100644 index 76b254e2..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_listen_socket_01.c.bc +++ /dev/null @@ -1,824 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_listen_socket_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_listen_socket_01.c" -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-unknown-linux-gnu" - -%struct.sockaddr_in = type { i16, i16, %struct.in_addr, [8 x i8] } -%struct.in_addr = type { i32 } - -@.str = private unnamed_addr constant [31 x i8] c"ERROR: Array index is negative\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !17 -@.str.4 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !22 -@.str.5 = private unnamed_addr constant [36 x i8] c"ERROR: Array index is out-of-bounds\00", align 1, !dbg !27 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__CWE129_listen_socket_01_bad() #0 !dbg !104 { -entry: - %data = alloca i32, align 4 - %recvResult = alloca i32, align 4 - %service = alloca %struct.sockaddr_in, align 4 - %listenSocket = alloca i32, align 4 - %acceptSocket = alloca i32, align 4 - %inputBuffer = alloca [14 x i8], align 1 - %buffer = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !108, metadata !DIExpression()), !dbg !110 - store i32 -1, ptr %data, align 4, !dbg !111 - call void @llvm.dbg.declare(metadata ptr %recvResult, metadata !112, metadata !DIExpression()), !dbg !114 - call void @llvm.dbg.declare(metadata ptr %service, metadata !115, metadata !DIExpression()), !dbg !132 - call void @llvm.dbg.declare(metadata ptr %listenSocket, metadata !133, metadata !DIExpression()), !dbg !134 - store i32 -1, ptr %listenSocket, align 4, !dbg !134 - call void @llvm.dbg.declare(metadata ptr %acceptSocket, metadata !135, metadata !DIExpression()), !dbg !136 - store i32 -1, ptr %acceptSocket, align 4, !dbg !136 - call void @llvm.dbg.declare(metadata ptr %inputBuffer, metadata !137, metadata !DIExpression()), !dbg !138 - br label %do.body, !dbg !139 - -do.body: ; preds = %entry - %call = call i32 @socket(i32 noundef 2, i32 noundef 1, i32 noundef 6) #7, !dbg !140 - store i32 %call, ptr %listenSocket, align 4, !dbg !142 - %0 = load i32, ptr %listenSocket, align 4, !dbg !143 - %cmp = icmp eq i32 %0, -1, !dbg !145 - br i1 %cmp, label %if.then, label %if.end, !dbg !146 - -if.then: ; preds = %do.body - br label %do.end, !dbg !147 - -if.end: ; preds = %do.body - call void @llvm.memset.p0.i64(ptr align 4 %service, i8 0, i64 16, i1 false), !dbg !149 - %sin_family = getelementptr inbounds %struct.sockaddr_in, ptr %service, i32 0, i32 0, !dbg !150 - store i16 2, ptr %sin_family, align 4, !dbg !151 - %sin_addr = getelementptr inbounds %struct.sockaddr_in, ptr %service, i32 0, i32 2, !dbg !152 - %s_addr = getelementptr inbounds %struct.in_addr, ptr %sin_addr, i32 0, i32 0, !dbg !153 - store i32 0, ptr %s_addr, align 4, !dbg !154 - %call1 = call zeroext i16 @htons(i16 noundef zeroext 27015) #8, !dbg !155 - %sin_port = getelementptr inbounds %struct.sockaddr_in, ptr %service, i32 0, i32 1, !dbg !156 - store i16 %call1, ptr %sin_port, align 2, !dbg !157 - %1 = load i32, ptr %listenSocket, align 4, !dbg !158 - %call2 = call i32 @bind(i32 noundef %1, ptr noundef %service, i32 noundef 16) #7, !dbg !160 - %cmp3 = icmp eq i32 %call2, -1, !dbg !161 - br i1 %cmp3, label %if.then4, label %if.end5, !dbg !162 - -if.then4: ; preds = %if.end - br label %do.end, !dbg !163 - -if.end5: ; preds = %if.end - %2 = load i32, ptr %listenSocket, align 4, !dbg !165 - %call6 = call i32 @listen(i32 noundef %2, i32 noundef 5) #7, !dbg !167 - %cmp7 = icmp eq i32 %call6, -1, !dbg !168 - br i1 %cmp7, label %if.then8, label %if.end9, !dbg !169 - -if.then8: ; preds = %if.end5 - br label %do.end, !dbg !170 - -if.end9: ; preds = %if.end5 - %3 = load i32, ptr %listenSocket, align 4, !dbg !172 - %call10 = call i32 @accept(i32 noundef %3, ptr noundef null, ptr noundef null), !dbg !173 - store i32 %call10, ptr %acceptSocket, align 4, !dbg !174 - %4 = load i32, ptr %acceptSocket, align 4, !dbg !175 - %cmp11 = icmp eq i32 %4, -1, !dbg !177 - br i1 %cmp11, label %if.then12, label %if.end13, !dbg !178 - -if.then12: ; preds = %if.end9 - br label %do.end, !dbg !179 - -if.end13: ; preds = %if.end9 - %5 = load i32, ptr %acceptSocket, align 4, !dbg !181 - %arraydecay = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !182 - %call14 = call i64 @recv(i32 noundef %5, ptr noundef %arraydecay, i64 noundef 13, i32 noundef 0), !dbg !183 - %conv = trunc i64 %call14 to i32, !dbg !183 - store i32 %conv, ptr %recvResult, align 4, !dbg !184 - %6 = load i32, ptr %recvResult, align 4, !dbg !185 - %cmp15 = icmp eq i32 %6, -1, !dbg !187 - br i1 %cmp15, label %if.then19, label %lor.lhs.false, !dbg !188 - -lor.lhs.false: ; preds = %if.end13 - %7 = load i32, ptr %recvResult, align 4, !dbg !189 - %cmp17 = icmp eq i32 %7, 0, !dbg !190 - br i1 %cmp17, label %if.then19, label %if.end20, !dbg !191 - -if.then19: ; preds = %lor.lhs.false, %if.end13 - br label %do.end, !dbg !192 - -if.end20: ; preds = %lor.lhs.false - %8 = load i32, ptr %recvResult, align 4, !dbg !194 - %idxprom = sext i32 %8 to i64, !dbg !195 - %arrayidx = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 %idxprom, !dbg !195 - store i8 0, ptr %arrayidx, align 1, !dbg !196 - %arraydecay21 = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !197 - %call22 = call i32 @atoi(ptr noundef %arraydecay21) #9, !dbg !198 - store i32 %call22, ptr %data, align 4, !dbg !199 - br label %do.end, !dbg !200 - -do.end: ; preds = %if.end20, %if.then19, %if.then12, %if.then8, %if.then4, %if.then - %9 = load i32, ptr %listenSocket, align 4, !dbg !201 - %cmp23 = icmp ne i32 %9, -1, !dbg !203 - br i1 %cmp23, label %if.then25, label %if.end27, !dbg !204 - -if.then25: ; preds = %do.end - %10 = load i32, ptr %listenSocket, align 4, !dbg !205 - %call26 = call i32 @close(i32 noundef %10), !dbg !207 - br label %if.end27, !dbg !208 - -if.end27: ; preds = %if.then25, %do.end - %11 = load i32, ptr %acceptSocket, align 4, !dbg !209 - %cmp28 = icmp ne i32 %11, -1, !dbg !211 - br i1 %cmp28, label %if.then30, label %if.end32, !dbg !212 - -if.then30: ; preds = %if.end27 - %12 = load i32, ptr %acceptSocket, align 4, !dbg !213 - %call31 = call i32 @close(i32 noundef %12), !dbg !215 - br label %if.end32, !dbg !216 - -if.end32: ; preds = %if.then30, %if.end27 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !217, metadata !DIExpression()), !dbg !222 - call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !222 - %13 = load i32, ptr %data, align 4, !dbg !223 - %cmp33 = icmp sge i32 %13, 0, !dbg !225 - br i1 %cmp33, label %if.then35, label %if.else, !dbg !226 - -if.then35: ; preds = %if.end32 - %14 = load i32, ptr %data, align 4, !dbg !227 - %idxprom36 = sext i32 %14 to i64, !dbg !229 - %arrayidx37 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom36, !dbg !229 - %15 = load i32, ptr %arrayidx37, align 4, !dbg !229 - call void @printIntLine(i32 noundef %15), !dbg !230 - %arraydecay38 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !231 - %16 = load i32, ptr %data, align 4, !dbg !232 - %conv39 = sext i32 %16 to i64, !dbg !232 - %mul = mul i64 %conv39, 4, !dbg !233 - %call40 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %arraydecay38, i64 noundef %mul), !dbg !234 - br label %if.end41, !dbg !235 - -if.else: ; preds = %if.end32 - call void @printLine(ptr noundef @.str), !dbg !236 - br label %if.end41 - -if.end41: ; preds = %if.else, %if.then35 - ret void, !dbg !238 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare i32 @socket(i32 noundef, i32 noundef, i32 noundef) #2 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3 - -; Function Attrs: nounwind willreturn memory(none) -declare zeroext i16 @htons(i16 noundef zeroext) #4 - -; Function Attrs: nounwind -declare i32 @bind(i32 noundef, ptr noundef, i32 noundef) #2 - -; Function Attrs: nounwind -declare i32 @listen(i32 noundef, i32 noundef) #2 - -declare i32 @accept(i32 noundef, ptr noundef, ptr noundef) #5 - -declare i64 @recv(i32 noundef, ptr noundef, i64 noundef, i32 noundef) #5 - -; Function Attrs: nounwind willreturn memory(read) -declare i32 @atoi(ptr noundef) #6 - -declare i32 @close(i32 noundef) #5 - -declare void @printIntLine(i32 noundef) #5 - -declare i32 @UNSAFE_BUFACCESS(...) #5 - -declare void @printLine(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__CWE129_listen_socket_01_good() #0 !dbg !239 { -entry: - call void @goodG2B(), !dbg !240 - call void @goodB2G(), !dbg !241 - ret void, !dbg !242 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !243 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !248, metadata !DIExpression()), !dbg !249 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !250, metadata !DIExpression()), !dbg !251 - %call = call i64 @time(ptr noundef null) #7, !dbg !252 - %conv = trunc i64 %call to i32, !dbg !253 - call void @srand(i32 noundef %conv) #7, !dbg !254 - call void @printLine(ptr noundef @.str.1), !dbg !255 - call void @CWE126_Buffer_Overread__CWE129_listen_socket_01_good(), !dbg !256 - call void @printLine(ptr noundef @.str.2), !dbg !257 - call void @printLine(ptr noundef @.str.3), !dbg !258 - call void @CWE126_Buffer_Overread__CWE129_listen_socket_01_bad(), !dbg !259 - call void @printLine(ptr noundef @.str.4), !dbg !260 - ret i32 0, !dbg !261 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !262 { -entry: - %data = alloca i32, align 4 - %buffer = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !263, metadata !DIExpression()), !dbg !264 - store i32 -1, ptr %data, align 4, !dbg !265 - store i32 7, ptr %data, align 4, !dbg !266 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !267, metadata !DIExpression()), !dbg !269 - call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !269 - %0 = load i32, ptr %data, align 4, !dbg !270 - %cmp = icmp sge i32 %0, 0, !dbg !272 - br i1 %cmp, label %if.then, label %if.else, !dbg !273 - -if.then: ; preds = %entry - %1 = load i32, ptr %data, align 4, !dbg !274 - %idxprom = sext i32 %1 to i64, !dbg !276 - %arrayidx = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom, !dbg !276 - %2 = load i32, ptr %arrayidx, align 4, !dbg !276 - call void @printIntLine(i32 noundef %2), !dbg !277 - %arraydecay = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 0, !dbg !278 - %3 = load i32, ptr %data, align 4, !dbg !279 - %conv = sext i32 %3 to i64, !dbg !279 - %mul = mul i64 %conv, 4, !dbg !280 - %call = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay, i64 noundef %mul), !dbg !281 - br label %if.end, !dbg !282 - -if.else: ; preds = %entry - call void @printLine(ptr noundef @.str), !dbg !283 - br label %if.end - -if.end: ; preds = %if.else, %if.then - ret void, !dbg !285 -} - -declare i32 @SAFE_BUFACCESS(...) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodB2G() #0 !dbg !286 { -entry: - %data = alloca i32, align 4 - %recvResult = alloca i32, align 4 - %service = alloca %struct.sockaddr_in, align 4 - %listenSocket = alloca i32, align 4 - %acceptSocket = alloca i32, align 4 - %inputBuffer = alloca [14 x i8], align 1 - %buffer = alloca [10 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !287, metadata !DIExpression()), !dbg !288 - store i32 -1, ptr %data, align 4, !dbg !289 - call void @llvm.dbg.declare(metadata ptr %recvResult, metadata !290, metadata !DIExpression()), !dbg !292 - call void @llvm.dbg.declare(metadata ptr %service, metadata !293, metadata !DIExpression()), !dbg !294 - call void @llvm.dbg.declare(metadata ptr %listenSocket, metadata !295, metadata !DIExpression()), !dbg !296 - store i32 -1, ptr %listenSocket, align 4, !dbg !296 - call void @llvm.dbg.declare(metadata ptr %acceptSocket, metadata !297, metadata !DIExpression()), !dbg !298 - store i32 -1, ptr %acceptSocket, align 4, !dbg !298 - call void @llvm.dbg.declare(metadata ptr %inputBuffer, metadata !299, metadata !DIExpression()), !dbg !300 - br label %do.body, !dbg !301 - -do.body: ; preds = %entry - %call = call i32 @socket(i32 noundef 2, i32 noundef 1, i32 noundef 6) #7, !dbg !302 - store i32 %call, ptr %listenSocket, align 4, !dbg !304 - %0 = load i32, ptr %listenSocket, align 4, !dbg !305 - %cmp = icmp eq i32 %0, -1, !dbg !307 - br i1 %cmp, label %if.then, label %if.end, !dbg !308 - -if.then: ; preds = %do.body - br label %do.end, !dbg !309 - -if.end: ; preds = %do.body - call void @llvm.memset.p0.i64(ptr align 4 %service, i8 0, i64 16, i1 false), !dbg !311 - %sin_family = getelementptr inbounds %struct.sockaddr_in, ptr %service, i32 0, i32 0, !dbg !312 - store i16 2, ptr %sin_family, align 4, !dbg !313 - %sin_addr = getelementptr inbounds %struct.sockaddr_in, ptr %service, i32 0, i32 2, !dbg !314 - %s_addr = getelementptr inbounds %struct.in_addr, ptr %sin_addr, i32 0, i32 0, !dbg !315 - store i32 0, ptr %s_addr, align 4, !dbg !316 - %call1 = call zeroext i16 @htons(i16 noundef zeroext 27015) #8, !dbg !317 - %sin_port = getelementptr inbounds %struct.sockaddr_in, ptr %service, i32 0, i32 1, !dbg !318 - store i16 %call1, ptr %sin_port, align 2, !dbg !319 - %1 = load i32, ptr %listenSocket, align 4, !dbg !320 - %call2 = call i32 @bind(i32 noundef %1, ptr noundef %service, i32 noundef 16) #7, !dbg !322 - %cmp3 = icmp eq i32 %call2, -1, !dbg !323 - br i1 %cmp3, label %if.then4, label %if.end5, !dbg !324 - -if.then4: ; preds = %if.end - br label %do.end, !dbg !325 - -if.end5: ; preds = %if.end - %2 = load i32, ptr %listenSocket, align 4, !dbg !327 - %call6 = call i32 @listen(i32 noundef %2, i32 noundef 5) #7, !dbg !329 - %cmp7 = icmp eq i32 %call6, -1, !dbg !330 - br i1 %cmp7, label %if.then8, label %if.end9, !dbg !331 - -if.then8: ; preds = %if.end5 - br label %do.end, !dbg !332 - -if.end9: ; preds = %if.end5 - %3 = load i32, ptr %listenSocket, align 4, !dbg !334 - %call10 = call i32 @accept(i32 noundef %3, ptr noundef null, ptr noundef null), !dbg !335 - store i32 %call10, ptr %acceptSocket, align 4, !dbg !336 - %4 = load i32, ptr %acceptSocket, align 4, !dbg !337 - %cmp11 = icmp eq i32 %4, -1, !dbg !339 - br i1 %cmp11, label %if.then12, label %if.end13, !dbg !340 - -if.then12: ; preds = %if.end9 - br label %do.end, !dbg !341 - -if.end13: ; preds = %if.end9 - %5 = load i32, ptr %acceptSocket, align 4, !dbg !343 - %arraydecay = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !344 - %call14 = call i64 @recv(i32 noundef %5, ptr noundef %arraydecay, i64 noundef 13, i32 noundef 0), !dbg !345 - %conv = trunc i64 %call14 to i32, !dbg !345 - store i32 %conv, ptr %recvResult, align 4, !dbg !346 - %6 = load i32, ptr %recvResult, align 4, !dbg !347 - %cmp15 = icmp eq i32 %6, -1, !dbg !349 - br i1 %cmp15, label %if.then19, label %lor.lhs.false, !dbg !350 - -lor.lhs.false: ; preds = %if.end13 - %7 = load i32, ptr %recvResult, align 4, !dbg !351 - %cmp17 = icmp eq i32 %7, 0, !dbg !352 - br i1 %cmp17, label %if.then19, label %if.end20, !dbg !353 - -if.then19: ; preds = %lor.lhs.false, %if.end13 - br label %do.end, !dbg !354 - -if.end20: ; preds = %lor.lhs.false - %8 = load i32, ptr %recvResult, align 4, !dbg !356 - %idxprom = sext i32 %8 to i64, !dbg !357 - %arrayidx = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 %idxprom, !dbg !357 - store i8 0, ptr %arrayidx, align 1, !dbg !358 - %arraydecay21 = getelementptr inbounds [14 x i8], ptr %inputBuffer, i64 0, i64 0, !dbg !359 - %call22 = call i32 @atoi(ptr noundef %arraydecay21) #9, !dbg !360 - store i32 %call22, ptr %data, align 4, !dbg !361 - br label %do.end, !dbg !362 - -do.end: ; preds = %if.end20, %if.then19, %if.then12, %if.then8, %if.then4, %if.then - %9 = load i32, ptr %listenSocket, align 4, !dbg !363 - %cmp23 = icmp ne i32 %9, -1, !dbg !365 - br i1 %cmp23, label %if.then25, label %if.end27, !dbg !366 - -if.then25: ; preds = %do.end - %10 = load i32, ptr %listenSocket, align 4, !dbg !367 - %call26 = call i32 @close(i32 noundef %10), !dbg !369 - br label %if.end27, !dbg !370 - -if.end27: ; preds = %if.then25, %do.end - %11 = load i32, ptr %acceptSocket, align 4, !dbg !371 - %cmp28 = icmp ne i32 %11, -1, !dbg !373 - br i1 %cmp28, label %if.then30, label %if.end32, !dbg !374 - -if.then30: ; preds = %if.end27 - %12 = load i32, ptr %acceptSocket, align 4, !dbg !375 - %call31 = call i32 @close(i32 noundef %12), !dbg !377 - br label %if.end32, !dbg !378 - -if.end32: ; preds = %if.then30, %if.end27 - call void @llvm.dbg.declare(metadata ptr %buffer, metadata !379, metadata !DIExpression()), !dbg !381 - call void @llvm.memset.p0.i64(ptr align 16 %buffer, i8 0, i64 40, i1 false), !dbg !381 - %13 = load i32, ptr %data, align 4, !dbg !382 - %cmp33 = icmp sge i32 %13, 0, !dbg !384 - br i1 %cmp33, label %land.lhs.true, label %if.else, !dbg !385 - -land.lhs.true: ; preds = %if.end32 - %14 = load i32, ptr %data, align 4, !dbg !386 - %cmp35 = icmp slt i32 %14, 10, !dbg !387 - br i1 %cmp35, label %if.then37, label %if.else, !dbg !388 - -if.then37: ; preds = %land.lhs.true - %15 = load i32, ptr %data, align 4, !dbg !389 - %idxprom38 = sext i32 %15 to i64, !dbg !391 - %arrayidx39 = getelementptr inbounds [10 x i32], ptr %buffer, i64 0, i64 %idxprom38, !dbg !391 - %16 = load i32, ptr %arrayidx39, align 4, !dbg !391 - call void @printIntLine(i32 noundef %16), !dbg !392 - br label %if.end40, !dbg !393 - -if.else: ; preds = %land.lhs.true, %if.end32 - call void @printLine(ptr noundef @.str.5), !dbg !394 - br label %if.end40 - -if.end40: ; preds = %if.else, %if.then37 - ret void, !dbg !396 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #4 = { nounwind willreturn memory(none) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind } -attributes #8 = { nounwind willreturn memory(none) } -attributes #9 = { nounwind willreturn memory(read) } - -!llvm.dbg.cu = !{!32} -!llvm.module.flags = !{!96, !97, !98, !99, !100, !101, !102} -!llvm.ident = !{!103} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 129, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_listen_socket_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c6557841ee5df6a945b50d3bcc7c237c") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 248, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 31) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 272, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 18) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 274, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 16) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 277, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 17) -!22 = !DIGlobalVariableExpression(var: !23, expr: !DIExpression()) -!23 = distinct !DIGlobalVariable(scope: null, file: !2, line: 279, type: !24, isLocal: true, isDefinition: true) -!24 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !25) -!25 = !{!26} -!26 = !DISubrange(count: 15) -!27 = !DIGlobalVariableExpression(var: !28, expr: !DIExpression()) -!28 = distinct !DIGlobalVariable(scope: null, file: !2, line: 247, type: !29, isLocal: true, isDefinition: true) -!29 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 288, elements: !30) -!30 = !{!31} -!31 = !DISubrange(count: 36) -!32 = distinct !DICompileUnit(language: DW_LANG_C11, file: !33, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !34, retainedTypes: !77, globals: !95, splitDebugInlining: false, nameTableKind: None) -!33 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__CWE129_listen_socket_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "c6557841ee5df6a945b50d3bcc7c237c") -!34 = !{!35, !48} -!35 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "__socket_type", file: !36, line: 24, baseType: !37, size: 32, elements: !38) -!36 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/socket_type.h", directory: "", checksumkind: CSK_MD5, checksum: "630d972ab4324a8e936ce28b39a40b01") -!37 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!38 = !{!39, !40, !41, !42, !43, !44, !45, !46, !47} -!39 = !DIEnumerator(name: "SOCK_STREAM", value: 1) -!40 = !DIEnumerator(name: "SOCK_DGRAM", value: 2) -!41 = !DIEnumerator(name: "SOCK_RAW", value: 3) -!42 = !DIEnumerator(name: "SOCK_RDM", value: 4) -!43 = !DIEnumerator(name: "SOCK_SEQPACKET", value: 5) -!44 = !DIEnumerator(name: "SOCK_DCCP", value: 6) -!45 = !DIEnumerator(name: "SOCK_PACKET", value: 10) -!46 = !DIEnumerator(name: "SOCK_CLOEXEC", value: 524288) -!47 = !DIEnumerator(name: "SOCK_NONBLOCK", value: 2048) -!48 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !49, line: 40, baseType: !37, size: 32, elements: !50) -!49 = !DIFile(filename: "/usr/include/netinet/in.h", directory: "", checksumkind: CSK_MD5, checksum: "6a5254a491bcdb8c3253de75bf3571c1") -!50 = !{!51, !52, !53, !54, !55, !56, !57, !58, !59, !60, !61, !62, !63, !64, !65, !66, !67, !68, !69, !70, !71, !72, !73, !74, !75, !76} -!51 = !DIEnumerator(name: "IPPROTO_IP", value: 0) -!52 = !DIEnumerator(name: "IPPROTO_ICMP", value: 1) -!53 = !DIEnumerator(name: "IPPROTO_IGMP", value: 2) -!54 = !DIEnumerator(name: "IPPROTO_IPIP", value: 4) -!55 = !DIEnumerator(name: "IPPROTO_TCP", value: 6) -!56 = !DIEnumerator(name: "IPPROTO_EGP", value: 8) -!57 = !DIEnumerator(name: "IPPROTO_PUP", value: 12) -!58 = !DIEnumerator(name: "IPPROTO_UDP", value: 17) -!59 = !DIEnumerator(name: "IPPROTO_IDP", value: 22) -!60 = !DIEnumerator(name: "IPPROTO_TP", value: 29) -!61 = !DIEnumerator(name: "IPPROTO_DCCP", value: 33) -!62 = !DIEnumerator(name: "IPPROTO_IPV6", value: 41) -!63 = !DIEnumerator(name: "IPPROTO_RSVP", value: 46) -!64 = !DIEnumerator(name: "IPPROTO_GRE", value: 47) -!65 = !DIEnumerator(name: "IPPROTO_ESP", value: 50) -!66 = !DIEnumerator(name: "IPPROTO_AH", value: 51) -!67 = !DIEnumerator(name: "IPPROTO_MTP", value: 92) -!68 = !DIEnumerator(name: "IPPROTO_BEETPH", value: 94) -!69 = !DIEnumerator(name: "IPPROTO_ENCAP", value: 98) -!70 = !DIEnumerator(name: "IPPROTO_PIM", value: 103) -!71 = !DIEnumerator(name: "IPPROTO_COMP", value: 108) -!72 = !DIEnumerator(name: "IPPROTO_SCTP", value: 132) -!73 = !DIEnumerator(name: "IPPROTO_UDPLITE", value: 136) -!74 = !DIEnumerator(name: "IPPROTO_MPLS", value: 137) -!75 = !DIEnumerator(name: "IPPROTO_RAW", value: 255) -!76 = !DIEnumerator(name: "IPPROTO_MAX", value: 256) -!77 = !{!78, !83, !37} -!78 = !DIDerivedType(tag: DW_TAG_typedef, name: "in_addr_t", file: !49, line: 30, baseType: !79) -!79 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint32_t", file: !80, line: 26, baseType: !81) -!80 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h", directory: "", checksumkind: CSK_MD5, checksum: "d3ea318a915682aaf6645ec16ac9f991") -!81 = !DIDerivedType(tag: DW_TAG_typedef, name: "__uint32_t", file: !82, line: 42, baseType: !37) -!82 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "", checksumkind: CSK_MD5, checksum: "f6304b1a6dcfc6bee76e9a51043b5090") -!83 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !84, size: 64) -!84 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "sockaddr", file: !85, line: 178, size: 128, elements: !86) -!85 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/socket.h", directory: "", checksumkind: CSK_MD5, checksum: "b1d3343a573cbf39b225111209e02966") -!86 = !{!87, !91} -!87 = !DIDerivedType(tag: DW_TAG_member, name: "sa_family", scope: !84, file: !85, line: 180, baseType: !88, size: 16) -!88 = !DIDerivedType(tag: DW_TAG_typedef, name: "sa_family_t", file: !89, line: 28, baseType: !90) -!89 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/sockaddr.h", directory: "", checksumkind: CSK_MD5, checksum: "b70cbaf07ffb7e8bf11ee98d9a21e2fc") -!90 = !DIBasicType(name: "unsigned short", size: 16, encoding: DW_ATE_unsigned) -!91 = !DIDerivedType(tag: DW_TAG_member, name: "sa_data", scope: !84, file: !85, line: 181, baseType: !92, size: 112, offset: 16) -!92 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 112, elements: !93) -!93 = !{!94} -!94 = !DISubrange(count: 14) -!95 = !{!0, !7, !12, !17, !22, !27} -!96 = !{i32 7, !"Dwarf Version", i32 5} -!97 = !{i32 2, !"Debug Info Version", i32 3} -!98 = !{i32 1, !"wchar_size", i32 4} -!99 = !{i32 8, !"PIC Level", i32 2} -!100 = !{i32 7, !"PIE Level", i32 2} -!101 = !{i32 7, !"uwtable", i32 2} -!102 = !{i32 7, !"frame-pointer", i32 2} -!103 = !{!"clang version 16.0.0"} -!104 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__CWE129_listen_socket_01_bad", scope: !2, file: !2, line: 44, type: !105, scopeLine: 45, spFlags: DISPFlagDefinition, unit: !32, retainedNodes: !107) -!105 = !DISubroutineType(types: !106) -!106 = !{null} -!107 = !{} -!108 = !DILocalVariable(name: "data", scope: !104, file: !2, line: 46, type: !109) -!109 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!110 = !DILocation(line: 46, column: 9, scope: !104) -!111 = !DILocation(line: 48, column: 10, scope: !104) -!112 = !DILocalVariable(name: "recvResult", scope: !113, file: !2, line: 54, type: !109) -!113 = distinct !DILexicalBlock(scope: !104, file: !2, line: 49, column: 5) -!114 = !DILocation(line: 54, column: 13, scope: !113) -!115 = !DILocalVariable(name: "service", scope: !113, file: !2, line: 55, type: !116) -!116 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "sockaddr_in", file: !49, line: 238, size: 128, elements: !117) -!117 = !{!118, !119, !123, !127} -!118 = !DIDerivedType(tag: DW_TAG_member, name: "sin_family", scope: !116, file: !49, line: 240, baseType: !88, size: 16) -!119 = !DIDerivedType(tag: DW_TAG_member, name: "sin_port", scope: !116, file: !49, line: 241, baseType: !120, size: 16, offset: 16) -!120 = !DIDerivedType(tag: DW_TAG_typedef, name: "in_port_t", file: !49, line: 119, baseType: !121) -!121 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint16_t", file: !80, line: 25, baseType: !122) -!122 = !DIDerivedType(tag: DW_TAG_typedef, name: "__uint16_t", file: !82, line: 40, baseType: !90) -!123 = !DIDerivedType(tag: DW_TAG_member, name: "sin_addr", scope: !116, file: !49, line: 242, baseType: !124, size: 32, offset: 32) -!124 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "in_addr", file: !49, line: 31, size: 32, elements: !125) -!125 = !{!126} -!126 = !DIDerivedType(tag: DW_TAG_member, name: "s_addr", scope: !124, file: !49, line: 33, baseType: !78, size: 32) -!127 = !DIDerivedType(tag: DW_TAG_member, name: "sin_zero", scope: !116, file: !49, line: 245, baseType: !128, size: 64, offset: 64) -!128 = !DICompositeType(tag: DW_TAG_array_type, baseType: !129, size: 64, elements: !130) -!129 = !DIBasicType(name: "unsigned char", size: 8, encoding: DW_ATE_unsigned_char) -!130 = !{!131} -!131 = !DISubrange(count: 8) -!132 = !DILocation(line: 55, column: 28, scope: !113) -!133 = !DILocalVariable(name: "listenSocket", scope: !113, file: !2, line: 56, type: !109) -!134 = !DILocation(line: 56, column: 16, scope: !113) -!135 = !DILocalVariable(name: "acceptSocket", scope: !113, file: !2, line: 57, type: !109) -!136 = !DILocation(line: 57, column: 16, scope: !113) -!137 = !DILocalVariable(name: "inputBuffer", scope: !113, file: !2, line: 58, type: !92) -!138 = !DILocation(line: 58, column: 14, scope: !113) -!139 = !DILocation(line: 59, column: 9, scope: !113) -!140 = !DILocation(line: 69, column: 28, scope: !141) -!141 = distinct !DILexicalBlock(scope: !113, file: !2, line: 60, column: 9) -!142 = !DILocation(line: 69, column: 26, scope: !141) -!143 = !DILocation(line: 70, column: 17, scope: !144) -!144 = distinct !DILexicalBlock(scope: !141, file: !2, line: 70, column: 17) -!145 = !DILocation(line: 70, column: 30, scope: !144) -!146 = !DILocation(line: 70, column: 17, scope: !141) -!147 = !DILocation(line: 72, column: 17, scope: !148) -!148 = distinct !DILexicalBlock(scope: !144, file: !2, line: 71, column: 13) -!149 = !DILocation(line: 74, column: 13, scope: !141) -!150 = !DILocation(line: 75, column: 21, scope: !141) -!151 = !DILocation(line: 75, column: 32, scope: !141) -!152 = !DILocation(line: 76, column: 21, scope: !141) -!153 = !DILocation(line: 76, column: 30, scope: !141) -!154 = !DILocation(line: 76, column: 37, scope: !141) -!155 = !DILocation(line: 77, column: 32, scope: !141) -!156 = !DILocation(line: 77, column: 21, scope: !141) -!157 = !DILocation(line: 77, column: 30, scope: !141) -!158 = !DILocation(line: 78, column: 22, scope: !159) -!159 = distinct !DILexicalBlock(scope: !141, file: !2, line: 78, column: 17) -!160 = !DILocation(line: 78, column: 17, scope: !159) -!161 = !DILocation(line: 78, column: 81, scope: !159) -!162 = !DILocation(line: 78, column: 17, scope: !141) -!163 = !DILocation(line: 80, column: 17, scope: !164) -!164 = distinct !DILexicalBlock(scope: !159, file: !2, line: 79, column: 13) -!165 = !DILocation(line: 82, column: 24, scope: !166) -!166 = distinct !DILexicalBlock(scope: !141, file: !2, line: 82, column: 17) -!167 = !DILocation(line: 82, column: 17, scope: !166) -!168 = !DILocation(line: 82, column: 54, scope: !166) -!169 = !DILocation(line: 82, column: 17, scope: !141) -!170 = !DILocation(line: 84, column: 17, scope: !171) -!171 = distinct !DILexicalBlock(scope: !166, file: !2, line: 83, column: 13) -!172 = !DILocation(line: 86, column: 35, scope: !141) -!173 = !DILocation(line: 86, column: 28, scope: !141) -!174 = !DILocation(line: 86, column: 26, scope: !141) -!175 = !DILocation(line: 87, column: 17, scope: !176) -!176 = distinct !DILexicalBlock(scope: !141, file: !2, line: 87, column: 17) -!177 = !DILocation(line: 87, column: 30, scope: !176) -!178 = !DILocation(line: 87, column: 17, scope: !141) -!179 = !DILocation(line: 89, column: 17, scope: !180) -!180 = distinct !DILexicalBlock(scope: !176, file: !2, line: 88, column: 13) -!181 = !DILocation(line: 92, column: 31, scope: !141) -!182 = !DILocation(line: 92, column: 45, scope: !141) -!183 = !DILocation(line: 92, column: 26, scope: !141) -!184 = !DILocation(line: 92, column: 24, scope: !141) -!185 = !DILocation(line: 93, column: 17, scope: !186) -!186 = distinct !DILexicalBlock(scope: !141, file: !2, line: 93, column: 17) -!187 = !DILocation(line: 93, column: 28, scope: !186) -!188 = !DILocation(line: 93, column: 44, scope: !186) -!189 = !DILocation(line: 93, column: 47, scope: !186) -!190 = !DILocation(line: 93, column: 58, scope: !186) -!191 = !DILocation(line: 93, column: 17, scope: !141) -!192 = !DILocation(line: 95, column: 17, scope: !193) -!193 = distinct !DILexicalBlock(scope: !186, file: !2, line: 94, column: 13) -!194 = !DILocation(line: 98, column: 25, scope: !141) -!195 = !DILocation(line: 98, column: 13, scope: !141) -!196 = !DILocation(line: 98, column: 37, scope: !141) -!197 = !DILocation(line: 100, column: 25, scope: !141) -!198 = !DILocation(line: 100, column: 20, scope: !141) -!199 = !DILocation(line: 100, column: 18, scope: !141) -!200 = !DILocation(line: 101, column: 9, scope: !141) -!201 = !DILocation(line: 103, column: 13, scope: !202) -!202 = distinct !DILexicalBlock(scope: !113, file: !2, line: 103, column: 13) -!203 = !DILocation(line: 103, column: 26, scope: !202) -!204 = !DILocation(line: 103, column: 13, scope: !113) -!205 = !DILocation(line: 105, column: 26, scope: !206) -!206 = distinct !DILexicalBlock(scope: !202, file: !2, line: 104, column: 9) -!207 = !DILocation(line: 105, column: 13, scope: !206) -!208 = !DILocation(line: 106, column: 9, scope: !206) -!209 = !DILocation(line: 107, column: 13, scope: !210) -!210 = distinct !DILexicalBlock(scope: !113, file: !2, line: 107, column: 13) -!211 = !DILocation(line: 107, column: 26, scope: !210) -!212 = !DILocation(line: 107, column: 13, scope: !113) -!213 = !DILocation(line: 109, column: 26, scope: !214) -!214 = distinct !DILexicalBlock(scope: !210, file: !2, line: 108, column: 9) -!215 = !DILocation(line: 109, column: 13, scope: !214) -!216 = !DILocation(line: 110, column: 9, scope: !214) -!217 = !DILocalVariable(name: "buffer", scope: !218, file: !2, line: 119, type: !219) -!218 = distinct !DILexicalBlock(scope: !104, file: !2, line: 118, column: 5) -!219 = !DICompositeType(tag: DW_TAG_array_type, baseType: !109, size: 320, elements: !220) -!220 = !{!221} -!221 = !DISubrange(count: 10) -!222 = !DILocation(line: 119, column: 13, scope: !218) -!223 = !DILocation(line: 122, column: 13, scope: !224) -!224 = distinct !DILexicalBlock(scope: !218, file: !2, line: 122, column: 13) -!225 = !DILocation(line: 122, column: 18, scope: !224) -!226 = !DILocation(line: 122, column: 13, scope: !218) -!227 = !DILocation(line: 124, column: 33, scope: !228) -!228 = distinct !DILexicalBlock(scope: !224, file: !2, line: 123, column: 9) -!229 = !DILocation(line: 124, column: 26, scope: !228) -!230 = !DILocation(line: 124, column: 13, scope: !228) -!231 = !DILocation(line: 125, column: 30, scope: !228) -!232 = !DILocation(line: 125, column: 38, scope: !228) -!233 = !DILocation(line: 125, column: 42, scope: !228) -!234 = !DILocation(line: 125, column: 13, scope: !228) -!235 = !DILocation(line: 126, column: 9, scope: !228) -!236 = !DILocation(line: 129, column: 13, scope: !237) -!237 = distinct !DILexicalBlock(scope: !224, file: !2, line: 128, column: 9) -!238 = !DILocation(line: 132, column: 1, scope: !104) -!239 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__CWE129_listen_socket_01_good", scope: !2, file: !2, line: 252, type: !105, scopeLine: 253, spFlags: DISPFlagDefinition, unit: !32, retainedNodes: !107) -!240 = !DILocation(line: 254, column: 5, scope: !239) -!241 = !DILocation(line: 255, column: 5, scope: !239) -!242 = !DILocation(line: 256, column: 1, scope: !239) -!243 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 267, type: !244, scopeLine: 268, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !32, retainedNodes: !107) -!244 = !DISubroutineType(types: !245) -!245 = !{!109, !109, !246} -!246 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !247, size: 64) -!247 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!248 = !DILocalVariable(name: "argc", arg: 1, scope: !243, file: !2, line: 267, type: !109) -!249 = !DILocation(line: 267, column: 14, scope: !243) -!250 = !DILocalVariable(name: "argv", arg: 2, scope: !243, file: !2, line: 267, type: !246) -!251 = !DILocation(line: 267, column: 27, scope: !243) -!252 = !DILocation(line: 270, column: 22, scope: !243) -!253 = !DILocation(line: 270, column: 12, scope: !243) -!254 = !DILocation(line: 270, column: 5, scope: !243) -!255 = !DILocation(line: 272, column: 5, scope: !243) -!256 = !DILocation(line: 273, column: 5, scope: !243) -!257 = !DILocation(line: 274, column: 5, scope: !243) -!258 = !DILocation(line: 277, column: 5, scope: !243) -!259 = !DILocation(line: 278, column: 5, scope: !243) -!260 = !DILocation(line: 279, column: 5, scope: !243) -!261 = !DILocation(line: 281, column: 5, scope: !243) -!262 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 139, type: !105, scopeLine: 140, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !32, retainedNodes: !107) -!263 = !DILocalVariable(name: "data", scope: !262, file: !2, line: 141, type: !109) -!264 = !DILocation(line: 141, column: 9, scope: !262) -!265 = !DILocation(line: 143, column: 10, scope: !262) -!266 = !DILocation(line: 146, column: 10, scope: !262) -!267 = !DILocalVariable(name: "buffer", scope: !268, file: !2, line: 148, type: !219) -!268 = distinct !DILexicalBlock(scope: !262, file: !2, line: 147, column: 5) -!269 = !DILocation(line: 148, column: 13, scope: !268) -!270 = !DILocation(line: 151, column: 13, scope: !271) -!271 = distinct !DILexicalBlock(scope: !268, file: !2, line: 151, column: 13) -!272 = !DILocation(line: 151, column: 18, scope: !271) -!273 = !DILocation(line: 151, column: 13, scope: !268) -!274 = !DILocation(line: 153, column: 33, scope: !275) -!275 = distinct !DILexicalBlock(scope: !271, file: !2, line: 152, column: 9) -!276 = !DILocation(line: 153, column: 26, scope: !275) -!277 = !DILocation(line: 153, column: 13, scope: !275) -!278 = !DILocation(line: 154, column: 28, scope: !275) -!279 = !DILocation(line: 154, column: 36, scope: !275) -!280 = !DILocation(line: 154, column: 40, scope: !275) -!281 = !DILocation(line: 154, column: 13, scope: !275) -!282 = !DILocation(line: 155, column: 9, scope: !275) -!283 = !DILocation(line: 158, column: 13, scope: !284) -!284 = distinct !DILexicalBlock(scope: !271, file: !2, line: 157, column: 9) -!285 = !DILocation(line: 161, column: 1, scope: !262) -!286 = distinct !DISubprogram(name: "goodB2G", scope: !2, file: !2, line: 164, type: !105, scopeLine: 165, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !32, retainedNodes: !107) -!287 = !DILocalVariable(name: "data", scope: !286, file: !2, line: 166, type: !109) -!288 = !DILocation(line: 166, column: 9, scope: !286) -!289 = !DILocation(line: 168, column: 10, scope: !286) -!290 = !DILocalVariable(name: "recvResult", scope: !291, file: !2, line: 174, type: !109) -!291 = distinct !DILexicalBlock(scope: !286, file: !2, line: 169, column: 5) -!292 = !DILocation(line: 174, column: 13, scope: !291) -!293 = !DILocalVariable(name: "service", scope: !291, file: !2, line: 175, type: !116) -!294 = !DILocation(line: 175, column: 28, scope: !291) -!295 = !DILocalVariable(name: "listenSocket", scope: !291, file: !2, line: 176, type: !109) -!296 = !DILocation(line: 176, column: 16, scope: !291) -!297 = !DILocalVariable(name: "acceptSocket", scope: !291, file: !2, line: 177, type: !109) -!298 = !DILocation(line: 177, column: 16, scope: !291) -!299 = !DILocalVariable(name: "inputBuffer", scope: !291, file: !2, line: 178, type: !92) -!300 = !DILocation(line: 178, column: 14, scope: !291) -!301 = !DILocation(line: 179, column: 9, scope: !291) -!302 = !DILocation(line: 189, column: 28, scope: !303) -!303 = distinct !DILexicalBlock(scope: !291, file: !2, line: 180, column: 9) -!304 = !DILocation(line: 189, column: 26, scope: !303) -!305 = !DILocation(line: 190, column: 17, scope: !306) -!306 = distinct !DILexicalBlock(scope: !303, file: !2, line: 190, column: 17) -!307 = !DILocation(line: 190, column: 30, scope: !306) -!308 = !DILocation(line: 190, column: 17, scope: !303) -!309 = !DILocation(line: 192, column: 17, scope: !310) -!310 = distinct !DILexicalBlock(scope: !306, file: !2, line: 191, column: 13) -!311 = !DILocation(line: 194, column: 13, scope: !303) -!312 = !DILocation(line: 195, column: 21, scope: !303) -!313 = !DILocation(line: 195, column: 32, scope: !303) -!314 = !DILocation(line: 196, column: 21, scope: !303) -!315 = !DILocation(line: 196, column: 30, scope: !303) -!316 = !DILocation(line: 196, column: 37, scope: !303) -!317 = !DILocation(line: 197, column: 32, scope: !303) -!318 = !DILocation(line: 197, column: 21, scope: !303) -!319 = !DILocation(line: 197, column: 30, scope: !303) -!320 = !DILocation(line: 198, column: 22, scope: !321) -!321 = distinct !DILexicalBlock(scope: !303, file: !2, line: 198, column: 17) -!322 = !DILocation(line: 198, column: 17, scope: !321) -!323 = !DILocation(line: 198, column: 81, scope: !321) -!324 = !DILocation(line: 198, column: 17, scope: !303) -!325 = !DILocation(line: 200, column: 17, scope: !326) -!326 = distinct !DILexicalBlock(scope: !321, file: !2, line: 199, column: 13) -!327 = !DILocation(line: 202, column: 24, scope: !328) -!328 = distinct !DILexicalBlock(scope: !303, file: !2, line: 202, column: 17) -!329 = !DILocation(line: 202, column: 17, scope: !328) -!330 = !DILocation(line: 202, column: 54, scope: !328) -!331 = !DILocation(line: 202, column: 17, scope: !303) -!332 = !DILocation(line: 204, column: 17, scope: !333) -!333 = distinct !DILexicalBlock(scope: !328, file: !2, line: 203, column: 13) -!334 = !DILocation(line: 206, column: 35, scope: !303) -!335 = !DILocation(line: 206, column: 28, scope: !303) -!336 = !DILocation(line: 206, column: 26, scope: !303) -!337 = !DILocation(line: 207, column: 17, scope: !338) -!338 = distinct !DILexicalBlock(scope: !303, file: !2, line: 207, column: 17) -!339 = !DILocation(line: 207, column: 30, scope: !338) -!340 = !DILocation(line: 207, column: 17, scope: !303) -!341 = !DILocation(line: 209, column: 17, scope: !342) -!342 = distinct !DILexicalBlock(scope: !338, file: !2, line: 208, column: 13) -!343 = !DILocation(line: 212, column: 31, scope: !303) -!344 = !DILocation(line: 212, column: 45, scope: !303) -!345 = !DILocation(line: 212, column: 26, scope: !303) -!346 = !DILocation(line: 212, column: 24, scope: !303) -!347 = !DILocation(line: 213, column: 17, scope: !348) -!348 = distinct !DILexicalBlock(scope: !303, file: !2, line: 213, column: 17) -!349 = !DILocation(line: 213, column: 28, scope: !348) -!350 = !DILocation(line: 213, column: 44, scope: !348) -!351 = !DILocation(line: 213, column: 47, scope: !348) -!352 = !DILocation(line: 213, column: 58, scope: !348) -!353 = !DILocation(line: 213, column: 17, scope: !303) -!354 = !DILocation(line: 215, column: 17, scope: !355) -!355 = distinct !DILexicalBlock(scope: !348, file: !2, line: 214, column: 13) -!356 = !DILocation(line: 218, column: 25, scope: !303) -!357 = !DILocation(line: 218, column: 13, scope: !303) -!358 = !DILocation(line: 218, column: 37, scope: !303) -!359 = !DILocation(line: 220, column: 25, scope: !303) -!360 = !DILocation(line: 220, column: 20, scope: !303) -!361 = !DILocation(line: 220, column: 18, scope: !303) -!362 = !DILocation(line: 221, column: 9, scope: !303) -!363 = !DILocation(line: 223, column: 13, scope: !364) -!364 = distinct !DILexicalBlock(scope: !291, file: !2, line: 223, column: 13) -!365 = !DILocation(line: 223, column: 26, scope: !364) -!366 = !DILocation(line: 223, column: 13, scope: !291) -!367 = !DILocation(line: 225, column: 26, scope: !368) -!368 = distinct !DILexicalBlock(scope: !364, file: !2, line: 224, column: 9) -!369 = !DILocation(line: 225, column: 13, scope: !368) -!370 = !DILocation(line: 226, column: 9, scope: !368) -!371 = !DILocation(line: 227, column: 13, scope: !372) -!372 = distinct !DILexicalBlock(scope: !291, file: !2, line: 227, column: 13) -!373 = !DILocation(line: 227, column: 26, scope: !372) -!374 = !DILocation(line: 227, column: 13, scope: !291) -!375 = !DILocation(line: 229, column: 26, scope: !376) -!376 = distinct !DILexicalBlock(scope: !372, file: !2, line: 228, column: 9) -!377 = !DILocation(line: 229, column: 13, scope: !376) -!378 = !DILocation(line: 230, column: 9, scope: !376) -!379 = !DILocalVariable(name: "buffer", scope: !380, file: !2, line: 239, type: !219) -!380 = distinct !DILexicalBlock(scope: !286, file: !2, line: 238, column: 5) -!381 = !DILocation(line: 239, column: 13, scope: !380) -!382 = !DILocation(line: 241, column: 13, scope: !383) -!383 = distinct !DILexicalBlock(scope: !380, file: !2, line: 241, column: 13) -!384 = !DILocation(line: 241, column: 18, scope: !383) -!385 = !DILocation(line: 241, column: 23, scope: !383) -!386 = !DILocation(line: 241, column: 26, scope: !383) -!387 = !DILocation(line: 241, column: 31, scope: !383) -!388 = !DILocation(line: 241, column: 13, scope: !380) -!389 = !DILocation(line: 243, column: 33, scope: !390) -!390 = distinct !DILexicalBlock(scope: !383, file: !2, line: 242, column: 9) -!391 = !DILocation(line: 243, column: 26, scope: !390) -!392 = !DILocation(line: 243, column: 13, scope: !390) -!393 = !DILocation(line: 244, column: 9, scope: !390) -!394 = !DILocation(line: 247, column: 13, scope: !395) -!395 = distinct !DILexicalBlock(scope: !383, file: !2, line: 246, column: 9) -!396 = !DILocation(line: 250, column: 1, scope: !286) diff --git a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_alloca_memcpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_alloca_memcpy_01.c.bc deleted file mode 100644 index 06b58a4a..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_alloca_memcpy_01.c.bc +++ /dev/null @@ -1,348 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_alloca_memcpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__char_alloca_memcpy_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__char_alloca_memcpy_01_bad() #0 !dbg !36 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %dest = alloca [100 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !40, metadata !DIExpression()), !dbg !41 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !42, metadata !DIExpression()), !dbg !43 - %0 = alloca i8, i64 50, align 16, !dbg !44 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !43 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !45, metadata !DIExpression()), !dbg !46 - %1 = alloca i8, i64 100, align 16, !dbg !47 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !46 - %2 = load ptr, ptr %dataBadBuffer, align 8, !dbg !48 - call void @llvm.memset.p0.i64(ptr align 1 %2, i8 65, i64 49, i1 false), !dbg !49 - %3 = load ptr, ptr %dataBadBuffer, align 8, !dbg !50 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 49, !dbg !50 - store i8 0, ptr %arrayidx, align 1, !dbg !51 - %4 = load ptr, ptr %dataGoodBuffer, align 8, !dbg !52 - call void @llvm.memset.p0.i64(ptr align 1 %4, i8 65, i64 99, i1 false), !dbg !53 - %5 = load ptr, ptr %dataGoodBuffer, align 8, !dbg !54 - %arrayidx1 = getelementptr inbounds i8, ptr %5, i64 99, !dbg !54 - store i8 0, ptr %arrayidx1, align 1, !dbg !55 - %6 = load ptr, ptr %dataBadBuffer, align 8, !dbg !56 - store ptr %6, ptr %data, align 8, !dbg !57 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !58, metadata !DIExpression()), !dbg !63 - %arraydecay = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !64 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 67, i64 99, i1 false), !dbg !64 - %arrayidx2 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !65 - store i8 0, ptr %arrayidx2, align 1, !dbg !66 - %arraydecay3 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !67 - %arraydecay4 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !68 - %call = call i64 @strlen(ptr noundef %arraydecay4) #7, !dbg !69 - %mul = mul i64 %call, 1, !dbg !70 - %sub = sub i64 %mul, 1, !dbg !71 - %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay3, i64 noundef %sub), !dbg !72 - %7 = load ptr, ptr %data, align 8, !dbg !73 - %arraydecay6 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !74 - %call7 = call i64 @strlen(ptr noundef %arraydecay6) #7, !dbg !75 - %mul8 = mul i64 %call7, 1, !dbg !76 - %sub9 = sub i64 %mul8, 1, !dbg !77 - %call10 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %7, i64 noundef %sub9), !dbg !78 - %arraydecay11 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !79 - %8 = load ptr, ptr %data, align 8, !dbg !80 - %arraydecay12 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !81 - %call13 = call i64 @strlen(ptr noundef %arraydecay12) #7, !dbg !82 - %mul14 = mul i64 %call13, 1, !dbg !83 - call void @llvm.memcpy.p0.p0.i64(ptr align 16 %arraydecay11, ptr align 1 %8, i64 %mul14, i1 false), !dbg !79 - %arrayidx15 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !84 - store i8 0, ptr %arrayidx15, align 1, !dbg !85 - %arraydecay16 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !86 - call void @printLine(ptr noundef %arraydecay16), !dbg !87 - ret void, !dbg !88 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -declare i32 @SAFE_BUFACCESS(...) #3 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #4 - -declare i32 @UNSAFE_BUFACCESS(...) #3 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #5 - -declare void @printLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__char_alloca_memcpy_01_good() #0 !dbg !89 { -entry: - call void @goodG2B(), !dbg !90 - ret void, !dbg !91 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !92 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !97, metadata !DIExpression()), !dbg !98 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !99, metadata !DIExpression()), !dbg !100 - %call = call i64 @time(ptr noundef null) #8, !dbg !101 - %conv = trunc i64 %call to i32, !dbg !102 - call void @srand(i32 noundef %conv) #8, !dbg !103 - call void @printLine(ptr noundef @.str), !dbg !104 - call void @CWE126_Buffer_Overread__char_alloca_memcpy_01_good(), !dbg !105 - call void @printLine(ptr noundef @.str.1), !dbg !106 - call void @printLine(ptr noundef @.str.2), !dbg !107 - call void @CWE126_Buffer_Overread__char_alloca_memcpy_01_bad(), !dbg !108 - call void @printLine(ptr noundef @.str.3), !dbg !109 - ret i32 0, !dbg !110 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #6 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #6 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !111 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca ptr, align 8 - %dataGoodBuffer = alloca ptr, align 8 - %dest = alloca [100 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !112, metadata !DIExpression()), !dbg !113 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !114, metadata !DIExpression()), !dbg !115 - %0 = alloca i8, i64 50, align 16, !dbg !116 - store ptr %0, ptr %dataBadBuffer, align 8, !dbg !115 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !117, metadata !DIExpression()), !dbg !118 - %1 = alloca i8, i64 100, align 16, !dbg !119 - store ptr %1, ptr %dataGoodBuffer, align 8, !dbg !118 - %2 = load ptr, ptr %dataBadBuffer, align 8, !dbg !120 - call void @llvm.memset.p0.i64(ptr align 1 %2, i8 65, i64 49, i1 false), !dbg !121 - %3 = load ptr, ptr %dataBadBuffer, align 8, !dbg !122 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 49, !dbg !122 - store i8 0, ptr %arrayidx, align 1, !dbg !123 - %4 = load ptr, ptr %dataGoodBuffer, align 8, !dbg !124 - call void @llvm.memset.p0.i64(ptr align 1 %4, i8 65, i64 99, i1 false), !dbg !125 - %5 = load ptr, ptr %dataGoodBuffer, align 8, !dbg !126 - %arrayidx1 = getelementptr inbounds i8, ptr %5, i64 99, !dbg !126 - store i8 0, ptr %arrayidx1, align 1, !dbg !127 - %6 = load ptr, ptr %dataGoodBuffer, align 8, !dbg !128 - store ptr %6, ptr %data, align 8, !dbg !129 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !130, metadata !DIExpression()), !dbg !132 - %arraydecay = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !133 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 67, i64 99, i1 false), !dbg !133 - %arrayidx2 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !134 - store i8 0, ptr %arrayidx2, align 1, !dbg !135 - %arraydecay3 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !136 - %arraydecay4 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !137 - %call = call i64 @strlen(ptr noundef %arraydecay4) #7, !dbg !138 - %mul = mul i64 %call, 1, !dbg !139 - %sub = sub i64 %mul, 1, !dbg !140 - %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay3, i64 noundef %sub), !dbg !141 - %7 = load ptr, ptr %data, align 8, !dbg !142 - %arraydecay6 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !143 - %call7 = call i64 @strlen(ptr noundef %arraydecay6) #7, !dbg !144 - %mul8 = mul i64 %call7, 1, !dbg !145 - %sub9 = sub i64 %mul8, 1, !dbg !146 - %call10 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %7, i64 noundef %sub9), !dbg !147 - %arraydecay11 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !148 - %8 = load ptr, ptr %data, align 8, !dbg !149 - %arraydecay12 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !150 - %call13 = call i64 @strlen(ptr noundef %arraydecay12) #7, !dbg !151 - %mul14 = mul i64 %call13, 1, !dbg !152 - call void @llvm.memcpy.p0.p0.i64(ptr align 16 %arraydecay11, ptr align 1 %8, i64 %mul14, i1 false), !dbg !148 - %arrayidx15 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !153 - store i8 0, ptr %arrayidx15, align 1, !dbg !154 - %arraydecay16 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !155 - call void @printLine(ptr noundef %arraydecay16), !dbg !156 - ret void, !dbg !157 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #6 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind willreturn memory(read) } -attributes #8 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!28, !29, !30, !31, !32, !33, !34} -!llvm.ident = !{!35} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 98, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__char_alloca_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a66eda62171c05457f61977ce8a0c829") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 100, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 103, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 105, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !27, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__char_alloca_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "a66eda62171c05457f61977ce8a0c829") -!24 = !{!25, !26} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!26 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!27 = !{!0, !7, !12, !17} -!28 = !{i32 7, !"Dwarf Version", i32 5} -!29 = !{i32 2, !"Debug Info Version", i32 3} -!30 = !{i32 1, !"wchar_size", i32 4} -!31 = !{i32 8, !"PIC Level", i32 2} -!32 = !{i32 7, !"PIE Level", i32 2} -!33 = !{i32 7, !"uwtable", i32 2} -!34 = !{i32 7, !"frame-pointer", i32 2} -!35 = !{!"clang version 16.0.0"} -!36 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__char_alloca_memcpy_01_bad", scope: !2, file: !2, line: 23, type: !37, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!37 = !DISubroutineType(types: !38) -!38 = !{null} -!39 = !{} -!40 = !DILocalVariable(name: "data", scope: !36, file: !2, line: 25, type: !25) -!41 = !DILocation(line: 25, column: 12, scope: !36) -!42 = !DILocalVariable(name: "dataBadBuffer", scope: !36, file: !2, line: 26, type: !25) -!43 = !DILocation(line: 26, column: 12, scope: !36) -!44 = !DILocation(line: 26, column: 36, scope: !36) -!45 = !DILocalVariable(name: "dataGoodBuffer", scope: !36, file: !2, line: 27, type: !25) -!46 = !DILocation(line: 27, column: 12, scope: !36) -!47 = !DILocation(line: 27, column: 37, scope: !36) -!48 = !DILocation(line: 28, column: 12, scope: !36) -!49 = !DILocation(line: 28, column: 5, scope: !36) -!50 = !DILocation(line: 29, column: 5, scope: !36) -!51 = !DILocation(line: 29, column: 25, scope: !36) -!52 = !DILocation(line: 30, column: 12, scope: !36) -!53 = !DILocation(line: 30, column: 5, scope: !36) -!54 = !DILocation(line: 31, column: 5, scope: !36) -!55 = !DILocation(line: 31, column: 27, scope: !36) -!56 = !DILocation(line: 33, column: 12, scope: !36) -!57 = !DILocation(line: 33, column: 10, scope: !36) -!58 = !DILocalVariable(name: "dest", scope: !59, file: !2, line: 35, type: !60) -!59 = distinct !DILexicalBlock(scope: !36, file: !2, line: 34, column: 5) -!60 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 800, elements: !61) -!61 = !{!62} -!62 = !DISubrange(count: 100) -!63 = !DILocation(line: 35, column: 14, scope: !59) -!64 = !DILocation(line: 36, column: 9, scope: !59) -!65 = !DILocation(line: 37, column: 9, scope: !59) -!66 = !DILocation(line: 37, column: 21, scope: !59) -!67 = !DILocation(line: 40, column: 24, scope: !59) -!68 = !DILocation(line: 40, column: 37, scope: !59) -!69 = !DILocation(line: 40, column: 30, scope: !59) -!70 = !DILocation(line: 40, column: 42, scope: !59) -!71 = !DILocation(line: 40, column: 56, scope: !59) -!72 = !DILocation(line: 40, column: 9, scope: !59) -!73 = !DILocation(line: 41, column: 26, scope: !59) -!74 = !DILocation(line: 41, column: 39, scope: !59) -!75 = !DILocation(line: 41, column: 32, scope: !59) -!76 = !DILocation(line: 41, column: 44, scope: !59) -!77 = !DILocation(line: 41, column: 58, scope: !59) -!78 = !DILocation(line: 41, column: 9, scope: !59) -!79 = !DILocation(line: 42, column: 9, scope: !59) -!80 = !DILocation(line: 42, column: 22, scope: !59) -!81 = !DILocation(line: 42, column: 35, scope: !59) -!82 = !DILocation(line: 42, column: 28, scope: !59) -!83 = !DILocation(line: 42, column: 40, scope: !59) -!84 = !DILocation(line: 43, column: 9, scope: !59) -!85 = !DILocation(line: 43, column: 21, scope: !59) -!86 = !DILocation(line: 44, column: 19, scope: !59) -!87 = !DILocation(line: 44, column: 9, scope: !59) -!88 = !DILocation(line: 46, column: 1, scope: !36) -!89 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__char_alloca_memcpy_01_good", scope: !2, file: !2, line: 78, type: !37, scopeLine: 79, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!90 = !DILocation(line: 80, column: 5, scope: !89) -!91 = !DILocation(line: 81, column: 1, scope: !89) -!92 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 93, type: !93, scopeLine: 94, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !39) -!93 = !DISubroutineType(types: !94) -!94 = !{!95, !95, !96} -!95 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!96 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64) -!97 = !DILocalVariable(name: "argc", arg: 1, scope: !92, file: !2, line: 93, type: !95) -!98 = !DILocation(line: 93, column: 14, scope: !92) -!99 = !DILocalVariable(name: "argv", arg: 2, scope: !92, file: !2, line: 93, type: !96) -!100 = !DILocation(line: 93, column: 27, scope: !92) -!101 = !DILocation(line: 96, column: 22, scope: !92) -!102 = !DILocation(line: 96, column: 12, scope: !92) -!103 = !DILocation(line: 96, column: 5, scope: !92) -!104 = !DILocation(line: 98, column: 5, scope: !92) -!105 = !DILocation(line: 99, column: 5, scope: !92) -!106 = !DILocation(line: 100, column: 5, scope: !92) -!107 = !DILocation(line: 103, column: 5, scope: !92) -!108 = !DILocation(line: 104, column: 5, scope: !92) -!109 = !DILocation(line: 105, column: 5, scope: !92) -!110 = !DILocation(line: 107, column: 5, scope: !92) -!111 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 53, type: !37, scopeLine: 54, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !39) -!112 = !DILocalVariable(name: "data", scope: !111, file: !2, line: 55, type: !25) -!113 = !DILocation(line: 55, column: 12, scope: !111) -!114 = !DILocalVariable(name: "dataBadBuffer", scope: !111, file: !2, line: 56, type: !25) -!115 = !DILocation(line: 56, column: 12, scope: !111) -!116 = !DILocation(line: 56, column: 36, scope: !111) -!117 = !DILocalVariable(name: "dataGoodBuffer", scope: !111, file: !2, line: 57, type: !25) -!118 = !DILocation(line: 57, column: 12, scope: !111) -!119 = !DILocation(line: 57, column: 37, scope: !111) -!120 = !DILocation(line: 58, column: 12, scope: !111) -!121 = !DILocation(line: 58, column: 5, scope: !111) -!122 = !DILocation(line: 59, column: 5, scope: !111) -!123 = !DILocation(line: 59, column: 25, scope: !111) -!124 = !DILocation(line: 60, column: 12, scope: !111) -!125 = !DILocation(line: 60, column: 5, scope: !111) -!126 = !DILocation(line: 61, column: 5, scope: !111) -!127 = !DILocation(line: 61, column: 27, scope: !111) -!128 = !DILocation(line: 63, column: 12, scope: !111) -!129 = !DILocation(line: 63, column: 10, scope: !111) -!130 = !DILocalVariable(name: "dest", scope: !131, file: !2, line: 65, type: !60) -!131 = distinct !DILexicalBlock(scope: !111, file: !2, line: 64, column: 5) -!132 = !DILocation(line: 65, column: 14, scope: !131) -!133 = !DILocation(line: 66, column: 9, scope: !131) -!134 = !DILocation(line: 67, column: 9, scope: !131) -!135 = !DILocation(line: 67, column: 21, scope: !131) -!136 = !DILocation(line: 70, column: 24, scope: !131) -!137 = !DILocation(line: 70, column: 37, scope: !131) -!138 = !DILocation(line: 70, column: 30, scope: !131) -!139 = !DILocation(line: 70, column: 42, scope: !131) -!140 = !DILocation(line: 70, column: 56, scope: !131) -!141 = !DILocation(line: 70, column: 9, scope: !131) -!142 = !DILocation(line: 71, column: 24, scope: !131) -!143 = !DILocation(line: 71, column: 37, scope: !131) -!144 = !DILocation(line: 71, column: 30, scope: !131) -!145 = !DILocation(line: 71, column: 42, scope: !131) -!146 = !DILocation(line: 71, column: 56, scope: !131) -!147 = !DILocation(line: 71, column: 9, scope: !131) -!148 = !DILocation(line: 72, column: 9, scope: !131) -!149 = !DILocation(line: 72, column: 22, scope: !131) -!150 = !DILocation(line: 72, column: 35, scope: !131) -!151 = !DILocation(line: 72, column: 28, scope: !131) -!152 = !DILocation(line: 72, column: 40, scope: !131) -!153 = !DILocation(line: 73, column: 9, scope: !131) -!154 = !DILocation(line: 73, column: 21, scope: !131) -!155 = !DILocation(line: 74, column: 19, scope: !131) -!156 = !DILocation(line: 74, column: 9, scope: !131) -!157 = !DILocation(line: 76, column: 1, scope: !111) diff --git a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_loop_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_loop_01.c.bc deleted file mode 100644 index 9a8a4be4..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_loop_01.c.bc +++ /dev/null @@ -1,421 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_loop_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_loop_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__char_declare_loop_01_bad() #0 !dbg !35 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i8], align 16 - %dataGoodBuffer = alloca [100 x i8], align 16 - %i = alloca i64, align 8 - %destLen = alloca i64, align 8 - %dest = alloca [100 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !39, metadata !DIExpression()), !dbg !41 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !42, metadata !DIExpression()), !dbg !46 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !47, metadata !DIExpression()), !dbg !51 - %arraydecay = getelementptr inbounds [50 x i8], ptr %dataBadBuffer, i64 0, i64 0, !dbg !52 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 65, i64 49, i1 false), !dbg !52 - %arrayidx = getelementptr inbounds [50 x i8], ptr %dataBadBuffer, i64 0, i64 49, !dbg !53 - store i8 0, ptr %arrayidx, align 1, !dbg !54 - %arraydecay1 = getelementptr inbounds [100 x i8], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !55 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay1, i8 65, i64 99, i1 false), !dbg !55 - %arrayidx2 = getelementptr inbounds [100 x i8], ptr %dataGoodBuffer, i64 0, i64 99, !dbg !56 - store i8 0, ptr %arrayidx2, align 1, !dbg !57 - %arraydecay3 = getelementptr inbounds [50 x i8], ptr %dataBadBuffer, i64 0, i64 0, !dbg !58 - store ptr %arraydecay3, ptr %data, align 8, !dbg !59 - call void @llvm.dbg.declare(metadata ptr %i, metadata !60, metadata !DIExpression()), !dbg !65 - call void @llvm.dbg.declare(metadata ptr %destLen, metadata !66, metadata !DIExpression()), !dbg !67 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !68, metadata !DIExpression()), !dbg !69 - %arraydecay4 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !70 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay4, i8 67, i64 99, i1 false), !dbg !70 - %arrayidx5 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !71 - store i8 0, ptr %arrayidx5, align 1, !dbg !72 - %arraydecay6 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !73 - %call = call i64 @strlen(ptr noundef %arraydecay6) #6, !dbg !74 - store i64 %call, ptr %destLen, align 8, !dbg !75 - store i64 0, ptr %i, align 8, !dbg !76 - br label %for.cond, !dbg !78 - -for.cond: ; preds = %for.inc, %entry - %0 = load i64, ptr %i, align 8, !dbg !79 - %1 = load i64, ptr %destLen, align 8, !dbg !81 - %cmp = icmp ult i64 %0, %1, !dbg !82 - br i1 %cmp, label %for.body, label %for.end, !dbg !83 - -for.body: ; preds = %for.cond - %2 = load ptr, ptr %data, align 8, !dbg !84 - %3 = load i64, ptr %i, align 8, !dbg !86 - %arrayidx7 = getelementptr inbounds i8, ptr %2, i64 %3, !dbg !84 - %4 = load i8, ptr %arrayidx7, align 1, !dbg !84 - %5 = load i64, ptr %i, align 8, !dbg !87 - %arrayidx8 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 %5, !dbg !88 - store i8 %4, ptr %arrayidx8, align 1, !dbg !89 - br label %for.inc, !dbg !90 - -for.inc: ; preds = %for.body - %6 = load i64, ptr %i, align 8, !dbg !91 - %inc = add i64 %6, 1, !dbg !91 - store i64 %inc, ptr %i, align 8, !dbg !91 - br label %for.cond, !dbg !92, !llvm.loop !93 - -for.end: ; preds = %for.cond - %7 = load ptr, ptr %data, align 8, !dbg !96 - %8 = load i64, ptr %destLen, align 8, !dbg !97 - %mul = mul i64 %8, 1, !dbg !98 - %sub = sub i64 %mul, 1, !dbg !99 - %call9 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %7, i64 noundef %sub), !dbg !100 - %arrayidx10 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !101 - store i8 0, ptr %arrayidx10, align 1, !dbg !102 - %arraydecay11 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !103 - call void @printLine(ptr noundef %arraydecay11), !dbg !104 - ret void, !dbg !105 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__char_declare_loop_01_good() #0 !dbg !106 { -entry: - call void @goodG2B(), !dbg !107 - ret void, !dbg !108 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !109 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !114, metadata !DIExpression()), !dbg !115 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !116, metadata !DIExpression()), !dbg !117 - %call = call i64 @time(ptr noundef null) #7, !dbg !118 - %conv = trunc i64 %call to i32, !dbg !119 - call void @srand(i32 noundef %conv) #7, !dbg !120 - call void @printLine(ptr noundef @.str), !dbg !121 - call void @CWE126_Buffer_Overread__char_declare_loop_01_good(), !dbg !122 - call void @printLine(ptr noundef @.str.1), !dbg !123 - call void @printLine(ptr noundef @.str.2), !dbg !124 - call void @CWE126_Buffer_Overread__char_declare_loop_01_bad(), !dbg !125 - call void @printLine(ptr noundef @.str.3), !dbg !126 - ret i32 0, !dbg !127 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #5 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !128 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i8], align 16 - %dataGoodBuffer = alloca [100 x i8], align 16 - %i = alloca i64, align 8 - %destLen = alloca i64, align 8 - %dest = alloca [100 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !129, metadata !DIExpression()), !dbg !130 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !131, metadata !DIExpression()), !dbg !132 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !133, metadata !DIExpression()), !dbg !134 - %arraydecay = getelementptr inbounds [50 x i8], ptr %dataBadBuffer, i64 0, i64 0, !dbg !135 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 65, i64 49, i1 false), !dbg !135 - %arrayidx = getelementptr inbounds [50 x i8], ptr %dataBadBuffer, i64 0, i64 49, !dbg !136 - store i8 0, ptr %arrayidx, align 1, !dbg !137 - %arraydecay1 = getelementptr inbounds [100 x i8], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !138 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay1, i8 65, i64 99, i1 false), !dbg !138 - %arrayidx2 = getelementptr inbounds [100 x i8], ptr %dataGoodBuffer, i64 0, i64 99, !dbg !139 - store i8 0, ptr %arrayidx2, align 1, !dbg !140 - %arraydecay3 = getelementptr inbounds [100 x i8], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !141 - store ptr %arraydecay3, ptr %data, align 8, !dbg !142 - call void @llvm.dbg.declare(metadata ptr %i, metadata !143, metadata !DIExpression()), !dbg !145 - call void @llvm.dbg.declare(metadata ptr %destLen, metadata !146, metadata !DIExpression()), !dbg !147 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !148, metadata !DIExpression()), !dbg !149 - %arraydecay4 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !150 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay4, i8 67, i64 99, i1 false), !dbg !150 - %arrayidx5 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !151 - store i8 0, ptr %arrayidx5, align 1, !dbg !152 - %arraydecay6 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !153 - %call = call i64 @strlen(ptr noundef %arraydecay6) #6, !dbg !154 - store i64 %call, ptr %destLen, align 8, !dbg !155 - %0 = load ptr, ptr %data, align 8, !dbg !156 - %1 = load i64, ptr %destLen, align 8, !dbg !157 - %sub = sub i64 %1, 1, !dbg !158 - %call7 = call i32 (ptr, i64, i32, ...) @BOF_CHECK_GEP(ptr noundef %0, i64 noundef %sub, i32 noundef 0), !dbg !159 - store i64 0, ptr %i, align 8, !dbg !160 - br label %for.cond, !dbg !162 - -for.cond: ; preds = %for.inc, %entry - %2 = load i64, ptr %i, align 8, !dbg !163 - %3 = load i64, ptr %destLen, align 8, !dbg !165 - %cmp = icmp ult i64 %2, %3, !dbg !166 - br i1 %cmp, label %for.body, label %for.end, !dbg !167 - -for.body: ; preds = %for.cond - %4 = load ptr, ptr %data, align 8, !dbg !168 - %5 = load i64, ptr %i, align 8, !dbg !170 - %arrayidx8 = getelementptr inbounds i8, ptr %4, i64 %5, !dbg !168 - %6 = load i8, ptr %arrayidx8, align 1, !dbg !168 - %7 = load i64, ptr %i, align 8, !dbg !171 - %arrayidx9 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 %7, !dbg !172 - store i8 %6, ptr %arrayidx9, align 1, !dbg !173 - %8 = load ptr, ptr %data, align 8, !dbg !174 - %9 = load i64, ptr %i, align 8, !dbg !175 - %add = add i64 %9, 1, !dbg !176 - %mul = mul i64 %add, 1, !dbg !177 - %sub10 = sub i64 %mul, 1, !dbg !178 - %call11 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %8, i64 noundef %sub10), !dbg !179 - br label %for.inc, !dbg !180 - -for.inc: ; preds = %for.body - %10 = load i64, ptr %i, align 8, !dbg !181 - %inc = add i64 %10, 1, !dbg !181 - store i64 %inc, ptr %i, align 8, !dbg !181 - br label %for.cond, !dbg !182, !llvm.loop !183 - -for.end: ; preds = %for.cond - %11 = load ptr, ptr %data, align 8, !dbg !185 - %12 = load i64, ptr %destLen, align 8, !dbg !186 - %mul12 = mul i64 %12, 1, !dbg !187 - %sub13 = sub i64 %mul12, 1, !dbg !188 - %call14 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %11, i64 noundef %sub13), !dbg !189 - %arrayidx15 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !190 - store i8 0, ptr %arrayidx15, align 1, !dbg !191 - %arraydecay16 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !192 - call void @printLine(ptr noundef %arraydecay16), !dbg !193 - ret void, !dbg !194 -} - -declare i32 @BOF_CHECK_GEP(...) #4 - -declare i32 @SAFE_BUFACCESS(...) #4 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind willreturn memory(read) } -attributes #7 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} -!llvm.ident = !{!34} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 108, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fcac898ff0cc0ffe7a7d669ada9db145") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 110, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 113, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 115, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fcac898ff0cc0ffe7a7d669ada9db145") -!24 = !{!25} -!25 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!26 = !{!0, !7, !12, !17} -!27 = !{i32 7, !"Dwarf Version", i32 5} -!28 = !{i32 2, !"Debug Info Version", i32 3} -!29 = !{i32 1, !"wchar_size", i32 4} -!30 = !{i32 8, !"PIC Level", i32 2} -!31 = !{i32 7, !"PIE Level", i32 2} -!32 = !{i32 7, !"uwtable", i32 2} -!33 = !{i32 7, !"frame-pointer", i32 2} -!34 = !{!"clang version 16.0.0"} -!35 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__char_declare_loop_01_bad", scope: !2, file: !2, line: 23, type: !36, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!36 = !DISubroutineType(types: !37) -!37 = !{null} -!38 = !{} -!39 = !DILocalVariable(name: "data", scope: !35, file: !2, line: 25, type: !40) -!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!41 = !DILocation(line: 25, column: 12, scope: !35) -!42 = !DILocalVariable(name: "dataBadBuffer", scope: !35, file: !2, line: 26, type: !43) -!43 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 400, elements: !44) -!44 = !{!45} -!45 = !DISubrange(count: 50) -!46 = !DILocation(line: 26, column: 10, scope: !35) -!47 = !DILocalVariable(name: "dataGoodBuffer", scope: !35, file: !2, line: 27, type: !48) -!48 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 800, elements: !49) -!49 = !{!50} -!50 = !DISubrange(count: 100) -!51 = !DILocation(line: 27, column: 10, scope: !35) -!52 = !DILocation(line: 28, column: 5, scope: !35) -!53 = !DILocation(line: 29, column: 5, scope: !35) -!54 = !DILocation(line: 29, column: 25, scope: !35) -!55 = !DILocation(line: 30, column: 5, scope: !35) -!56 = !DILocation(line: 31, column: 5, scope: !35) -!57 = !DILocation(line: 31, column: 27, scope: !35) -!58 = !DILocation(line: 33, column: 12, scope: !35) -!59 = !DILocation(line: 33, column: 10, scope: !35) -!60 = !DILocalVariable(name: "i", scope: !61, file: !2, line: 35, type: !62) -!61 = distinct !DILexicalBlock(scope: !35, file: !2, line: 34, column: 5) -!62 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !63, line: 46, baseType: !64) -!63 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!64 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) -!65 = !DILocation(line: 35, column: 16, scope: !61) -!66 = !DILocalVariable(name: "destLen", scope: !61, file: !2, line: 35, type: !62) -!67 = !DILocation(line: 35, column: 19, scope: !61) -!68 = !DILocalVariable(name: "dest", scope: !61, file: !2, line: 36, type: !48) -!69 = !DILocation(line: 36, column: 14, scope: !61) -!70 = !DILocation(line: 37, column: 9, scope: !61) -!71 = !DILocation(line: 38, column: 9, scope: !61) -!72 = !DILocation(line: 38, column: 21, scope: !61) -!73 = !DILocation(line: 39, column: 26, scope: !61) -!74 = !DILocation(line: 39, column: 19, scope: !61) -!75 = !DILocation(line: 39, column: 17, scope: !61) -!76 = !DILocation(line: 42, column: 16, scope: !77) -!77 = distinct !DILexicalBlock(scope: !61, file: !2, line: 42, column: 9) -!78 = !DILocation(line: 42, column: 14, scope: !77) -!79 = !DILocation(line: 42, column: 21, scope: !80) -!80 = distinct !DILexicalBlock(scope: !77, file: !2, line: 42, column: 9) -!81 = !DILocation(line: 42, column: 25, scope: !80) -!82 = !DILocation(line: 42, column: 23, scope: !80) -!83 = !DILocation(line: 42, column: 9, scope: !77) -!84 = !DILocation(line: 44, column: 23, scope: !85) -!85 = distinct !DILexicalBlock(scope: !80, file: !2, line: 43, column: 9) -!86 = !DILocation(line: 44, column: 28, scope: !85) -!87 = !DILocation(line: 44, column: 18, scope: !85) -!88 = !DILocation(line: 44, column: 13, scope: !85) -!89 = !DILocation(line: 44, column: 21, scope: !85) -!90 = !DILocation(line: 45, column: 9, scope: !85) -!91 = !DILocation(line: 42, column: 35, scope: !80) -!92 = !DILocation(line: 42, column: 9, scope: !80) -!93 = distinct !{!93, !83, !94, !95} -!94 = !DILocation(line: 45, column: 9, scope: !77) -!95 = !{!"llvm.loop.mustprogress"} -!96 = !DILocation(line: 46, column: 26, scope: !61) -!97 = !DILocation(line: 46, column: 32, scope: !61) -!98 = !DILocation(line: 46, column: 39, scope: !61) -!99 = !DILocation(line: 46, column: 53, scope: !61) -!100 = !DILocation(line: 46, column: 9, scope: !61) -!101 = !DILocation(line: 47, column: 9, scope: !61) -!102 = !DILocation(line: 47, column: 21, scope: !61) -!103 = !DILocation(line: 48, column: 19, scope: !61) -!104 = !DILocation(line: 48, column: 9, scope: !61) -!105 = !DILocation(line: 50, column: 1, scope: !35) -!106 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__char_declare_loop_01_good", scope: !2, file: !2, line: 88, type: !36, scopeLine: 89, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!107 = !DILocation(line: 90, column: 5, scope: !106) -!108 = !DILocation(line: 91, column: 1, scope: !106) -!109 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 103, type: !110, scopeLine: 104, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!110 = !DISubroutineType(types: !111) -!111 = !{!112, !112, !113} -!112 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!113 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !40, size: 64) -!114 = !DILocalVariable(name: "argc", arg: 1, scope: !109, file: !2, line: 103, type: !112) -!115 = !DILocation(line: 103, column: 14, scope: !109) -!116 = !DILocalVariable(name: "argv", arg: 2, scope: !109, file: !2, line: 103, type: !113) -!117 = !DILocation(line: 103, column: 27, scope: !109) -!118 = !DILocation(line: 106, column: 22, scope: !109) -!119 = !DILocation(line: 106, column: 12, scope: !109) -!120 = !DILocation(line: 106, column: 5, scope: !109) -!121 = !DILocation(line: 108, column: 5, scope: !109) -!122 = !DILocation(line: 109, column: 5, scope: !109) -!123 = !DILocation(line: 110, column: 5, scope: !109) -!124 = !DILocation(line: 113, column: 5, scope: !109) -!125 = !DILocation(line: 114, column: 5, scope: !109) -!126 = !DILocation(line: 115, column: 5, scope: !109) -!127 = !DILocation(line: 117, column: 5, scope: !109) -!128 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 57, type: !36, scopeLine: 58, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) -!129 = !DILocalVariable(name: "data", scope: !128, file: !2, line: 59, type: !40) -!130 = !DILocation(line: 59, column: 12, scope: !128) -!131 = !DILocalVariable(name: "dataBadBuffer", scope: !128, file: !2, line: 60, type: !43) -!132 = !DILocation(line: 60, column: 10, scope: !128) -!133 = !DILocalVariable(name: "dataGoodBuffer", scope: !128, file: !2, line: 61, type: !48) -!134 = !DILocation(line: 61, column: 10, scope: !128) -!135 = !DILocation(line: 62, column: 5, scope: !128) -!136 = !DILocation(line: 63, column: 5, scope: !128) -!137 = !DILocation(line: 63, column: 25, scope: !128) -!138 = !DILocation(line: 64, column: 5, scope: !128) -!139 = !DILocation(line: 65, column: 5, scope: !128) -!140 = !DILocation(line: 65, column: 27, scope: !128) -!141 = !DILocation(line: 67, column: 12, scope: !128) -!142 = !DILocation(line: 67, column: 10, scope: !128) -!143 = !DILocalVariable(name: "i", scope: !144, file: !2, line: 69, type: !62) -!144 = distinct !DILexicalBlock(scope: !128, file: !2, line: 68, column: 5) -!145 = !DILocation(line: 69, column: 16, scope: !144) -!146 = !DILocalVariable(name: "destLen", scope: !144, file: !2, line: 69, type: !62) -!147 = !DILocation(line: 69, column: 19, scope: !144) -!148 = !DILocalVariable(name: "dest", scope: !144, file: !2, line: 70, type: !48) -!149 = !DILocation(line: 70, column: 14, scope: !144) -!150 = !DILocation(line: 71, column: 9, scope: !144) -!151 = !DILocation(line: 72, column: 9, scope: !144) -!152 = !DILocation(line: 72, column: 21, scope: !144) -!153 = !DILocation(line: 73, column: 26, scope: !144) -!154 = !DILocation(line: 73, column: 19, scope: !144) -!155 = !DILocation(line: 73, column: 17, scope: !144) -!156 = !DILocation(line: 76, column: 23, scope: !144) -!157 = !DILocation(line: 76, column: 29, scope: !144) -!158 = !DILocation(line: 76, column: 37, scope: !144) -!159 = !DILocation(line: 76, column: 9, scope: !144) -!160 = !DILocation(line: 77, column: 16, scope: !161) -!161 = distinct !DILexicalBlock(scope: !144, file: !2, line: 77, column: 9) -!162 = !DILocation(line: 77, column: 14, scope: !161) -!163 = !DILocation(line: 77, column: 21, scope: !164) -!164 = distinct !DILexicalBlock(scope: !161, file: !2, line: 77, column: 9) -!165 = !DILocation(line: 77, column: 25, scope: !164) -!166 = !DILocation(line: 77, column: 23, scope: !164) -!167 = !DILocation(line: 77, column: 9, scope: !161) -!168 = !DILocation(line: 79, column: 23, scope: !169) -!169 = distinct !DILexicalBlock(scope: !164, file: !2, line: 78, column: 9) -!170 = !DILocation(line: 79, column: 28, scope: !169) -!171 = !DILocation(line: 79, column: 18, scope: !169) -!172 = !DILocation(line: 79, column: 13, scope: !169) -!173 = !DILocation(line: 79, column: 21, scope: !169) -!174 = !DILocation(line: 80, column: 28, scope: !169) -!175 = !DILocation(line: 80, column: 35, scope: !169) -!176 = !DILocation(line: 80, column: 36, scope: !169) -!177 = !DILocation(line: 80, column: 39, scope: !169) -!178 = !DILocation(line: 80, column: 53, scope: !169) -!179 = !DILocation(line: 80, column: 13, scope: !169) -!180 = !DILocation(line: 81, column: 9, scope: !169) -!181 = !DILocation(line: 77, column: 35, scope: !164) -!182 = !DILocation(line: 77, column: 9, scope: !164) -!183 = distinct !{!183, !167, !184, !95} -!184 = !DILocation(line: 81, column: 9, scope: !161) -!185 = !DILocation(line: 82, column: 24, scope: !144) -!186 = !DILocation(line: 82, column: 30, scope: !144) -!187 = !DILocation(line: 82, column: 37, scope: !144) -!188 = !DILocation(line: 82, column: 51, scope: !144) -!189 = !DILocation(line: 82, column: 9, scope: !144) -!190 = !DILocation(line: 83, column: 9, scope: !144) -!191 = !DILocation(line: 83, column: 21, scope: !144) -!192 = !DILocation(line: 84, column: 19, scope: !144) -!193 = !DILocation(line: 84, column: 9, scope: !144) -!194 = !DILocation(line: 86, column: 1, scope: !128) diff --git a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_memcpy_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_memcpy_01.c.bc deleted file mode 100644 index f50482ca..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_memcpy_01.c.bc +++ /dev/null @@ -1,331 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_memcpy_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_memcpy_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__char_declare_memcpy_01_bad() #0 !dbg !35 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i8], align 16 - %dataGoodBuffer = alloca [100 x i8], align 16 - %dest = alloca [100 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !39, metadata !DIExpression()), !dbg !41 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !42, metadata !DIExpression()), !dbg !46 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !47, metadata !DIExpression()), !dbg !51 - %arraydecay = getelementptr inbounds [50 x i8], ptr %dataBadBuffer, i64 0, i64 0, !dbg !52 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 65, i64 49, i1 false), !dbg !52 - %arrayidx = getelementptr inbounds [50 x i8], ptr %dataBadBuffer, i64 0, i64 49, !dbg !53 - store i8 0, ptr %arrayidx, align 1, !dbg !54 - %arraydecay1 = getelementptr inbounds [100 x i8], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !55 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay1, i8 65, i64 99, i1 false), !dbg !55 - %arrayidx2 = getelementptr inbounds [100 x i8], ptr %dataGoodBuffer, i64 0, i64 99, !dbg !56 - store i8 0, ptr %arrayidx2, align 1, !dbg !57 - %arraydecay3 = getelementptr inbounds [50 x i8], ptr %dataBadBuffer, i64 0, i64 0, !dbg !58 - store ptr %arraydecay3, ptr %data, align 8, !dbg !59 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !60, metadata !DIExpression()), !dbg !62 - %arraydecay4 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !63 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay4, i8 67, i64 99, i1 false), !dbg !63 - %arrayidx5 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !64 - store i8 0, ptr %arrayidx5, align 1, !dbg !65 - %arraydecay6 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !66 - %arraydecay7 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !67 - %call = call i64 @strlen(ptr noundef %arraydecay7) #7, !dbg !68 - %mul = mul i64 %call, 1, !dbg !69 - %sub = sub i64 %mul, 1, !dbg !70 - %call8 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef %sub), !dbg !71 - %0 = load ptr, ptr %data, align 8, !dbg !72 - %arraydecay9 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !73 - %call10 = call i64 @strlen(ptr noundef %arraydecay9) #7, !dbg !74 - %mul11 = mul i64 %call10, 1, !dbg !75 - %sub12 = sub i64 %mul11, 1, !dbg !76 - %call13 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %0, i64 noundef %sub12), !dbg !77 - %arraydecay14 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !78 - %1 = load ptr, ptr %data, align 8, !dbg !79 - %arraydecay15 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !80 - %call16 = call i64 @strlen(ptr noundef %arraydecay15) #7, !dbg !81 - %mul17 = mul i64 %call16, 1, !dbg !82 - call void @llvm.memcpy.p0.p0.i64(ptr align 16 %arraydecay14, ptr align 1 %1, i64 %mul17, i1 false), !dbg !78 - %arrayidx18 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !83 - store i8 0, ptr %arrayidx18, align 1, !dbg !84 - %arraydecay19 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !85 - call void @printLine(ptr noundef %arraydecay19), !dbg !86 - ret void, !dbg !87 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -declare i32 @SAFE_BUFACCESS(...) #3 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #4 - -declare i32 @UNSAFE_BUFACCESS(...) #3 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #5 - -declare void @printLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__char_declare_memcpy_01_good() #0 !dbg !88 { -entry: - call void @goodG2B(), !dbg !89 - ret void, !dbg !90 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !91 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !96, metadata !DIExpression()), !dbg !97 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !98, metadata !DIExpression()), !dbg !99 - %call = call i64 @time(ptr noundef null) #8, !dbg !100 - %conv = trunc i64 %call to i32, !dbg !101 - call void @srand(i32 noundef %conv) #8, !dbg !102 - call void @printLine(ptr noundef @.str), !dbg !103 - call void @CWE126_Buffer_Overread__char_declare_memcpy_01_good(), !dbg !104 - call void @printLine(ptr noundef @.str.1), !dbg !105 - call void @printLine(ptr noundef @.str.2), !dbg !106 - call void @CWE126_Buffer_Overread__char_declare_memcpy_01_bad(), !dbg !107 - call void @printLine(ptr noundef @.str.3), !dbg !108 - ret i32 0, !dbg !109 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #6 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #6 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !110 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i8], align 16 - %dataGoodBuffer = alloca [100 x i8], align 16 - %dest = alloca [100 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !111, metadata !DIExpression()), !dbg !112 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !113, metadata !DIExpression()), !dbg !114 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !115, metadata !DIExpression()), !dbg !116 - %arraydecay = getelementptr inbounds [50 x i8], ptr %dataBadBuffer, i64 0, i64 0, !dbg !117 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 65, i64 49, i1 false), !dbg !117 - %arrayidx = getelementptr inbounds [50 x i8], ptr %dataBadBuffer, i64 0, i64 49, !dbg !118 - store i8 0, ptr %arrayidx, align 1, !dbg !119 - %arraydecay1 = getelementptr inbounds [100 x i8], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !120 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay1, i8 65, i64 99, i1 false), !dbg !120 - %arrayidx2 = getelementptr inbounds [100 x i8], ptr %dataGoodBuffer, i64 0, i64 99, !dbg !121 - store i8 0, ptr %arrayidx2, align 1, !dbg !122 - %arraydecay3 = getelementptr inbounds [100 x i8], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !123 - store ptr %arraydecay3, ptr %data, align 8, !dbg !124 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !125, metadata !DIExpression()), !dbg !127 - %arraydecay4 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !128 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay4, i8 67, i64 99, i1 false), !dbg !128 - %arrayidx5 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !129 - store i8 0, ptr %arrayidx5, align 1, !dbg !130 - %arraydecay6 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !131 - %arraydecay7 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !132 - %call = call i64 @strlen(ptr noundef %arraydecay7) #7, !dbg !133 - %mul = mul i64 %call, 1, !dbg !134 - %sub = sub i64 %mul, 1, !dbg !135 - %call8 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef %sub), !dbg !136 - %0 = load ptr, ptr %data, align 8, !dbg !137 - %arraydecay9 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !138 - %call10 = call i64 @strlen(ptr noundef %arraydecay9) #7, !dbg !139 - %mul11 = mul i64 %call10, 1, !dbg !140 - %sub12 = sub i64 %mul11, 1, !dbg !141 - %call13 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %0, i64 noundef %sub12), !dbg !142 - %arraydecay14 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !143 - %1 = load ptr, ptr %data, align 8, !dbg !144 - %arraydecay15 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !145 - %call16 = call i64 @strlen(ptr noundef %arraydecay15) #7, !dbg !146 - %mul17 = mul i64 %call16, 1, !dbg !147 - call void @llvm.memcpy.p0.p0.i64(ptr align 16 %arraydecay14, ptr align 1 %1, i64 %mul17, i1 false), !dbg !143 - %arrayidx18 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !148 - store i8 0, ptr %arrayidx18, align 1, !dbg !149 - %arraydecay19 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !150 - call void @printLine(ptr noundef %arraydecay19), !dbg !151 - ret void, !dbg !152 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #6 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind willreturn memory(read) } -attributes #8 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} -!llvm.ident = !{!34} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 98, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "9b53c0ef545d08d84fc8a32b9529785b") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 100, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 103, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 105, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__char_declare_memcpy_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "9b53c0ef545d08d84fc8a32b9529785b") -!24 = !{!25} -!25 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!26 = !{!0, !7, !12, !17} -!27 = !{i32 7, !"Dwarf Version", i32 5} -!28 = !{i32 2, !"Debug Info Version", i32 3} -!29 = !{i32 1, !"wchar_size", i32 4} -!30 = !{i32 8, !"PIC Level", i32 2} -!31 = !{i32 7, !"PIE Level", i32 2} -!32 = !{i32 7, !"uwtable", i32 2} -!33 = !{i32 7, !"frame-pointer", i32 2} -!34 = !{!"clang version 16.0.0"} -!35 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__char_declare_memcpy_01_bad", scope: !2, file: !2, line: 23, type: !36, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!36 = !DISubroutineType(types: !37) -!37 = !{null} -!38 = !{} -!39 = !DILocalVariable(name: "data", scope: !35, file: !2, line: 25, type: !40) -!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!41 = !DILocation(line: 25, column: 12, scope: !35) -!42 = !DILocalVariable(name: "dataBadBuffer", scope: !35, file: !2, line: 26, type: !43) -!43 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 400, elements: !44) -!44 = !{!45} -!45 = !DISubrange(count: 50) -!46 = !DILocation(line: 26, column: 10, scope: !35) -!47 = !DILocalVariable(name: "dataGoodBuffer", scope: !35, file: !2, line: 27, type: !48) -!48 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 800, elements: !49) -!49 = !{!50} -!50 = !DISubrange(count: 100) -!51 = !DILocation(line: 27, column: 10, scope: !35) -!52 = !DILocation(line: 28, column: 5, scope: !35) -!53 = !DILocation(line: 29, column: 5, scope: !35) -!54 = !DILocation(line: 29, column: 25, scope: !35) -!55 = !DILocation(line: 30, column: 5, scope: !35) -!56 = !DILocation(line: 31, column: 5, scope: !35) -!57 = !DILocation(line: 31, column: 27, scope: !35) -!58 = !DILocation(line: 33, column: 12, scope: !35) -!59 = !DILocation(line: 33, column: 10, scope: !35) -!60 = !DILocalVariable(name: "dest", scope: !61, file: !2, line: 35, type: !48) -!61 = distinct !DILexicalBlock(scope: !35, file: !2, line: 34, column: 5) -!62 = !DILocation(line: 35, column: 14, scope: !61) -!63 = !DILocation(line: 36, column: 9, scope: !61) -!64 = !DILocation(line: 37, column: 9, scope: !61) -!65 = !DILocation(line: 37, column: 21, scope: !61) -!66 = !DILocation(line: 40, column: 24, scope: !61) -!67 = !DILocation(line: 40, column: 37, scope: !61) -!68 = !DILocation(line: 40, column: 30, scope: !61) -!69 = !DILocation(line: 40, column: 42, scope: !61) -!70 = !DILocation(line: 40, column: 56, scope: !61) -!71 = !DILocation(line: 40, column: 9, scope: !61) -!72 = !DILocation(line: 41, column: 26, scope: !61) -!73 = !DILocation(line: 41, column: 39, scope: !61) -!74 = !DILocation(line: 41, column: 32, scope: !61) -!75 = !DILocation(line: 41, column: 44, scope: !61) -!76 = !DILocation(line: 41, column: 58, scope: !61) -!77 = !DILocation(line: 41, column: 9, scope: !61) -!78 = !DILocation(line: 42, column: 9, scope: !61) -!79 = !DILocation(line: 42, column: 22, scope: !61) -!80 = !DILocation(line: 42, column: 35, scope: !61) -!81 = !DILocation(line: 42, column: 28, scope: !61) -!82 = !DILocation(line: 42, column: 40, scope: !61) -!83 = !DILocation(line: 43, column: 9, scope: !61) -!84 = !DILocation(line: 43, column: 21, scope: !61) -!85 = !DILocation(line: 44, column: 19, scope: !61) -!86 = !DILocation(line: 44, column: 9, scope: !61) -!87 = !DILocation(line: 46, column: 1, scope: !35) -!88 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__char_declare_memcpy_01_good", scope: !2, file: !2, line: 78, type: !36, scopeLine: 79, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!89 = !DILocation(line: 80, column: 5, scope: !88) -!90 = !DILocation(line: 81, column: 1, scope: !88) -!91 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 93, type: !92, scopeLine: 94, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!92 = !DISubroutineType(types: !93) -!93 = !{!94, !94, !95} -!94 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!95 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !40, size: 64) -!96 = !DILocalVariable(name: "argc", arg: 1, scope: !91, file: !2, line: 93, type: !94) -!97 = !DILocation(line: 93, column: 14, scope: !91) -!98 = !DILocalVariable(name: "argv", arg: 2, scope: !91, file: !2, line: 93, type: !95) -!99 = !DILocation(line: 93, column: 27, scope: !91) -!100 = !DILocation(line: 96, column: 22, scope: !91) -!101 = !DILocation(line: 96, column: 12, scope: !91) -!102 = !DILocation(line: 96, column: 5, scope: !91) -!103 = !DILocation(line: 98, column: 5, scope: !91) -!104 = !DILocation(line: 99, column: 5, scope: !91) -!105 = !DILocation(line: 100, column: 5, scope: !91) -!106 = !DILocation(line: 103, column: 5, scope: !91) -!107 = !DILocation(line: 104, column: 5, scope: !91) -!108 = !DILocation(line: 105, column: 5, scope: !91) -!109 = !DILocation(line: 107, column: 5, scope: !91) -!110 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 53, type: !36, scopeLine: 54, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) -!111 = !DILocalVariable(name: "data", scope: !110, file: !2, line: 55, type: !40) -!112 = !DILocation(line: 55, column: 12, scope: !110) -!113 = !DILocalVariable(name: "dataBadBuffer", scope: !110, file: !2, line: 56, type: !43) -!114 = !DILocation(line: 56, column: 10, scope: !110) -!115 = !DILocalVariable(name: "dataGoodBuffer", scope: !110, file: !2, line: 57, type: !48) -!116 = !DILocation(line: 57, column: 10, scope: !110) -!117 = !DILocation(line: 58, column: 5, scope: !110) -!118 = !DILocation(line: 59, column: 5, scope: !110) -!119 = !DILocation(line: 59, column: 25, scope: !110) -!120 = !DILocation(line: 60, column: 5, scope: !110) -!121 = !DILocation(line: 61, column: 5, scope: !110) -!122 = !DILocation(line: 61, column: 27, scope: !110) -!123 = !DILocation(line: 63, column: 12, scope: !110) -!124 = !DILocation(line: 63, column: 10, scope: !110) -!125 = !DILocalVariable(name: "dest", scope: !126, file: !2, line: 65, type: !48) -!126 = distinct !DILexicalBlock(scope: !110, file: !2, line: 64, column: 5) -!127 = !DILocation(line: 65, column: 14, scope: !126) -!128 = !DILocation(line: 66, column: 9, scope: !126) -!129 = !DILocation(line: 67, column: 9, scope: !126) -!130 = !DILocation(line: 67, column: 21, scope: !126) -!131 = !DILocation(line: 70, column: 24, scope: !126) -!132 = !DILocation(line: 70, column: 37, scope: !126) -!133 = !DILocation(line: 70, column: 30, scope: !126) -!134 = !DILocation(line: 70, column: 42, scope: !126) -!135 = !DILocation(line: 70, column: 56, scope: !126) -!136 = !DILocation(line: 70, column: 9, scope: !126) -!137 = !DILocation(line: 71, column: 24, scope: !126) -!138 = !DILocation(line: 71, column: 37, scope: !126) -!139 = !DILocation(line: 71, column: 30, scope: !126) -!140 = !DILocation(line: 71, column: 42, scope: !126) -!141 = !DILocation(line: 71, column: 56, scope: !126) -!142 = !DILocation(line: 71, column: 9, scope: !126) -!143 = !DILocation(line: 72, column: 9, scope: !126) -!144 = !DILocation(line: 72, column: 22, scope: !126) -!145 = !DILocation(line: 72, column: 35, scope: !126) -!146 = !DILocation(line: 72, column: 28, scope: !126) -!147 = !DILocation(line: 72, column: 40, scope: !126) -!148 = !DILocation(line: 73, column: 9, scope: !126) -!149 = !DILocation(line: 73, column: 21, scope: !126) -!150 = !DILocation(line: 74, column: 19, scope: !126) -!151 = !DILocation(line: 74, column: 9, scope: !126) -!152 = !DILocation(line: 76, column: 1, scope: !110) diff --git a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_loop_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_loop_01.c.bc deleted file mode 100644 index 8e65739f..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_loop_01.c.bc +++ /dev/null @@ -1,456 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_loop_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_loop_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__malloc_char_loop_01_bad() #0 !dbg !37 { -entry: - %data = alloca ptr, align 8 - %i = alloca i64, align 8 - %destLen = alloca i64, align 8 - %dest = alloca [100 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !41, metadata !DIExpression()), !dbg !42 - store ptr null, ptr %data, align 8, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef 50) #8, !dbg !44 - store ptr %call, ptr %data, align 8, !dbg !45 - %0 = load ptr, ptr %data, align 8, !dbg !46 - %cmp = icmp eq ptr %0, null, !dbg !48 - br i1 %cmp, label %if.then, label %if.end, !dbg !49 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !50 - unreachable, !dbg !50 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !52 - call void @llvm.memset.p0.i64(ptr align 1 %1, i8 65, i64 49, i1 false), !dbg !53 - %2 = load ptr, ptr %data, align 8, !dbg !54 - %arrayidx = getelementptr inbounds i8, ptr %2, i64 49, !dbg !54 - store i8 0, ptr %arrayidx, align 1, !dbg !55 - call void @llvm.dbg.declare(metadata ptr %i, metadata !56, metadata !DIExpression()), !dbg !61 - call void @llvm.dbg.declare(metadata ptr %destLen, metadata !62, metadata !DIExpression()), !dbg !63 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !64, metadata !DIExpression()), !dbg !68 - %arraydecay = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !69 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 67, i64 99, i1 false), !dbg !69 - %arrayidx1 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !70 - store i8 0, ptr %arrayidx1, align 1, !dbg !71 - %arraydecay2 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !72 - %call3 = call i64 @strlen(ptr noundef %arraydecay2) #10, !dbg !73 - store i64 %call3, ptr %destLen, align 8, !dbg !74 - %3 = load ptr, ptr %data, align 8, !dbg !75 - %4 = load i64, ptr %destLen, align 8, !dbg !76 - %sub = sub i64 %4, 1, !dbg !77 - %call4 = call i32 (ptr, i64, i32, ...) @BOF_CHECK_GEP(ptr noundef %3, i64 noundef %sub, i32 noundef 1), !dbg !78 - store i64 0, ptr %i, align 8, !dbg !79 - br label %for.cond, !dbg !81 - -for.cond: ; preds = %for.inc, %if.end - %5 = load i64, ptr %i, align 8, !dbg !82 - %6 = load i64, ptr %destLen, align 8, !dbg !84 - %cmp5 = icmp ult i64 %5, %6, !dbg !85 - br i1 %cmp5, label %for.body, label %for.end, !dbg !86 - -for.body: ; preds = %for.cond - %7 = load ptr, ptr %data, align 8, !dbg !87 - %8 = load i64, ptr %i, align 8, !dbg !89 - %arrayidx6 = getelementptr inbounds i8, ptr %7, i64 %8, !dbg !87 - %9 = load i8, ptr %arrayidx6, align 1, !dbg !87 - %10 = load i64, ptr %i, align 8, !dbg !90 - %arrayidx7 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 %10, !dbg !91 - store i8 %9, ptr %arrayidx7, align 1, !dbg !92 - br label %for.inc, !dbg !93 - -for.inc: ; preds = %for.body - %11 = load i64, ptr %i, align 8, !dbg !94 - %inc = add i64 %11, 1, !dbg !94 - store i64 %inc, ptr %i, align 8, !dbg !94 - br label %for.cond, !dbg !95, !llvm.loop !96 - -for.end: ; preds = %for.cond - %12 = load ptr, ptr %data, align 8, !dbg !99 - %13 = load i64, ptr %destLen, align 8, !dbg !100 - %mul = mul i64 %13, 1, !dbg !101 - %sub8 = sub i64 %mul, 1, !dbg !102 - %call9 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %12, i64 noundef %sub8), !dbg !103 - %arrayidx10 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !104 - store i8 0, ptr %arrayidx10, align 1, !dbg !105 - %arraydecay11 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !106 - call void @printLine(ptr noundef %arraydecay11), !dbg !107 - %14 = load ptr, ptr %data, align 8, !dbg !108 - call void @free(ptr noundef %14) #11, !dbg !109 - ret void, !dbg !110 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #5 - -declare i32 @BOF_CHECK_GEP(...) #6 - -declare i32 @UNSAFE_BUFACCESS(...) #6 - -declare void @printLine(ptr noundef) #6 - -; Function Attrs: nounwind -declare void @free(ptr noundef) #7 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__malloc_char_loop_01_good() #0 !dbg !111 { -entry: - call void @goodG2B(), !dbg !112 - ret void, !dbg !113 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !114 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !119, metadata !DIExpression()), !dbg !120 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !121, metadata !DIExpression()), !dbg !122 - %call = call i64 @time(ptr noundef null) #11, !dbg !123 - %conv = trunc i64 %call to i32, !dbg !124 - call void @srand(i32 noundef %conv) #11, !dbg !125 - call void @printLine(ptr noundef @.str), !dbg !126 - call void @CWE126_Buffer_Overread__malloc_char_loop_01_good(), !dbg !127 - call void @printLine(ptr noundef @.str.1), !dbg !128 - call void @printLine(ptr noundef @.str.2), !dbg !129 - call void @CWE126_Buffer_Overread__malloc_char_loop_01_bad(), !dbg !130 - call void @printLine(ptr noundef @.str.3), !dbg !131 - ret i32 0, !dbg !132 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #7 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #7 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !133 { -entry: - %data = alloca ptr, align 8 - %i = alloca i64, align 8 - %destLen = alloca i64, align 8 - %dest = alloca [100 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !134, metadata !DIExpression()), !dbg !135 - store ptr null, ptr %data, align 8, !dbg !136 - %call = call noalias ptr @malloc(i64 noundef 100) #8, !dbg !137 - store ptr %call, ptr %data, align 8, !dbg !138 - %0 = load ptr, ptr %data, align 8, !dbg !139 - %cmp = icmp eq ptr %0, null, !dbg !141 - br i1 %cmp, label %if.then, label %if.end, !dbg !142 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !143 - unreachable, !dbg !143 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !145 - call void @llvm.memset.p0.i64(ptr align 1 %1, i8 65, i64 99, i1 false), !dbg !146 - %2 = load ptr, ptr %data, align 8, !dbg !147 - %arrayidx = getelementptr inbounds i8, ptr %2, i64 99, !dbg !147 - store i8 0, ptr %arrayidx, align 1, !dbg !148 - call void @llvm.dbg.declare(metadata ptr %i, metadata !149, metadata !DIExpression()), !dbg !151 - call void @llvm.dbg.declare(metadata ptr %destLen, metadata !152, metadata !DIExpression()), !dbg !153 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !154, metadata !DIExpression()), !dbg !155 - %arraydecay = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !156 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 67, i64 99, i1 false), !dbg !156 - %arrayidx1 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !157 - store i8 0, ptr %arrayidx1, align 1, !dbg !158 - %arraydecay2 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !159 - %call3 = call i64 @strlen(ptr noundef %arraydecay2) #10, !dbg !160 - store i64 %call3, ptr %destLen, align 8, !dbg !161 - %3 = load ptr, ptr %data, align 8, !dbg !162 - %4 = load i64, ptr %destLen, align 8, !dbg !163 - %sub = sub i64 %4, 1, !dbg !164 - %call4 = call i32 (ptr, i64, i32, ...) @BOF_CHECK_GEP(ptr noundef %3, i64 noundef %sub, i32 noundef 0), !dbg !165 - store i64 0, ptr %i, align 8, !dbg !166 - br label %for.cond, !dbg !168 - -for.cond: ; preds = %for.inc, %if.end - %5 = load i64, ptr %i, align 8, !dbg !169 - %6 = load i64, ptr %destLen, align 8, !dbg !171 - %cmp5 = icmp ult i64 %5, %6, !dbg !172 - br i1 %cmp5, label %for.body, label %for.end, !dbg !173 - -for.body: ; preds = %for.cond - %7 = load ptr, ptr %data, align 8, !dbg !174 - %8 = load i64, ptr %i, align 8, !dbg !176 - %arrayidx6 = getelementptr inbounds i8, ptr %7, i64 %8, !dbg !174 - %9 = load i8, ptr %arrayidx6, align 1, !dbg !174 - %10 = load i64, ptr %i, align 8, !dbg !177 - %arrayidx7 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 %10, !dbg !178 - store i8 %9, ptr %arrayidx7, align 1, !dbg !179 - %11 = load ptr, ptr %data, align 8, !dbg !180 - %12 = load i64, ptr %i, align 8, !dbg !181 - %add = add i64 %12, 1, !dbg !182 - %mul = mul i64 %add, 1, !dbg !183 - %sub8 = sub i64 %mul, 1, !dbg !184 - %call9 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %11, i64 noundef %sub8), !dbg !185 - br label %for.inc, !dbg !186 - -for.inc: ; preds = %for.body - %13 = load i64, ptr %i, align 8, !dbg !187 - %inc = add i64 %13, 1, !dbg !187 - store i64 %inc, ptr %i, align 8, !dbg !187 - br label %for.cond, !dbg !188, !llvm.loop !189 - -for.end: ; preds = %for.cond - %14 = load ptr, ptr %data, align 8, !dbg !191 - %15 = load i64, ptr %destLen, align 8, !dbg !192 - %mul10 = mul i64 %15, 1, !dbg !193 - %sub11 = sub i64 %mul10, 1, !dbg !194 - %call12 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %14, i64 noundef %sub11), !dbg !195 - %arrayidx13 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !196 - store i8 0, ptr %arrayidx13, align 1, !dbg !197 - %arraydecay14 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !198 - call void @printLine(ptr noundef %arraydecay14), !dbg !199 - %16 = load ptr, ptr %data, align 8, !dbg !200 - call void @free(ptr noundef %16) #11, !dbg !201 - ret void, !dbg !202 -} - -declare i32 @SAFE_BUFACCESS(...) #6 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #5 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nounwind allocsize(0) } -attributes #9 = { noreturn nounwind } -attributes #10 = { nounwind willreturn memory(read) } -attributes #11 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!29, !30, !31, !32, !33, !34, !35} -!llvm.ident = !{!36} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 107, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "72cd65d799bfee639e2521627f12a5f3") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 109, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 112, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 114, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "72cd65d799bfee639e2521627f12a5f3") -!24 = !{!25, !26, !27} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!26 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!27 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!28 = !{!0, !7, !12, !17} -!29 = !{i32 7, !"Dwarf Version", i32 5} -!30 = !{i32 2, !"Debug Info Version", i32 3} -!31 = !{i32 1, !"wchar_size", i32 4} -!32 = !{i32 8, !"PIC Level", i32 2} -!33 = !{i32 7, !"PIE Level", i32 2} -!34 = !{i32 7, !"uwtable", i32 2} -!35 = !{i32 7, !"frame-pointer", i32 2} -!36 = !{!"clang version 16.0.0"} -!37 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__malloc_char_loop_01_bad", scope: !2, file: !2, line: 23, type: !38, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!38 = !DISubroutineType(types: !39) -!39 = !{null} -!40 = !{} -!41 = !DILocalVariable(name: "data", scope: !37, file: !2, line: 25, type: !25) -!42 = !DILocation(line: 25, column: 12, scope: !37) -!43 = !DILocation(line: 26, column: 10, scope: !37) -!44 = !DILocation(line: 28, column: 20, scope: !37) -!45 = !DILocation(line: 28, column: 10, scope: !37) -!46 = !DILocation(line: 29, column: 9, scope: !47) -!47 = distinct !DILexicalBlock(scope: !37, file: !2, line: 29, column: 9) -!48 = !DILocation(line: 29, column: 14, scope: !47) -!49 = !DILocation(line: 29, column: 9, scope: !37) -!50 = !DILocation(line: 29, column: 24, scope: !51) -!51 = distinct !DILexicalBlock(scope: !47, file: !2, line: 29, column: 23) -!52 = !DILocation(line: 30, column: 12, scope: !37) -!53 = !DILocation(line: 30, column: 5, scope: !37) -!54 = !DILocation(line: 31, column: 5, scope: !37) -!55 = !DILocation(line: 31, column: 16, scope: !37) -!56 = !DILocalVariable(name: "i", scope: !57, file: !2, line: 33, type: !58) -!57 = distinct !DILexicalBlock(scope: !37, file: !2, line: 32, column: 5) -!58 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !59, line: 46, baseType: !60) -!59 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!60 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) -!61 = !DILocation(line: 33, column: 16, scope: !57) -!62 = !DILocalVariable(name: "destLen", scope: !57, file: !2, line: 33, type: !58) -!63 = !DILocation(line: 33, column: 19, scope: !57) -!64 = !DILocalVariable(name: "dest", scope: !57, file: !2, line: 34, type: !65) -!65 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 800, elements: !66) -!66 = !{!67} -!67 = !DISubrange(count: 100) -!68 = !DILocation(line: 34, column: 14, scope: !57) -!69 = !DILocation(line: 35, column: 9, scope: !57) -!70 = !DILocation(line: 36, column: 9, scope: !57) -!71 = !DILocation(line: 36, column: 21, scope: !57) -!72 = !DILocation(line: 37, column: 26, scope: !57) -!73 = !DILocation(line: 37, column: 19, scope: !57) -!74 = !DILocation(line: 37, column: 17, scope: !57) -!75 = !DILocation(line: 40, column: 23, scope: !57) -!76 = !DILocation(line: 40, column: 29, scope: !57) -!77 = !DILocation(line: 40, column: 37, scope: !57) -!78 = !DILocation(line: 40, column: 9, scope: !57) -!79 = !DILocation(line: 41, column: 16, scope: !80) -!80 = distinct !DILexicalBlock(scope: !57, file: !2, line: 41, column: 9) -!81 = !DILocation(line: 41, column: 14, scope: !80) -!82 = !DILocation(line: 41, column: 21, scope: !83) -!83 = distinct !DILexicalBlock(scope: !80, file: !2, line: 41, column: 9) -!84 = !DILocation(line: 41, column: 25, scope: !83) -!85 = !DILocation(line: 41, column: 23, scope: !83) -!86 = !DILocation(line: 41, column: 9, scope: !80) -!87 = !DILocation(line: 43, column: 23, scope: !88) -!88 = distinct !DILexicalBlock(scope: !83, file: !2, line: 42, column: 9) -!89 = !DILocation(line: 43, column: 28, scope: !88) -!90 = !DILocation(line: 43, column: 18, scope: !88) -!91 = !DILocation(line: 43, column: 13, scope: !88) -!92 = !DILocation(line: 43, column: 21, scope: !88) -!93 = !DILocation(line: 44, column: 9, scope: !88) -!94 = !DILocation(line: 41, column: 35, scope: !83) -!95 = !DILocation(line: 41, column: 9, scope: !83) -!96 = distinct !{!96, !86, !97, !98} -!97 = !DILocation(line: 44, column: 9, scope: !80) -!98 = !{!"llvm.loop.mustprogress"} -!99 = !DILocation(line: 45, column: 26, scope: !57) -!100 = !DILocation(line: 45, column: 32, scope: !57) -!101 = !DILocation(line: 45, column: 40, scope: !57) -!102 = !DILocation(line: 45, column: 55, scope: !57) -!103 = !DILocation(line: 45, column: 9, scope: !57) -!104 = !DILocation(line: 46, column: 9, scope: !57) -!105 = !DILocation(line: 46, column: 21, scope: !57) -!106 = !DILocation(line: 47, column: 19, scope: !57) -!107 = !DILocation(line: 47, column: 9, scope: !57) -!108 = !DILocation(line: 48, column: 14, scope: !57) -!109 = !DILocation(line: 48, column: 9, scope: !57) -!110 = !DILocation(line: 50, column: 1, scope: !37) -!111 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__malloc_char_loop_01_good", scope: !2, file: !2, line: 87, type: !38, scopeLine: 88, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!112 = !DILocation(line: 89, column: 5, scope: !111) -!113 = !DILocation(line: 90, column: 1, scope: !111) -!114 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 102, type: !115, scopeLine: 103, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!115 = !DISubroutineType(types: !116) -!116 = !{!117, !117, !118} -!117 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!118 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64) -!119 = !DILocalVariable(name: "argc", arg: 1, scope: !114, file: !2, line: 102, type: !117) -!120 = !DILocation(line: 102, column: 14, scope: !114) -!121 = !DILocalVariable(name: "argv", arg: 2, scope: !114, file: !2, line: 102, type: !118) -!122 = !DILocation(line: 102, column: 27, scope: !114) -!123 = !DILocation(line: 105, column: 22, scope: !114) -!124 = !DILocation(line: 105, column: 12, scope: !114) -!125 = !DILocation(line: 105, column: 5, scope: !114) -!126 = !DILocation(line: 107, column: 5, scope: !114) -!127 = !DILocation(line: 108, column: 5, scope: !114) -!128 = !DILocation(line: 109, column: 5, scope: !114) -!129 = !DILocation(line: 112, column: 5, scope: !114) -!130 = !DILocation(line: 113, column: 5, scope: !114) -!131 = !DILocation(line: 114, column: 5, scope: !114) -!132 = !DILocation(line: 116, column: 5, scope: !114) -!133 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 57, type: !38, scopeLine: 58, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !40) -!134 = !DILocalVariable(name: "data", scope: !133, file: !2, line: 59, type: !25) -!135 = !DILocation(line: 59, column: 12, scope: !133) -!136 = !DILocation(line: 60, column: 10, scope: !133) -!137 = !DILocation(line: 62, column: 20, scope: !133) -!138 = !DILocation(line: 62, column: 10, scope: !133) -!139 = !DILocation(line: 63, column: 9, scope: !140) -!140 = distinct !DILexicalBlock(scope: !133, file: !2, line: 63, column: 9) -!141 = !DILocation(line: 63, column: 14, scope: !140) -!142 = !DILocation(line: 63, column: 9, scope: !133) -!143 = !DILocation(line: 63, column: 24, scope: !144) -!144 = distinct !DILexicalBlock(scope: !140, file: !2, line: 63, column: 23) -!145 = !DILocation(line: 64, column: 12, scope: !133) -!146 = !DILocation(line: 64, column: 5, scope: !133) -!147 = !DILocation(line: 65, column: 5, scope: !133) -!148 = !DILocation(line: 65, column: 17, scope: !133) -!149 = !DILocalVariable(name: "i", scope: !150, file: !2, line: 67, type: !58) -!150 = distinct !DILexicalBlock(scope: !133, file: !2, line: 66, column: 5) -!151 = !DILocation(line: 67, column: 16, scope: !150) -!152 = !DILocalVariable(name: "destLen", scope: !150, file: !2, line: 67, type: !58) -!153 = !DILocation(line: 67, column: 19, scope: !150) -!154 = !DILocalVariable(name: "dest", scope: !150, file: !2, line: 68, type: !65) -!155 = !DILocation(line: 68, column: 14, scope: !150) -!156 = !DILocation(line: 69, column: 9, scope: !150) -!157 = !DILocation(line: 70, column: 9, scope: !150) -!158 = !DILocation(line: 70, column: 21, scope: !150) -!159 = !DILocation(line: 71, column: 26, scope: !150) -!160 = !DILocation(line: 71, column: 19, scope: !150) -!161 = !DILocation(line: 71, column: 17, scope: !150) -!162 = !DILocation(line: 74, column: 23, scope: !150) -!163 = !DILocation(line: 74, column: 29, scope: !150) -!164 = !DILocation(line: 74, column: 37, scope: !150) -!165 = !DILocation(line: 74, column: 9, scope: !150) -!166 = !DILocation(line: 75, column: 16, scope: !167) -!167 = distinct !DILexicalBlock(scope: !150, file: !2, line: 75, column: 9) -!168 = !DILocation(line: 75, column: 14, scope: !167) -!169 = !DILocation(line: 75, column: 21, scope: !170) -!170 = distinct !DILexicalBlock(scope: !167, file: !2, line: 75, column: 9) -!171 = !DILocation(line: 75, column: 25, scope: !170) -!172 = !DILocation(line: 75, column: 23, scope: !170) -!173 = !DILocation(line: 75, column: 9, scope: !167) -!174 = !DILocation(line: 77, column: 23, scope: !175) -!175 = distinct !DILexicalBlock(scope: !170, file: !2, line: 76, column: 9) -!176 = !DILocation(line: 77, column: 28, scope: !175) -!177 = !DILocation(line: 77, column: 18, scope: !175) -!178 = !DILocation(line: 77, column: 13, scope: !175) -!179 = !DILocation(line: 77, column: 21, scope: !175) -!180 = !DILocation(line: 78, column: 28, scope: !175) -!181 = !DILocation(line: 78, column: 35, scope: !175) -!182 = !DILocation(line: 78, column: 37, scope: !175) -!183 = !DILocation(line: 78, column: 42, scope: !175) -!184 = !DILocation(line: 78, column: 57, scope: !175) -!185 = !DILocation(line: 78, column: 13, scope: !175) -!186 = !DILocation(line: 79, column: 9, scope: !175) -!187 = !DILocation(line: 75, column: 35, scope: !170) -!188 = !DILocation(line: 75, column: 9, scope: !170) -!189 = distinct !{!189, !173, !190, !98} -!190 = !DILocation(line: 79, column: 9, scope: !167) -!191 = !DILocation(line: 80, column: 24, scope: !150) -!192 = !DILocation(line: 80, column: 30, scope: !150) -!193 = !DILocation(line: 80, column: 38, scope: !150) -!194 = !DILocation(line: 80, column: 53, scope: !150) -!195 = !DILocation(line: 80, column: 9, scope: !150) -!196 = !DILocation(line: 81, column: 9, scope: !150) -!197 = !DILocation(line: 81, column: 21, scope: !150) -!198 = !DILocation(line: 82, column: 19, scope: !150) -!199 = !DILocation(line: 82, column: 9, scope: !150) -!200 = !DILocation(line: 83, column: 14, scope: !150) -!201 = !DILocation(line: 83, column: 9, scope: !150) -!202 = !DILocation(line: 85, column: 1, scope: !133) diff --git a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_memmove_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_memmove_01.c.bc deleted file mode 100644 index fa0dcdb8..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_memmove_01.c.bc +++ /dev/null @@ -1,358 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_memmove_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_memmove_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__malloc_char_memmove_01_bad() #0 !dbg !37 { -entry: - %data = alloca ptr, align 8 - %dest = alloca [100 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !41, metadata !DIExpression()), !dbg !42 - store ptr null, ptr %data, align 8, !dbg !43 - %call = call noalias ptr @malloc(i64 noundef 50) #9, !dbg !44 - store ptr %call, ptr %data, align 8, !dbg !45 - %0 = load ptr, ptr %data, align 8, !dbg !46 - %cmp = icmp eq ptr %0, null, !dbg !48 - br i1 %cmp, label %if.then, label %if.end, !dbg !49 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #10, !dbg !50 - unreachable, !dbg !50 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !52 - call void @llvm.memset.p0.i64(ptr align 1 %1, i8 65, i64 49, i1 false), !dbg !53 - %2 = load ptr, ptr %data, align 8, !dbg !54 - %arrayidx = getelementptr inbounds i8, ptr %2, i64 49, !dbg !54 - store i8 0, ptr %arrayidx, align 1, !dbg !55 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !56, metadata !DIExpression()), !dbg !61 - %arraydecay = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !62 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 67, i64 99, i1 false), !dbg !62 - %arrayidx1 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !63 - store i8 0, ptr %arrayidx1, align 1, !dbg !64 - %arraydecay2 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !65 - %arraydecay3 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !66 - %call4 = call i64 @strlen(ptr noundef %arraydecay3) #11, !dbg !67 - %mul = mul i64 %call4, 1, !dbg !68 - %sub = sub i64 %mul, 1, !dbg !69 - %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef %sub), !dbg !70 - %3 = load ptr, ptr %data, align 8, !dbg !71 - %arraydecay6 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !72 - %call7 = call i64 @strlen(ptr noundef %arraydecay6) #11, !dbg !73 - %mul8 = mul i64 %call7, 1, !dbg !74 - %sub9 = sub i64 %mul8, 1, !dbg !75 - %call10 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %3, i64 noundef %sub9), !dbg !76 - %arraydecay11 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !77 - %4 = load ptr, ptr %data, align 8, !dbg !78 - %arraydecay12 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !79 - %call13 = call i64 @strlen(ptr noundef %arraydecay12) #11, !dbg !80 - %mul14 = mul i64 %call13, 1, !dbg !81 - call void @llvm.memmove.p0.p0.i64(ptr align 16 %arraydecay11, ptr align 1 %4, i64 %mul14, i1 false), !dbg !77 - %arrayidx15 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !82 - store i8 0, ptr %arrayidx15, align 1, !dbg !83 - %arraydecay16 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !84 - call void @printLine(ptr noundef %arraydecay16), !dbg !85 - %5 = load ptr, ptr %data, align 8, !dbg !86 - call void @free(ptr noundef %5) #12, !dbg !87 - ret void, !dbg !88 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4 - -declare i32 @SAFE_BUFACCESS(...) #5 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @strlen(ptr noundef) #6 - -declare i32 @UNSAFE_BUFACCESS(...) #5 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #7 - -declare void @printLine(ptr noundef) #5 - -; Function Attrs: nounwind -declare void @free(ptr noundef) #8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__malloc_char_memmove_01_good() #0 !dbg !89 { -entry: - call void @goodG2B(), !dbg !90 - ret void, !dbg !91 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !92 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !97, metadata !DIExpression()), !dbg !98 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !99, metadata !DIExpression()), !dbg !100 - %call = call i64 @time(ptr noundef null) #12, !dbg !101 - %conv = trunc i64 %call to i32, !dbg !102 - call void @srand(i32 noundef %conv) #12, !dbg !103 - call void @printLine(ptr noundef @.str), !dbg !104 - call void @CWE126_Buffer_Overread__malloc_char_memmove_01_good(), !dbg !105 - call void @printLine(ptr noundef @.str.1), !dbg !106 - call void @printLine(ptr noundef @.str.2), !dbg !107 - call void @CWE126_Buffer_Overread__malloc_char_memmove_01_bad(), !dbg !108 - call void @printLine(ptr noundef @.str.3), !dbg !109 - ret i32 0, !dbg !110 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #8 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #8 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !111 { -entry: - %data = alloca ptr, align 8 - %dest = alloca [100 x i8], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !112, metadata !DIExpression()), !dbg !113 - store ptr null, ptr %data, align 8, !dbg !114 - %call = call noalias ptr @malloc(i64 noundef 100) #9, !dbg !115 - store ptr %call, ptr %data, align 8, !dbg !116 - %0 = load ptr, ptr %data, align 8, !dbg !117 - %cmp = icmp eq ptr %0, null, !dbg !119 - br i1 %cmp, label %if.then, label %if.end, !dbg !120 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #10, !dbg !121 - unreachable, !dbg !121 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !123 - call void @llvm.memset.p0.i64(ptr align 1 %1, i8 65, i64 99, i1 false), !dbg !124 - %2 = load ptr, ptr %data, align 8, !dbg !125 - %arrayidx = getelementptr inbounds i8, ptr %2, i64 99, !dbg !125 - store i8 0, ptr %arrayidx, align 1, !dbg !126 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !127, metadata !DIExpression()), !dbg !129 - %arraydecay = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !130 - call void @llvm.memset.p0.i64(ptr align 16 %arraydecay, i8 67, i64 99, i1 false), !dbg !130 - %arrayidx1 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !131 - store i8 0, ptr %arrayidx1, align 1, !dbg !132 - %arraydecay2 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !133 - %arraydecay3 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !134 - %call4 = call i64 @strlen(ptr noundef %arraydecay3) #11, !dbg !135 - %mul = mul i64 %call4, 1, !dbg !136 - %sub = sub i64 %mul, 1, !dbg !137 - %call5 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay2, i64 noundef %sub), !dbg !138 - %arraydecay6 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !139 - %arraydecay7 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !140 - %call8 = call i64 @strlen(ptr noundef %arraydecay7) #11, !dbg !141 - %mul9 = mul i64 %call8, 1, !dbg !142 - %sub10 = sub i64 %mul9, 1, !dbg !143 - %call11 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay6, i64 noundef %sub10), !dbg !144 - %arraydecay12 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !145 - %3 = load ptr, ptr %data, align 8, !dbg !146 - %arraydecay13 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !147 - %call14 = call i64 @strlen(ptr noundef %arraydecay13) #11, !dbg !148 - %mul15 = mul i64 %call14, 1, !dbg !149 - call void @llvm.memmove.p0.p0.i64(ptr align 16 %arraydecay12, ptr align 1 %3, i64 %mul15, i1 false), !dbg !145 - %arrayidx16 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 99, !dbg !150 - store i8 0, ptr %arrayidx16, align 1, !dbg !151 - %arraydecay17 = getelementptr inbounds [100 x i8], ptr %dest, i64 0, i64 0, !dbg !152 - call void @printLine(ptr noundef %arraydecay17), !dbg !153 - %4 = load ptr, ptr %data, align 8, !dbg !154 - call void @free(ptr noundef %4) #12, !dbg !155 - ret void, !dbg !156 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #5 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #8 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nounwind allocsize(0) } -attributes #10 = { noreturn nounwind } -attributes #11 = { nounwind willreturn memory(read) } -attributes #12 = { nounwind } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!29, !30, !31, !32, !33, !34, !35} -!llvm.ident = !{!36} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 96, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "dd88e1f646934aa1f9d3df4898740b81") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 98, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 101, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 103, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !28, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_char_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "dd88e1f646934aa1f9d3df4898740b81") -!24 = !{!25, !26, !27} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!26 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!27 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!28 = !{!0, !7, !12, !17} -!29 = !{i32 7, !"Dwarf Version", i32 5} -!30 = !{i32 2, !"Debug Info Version", i32 3} -!31 = !{i32 1, !"wchar_size", i32 4} -!32 = !{i32 8, !"PIC Level", i32 2} -!33 = !{i32 7, !"PIE Level", i32 2} -!34 = !{i32 7, !"uwtable", i32 2} -!35 = !{i32 7, !"frame-pointer", i32 2} -!36 = !{!"clang version 16.0.0"} -!37 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__malloc_char_memmove_01_bad", scope: !2, file: !2, line: 23, type: !38, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!38 = !DISubroutineType(types: !39) -!39 = !{null} -!40 = !{} -!41 = !DILocalVariable(name: "data", scope: !37, file: !2, line: 25, type: !25) -!42 = !DILocation(line: 25, column: 12, scope: !37) -!43 = !DILocation(line: 26, column: 10, scope: !37) -!44 = !DILocation(line: 28, column: 20, scope: !37) -!45 = !DILocation(line: 28, column: 10, scope: !37) -!46 = !DILocation(line: 29, column: 9, scope: !47) -!47 = distinct !DILexicalBlock(scope: !37, file: !2, line: 29, column: 9) -!48 = !DILocation(line: 29, column: 14, scope: !47) -!49 = !DILocation(line: 29, column: 9, scope: !37) -!50 = !DILocation(line: 29, column: 24, scope: !51) -!51 = distinct !DILexicalBlock(scope: !47, file: !2, line: 29, column: 23) -!52 = !DILocation(line: 30, column: 12, scope: !37) -!53 = !DILocation(line: 30, column: 5, scope: !37) -!54 = !DILocation(line: 31, column: 5, scope: !37) -!55 = !DILocation(line: 31, column: 16, scope: !37) -!56 = !DILocalVariable(name: "dest", scope: !57, file: !2, line: 33, type: !58) -!57 = distinct !DILexicalBlock(scope: !37, file: !2, line: 32, column: 5) -!58 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 800, elements: !59) -!59 = !{!60} -!60 = !DISubrange(count: 100) -!61 = !DILocation(line: 33, column: 14, scope: !57) -!62 = !DILocation(line: 34, column: 9, scope: !57) -!63 = !DILocation(line: 35, column: 9, scope: !57) -!64 = !DILocation(line: 35, column: 21, scope: !57) -!65 = !DILocation(line: 38, column: 24, scope: !57) -!66 = !DILocation(line: 38, column: 37, scope: !57) -!67 = !DILocation(line: 38, column: 30, scope: !57) -!68 = !DILocation(line: 38, column: 42, scope: !57) -!69 = !DILocation(line: 38, column: 56, scope: !57) -!70 = !DILocation(line: 38, column: 9, scope: !57) -!71 = !DILocation(line: 39, column: 26, scope: !57) -!72 = !DILocation(line: 39, column: 39, scope: !57) -!73 = !DILocation(line: 39, column: 32, scope: !57) -!74 = !DILocation(line: 39, column: 44, scope: !57) -!75 = !DILocation(line: 39, column: 58, scope: !57) -!76 = !DILocation(line: 39, column: 9, scope: !57) -!77 = !DILocation(line: 40, column: 9, scope: !57) -!78 = !DILocation(line: 40, column: 23, scope: !57) -!79 = !DILocation(line: 40, column: 36, scope: !57) -!80 = !DILocation(line: 40, column: 29, scope: !57) -!81 = !DILocation(line: 40, column: 41, scope: !57) -!82 = !DILocation(line: 41, column: 9, scope: !57) -!83 = !DILocation(line: 41, column: 21, scope: !57) -!84 = !DILocation(line: 42, column: 19, scope: !57) -!85 = !DILocation(line: 42, column: 9, scope: !57) -!86 = !DILocation(line: 43, column: 14, scope: !57) -!87 = !DILocation(line: 43, column: 9, scope: !57) -!88 = !DILocation(line: 45, column: 1, scope: !37) -!89 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__malloc_char_memmove_01_good", scope: !2, file: !2, line: 76, type: !38, scopeLine: 77, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!90 = !DILocation(line: 78, column: 5, scope: !89) -!91 = !DILocation(line: 79, column: 1, scope: !89) -!92 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 91, type: !93, scopeLine: 92, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !40) -!93 = !DISubroutineType(types: !94) -!94 = !{!95, !95, !96} -!95 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!96 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !25, size: 64) -!97 = !DILocalVariable(name: "argc", arg: 1, scope: !92, file: !2, line: 91, type: !95) -!98 = !DILocation(line: 91, column: 14, scope: !92) -!99 = !DILocalVariable(name: "argv", arg: 2, scope: !92, file: !2, line: 91, type: !96) -!100 = !DILocation(line: 91, column: 27, scope: !92) -!101 = !DILocation(line: 94, column: 22, scope: !92) -!102 = !DILocation(line: 94, column: 12, scope: !92) -!103 = !DILocation(line: 94, column: 5, scope: !92) -!104 = !DILocation(line: 96, column: 5, scope: !92) -!105 = !DILocation(line: 97, column: 5, scope: !92) -!106 = !DILocation(line: 98, column: 5, scope: !92) -!107 = !DILocation(line: 101, column: 5, scope: !92) -!108 = !DILocation(line: 102, column: 5, scope: !92) -!109 = !DILocation(line: 103, column: 5, scope: !92) -!110 = !DILocation(line: 105, column: 5, scope: !92) -!111 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 52, type: !38, scopeLine: 53, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !40) -!112 = !DILocalVariable(name: "data", scope: !111, file: !2, line: 54, type: !25) -!113 = !DILocation(line: 54, column: 12, scope: !111) -!114 = !DILocation(line: 55, column: 10, scope: !111) -!115 = !DILocation(line: 57, column: 20, scope: !111) -!116 = !DILocation(line: 57, column: 10, scope: !111) -!117 = !DILocation(line: 58, column: 9, scope: !118) -!118 = distinct !DILexicalBlock(scope: !111, file: !2, line: 58, column: 9) -!119 = !DILocation(line: 58, column: 14, scope: !118) -!120 = !DILocation(line: 58, column: 9, scope: !111) -!121 = !DILocation(line: 58, column: 24, scope: !122) -!122 = distinct !DILexicalBlock(scope: !118, file: !2, line: 58, column: 23) -!123 = !DILocation(line: 59, column: 12, scope: !111) -!124 = !DILocation(line: 59, column: 5, scope: !111) -!125 = !DILocation(line: 60, column: 5, scope: !111) -!126 = !DILocation(line: 60, column: 17, scope: !111) -!127 = !DILocalVariable(name: "dest", scope: !128, file: !2, line: 62, type: !58) -!128 = distinct !DILexicalBlock(scope: !111, file: !2, line: 61, column: 5) -!129 = !DILocation(line: 62, column: 14, scope: !128) -!130 = !DILocation(line: 63, column: 9, scope: !128) -!131 = !DILocation(line: 64, column: 9, scope: !128) -!132 = !DILocation(line: 64, column: 21, scope: !128) -!133 = !DILocation(line: 67, column: 24, scope: !128) -!134 = !DILocation(line: 67, column: 37, scope: !128) -!135 = !DILocation(line: 67, column: 30, scope: !128) -!136 = !DILocation(line: 67, column: 42, scope: !128) -!137 = !DILocation(line: 67, column: 56, scope: !128) -!138 = !DILocation(line: 67, column: 9, scope: !128) -!139 = !DILocation(line: 68, column: 24, scope: !128) -!140 = !DILocation(line: 68, column: 37, scope: !128) -!141 = !DILocation(line: 68, column: 30, scope: !128) -!142 = !DILocation(line: 68, column: 42, scope: !128) -!143 = !DILocation(line: 68, column: 56, scope: !128) -!144 = !DILocation(line: 68, column: 9, scope: !128) -!145 = !DILocation(line: 69, column: 9, scope: !128) -!146 = !DILocation(line: 69, column: 23, scope: !128) -!147 = !DILocation(line: 69, column: 36, scope: !128) -!148 = !DILocation(line: 69, column: 29, scope: !128) -!149 = !DILocation(line: 69, column: 41, scope: !128) -!150 = !DILocation(line: 70, column: 9, scope: !128) -!151 = !DILocation(line: 70, column: 21, scope: !128) -!152 = !DILocation(line: 71, column: 19, scope: !128) -!153 = !DILocation(line: 71, column: 9, scope: !128) -!154 = !DILocation(line: 72, column: 14, scope: !128) -!155 = !DILocation(line: 72, column: 9, scope: !128) -!156 = !DILocation(line: 74, column: 1, scope: !111) diff --git a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_loop_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_loop_01.c.bc deleted file mode 100644 index 8a7a2276..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_loop_01.c.bc +++ /dev/null @@ -1,443 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_loop_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_loop_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__malloc_wchar_t_loop_01_bad() #0 !dbg !40 { -entry: - %data = alloca ptr, align 8 - %i = alloca i64, align 8 - %destLen = alloca i64, align 8 - %dest = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !44, metadata !DIExpression()), !dbg !45 - store ptr null, ptr %data, align 8, !dbg !46 - %call = call noalias ptr @malloc(i64 noundef 200) #7, !dbg !47 - store ptr %call, ptr %data, align 8, !dbg !48 - %0 = load ptr, ptr %data, align 8, !dbg !49 - %cmp = icmp eq ptr %0, null, !dbg !51 - br i1 %cmp, label %if.then, label %if.end, !dbg !52 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #8, !dbg !53 - unreachable, !dbg !53 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !55 - %call1 = call ptr @wmemset(ptr noundef %1, i32 noundef 65, i64 noundef 49) #9, !dbg !56 - %2 = load ptr, ptr %data, align 8, !dbg !57 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 49, !dbg !57 - store i32 0, ptr %arrayidx, align 4, !dbg !58 - call void @llvm.dbg.declare(metadata ptr %i, metadata !59, metadata !DIExpression()), !dbg !63 - call void @llvm.dbg.declare(metadata ptr %destLen, metadata !64, metadata !DIExpression()), !dbg !65 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !66, metadata !DIExpression()), !dbg !70 - %arraydecay = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !71 - %call2 = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #9, !dbg !72 - %arrayidx3 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !73 - store i32 0, ptr %arrayidx3, align 4, !dbg !74 - %arraydecay4 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !75 - %call5 = call i64 @wcslen(ptr noundef %arraydecay4) #10, !dbg !76 - store i64 %call5, ptr %destLen, align 8, !dbg !77 - store i64 0, ptr %i, align 8, !dbg !78 - br label %for.cond, !dbg !80 - -for.cond: ; preds = %for.inc, %if.end - %3 = load i64, ptr %i, align 8, !dbg !81 - %4 = load i64, ptr %destLen, align 8, !dbg !83 - %cmp6 = icmp ult i64 %3, %4, !dbg !84 - br i1 %cmp6, label %for.body, label %for.end, !dbg !85 - -for.body: ; preds = %for.cond - %5 = load ptr, ptr %data, align 8, !dbg !86 - %6 = load i64, ptr %i, align 8, !dbg !88 - %arrayidx7 = getelementptr inbounds i32, ptr %5, i64 %6, !dbg !86 - %7 = load i32, ptr %arrayidx7, align 4, !dbg !86 - %8 = load i64, ptr %i, align 8, !dbg !89 - %arrayidx8 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 %8, !dbg !90 - store i32 %7, ptr %arrayidx8, align 4, !dbg !91 - br label %for.inc, !dbg !92 - -for.inc: ; preds = %for.body - %9 = load i64, ptr %i, align 8, !dbg !93 - %inc = add i64 %9, 1, !dbg !93 - store i64 %inc, ptr %i, align 8, !dbg !93 - br label %for.cond, !dbg !94, !llvm.loop !95 - -for.end: ; preds = %for.cond - %10 = load ptr, ptr %data, align 8, !dbg !98 - %11 = load i64, ptr %destLen, align 8, !dbg !99 - %mul = mul i64 %11, 4, !dbg !100 - %sub = sub i64 %mul, 1, !dbg !101 - %call9 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %10, i64 noundef %sub), !dbg !102 - %arrayidx10 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !103 - store i32 0, ptr %arrayidx10, align 4, !dbg !104 - %arraydecay11 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !105 - call void @printWLine(ptr noundef %arraydecay11), !dbg !106 - %12 = load ptr, ptr %data, align 8, !dbg !107 - call void @free(ptr noundef %12) #9, !dbg !108 - ret void, !dbg !109 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 - -; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #4 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @wcslen(ptr noundef) #5 - -declare i32 @UNSAFE_BUFACCESS(...) #6 - -declare void @printWLine(ptr noundef) #6 - -; Function Attrs: nounwind -declare void @free(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__malloc_wchar_t_loop_01_good() #0 !dbg !110 { -entry: - call void @goodG2B(), !dbg !111 - ret void, !dbg !112 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !113 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !118, metadata !DIExpression()), !dbg !119 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !120, metadata !DIExpression()), !dbg !121 - %call = call i64 @time(ptr noundef null) #9, !dbg !122 - %conv = trunc i64 %call to i32, !dbg !123 - call void @srand(i32 noundef %conv) #9, !dbg !124 - call void @printLine(ptr noundef @.str), !dbg !125 - call void @CWE126_Buffer_Overread__malloc_wchar_t_loop_01_good(), !dbg !126 - call void @printLine(ptr noundef @.str.1), !dbg !127 - call void @printLine(ptr noundef @.str.2), !dbg !128 - call void @CWE126_Buffer_Overread__malloc_wchar_t_loop_01_bad(), !dbg !129 - call void @printLine(ptr noundef @.str.3), !dbg !130 - ret i32 0, !dbg !131 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 - -declare void @printLine(ptr noundef) #6 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !132 { -entry: - %data = alloca ptr, align 8 - %i = alloca i64, align 8 - %destLen = alloca i64, align 8 - %dest = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !133, metadata !DIExpression()), !dbg !134 - store ptr null, ptr %data, align 8, !dbg !135 - %call = call noalias ptr @malloc(i64 noundef 400) #7, !dbg !136 - store ptr %call, ptr %data, align 8, !dbg !137 - %0 = load ptr, ptr %data, align 8, !dbg !138 - %cmp = icmp eq ptr %0, null, !dbg !140 - br i1 %cmp, label %if.then, label %if.end, !dbg !141 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #8, !dbg !142 - unreachable, !dbg !142 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !144 - %call1 = call ptr @wmemset(ptr noundef %1, i32 noundef 65, i64 noundef 99) #9, !dbg !145 - %2 = load ptr, ptr %data, align 8, !dbg !146 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 99, !dbg !146 - store i32 0, ptr %arrayidx, align 4, !dbg !147 - call void @llvm.dbg.declare(metadata ptr %i, metadata !148, metadata !DIExpression()), !dbg !150 - call void @llvm.dbg.declare(metadata ptr %destLen, metadata !151, metadata !DIExpression()), !dbg !152 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !153, metadata !DIExpression()), !dbg !154 - %arraydecay = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !155 - %call2 = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #9, !dbg !156 - %arrayidx3 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !157 - store i32 0, ptr %arrayidx3, align 4, !dbg !158 - %arraydecay4 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !159 - %call5 = call i64 @wcslen(ptr noundef %arraydecay4) #10, !dbg !160 - store i64 %call5, ptr %destLen, align 8, !dbg !161 - store i64 0, ptr %i, align 8, !dbg !162 - br label %for.cond, !dbg !164 - -for.cond: ; preds = %for.inc, %if.end - %3 = load i64, ptr %i, align 8, !dbg !165 - %4 = load i64, ptr %destLen, align 8, !dbg !167 - %cmp6 = icmp ult i64 %3, %4, !dbg !168 - br i1 %cmp6, label %for.body, label %for.end, !dbg !169 - -for.body: ; preds = %for.cond - %5 = load ptr, ptr %data, align 8, !dbg !170 - %6 = load i64, ptr %i, align 8, !dbg !172 - %arrayidx7 = getelementptr inbounds i32, ptr %5, i64 %6, !dbg !170 - %7 = load i32, ptr %arrayidx7, align 4, !dbg !170 - %8 = load i64, ptr %i, align 8, !dbg !173 - %arrayidx8 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 %8, !dbg !174 - store i32 %7, ptr %arrayidx8, align 4, !dbg !175 - %arraydecay9 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !176 - %9 = load i64, ptr %i, align 8, !dbg !177 - %add = add i64 %9, 1, !dbg !178 - %mul = mul i64 %add, 4, !dbg !179 - %sub = sub i64 %mul, 1, !dbg !180 - %call10 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay9, i64 noundef %sub), !dbg !181 - br label %for.inc, !dbg !182 - -for.inc: ; preds = %for.body - %10 = load i64, ptr %i, align 8, !dbg !183 - %inc = add i64 %10, 1, !dbg !183 - store i64 %inc, ptr %i, align 8, !dbg !183 - br label %for.cond, !dbg !184, !llvm.loop !185 - -for.end: ; preds = %for.cond - %arraydecay11 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !187 - %11 = load i64, ptr %destLen, align 8, !dbg !188 - %mul12 = mul i64 %11, 4, !dbg !189 - %sub13 = sub i64 %mul12, 1, !dbg !190 - %call14 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay11, i64 noundef %sub13), !dbg !191 - %arrayidx15 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !192 - store i32 0, ptr %arrayidx15, align 4, !dbg !193 - %arraydecay16 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !194 - call void @printWLine(ptr noundef %arraydecay16), !dbg !195 - %12 = load ptr, ptr %data, align 8, !dbg !196 - call void @free(ptr noundef %12) #9, !dbg !197 - ret void, !dbg !198 -} - -declare i32 @SAFE_BUFACCESS(...) #6 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind allocsize(0) } -attributes #8 = { noreturn nounwind } -attributes #9 = { nounwind } -attributes #10 = { nounwind willreturn memory(read) } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!32, !33, !34, !35, !36, !37, !38} -!llvm.ident = !{!39} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 105, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fd7794febb7b6a8bed29a61ecf0257d7") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 107, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 110, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 112, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !31, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "fd7794febb7b6a8bed29a61ecf0257d7") -!24 = !{!25, !29, !30} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) -!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !27, line: 74, baseType: !28) -!27 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!28 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!29 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!30 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!31 = !{!0, !7, !12, !17} -!32 = !{i32 7, !"Dwarf Version", i32 5} -!33 = !{i32 2, !"Debug Info Version", i32 3} -!34 = !{i32 1, !"wchar_size", i32 4} -!35 = !{i32 8, !"PIC Level", i32 2} -!36 = !{i32 7, !"PIE Level", i32 2} -!37 = !{i32 7, !"uwtable", i32 2} -!38 = !{i32 7, !"frame-pointer", i32 2} -!39 = !{!"clang version 16.0.0"} -!40 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__malloc_wchar_t_loop_01_bad", scope: !2, file: !2, line: 23, type: !41, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !43) -!41 = !DISubroutineType(types: !42) -!42 = !{null} -!43 = !{} -!44 = !DILocalVariable(name: "data", scope: !40, file: !2, line: 25, type: !25) -!45 = !DILocation(line: 25, column: 15, scope: !40) -!46 = !DILocation(line: 26, column: 10, scope: !40) -!47 = !DILocation(line: 28, column: 23, scope: !40) -!48 = !DILocation(line: 28, column: 10, scope: !40) -!49 = !DILocation(line: 29, column: 9, scope: !50) -!50 = distinct !DILexicalBlock(scope: !40, file: !2, line: 29, column: 9) -!51 = !DILocation(line: 29, column: 14, scope: !50) -!52 = !DILocation(line: 29, column: 9, scope: !40) -!53 = !DILocation(line: 29, column: 24, scope: !54) -!54 = distinct !DILexicalBlock(scope: !50, file: !2, line: 29, column: 23) -!55 = !DILocation(line: 30, column: 13, scope: !40) -!56 = !DILocation(line: 30, column: 5, scope: !40) -!57 = !DILocation(line: 31, column: 5, scope: !40) -!58 = !DILocation(line: 31, column: 16, scope: !40) -!59 = !DILocalVariable(name: "i", scope: !60, file: !2, line: 33, type: !61) -!60 = distinct !DILexicalBlock(scope: !40, file: !2, line: 32, column: 5) -!61 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !27, line: 46, baseType: !62) -!62 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) -!63 = !DILocation(line: 33, column: 16, scope: !60) -!64 = !DILocalVariable(name: "destLen", scope: !60, file: !2, line: 33, type: !61) -!65 = !DILocation(line: 33, column: 19, scope: !60) -!66 = !DILocalVariable(name: "dest", scope: !60, file: !2, line: 34, type: !67) -!67 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 3200, elements: !68) -!68 = !{!69} -!69 = !DISubrange(count: 100) -!70 = !DILocation(line: 34, column: 17, scope: !60) -!71 = !DILocation(line: 35, column: 17, scope: !60) -!72 = !DILocation(line: 35, column: 9, scope: !60) -!73 = !DILocation(line: 36, column: 9, scope: !60) -!74 = !DILocation(line: 36, column: 21, scope: !60) -!75 = !DILocation(line: 37, column: 26, scope: !60) -!76 = !DILocation(line: 37, column: 19, scope: !60) -!77 = !DILocation(line: 37, column: 17, scope: !60) -!78 = !DILocation(line: 40, column: 16, scope: !79) -!79 = distinct !DILexicalBlock(scope: !60, file: !2, line: 40, column: 9) -!80 = !DILocation(line: 40, column: 14, scope: !79) -!81 = !DILocation(line: 40, column: 21, scope: !82) -!82 = distinct !DILexicalBlock(scope: !79, file: !2, line: 40, column: 9) -!83 = !DILocation(line: 40, column: 25, scope: !82) -!84 = !DILocation(line: 40, column: 23, scope: !82) -!85 = !DILocation(line: 40, column: 9, scope: !79) -!86 = !DILocation(line: 42, column: 23, scope: !87) -!87 = distinct !DILexicalBlock(scope: !82, file: !2, line: 41, column: 9) -!88 = !DILocation(line: 42, column: 28, scope: !87) -!89 = !DILocation(line: 42, column: 18, scope: !87) -!90 = !DILocation(line: 42, column: 13, scope: !87) -!91 = !DILocation(line: 42, column: 21, scope: !87) -!92 = !DILocation(line: 43, column: 9, scope: !87) -!93 = !DILocation(line: 40, column: 35, scope: !82) -!94 = !DILocation(line: 40, column: 9, scope: !82) -!95 = distinct !{!95, !85, !96, !97} -!96 = !DILocation(line: 43, column: 9, scope: !79) -!97 = !{!"llvm.loop.mustprogress"} -!98 = !DILocation(line: 44, column: 26, scope: !60) -!99 = !DILocation(line: 44, column: 32, scope: !60) -!100 = !DILocation(line: 44, column: 40, scope: !60) -!101 = !DILocation(line: 44, column: 58, scope: !60) -!102 = !DILocation(line: 44, column: 9, scope: !60) -!103 = !DILocation(line: 45, column: 9, scope: !60) -!104 = !DILocation(line: 45, column: 21, scope: !60) -!105 = !DILocation(line: 46, column: 20, scope: !60) -!106 = !DILocation(line: 46, column: 9, scope: !60) -!107 = !DILocation(line: 47, column: 14, scope: !60) -!108 = !DILocation(line: 47, column: 9, scope: !60) -!109 = !DILocation(line: 49, column: 1, scope: !40) -!110 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__malloc_wchar_t_loop_01_good", scope: !2, file: !2, line: 85, type: !41, scopeLine: 86, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !43) -!111 = !DILocation(line: 87, column: 5, scope: !110) -!112 = !DILocation(line: 88, column: 1, scope: !110) -!113 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 100, type: !114, scopeLine: 101, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !43) -!114 = !DISubroutineType(types: !115) -!115 = !{!28, !28, !116} -!116 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !117, size: 64) -!117 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!118 = !DILocalVariable(name: "argc", arg: 1, scope: !113, file: !2, line: 100, type: !28) -!119 = !DILocation(line: 100, column: 14, scope: !113) -!120 = !DILocalVariable(name: "argv", arg: 2, scope: !113, file: !2, line: 100, type: !116) -!121 = !DILocation(line: 100, column: 27, scope: !113) -!122 = !DILocation(line: 103, column: 22, scope: !113) -!123 = !DILocation(line: 103, column: 12, scope: !113) -!124 = !DILocation(line: 103, column: 5, scope: !113) -!125 = !DILocation(line: 105, column: 5, scope: !113) -!126 = !DILocation(line: 106, column: 5, scope: !113) -!127 = !DILocation(line: 107, column: 5, scope: !113) -!128 = !DILocation(line: 110, column: 5, scope: !113) -!129 = !DILocation(line: 111, column: 5, scope: !113) -!130 = !DILocation(line: 112, column: 5, scope: !113) -!131 = !DILocation(line: 114, column: 5, scope: !113) -!132 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 56, type: !41, scopeLine: 57, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !43) -!133 = !DILocalVariable(name: "data", scope: !132, file: !2, line: 58, type: !25) -!134 = !DILocation(line: 58, column: 15, scope: !132) -!135 = !DILocation(line: 59, column: 10, scope: !132) -!136 = !DILocation(line: 61, column: 23, scope: !132) -!137 = !DILocation(line: 61, column: 10, scope: !132) -!138 = !DILocation(line: 62, column: 9, scope: !139) -!139 = distinct !DILexicalBlock(scope: !132, file: !2, line: 62, column: 9) -!140 = !DILocation(line: 62, column: 14, scope: !139) -!141 = !DILocation(line: 62, column: 9, scope: !132) -!142 = !DILocation(line: 62, column: 24, scope: !143) -!143 = distinct !DILexicalBlock(scope: !139, file: !2, line: 62, column: 23) -!144 = !DILocation(line: 63, column: 13, scope: !132) -!145 = !DILocation(line: 63, column: 5, scope: !132) -!146 = !DILocation(line: 64, column: 5, scope: !132) -!147 = !DILocation(line: 64, column: 17, scope: !132) -!148 = !DILocalVariable(name: "i", scope: !149, file: !2, line: 66, type: !61) -!149 = distinct !DILexicalBlock(scope: !132, file: !2, line: 65, column: 5) -!150 = !DILocation(line: 66, column: 16, scope: !149) -!151 = !DILocalVariable(name: "destLen", scope: !149, file: !2, line: 66, type: !61) -!152 = !DILocation(line: 66, column: 19, scope: !149) -!153 = !DILocalVariable(name: "dest", scope: !149, file: !2, line: 67, type: !67) -!154 = !DILocation(line: 67, column: 17, scope: !149) -!155 = !DILocation(line: 68, column: 17, scope: !149) -!156 = !DILocation(line: 68, column: 9, scope: !149) -!157 = !DILocation(line: 69, column: 9, scope: !149) -!158 = !DILocation(line: 69, column: 21, scope: !149) -!159 = !DILocation(line: 70, column: 26, scope: !149) -!160 = !DILocation(line: 70, column: 19, scope: !149) -!161 = !DILocation(line: 70, column: 17, scope: !149) -!162 = !DILocation(line: 73, column: 16, scope: !163) -!163 = distinct !DILexicalBlock(scope: !149, file: !2, line: 73, column: 9) -!164 = !DILocation(line: 73, column: 14, scope: !163) -!165 = !DILocation(line: 73, column: 21, scope: !166) -!166 = distinct !DILexicalBlock(scope: !163, file: !2, line: 73, column: 9) -!167 = !DILocation(line: 73, column: 25, scope: !166) -!168 = !DILocation(line: 73, column: 23, scope: !166) -!169 = !DILocation(line: 73, column: 9, scope: !163) -!170 = !DILocation(line: 75, column: 23, scope: !171) -!171 = distinct !DILexicalBlock(scope: !166, file: !2, line: 74, column: 9) -!172 = !DILocation(line: 75, column: 28, scope: !171) -!173 = !DILocation(line: 75, column: 18, scope: !171) -!174 = !DILocation(line: 75, column: 13, scope: !171) -!175 = !DILocation(line: 75, column: 21, scope: !171) -!176 = !DILocation(line: 76, column: 28, scope: !171) -!177 = !DILocation(line: 76, column: 35, scope: !171) -!178 = !DILocation(line: 76, column: 37, scope: !171) -!179 = !DILocation(line: 76, column: 42, scope: !171) -!180 = !DILocation(line: 76, column: 60, scope: !171) -!181 = !DILocation(line: 76, column: 13, scope: !171) -!182 = !DILocation(line: 77, column: 9, scope: !171) -!183 = !DILocation(line: 73, column: 35, scope: !166) -!184 = !DILocation(line: 73, column: 9, scope: !166) -!185 = distinct !{!185, !169, !186, !97} -!186 = !DILocation(line: 77, column: 9, scope: !163) -!187 = !DILocation(line: 78, column: 24, scope: !149) -!188 = !DILocation(line: 78, column: 30, scope: !149) -!189 = !DILocation(line: 78, column: 38, scope: !149) -!190 = !DILocation(line: 78, column: 56, scope: !149) -!191 = !DILocation(line: 78, column: 9, scope: !149) -!192 = !DILocation(line: 79, column: 9, scope: !149) -!193 = !DILocation(line: 79, column: 21, scope: !149) -!194 = !DILocation(line: 80, column: 20, scope: !149) -!195 = !DILocation(line: 80, column: 9, scope: !149) -!196 = !DILocation(line: 81, column: 14, scope: !149) -!197 = !DILocation(line: 81, column: 9, scope: !149) -!198 = !DILocation(line: 83, column: 1, scope: !132) diff --git a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_memmove_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_memmove_01.c.bc deleted file mode 100644 index ddac79a0..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_memmove_01.c.bc +++ /dev/null @@ -1,364 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_memmove_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_memmove_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__malloc_wchar_t_memmove_01_bad() #0 !dbg !40 { -entry: - %data = alloca ptr, align 8 - %dest = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !44, metadata !DIExpression()), !dbg !45 - store ptr null, ptr %data, align 8, !dbg !46 - %call = call noalias ptr @malloc(i64 noundef 200) #8, !dbg !47 - store ptr %call, ptr %data, align 8, !dbg !48 - %0 = load ptr, ptr %data, align 8, !dbg !49 - %cmp = icmp eq ptr %0, null, !dbg !51 - br i1 %cmp, label %if.then, label %if.end, !dbg !52 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !53 - unreachable, !dbg !53 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !55 - %call1 = call ptr @wmemset(ptr noundef %1, i32 noundef 65, i64 noundef 49) #10, !dbg !56 - %2 = load ptr, ptr %data, align 8, !dbg !57 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 49, !dbg !57 - store i32 0, ptr %arrayidx, align 4, !dbg !58 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !59, metadata !DIExpression()), !dbg !64 - %arraydecay = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !65 - %call2 = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #10, !dbg !66 - %arrayidx3 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !67 - store i32 0, ptr %arrayidx3, align 4, !dbg !68 - %arraydecay4 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !69 - %arraydecay5 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !70 - %call6 = call i64 @wcslen(ptr noundef %arraydecay5) #11, !dbg !71 - %mul = mul i64 %call6, 4, !dbg !72 - %sub = sub i64 %mul, 1, !dbg !73 - %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay4, i64 noundef %sub), !dbg !74 - %3 = load ptr, ptr %data, align 8, !dbg !75 - %arraydecay8 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !76 - %call9 = call i64 @wcslen(ptr noundef %arraydecay8) #11, !dbg !77 - %mul10 = mul i64 %call9, 4, !dbg !78 - %sub11 = sub i64 %mul10, 1, !dbg !79 - %call12 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %3, i64 noundef %sub11), !dbg !80 - %arraydecay13 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !81 - %4 = load ptr, ptr %data, align 8, !dbg !82 - %arraydecay14 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !83 - %call15 = call i64 @wcslen(ptr noundef %arraydecay14) #11, !dbg !84 - %mul16 = mul i64 %call15, 4, !dbg !85 - call void @llvm.memmove.p0.p0.i64(ptr align 16 %arraydecay13, ptr align 4 %4, i64 %mul16, i1 false), !dbg !81 - %arrayidx17 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !86 - store i32 0, ptr %arrayidx17, align 4, !dbg !87 - %arraydecay18 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !88 - call void @printWLine(ptr noundef %arraydecay18), !dbg !89 - %5 = load ptr, ptr %data, align 8, !dbg !90 - call void @free(ptr noundef %5) #10, !dbg !91 - ret void, !dbg !92 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noreturn nounwind -declare void @exit(i32 noundef) #3 - -; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #4 - -declare i32 @SAFE_BUFACCESS(...) #5 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @wcslen(ptr noundef) #6 - -declare i32 @UNSAFE_BUFACCESS(...) #5 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #7 - -declare void @printWLine(ptr noundef) #5 - -; Function Attrs: nounwind -declare void @free(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__malloc_wchar_t_memmove_01_good() #0 !dbg !93 { -entry: - call void @goodG2B(), !dbg !94 - ret void, !dbg !95 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !96 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !101, metadata !DIExpression()), !dbg !102 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !103, metadata !DIExpression()), !dbg !104 - %call = call i64 @time(ptr noundef null) #10, !dbg !105 - %conv = trunc i64 %call to i32, !dbg !106 - call void @srand(i32 noundef %conv) #10, !dbg !107 - call void @printLine(ptr noundef @.str), !dbg !108 - call void @CWE126_Buffer_Overread__malloc_wchar_t_memmove_01_good(), !dbg !109 - call void @printLine(ptr noundef @.str.1), !dbg !110 - call void @printLine(ptr noundef @.str.2), !dbg !111 - call void @CWE126_Buffer_Overread__malloc_wchar_t_memmove_01_bad(), !dbg !112 - call void @printLine(ptr noundef @.str.3), !dbg !113 - ret i32 0, !dbg !114 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #4 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #4 - -declare void @printLine(ptr noundef) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !115 { -entry: - %data = alloca ptr, align 8 - %dest = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !116, metadata !DIExpression()), !dbg !117 - store ptr null, ptr %data, align 8, !dbg !118 - %call = call noalias ptr @malloc(i64 noundef 400) #8, !dbg !119 - store ptr %call, ptr %data, align 8, !dbg !120 - %0 = load ptr, ptr %data, align 8, !dbg !121 - %cmp = icmp eq ptr %0, null, !dbg !123 - br i1 %cmp, label %if.then, label %if.end, !dbg !124 - -if.then: ; preds = %entry - call void @exit(i32 noundef -1) #9, !dbg !125 - unreachable, !dbg !125 - -if.end: ; preds = %entry - %1 = load ptr, ptr %data, align 8, !dbg !127 - %call1 = call ptr @wmemset(ptr noundef %1, i32 noundef 65, i64 noundef 99) #10, !dbg !128 - %2 = load ptr, ptr %data, align 8, !dbg !129 - %arrayidx = getelementptr inbounds i32, ptr %2, i64 99, !dbg !129 - store i32 0, ptr %arrayidx, align 4, !dbg !130 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !131, metadata !DIExpression()), !dbg !133 - %arraydecay = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !134 - %call2 = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 67, i64 noundef 99) #10, !dbg !135 - %arrayidx3 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !136 - store i32 0, ptr %arrayidx3, align 4, !dbg !137 - %arraydecay4 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !138 - %arraydecay5 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !139 - %call6 = call i64 @wcslen(ptr noundef %arraydecay5) #11, !dbg !140 - %mul = mul i64 %call6, 4, !dbg !141 - %sub = sub i64 %mul, 1, !dbg !142 - %call7 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay4, i64 noundef %sub), !dbg !143 - %3 = load ptr, ptr %data, align 8, !dbg !144 - %arraydecay8 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !145 - %call9 = call i64 @wcslen(ptr noundef %arraydecay8) #11, !dbg !146 - %mul10 = mul i64 %call9, 4, !dbg !147 - %sub11 = sub i64 %mul10, 1, !dbg !148 - %call12 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %3, i64 noundef %sub11), !dbg !149 - %arraydecay13 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !150 - %4 = load ptr, ptr %data, align 8, !dbg !151 - %arraydecay14 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !152 - %call15 = call i64 @wcslen(ptr noundef %arraydecay14) #11, !dbg !153 - %mul16 = mul i64 %call15, 4, !dbg !154 - call void @llvm.memmove.p0.p0.i64(ptr align 16 %arraydecay13, ptr align 4 %4, i64 %mul16, i1 false), !dbg !150 - %arrayidx17 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !155 - store i32 0, ptr %arrayidx17, align 4, !dbg !156 - %arraydecay18 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !157 - call void @printWLine(ptr noundef %arraydecay18), !dbg !158 - %5 = load ptr, ptr %data, align 8, !dbg !159 - call void @free(ptr noundef %5) #10, !dbg !160 - ret void, !dbg !161 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #8 = { nounwind allocsize(0) } -attributes #9 = { noreturn nounwind } -attributes #10 = { nounwind } -attributes #11 = { nounwind willreturn memory(read) } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!32, !33, !34, !35, !36, !37, !38} -!llvm.ident = !{!39} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 96, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8635215214eb5e3f64c9415242ab6099") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 98, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 101, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 103, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !31, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__malloc_wchar_t_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8635215214eb5e3f64c9415242ab6099") -!24 = !{!25, !29, !30} -!25 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !26, size: 64) -!26 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !27, line: 74, baseType: !28) -!27 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!28 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!29 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!30 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!31 = !{!0, !7, !12, !17} -!32 = !{i32 7, !"Dwarf Version", i32 5} -!33 = !{i32 2, !"Debug Info Version", i32 3} -!34 = !{i32 1, !"wchar_size", i32 4} -!35 = !{i32 8, !"PIC Level", i32 2} -!36 = !{i32 7, !"PIE Level", i32 2} -!37 = !{i32 7, !"uwtable", i32 2} -!38 = !{i32 7, !"frame-pointer", i32 2} -!39 = !{!"clang version 16.0.0"} -!40 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__malloc_wchar_t_memmove_01_bad", scope: !2, file: !2, line: 23, type: !41, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !43) -!41 = !DISubroutineType(types: !42) -!42 = !{null} -!43 = !{} -!44 = !DILocalVariable(name: "data", scope: !40, file: !2, line: 25, type: !25) -!45 = !DILocation(line: 25, column: 15, scope: !40) -!46 = !DILocation(line: 26, column: 10, scope: !40) -!47 = !DILocation(line: 28, column: 23, scope: !40) -!48 = !DILocation(line: 28, column: 10, scope: !40) -!49 = !DILocation(line: 29, column: 9, scope: !50) -!50 = distinct !DILexicalBlock(scope: !40, file: !2, line: 29, column: 9) -!51 = !DILocation(line: 29, column: 14, scope: !50) -!52 = !DILocation(line: 29, column: 9, scope: !40) -!53 = !DILocation(line: 29, column: 24, scope: !54) -!54 = distinct !DILexicalBlock(scope: !50, file: !2, line: 29, column: 23) -!55 = !DILocation(line: 30, column: 13, scope: !40) -!56 = !DILocation(line: 30, column: 5, scope: !40) -!57 = !DILocation(line: 31, column: 5, scope: !40) -!58 = !DILocation(line: 31, column: 16, scope: !40) -!59 = !DILocalVariable(name: "dest", scope: !60, file: !2, line: 33, type: !61) -!60 = distinct !DILexicalBlock(scope: !40, file: !2, line: 32, column: 5) -!61 = !DICompositeType(tag: DW_TAG_array_type, baseType: !26, size: 3200, elements: !62) -!62 = !{!63} -!63 = !DISubrange(count: 100) -!64 = !DILocation(line: 33, column: 17, scope: !60) -!65 = !DILocation(line: 34, column: 17, scope: !60) -!66 = !DILocation(line: 34, column: 9, scope: !60) -!67 = !DILocation(line: 35, column: 9, scope: !60) -!68 = !DILocation(line: 35, column: 21, scope: !60) -!69 = !DILocation(line: 38, column: 24, scope: !60) -!70 = !DILocation(line: 38, column: 37, scope: !60) -!71 = !DILocation(line: 38, column: 30, scope: !60) -!72 = !DILocation(line: 38, column: 42, scope: !60) -!73 = !DILocation(line: 38, column: 59, scope: !60) -!74 = !DILocation(line: 38, column: 9, scope: !60) -!75 = !DILocation(line: 39, column: 26, scope: !60) -!76 = !DILocation(line: 39, column: 39, scope: !60) -!77 = !DILocation(line: 39, column: 32, scope: !60) -!78 = !DILocation(line: 39, column: 44, scope: !60) -!79 = !DILocation(line: 39, column: 61, scope: !60) -!80 = !DILocation(line: 39, column: 9, scope: !60) -!81 = !DILocation(line: 40, column: 9, scope: !60) -!82 = !DILocation(line: 40, column: 23, scope: !60) -!83 = !DILocation(line: 40, column: 36, scope: !60) -!84 = !DILocation(line: 40, column: 29, scope: !60) -!85 = !DILocation(line: 40, column: 41, scope: !60) -!86 = !DILocation(line: 41, column: 9, scope: !60) -!87 = !DILocation(line: 41, column: 21, scope: !60) -!88 = !DILocation(line: 42, column: 20, scope: !60) -!89 = !DILocation(line: 42, column: 9, scope: !60) -!90 = !DILocation(line: 43, column: 14, scope: !60) -!91 = !DILocation(line: 43, column: 9, scope: !60) -!92 = !DILocation(line: 45, column: 1, scope: !40) -!93 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__malloc_wchar_t_memmove_01_good", scope: !2, file: !2, line: 76, type: !41, scopeLine: 77, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !43) -!94 = !DILocation(line: 78, column: 5, scope: !93) -!95 = !DILocation(line: 79, column: 1, scope: !93) -!96 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 91, type: !97, scopeLine: 92, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !43) -!97 = !DISubroutineType(types: !98) -!98 = !{!28, !28, !99} -!99 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !100, size: 64) -!100 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!101 = !DILocalVariable(name: "argc", arg: 1, scope: !96, file: !2, line: 91, type: !28) -!102 = !DILocation(line: 91, column: 14, scope: !96) -!103 = !DILocalVariable(name: "argv", arg: 2, scope: !96, file: !2, line: 91, type: !99) -!104 = !DILocation(line: 91, column: 27, scope: !96) -!105 = !DILocation(line: 94, column: 22, scope: !96) -!106 = !DILocation(line: 94, column: 12, scope: !96) -!107 = !DILocation(line: 94, column: 5, scope: !96) -!108 = !DILocation(line: 96, column: 5, scope: !96) -!109 = !DILocation(line: 97, column: 5, scope: !96) -!110 = !DILocation(line: 98, column: 5, scope: !96) -!111 = !DILocation(line: 101, column: 5, scope: !96) -!112 = !DILocation(line: 102, column: 5, scope: !96) -!113 = !DILocation(line: 103, column: 5, scope: !96) -!114 = !DILocation(line: 105, column: 5, scope: !96) -!115 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 52, type: !41, scopeLine: 53, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !43) -!116 = !DILocalVariable(name: "data", scope: !115, file: !2, line: 54, type: !25) -!117 = !DILocation(line: 54, column: 15, scope: !115) -!118 = !DILocation(line: 55, column: 10, scope: !115) -!119 = !DILocation(line: 57, column: 23, scope: !115) -!120 = !DILocation(line: 57, column: 10, scope: !115) -!121 = !DILocation(line: 58, column: 9, scope: !122) -!122 = distinct !DILexicalBlock(scope: !115, file: !2, line: 58, column: 9) -!123 = !DILocation(line: 58, column: 14, scope: !122) -!124 = !DILocation(line: 58, column: 9, scope: !115) -!125 = !DILocation(line: 58, column: 24, scope: !126) -!126 = distinct !DILexicalBlock(scope: !122, file: !2, line: 58, column: 23) -!127 = !DILocation(line: 59, column: 13, scope: !115) -!128 = !DILocation(line: 59, column: 5, scope: !115) -!129 = !DILocation(line: 60, column: 5, scope: !115) -!130 = !DILocation(line: 60, column: 17, scope: !115) -!131 = !DILocalVariable(name: "dest", scope: !132, file: !2, line: 62, type: !61) -!132 = distinct !DILexicalBlock(scope: !115, file: !2, line: 61, column: 5) -!133 = !DILocation(line: 62, column: 17, scope: !132) -!134 = !DILocation(line: 63, column: 17, scope: !132) -!135 = !DILocation(line: 63, column: 9, scope: !132) -!136 = !DILocation(line: 64, column: 9, scope: !132) -!137 = !DILocation(line: 64, column: 21, scope: !132) -!138 = !DILocation(line: 67, column: 24, scope: !132) -!139 = !DILocation(line: 67, column: 37, scope: !132) -!140 = !DILocation(line: 67, column: 30, scope: !132) -!141 = !DILocation(line: 67, column: 42, scope: !132) -!142 = !DILocation(line: 67, column: 59, scope: !132) -!143 = !DILocation(line: 67, column: 9, scope: !132) -!144 = !DILocation(line: 68, column: 24, scope: !132) -!145 = !DILocation(line: 68, column: 37, scope: !132) -!146 = !DILocation(line: 68, column: 30, scope: !132) -!147 = !DILocation(line: 68, column: 42, scope: !132) -!148 = !DILocation(line: 68, column: 59, scope: !132) -!149 = !DILocation(line: 68, column: 9, scope: !132) -!150 = !DILocation(line: 69, column: 9, scope: !132) -!151 = !DILocation(line: 69, column: 23, scope: !132) -!152 = !DILocation(line: 69, column: 36, scope: !132) -!153 = !DILocation(line: 69, column: 29, scope: !132) -!154 = !DILocation(line: 69, column: 41, scope: !132) -!155 = !DILocation(line: 70, column: 9, scope: !132) -!156 = !DILocation(line: 70, column: 21, scope: !132) -!157 = !DILocation(line: 71, column: 20, scope: !132) -!158 = !DILocation(line: 71, column: 9, scope: !132) -!159 = !DILocation(line: 72, column: 14, scope: !132) -!160 = !DILocation(line: 72, column: 9, scope: !132) -!161 = !DILocation(line: 74, column: 1, scope: !115) diff --git a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_loop_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_loop_01.c.bc deleted file mode 100644 index 564ad985..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_loop_01.c.bc +++ /dev/null @@ -1,432 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_loop_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_loop_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__wchar_t_declare_loop_01_bad() #0 !dbg !35 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i32], align 16 - %dataGoodBuffer = alloca [100 x i32], align 16 - %i = alloca i64, align 8 - %destLen = alloca i64, align 8 - %dest = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !39, metadata !DIExpression()), !dbg !44 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !45, metadata !DIExpression()), !dbg !49 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !50, metadata !DIExpression()), !dbg !54 - %arraydecay = getelementptr inbounds [50 x i32], ptr %dataBadBuffer, i64 0, i64 0, !dbg !55 - %call = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 65, i64 noundef 49) #5, !dbg !56 - %arrayidx = getelementptr inbounds [50 x i32], ptr %dataBadBuffer, i64 0, i64 49, !dbg !57 - store i32 0, ptr %arrayidx, align 4, !dbg !58 - %arraydecay1 = getelementptr inbounds [100 x i32], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !59 - %call2 = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 65, i64 noundef 99) #5, !dbg !60 - %arrayidx3 = getelementptr inbounds [100 x i32], ptr %dataGoodBuffer, i64 0, i64 99, !dbg !61 - store i32 0, ptr %arrayidx3, align 4, !dbg !62 - %arraydecay4 = getelementptr inbounds [50 x i32], ptr %dataBadBuffer, i64 0, i64 0, !dbg !63 - store ptr %arraydecay4, ptr %data, align 8, !dbg !64 - call void @llvm.dbg.declare(metadata ptr %i, metadata !65, metadata !DIExpression()), !dbg !69 - call void @llvm.dbg.declare(metadata ptr %destLen, metadata !70, metadata !DIExpression()), !dbg !71 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !72, metadata !DIExpression()), !dbg !73 - %arraydecay5 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !74 - %call6 = call ptr @wmemset(ptr noundef %arraydecay5, i32 noundef 67, i64 noundef 99) #5, !dbg !75 - %arrayidx7 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !76 - store i32 0, ptr %arrayidx7, align 4, !dbg !77 - %arraydecay8 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !78 - %call9 = call i64 @wcslen(ptr noundef %arraydecay8) #6, !dbg !79 - store i64 %call9, ptr %destLen, align 8, !dbg !80 - store i64 0, ptr %i, align 8, !dbg !81 - br label %for.cond, !dbg !83 - -for.cond: ; preds = %for.inc, %entry - %0 = load i64, ptr %i, align 8, !dbg !84 - %1 = load i64, ptr %destLen, align 8, !dbg !86 - %cmp = icmp ult i64 %0, %1, !dbg !87 - br i1 %cmp, label %for.body, label %for.end, !dbg !88 - -for.body: ; preds = %for.cond - %2 = load ptr, ptr %data, align 8, !dbg !89 - %3 = load i64, ptr %i, align 8, !dbg !91 - %arrayidx10 = getelementptr inbounds i32, ptr %2, i64 %3, !dbg !89 - %4 = load i32, ptr %arrayidx10, align 4, !dbg !89 - %5 = load i64, ptr %i, align 8, !dbg !92 - %arrayidx11 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 %5, !dbg !93 - store i32 %4, ptr %arrayidx11, align 4, !dbg !94 - br label %for.inc, !dbg !95 - -for.inc: ; preds = %for.body - %6 = load i64, ptr %i, align 8, !dbg !96 - %inc = add i64 %6, 1, !dbg !96 - store i64 %inc, ptr %i, align 8, !dbg !96 - br label %for.cond, !dbg !97, !llvm.loop !98 - -for.end: ; preds = %for.cond - %7 = load ptr, ptr %data, align 8, !dbg !101 - %8 = load i64, ptr %destLen, align 8, !dbg !102 - %mul = mul i64 %8, 4, !dbg !103 - %sub = sub i64 %mul, 1, !dbg !104 - %call12 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %7, i64 noundef %sub), !dbg !105 - %arrayidx13 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !106 - store i32 0, ptr %arrayidx13, align 4, !dbg !107 - %arraydecay14 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !108 - call void @printWLine(ptr noundef %arraydecay14), !dbg !109 - ret void, !dbg !110 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #2 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @wcslen(ptr noundef) #3 - -declare i32 @UNSAFE_BUFACCESS(...) #4 - -declare void @printWLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__wchar_t_declare_loop_01_good() #0 !dbg !111 { -entry: - call void @goodG2B(), !dbg !112 - ret void, !dbg !113 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !114 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !119, metadata !DIExpression()), !dbg !120 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !121, metadata !DIExpression()), !dbg !122 - %call = call i64 @time(ptr noundef null) #5, !dbg !123 - %conv = trunc i64 %call to i32, !dbg !124 - call void @srand(i32 noundef %conv) #5, !dbg !125 - call void @printLine(ptr noundef @.str), !dbg !126 - call void @CWE126_Buffer_Overread__wchar_t_declare_loop_01_good(), !dbg !127 - call void @printLine(ptr noundef @.str.1), !dbg !128 - call void @printLine(ptr noundef @.str.2), !dbg !129 - call void @CWE126_Buffer_Overread__wchar_t_declare_loop_01_bad(), !dbg !130 - call void @printLine(ptr noundef @.str.3), !dbg !131 - ret i32 0, !dbg !132 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 - -declare void @printLine(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !133 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i32], align 16 - %dataGoodBuffer = alloca [100 x i32], align 16 - %i = alloca i64, align 8 - %destLen = alloca i64, align 8 - %dest = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !134, metadata !DIExpression()), !dbg !135 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !136, metadata !DIExpression()), !dbg !137 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !138, metadata !DIExpression()), !dbg !139 - %arraydecay = getelementptr inbounds [50 x i32], ptr %dataBadBuffer, i64 0, i64 0, !dbg !140 - %call = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 65, i64 noundef 49) #5, !dbg !141 - %arrayidx = getelementptr inbounds [50 x i32], ptr %dataBadBuffer, i64 0, i64 49, !dbg !142 - store i32 0, ptr %arrayidx, align 4, !dbg !143 - %arraydecay1 = getelementptr inbounds [100 x i32], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !144 - %call2 = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 65, i64 noundef 99) #5, !dbg !145 - %arrayidx3 = getelementptr inbounds [100 x i32], ptr %dataGoodBuffer, i64 0, i64 99, !dbg !146 - store i32 0, ptr %arrayidx3, align 4, !dbg !147 - %arraydecay4 = getelementptr inbounds [100 x i32], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !148 - store ptr %arraydecay4, ptr %data, align 8, !dbg !149 - call void @llvm.dbg.declare(metadata ptr %i, metadata !150, metadata !DIExpression()), !dbg !152 - call void @llvm.dbg.declare(metadata ptr %destLen, metadata !153, metadata !DIExpression()), !dbg !154 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !155, metadata !DIExpression()), !dbg !156 - %arraydecay5 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !157 - %call6 = call ptr @wmemset(ptr noundef %arraydecay5, i32 noundef 67, i64 noundef 99) #5, !dbg !158 - %arrayidx7 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !159 - store i32 0, ptr %arrayidx7, align 4, !dbg !160 - %arraydecay8 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !161 - %call9 = call i64 @wcslen(ptr noundef %arraydecay8) #6, !dbg !162 - store i64 %call9, ptr %destLen, align 8, !dbg !163 - %0 = load ptr, ptr %data, align 8, !dbg !164 - %1 = load i64, ptr %destLen, align 8, !dbg !165 - %sub = sub i64 %1, 1, !dbg !166 - %mul = mul i64 %sub, 4, !dbg !167 - %call10 = call i32 (ptr, i64, i32, ...) @BOF_CHECK_GEP(ptr noundef %0, i64 noundef %mul, i32 noundef 0), !dbg !168 - store i64 0, ptr %i, align 8, !dbg !169 - br label %for.cond, !dbg !171 - -for.cond: ; preds = %for.inc, %entry - %2 = load i64, ptr %i, align 8, !dbg !172 - %3 = load i64, ptr %destLen, align 8, !dbg !174 - %cmp = icmp ult i64 %2, %3, !dbg !175 - br i1 %cmp, label %for.body, label %for.end, !dbg !176 - -for.body: ; preds = %for.cond - %4 = load ptr, ptr %data, align 8, !dbg !177 - %5 = load i64, ptr %i, align 8, !dbg !179 - %arrayidx11 = getelementptr inbounds i32, ptr %4, i64 %5, !dbg !177 - %6 = load i32, ptr %arrayidx11, align 4, !dbg !177 - %7 = load i64, ptr %i, align 8, !dbg !180 - %arrayidx12 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 %7, !dbg !181 - store i32 %6, ptr %arrayidx12, align 4, !dbg !182 - %8 = load ptr, ptr %data, align 8, !dbg !183 - %9 = load i64, ptr %i, align 8, !dbg !184 - %add = add i64 %9, 1, !dbg !185 - %mul13 = mul i64 %add, 4, !dbg !186 - %sub14 = sub i64 %mul13, 1, !dbg !187 - %call15 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %8, i64 noundef %sub14), !dbg !188 - br label %for.inc, !dbg !189 - -for.inc: ; preds = %for.body - %10 = load i64, ptr %i, align 8, !dbg !190 - %inc = add i64 %10, 1, !dbg !190 - store i64 %inc, ptr %i, align 8, !dbg !190 - br label %for.cond, !dbg !191, !llvm.loop !192 - -for.end: ; preds = %for.cond - %11 = load ptr, ptr %data, align 8, !dbg !194 - %12 = load i64, ptr %destLen, align 8, !dbg !195 - %mul16 = mul i64 %12, 4, !dbg !196 - %sub17 = sub i64 %mul16, 1, !dbg !197 - %call18 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %11, i64 noundef %sub17), !dbg !198 - %arrayidx19 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !199 - store i32 0, ptr %arrayidx19, align 4, !dbg !200 - %arraydecay20 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !201 - call void @printWLine(ptr noundef %arraydecay20), !dbg !202 - ret void, !dbg !203 -} - -declare i32 @BOF_CHECK_GEP(...) #4 - -declare i32 @SAFE_BUFACCESS(...) #4 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { nounwind willreturn memory(read) } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} -!llvm.ident = !{!34} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 108, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8121ec4b77d60b31a8dcc59c35429d61") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 110, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 113, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 115, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_loop_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "8121ec4b77d60b31a8dcc59c35429d61") -!24 = !{!25} -!25 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!26 = !{!0, !7, !12, !17} -!27 = !{i32 7, !"Dwarf Version", i32 5} -!28 = !{i32 2, !"Debug Info Version", i32 3} -!29 = !{i32 1, !"wchar_size", i32 4} -!30 = !{i32 8, !"PIC Level", i32 2} -!31 = !{i32 7, !"PIE Level", i32 2} -!32 = !{i32 7, !"uwtable", i32 2} -!33 = !{i32 7, !"frame-pointer", i32 2} -!34 = !{!"clang version 16.0.0"} -!35 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__wchar_t_declare_loop_01_bad", scope: !2, file: !2, line: 23, type: !36, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!36 = !DISubroutineType(types: !37) -!37 = !{null} -!38 = !{} -!39 = !DILocalVariable(name: "data", scope: !35, file: !2, line: 25, type: !40) -!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !41, size: 64) -!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !42, line: 74, baseType: !43) -!42 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!43 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!44 = !DILocation(line: 25, column: 15, scope: !35) -!45 = !DILocalVariable(name: "dataBadBuffer", scope: !35, file: !2, line: 26, type: !46) -!46 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 1600, elements: !47) -!47 = !{!48} -!48 = !DISubrange(count: 50) -!49 = !DILocation(line: 26, column: 13, scope: !35) -!50 = !DILocalVariable(name: "dataGoodBuffer", scope: !35, file: !2, line: 27, type: !51) -!51 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 3200, elements: !52) -!52 = !{!53} -!53 = !DISubrange(count: 100) -!54 = !DILocation(line: 27, column: 13, scope: !35) -!55 = !DILocation(line: 28, column: 13, scope: !35) -!56 = !DILocation(line: 28, column: 5, scope: !35) -!57 = !DILocation(line: 29, column: 5, scope: !35) -!58 = !DILocation(line: 29, column: 25, scope: !35) -!59 = !DILocation(line: 30, column: 13, scope: !35) -!60 = !DILocation(line: 30, column: 5, scope: !35) -!61 = !DILocation(line: 31, column: 5, scope: !35) -!62 = !DILocation(line: 31, column: 27, scope: !35) -!63 = !DILocation(line: 33, column: 12, scope: !35) -!64 = !DILocation(line: 33, column: 10, scope: !35) -!65 = !DILocalVariable(name: "i", scope: !66, file: !2, line: 35, type: !67) -!66 = distinct !DILexicalBlock(scope: !35, file: !2, line: 34, column: 5) -!67 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !42, line: 46, baseType: !68) -!68 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) -!69 = !DILocation(line: 35, column: 16, scope: !66) -!70 = !DILocalVariable(name: "destLen", scope: !66, file: !2, line: 35, type: !67) -!71 = !DILocation(line: 35, column: 19, scope: !66) -!72 = !DILocalVariable(name: "dest", scope: !66, file: !2, line: 36, type: !51) -!73 = !DILocation(line: 36, column: 17, scope: !66) -!74 = !DILocation(line: 37, column: 17, scope: !66) -!75 = !DILocation(line: 37, column: 9, scope: !66) -!76 = !DILocation(line: 38, column: 9, scope: !66) -!77 = !DILocation(line: 38, column: 21, scope: !66) -!78 = !DILocation(line: 39, column: 26, scope: !66) -!79 = !DILocation(line: 39, column: 19, scope: !66) -!80 = !DILocation(line: 39, column: 17, scope: !66) -!81 = !DILocation(line: 42, column: 16, scope: !82) -!82 = distinct !DILexicalBlock(scope: !66, file: !2, line: 42, column: 9) -!83 = !DILocation(line: 42, column: 14, scope: !82) -!84 = !DILocation(line: 42, column: 21, scope: !85) -!85 = distinct !DILexicalBlock(scope: !82, file: !2, line: 42, column: 9) -!86 = !DILocation(line: 42, column: 25, scope: !85) -!87 = !DILocation(line: 42, column: 23, scope: !85) -!88 = !DILocation(line: 42, column: 9, scope: !82) -!89 = !DILocation(line: 44, column: 23, scope: !90) -!90 = distinct !DILexicalBlock(scope: !85, file: !2, line: 43, column: 9) -!91 = !DILocation(line: 44, column: 28, scope: !90) -!92 = !DILocation(line: 44, column: 18, scope: !90) -!93 = !DILocation(line: 44, column: 13, scope: !90) -!94 = !DILocation(line: 44, column: 21, scope: !90) -!95 = !DILocation(line: 45, column: 9, scope: !90) -!96 = !DILocation(line: 42, column: 35, scope: !85) -!97 = !DILocation(line: 42, column: 9, scope: !85) -!98 = distinct !{!98, !88, !99, !100} -!99 = !DILocation(line: 45, column: 9, scope: !82) -!100 = !{!"llvm.loop.mustprogress"} -!101 = !DILocation(line: 46, column: 26, scope: !66) -!102 = !DILocation(line: 46, column: 32, scope: !66) -!103 = !DILocation(line: 46, column: 40, scope: !66) -!104 = !DILocation(line: 46, column: 58, scope: !66) -!105 = !DILocation(line: 46, column: 9, scope: !66) -!106 = !DILocation(line: 47, column: 9, scope: !66) -!107 = !DILocation(line: 47, column: 21, scope: !66) -!108 = !DILocation(line: 48, column: 20, scope: !66) -!109 = !DILocation(line: 48, column: 9, scope: !66) -!110 = !DILocation(line: 50, column: 1, scope: !35) -!111 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__wchar_t_declare_loop_01_good", scope: !2, file: !2, line: 88, type: !36, scopeLine: 89, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!112 = !DILocation(line: 90, column: 5, scope: !111) -!113 = !DILocation(line: 91, column: 1, scope: !111) -!114 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 103, type: !115, scopeLine: 104, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!115 = !DISubroutineType(types: !116) -!116 = !{!43, !43, !117} -!117 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !118, size: 64) -!118 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!119 = !DILocalVariable(name: "argc", arg: 1, scope: !114, file: !2, line: 103, type: !43) -!120 = !DILocation(line: 103, column: 14, scope: !114) -!121 = !DILocalVariable(name: "argv", arg: 2, scope: !114, file: !2, line: 103, type: !117) -!122 = !DILocation(line: 103, column: 27, scope: !114) -!123 = !DILocation(line: 106, column: 22, scope: !114) -!124 = !DILocation(line: 106, column: 12, scope: !114) -!125 = !DILocation(line: 106, column: 5, scope: !114) -!126 = !DILocation(line: 108, column: 5, scope: !114) -!127 = !DILocation(line: 109, column: 5, scope: !114) -!128 = !DILocation(line: 110, column: 5, scope: !114) -!129 = !DILocation(line: 113, column: 5, scope: !114) -!130 = !DILocation(line: 114, column: 5, scope: !114) -!131 = !DILocation(line: 115, column: 5, scope: !114) -!132 = !DILocation(line: 117, column: 5, scope: !114) -!133 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 57, type: !36, scopeLine: 58, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) -!134 = !DILocalVariable(name: "data", scope: !133, file: !2, line: 59, type: !40) -!135 = !DILocation(line: 59, column: 15, scope: !133) -!136 = !DILocalVariable(name: "dataBadBuffer", scope: !133, file: !2, line: 60, type: !46) -!137 = !DILocation(line: 60, column: 13, scope: !133) -!138 = !DILocalVariable(name: "dataGoodBuffer", scope: !133, file: !2, line: 61, type: !51) -!139 = !DILocation(line: 61, column: 13, scope: !133) -!140 = !DILocation(line: 62, column: 13, scope: !133) -!141 = !DILocation(line: 62, column: 5, scope: !133) -!142 = !DILocation(line: 63, column: 5, scope: !133) -!143 = !DILocation(line: 63, column: 25, scope: !133) -!144 = !DILocation(line: 64, column: 13, scope: !133) -!145 = !DILocation(line: 64, column: 5, scope: !133) -!146 = !DILocation(line: 65, column: 5, scope: !133) -!147 = !DILocation(line: 65, column: 27, scope: !133) -!148 = !DILocation(line: 67, column: 12, scope: !133) -!149 = !DILocation(line: 67, column: 10, scope: !133) -!150 = !DILocalVariable(name: "i", scope: !151, file: !2, line: 69, type: !67) -!151 = distinct !DILexicalBlock(scope: !133, file: !2, line: 68, column: 5) -!152 = !DILocation(line: 69, column: 16, scope: !151) -!153 = !DILocalVariable(name: "destLen", scope: !151, file: !2, line: 69, type: !67) -!154 = !DILocation(line: 69, column: 19, scope: !151) -!155 = !DILocalVariable(name: "dest", scope: !151, file: !2, line: 70, type: !51) -!156 = !DILocation(line: 70, column: 17, scope: !151) -!157 = !DILocation(line: 71, column: 17, scope: !151) -!158 = !DILocation(line: 71, column: 9, scope: !151) -!159 = !DILocation(line: 72, column: 9, scope: !151) -!160 = !DILocation(line: 72, column: 21, scope: !151) -!161 = !DILocation(line: 73, column: 26, scope: !151) -!162 = !DILocation(line: 73, column: 19, scope: !151) -!163 = !DILocation(line: 73, column: 17, scope: !151) -!164 = !DILocation(line: 76, column: 23, scope: !151) -!165 = !DILocation(line: 76, column: 30, scope: !151) -!166 = !DILocation(line: 76, column: 38, scope: !151) -!167 = !DILocation(line: 76, column: 42, scope: !151) -!168 = !DILocation(line: 76, column: 9, scope: !151) -!169 = !DILocation(line: 77, column: 16, scope: !170) -!170 = distinct !DILexicalBlock(scope: !151, file: !2, line: 77, column: 9) -!171 = !DILocation(line: 77, column: 14, scope: !170) -!172 = !DILocation(line: 77, column: 21, scope: !173) -!173 = distinct !DILexicalBlock(scope: !170, file: !2, line: 77, column: 9) -!174 = !DILocation(line: 77, column: 25, scope: !173) -!175 = !DILocation(line: 77, column: 23, scope: !173) -!176 = !DILocation(line: 77, column: 9, scope: !170) -!177 = !DILocation(line: 79, column: 23, scope: !178) -!178 = distinct !DILexicalBlock(scope: !173, file: !2, line: 78, column: 9) -!179 = !DILocation(line: 79, column: 28, scope: !178) -!180 = !DILocation(line: 79, column: 18, scope: !178) -!181 = !DILocation(line: 79, column: 13, scope: !178) -!182 = !DILocation(line: 79, column: 21, scope: !178) -!183 = !DILocation(line: 80, column: 28, scope: !178) -!184 = !DILocation(line: 80, column: 35, scope: !178) -!185 = !DILocation(line: 80, column: 37, scope: !178) -!186 = !DILocation(line: 80, column: 42, scope: !178) -!187 = !DILocation(line: 80, column: 60, scope: !178) -!188 = !DILocation(line: 80, column: 13, scope: !178) -!189 = !DILocation(line: 81, column: 9, scope: !178) -!190 = !DILocation(line: 77, column: 35, scope: !173) -!191 = !DILocation(line: 77, column: 9, scope: !173) -!192 = distinct !{!192, !176, !193, !100} -!193 = !DILocation(line: 81, column: 9, scope: !170) -!194 = !DILocation(line: 82, column: 24, scope: !151) -!195 = !DILocation(line: 82, column: 30, scope: !151) -!196 = !DILocation(line: 82, column: 38, scope: !151) -!197 = !DILocation(line: 82, column: 56, scope: !151) -!198 = !DILocation(line: 82, column: 9, scope: !151) -!199 = !DILocation(line: 83, column: 9, scope: !151) -!200 = !DILocation(line: 83, column: 21, scope: !151) -!201 = !DILocation(line: 84, column: 20, scope: !151) -!202 = !DILocation(line: 84, column: 9, scope: !151) -!203 = !DILocation(line: 86, column: 1, scope: !133) diff --git a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_memmove_01.c.bc b/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_memmove_01.c.bc deleted file mode 100644 index ba6aa96f..00000000 --- a/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_memmove_01.c.bc +++ /dev/null @@ -1,341 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_memmove_01.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_memmove_01.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [18 x i8] c"Calling good()...\00", align 1, !dbg !0 -@.str.1 = private unnamed_addr constant [16 x i8] c"Finished good()\00", align 1, !dbg !7 -@.str.2 = private unnamed_addr constant [17 x i8] c"Calling bad()...\00", align 1, !dbg !12 -@.str.3 = private unnamed_addr constant [15 x i8] c"Finished bad()\00", align 1, !dbg !17 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__wchar_t_declare_memmove_01_bad() #0 !dbg !35 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i32], align 16 - %dataGoodBuffer = alloca [100 x i32], align 16 - %dest = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !39, metadata !DIExpression()), !dbg !44 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !45, metadata !DIExpression()), !dbg !49 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !50, metadata !DIExpression()), !dbg !54 - %arraydecay = getelementptr inbounds [50 x i32], ptr %dataBadBuffer, i64 0, i64 0, !dbg !55 - %call = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 65, i64 noundef 49) #6, !dbg !56 - %arrayidx = getelementptr inbounds [50 x i32], ptr %dataBadBuffer, i64 0, i64 49, !dbg !57 - store i32 0, ptr %arrayidx, align 4, !dbg !58 - %arraydecay1 = getelementptr inbounds [100 x i32], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !59 - %call2 = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 65, i64 noundef 99) #6, !dbg !60 - %arrayidx3 = getelementptr inbounds [100 x i32], ptr %dataGoodBuffer, i64 0, i64 99, !dbg !61 - store i32 0, ptr %arrayidx3, align 4, !dbg !62 - %arraydecay4 = getelementptr inbounds [50 x i32], ptr %dataBadBuffer, i64 0, i64 0, !dbg !63 - store ptr %arraydecay4, ptr %data, align 8, !dbg !64 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !65, metadata !DIExpression()), !dbg !67 - %arraydecay5 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !68 - %call6 = call ptr @wmemset(ptr noundef %arraydecay5, i32 noundef 67, i64 noundef 99) #6, !dbg !69 - %arrayidx7 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !70 - store i32 0, ptr %arrayidx7, align 4, !dbg !71 - %arraydecay8 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !72 - %arraydecay9 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !73 - %call10 = call i64 @wcslen(ptr noundef %arraydecay9) #7, !dbg !74 - %mul = mul i64 %call10, 4, !dbg !75 - %sub = sub i64 %mul, 1, !dbg !76 - %call11 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay8, i64 noundef %sub), !dbg !77 - %0 = load ptr, ptr %data, align 8, !dbg !78 - %arraydecay12 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !79 - %call13 = call i64 @wcslen(ptr noundef %arraydecay12) #7, !dbg !80 - %mul14 = mul i64 %call13, 4, !dbg !81 - %sub15 = sub i64 %mul14, 1, !dbg !82 - %call16 = call i32 (ptr, i64, ...) @UNSAFE_BUFACCESS(ptr noundef %0, i64 noundef %sub15), !dbg !83 - %arraydecay17 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !84 - %1 = load ptr, ptr %data, align 8, !dbg !85 - %arraydecay18 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !86 - %call19 = call i64 @wcslen(ptr noundef %arraydecay18) #7, !dbg !87 - %mul20 = mul i64 %call19, 4, !dbg !88 - call void @llvm.memmove.p0.p0.i64(ptr align 16 %arraydecay17, ptr align 4 %1, i64 %mul20, i1 false), !dbg !84 - %arrayidx21 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !89 - store i32 0, ptr %arrayidx21, align 4, !dbg !90 - %arraydecay22 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !91 - call void @printWLine(ptr noundef %arraydecay22), !dbg !92 - ret void, !dbg !93 -} - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -; Function Attrs: nounwind -declare ptr @wmemset(ptr noundef, i32 noundef, i64 noundef) #2 - -declare i32 @SAFE_BUFACCESS(...) #3 - -; Function Attrs: nounwind willreturn memory(read) -declare i64 @wcslen(ptr noundef) #4 - -declare i32 @UNSAFE_BUFACCESS(...) #3 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #5 - -declare void @printWLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CWE126_Buffer_Overread__wchar_t_declare_memmove_01_good() #0 !dbg !94 { -entry: - call void @goodG2B(), !dbg !95 - ret void, !dbg !96 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 !dbg !97 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !102, metadata !DIExpression()), !dbg !103 - store ptr %argv, ptr %argv.addr, align 8 - call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !104, metadata !DIExpression()), !dbg !105 - %call = call i64 @time(ptr noundef null) #6, !dbg !106 - %conv = trunc i64 %call to i32, !dbg !107 - call void @srand(i32 noundef %conv) #6, !dbg !108 - call void @printLine(ptr noundef @.str), !dbg !109 - call void @CWE126_Buffer_Overread__wchar_t_declare_memmove_01_good(), !dbg !110 - call void @printLine(ptr noundef @.str.1), !dbg !111 - call void @printLine(ptr noundef @.str.2), !dbg !112 - call void @CWE126_Buffer_Overread__wchar_t_declare_memmove_01_bad(), !dbg !113 - call void @printLine(ptr noundef @.str.3), !dbg !114 - ret i32 0, !dbg !115 -} - -; Function Attrs: nounwind -declare void @srand(i32 noundef) #2 - -; Function Attrs: nounwind -declare i64 @time(ptr noundef) #2 - -declare void @printLine(ptr noundef) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @goodG2B() #0 !dbg !116 { -entry: - %data = alloca ptr, align 8 - %dataBadBuffer = alloca [50 x i32], align 16 - %dataGoodBuffer = alloca [100 x i32], align 16 - %dest = alloca [100 x i32], align 16 - call void @llvm.dbg.declare(metadata ptr %data, metadata !117, metadata !DIExpression()), !dbg !118 - call void @llvm.dbg.declare(metadata ptr %dataBadBuffer, metadata !119, metadata !DIExpression()), !dbg !120 - call void @llvm.dbg.declare(metadata ptr %dataGoodBuffer, metadata !121, metadata !DIExpression()), !dbg !122 - %arraydecay = getelementptr inbounds [50 x i32], ptr %dataBadBuffer, i64 0, i64 0, !dbg !123 - %call = call ptr @wmemset(ptr noundef %arraydecay, i32 noundef 65, i64 noundef 49) #6, !dbg !124 - %arrayidx = getelementptr inbounds [50 x i32], ptr %dataBadBuffer, i64 0, i64 49, !dbg !125 - store i32 0, ptr %arrayidx, align 4, !dbg !126 - %arraydecay1 = getelementptr inbounds [100 x i32], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !127 - %call2 = call ptr @wmemset(ptr noundef %arraydecay1, i32 noundef 65, i64 noundef 99) #6, !dbg !128 - %arrayidx3 = getelementptr inbounds [100 x i32], ptr %dataGoodBuffer, i64 0, i64 99, !dbg !129 - store i32 0, ptr %arrayidx3, align 4, !dbg !130 - %arraydecay4 = getelementptr inbounds [100 x i32], ptr %dataGoodBuffer, i64 0, i64 0, !dbg !131 - store ptr %arraydecay4, ptr %data, align 8, !dbg !132 - call void @llvm.dbg.declare(metadata ptr %dest, metadata !133, metadata !DIExpression()), !dbg !135 - %arraydecay5 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !136 - %call6 = call ptr @wmemset(ptr noundef %arraydecay5, i32 noundef 67, i64 noundef 99) #6, !dbg !137 - %arrayidx7 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !138 - store i32 0, ptr %arrayidx7, align 4, !dbg !139 - %arraydecay8 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !140 - %arraydecay9 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !141 - %call10 = call i64 @wcslen(ptr noundef %arraydecay9) #7, !dbg !142 - %mul = mul i64 %call10, 4, !dbg !143 - %sub = sub i64 %mul, 1, !dbg !144 - %call11 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %arraydecay8, i64 noundef %sub), !dbg !145 - %0 = load ptr, ptr %data, align 8, !dbg !146 - %arraydecay12 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !147 - %call13 = call i64 @wcslen(ptr noundef %arraydecay12) #7, !dbg !148 - %mul14 = mul i64 %call13, 4, !dbg !149 - %sub15 = sub i64 %mul14, 1, !dbg !150 - %call16 = call i32 (ptr, i64, ...) @SAFE_BUFACCESS(ptr noundef %0, i64 noundef %sub15), !dbg !151 - %arraydecay17 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !152 - %1 = load ptr, ptr %data, align 8, !dbg !153 - %arraydecay18 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !154 - %call19 = call i64 @wcslen(ptr noundef %arraydecay18) #7, !dbg !155 - %mul20 = mul i64 %call19, 4, !dbg !156 - call void @llvm.memmove.p0.p0.i64(ptr align 16 %arraydecay17, ptr align 4 %1, i64 %mul20, i1 false), !dbg !152 - %arrayidx21 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 99, !dbg !157 - store i32 0, ptr %arrayidx21, align 4, !dbg !158 - %arraydecay22 = getelementptr inbounds [100 x i32], ptr %dest, i64 0, i64 0, !dbg !159 - call void @printWLine(ptr noundef %arraydecay22), !dbg !160 - ret void, !dbg !161 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #6 = { nounwind } -attributes #7 = { nounwind willreturn memory(read) } - -!llvm.dbg.cu = !{!22} -!llvm.module.flags = !{!27, !28, !29, !30, !31, !32, !33} -!llvm.ident = !{!34} - -!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) -!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 99, type: !3, isLocal: true, isDefinition: true) -!2 = !DIFile(filename: "src/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "422abfa59a070cda3ffbaffe16fff5a8") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 144, elements: !5) -!4 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!5 = !{!6} -!6 = !DISubrange(count: 18) -!7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) -!8 = distinct !DIGlobalVariable(scope: null, file: !2, line: 101, type: !9, isLocal: true, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 128, elements: !10) -!10 = !{!11} -!11 = !DISubrange(count: 16) -!12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) -!13 = distinct !DIGlobalVariable(scope: null, file: !2, line: 104, type: !14, isLocal: true, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 136, elements: !15) -!15 = !{!16} -!16 = !DISubrange(count: 17) -!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression()) -!18 = distinct !DIGlobalVariable(scope: null, file: !2, line: 106, type: !19, isLocal: true, isDefinition: true) -!19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 120, elements: !20) -!20 = !{!21} -!21 = !DISubrange(count: 15) -!22 = distinct !DICompileUnit(language: DW_LANG_C11, file: !23, producer: "clang version 16.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !24, globals: !26, splitDebugInlining: false, nameTableKind: None) -!23 = !DIFile(filename: "/home/runner/work/Test-Suite/Test-Suite/src/ae_overflow_tests/CWE126_Buffer_Overread__wchar_t_declare_memmove_01.c", directory: "/home/runner/work/Test-Suite/Test-Suite", checksumkind: CSK_MD5, checksum: "422abfa59a070cda3ffbaffe16fff5a8") -!24 = !{!25} -!25 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) -!26 = !{!0, !7, !12, !17} -!27 = !{i32 7, !"Dwarf Version", i32 5} -!28 = !{i32 2, !"Debug Info Version", i32 3} -!29 = !{i32 1, !"wchar_size", i32 4} -!30 = !{i32 8, !"PIC Level", i32 2} -!31 = !{i32 7, !"PIE Level", i32 2} -!32 = !{i32 7, !"uwtable", i32 2} -!33 = !{i32 7, !"frame-pointer", i32 2} -!34 = !{!"clang version 16.0.0"} -!35 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__wchar_t_declare_memmove_01_bad", scope: !2, file: !2, line: 23, type: !36, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!36 = !DISubroutineType(types: !37) -!37 = !{null} -!38 = !{} -!39 = !DILocalVariable(name: "data", scope: !35, file: !2, line: 25, type: !40) -!40 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !41, size: 64) -!41 = !DIDerivedType(tag: DW_TAG_typedef, name: "wchar_t", file: !42, line: 74, baseType: !43) -!42 = !DIFile(filename: "/opt/llvm/lib/clang/16/include/stddef.h", directory: "", checksumkind: CSK_MD5, checksum: "f95079da609b0e8f201cb8136304bf3b") -!43 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!44 = !DILocation(line: 25, column: 15, scope: !35) -!45 = !DILocalVariable(name: "dataBadBuffer", scope: !35, file: !2, line: 26, type: !46) -!46 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 1600, elements: !47) -!47 = !{!48} -!48 = !DISubrange(count: 50) -!49 = !DILocation(line: 26, column: 13, scope: !35) -!50 = !DILocalVariable(name: "dataGoodBuffer", scope: !35, file: !2, line: 27, type: !51) -!51 = !DICompositeType(tag: DW_TAG_array_type, baseType: !41, size: 3200, elements: !52) -!52 = !{!53} -!53 = !DISubrange(count: 100) -!54 = !DILocation(line: 27, column: 13, scope: !35) -!55 = !DILocation(line: 28, column: 13, scope: !35) -!56 = !DILocation(line: 28, column: 5, scope: !35) -!57 = !DILocation(line: 29, column: 5, scope: !35) -!58 = !DILocation(line: 29, column: 25, scope: !35) -!59 = !DILocation(line: 30, column: 13, scope: !35) -!60 = !DILocation(line: 30, column: 5, scope: !35) -!61 = !DILocation(line: 31, column: 5, scope: !35) -!62 = !DILocation(line: 31, column: 27, scope: !35) -!63 = !DILocation(line: 33, column: 12, scope: !35) -!64 = !DILocation(line: 33, column: 10, scope: !35) -!65 = !DILocalVariable(name: "dest", scope: !66, file: !2, line: 35, type: !51) -!66 = distinct !DILexicalBlock(scope: !35, file: !2, line: 34, column: 5) -!67 = !DILocation(line: 35, column: 17, scope: !66) -!68 = !DILocation(line: 36, column: 17, scope: !66) -!69 = !DILocation(line: 36, column: 9, scope: !66) -!70 = !DILocation(line: 37, column: 9, scope: !66) -!71 = !DILocation(line: 37, column: 21, scope: !66) -!72 = !DILocation(line: 40, column: 24, scope: !66) -!73 = !DILocation(line: 40, column: 37, scope: !66) -!74 = !DILocation(line: 40, column: 30, scope: !66) -!75 = !DILocation(line: 40, column: 42, scope: !66) -!76 = !DILocation(line: 40, column: 59, scope: !66) -!77 = !DILocation(line: 40, column: 9, scope: !66) -!78 = !DILocation(line: 41, column: 26, scope: !66) -!79 = !DILocation(line: 41, column: 39, scope: !66) -!80 = !DILocation(line: 41, column: 32, scope: !66) -!81 = !DILocation(line: 41, column: 44, scope: !66) -!82 = !DILocation(line: 41, column: 61, scope: !66) -!83 = !DILocation(line: 41, column: 9, scope: !66) -!84 = !DILocation(line: 42, column: 9, scope: !66) -!85 = !DILocation(line: 42, column: 23, scope: !66) -!86 = !DILocation(line: 42, column: 36, scope: !66) -!87 = !DILocation(line: 42, column: 29, scope: !66) -!88 = !DILocation(line: 42, column: 41, scope: !66) -!89 = !DILocation(line: 43, column: 9, scope: !66) -!90 = !DILocation(line: 43, column: 21, scope: !66) -!91 = !DILocation(line: 44, column: 20, scope: !66) -!92 = !DILocation(line: 44, column: 9, scope: !66) -!93 = !DILocation(line: 46, column: 1, scope: !35) -!94 = distinct !DISubprogram(name: "CWE126_Buffer_Overread__wchar_t_declare_memmove_01_good", scope: !2, file: !2, line: 79, type: !36, scopeLine: 80, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!95 = !DILocation(line: 81, column: 5, scope: !94) -!96 = !DILocation(line: 82, column: 1, scope: !94) -!97 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 94, type: !98, scopeLine: 95, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !22, retainedNodes: !38) -!98 = !DISubroutineType(types: !99) -!99 = !{!43, !43, !100} -!100 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !101, size: 64) -!101 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) -!102 = !DILocalVariable(name: "argc", arg: 1, scope: !97, file: !2, line: 94, type: !43) -!103 = !DILocation(line: 94, column: 14, scope: !97) -!104 = !DILocalVariable(name: "argv", arg: 2, scope: !97, file: !2, line: 94, type: !100) -!105 = !DILocation(line: 94, column: 27, scope: !97) -!106 = !DILocation(line: 97, column: 22, scope: !97) -!107 = !DILocation(line: 97, column: 12, scope: !97) -!108 = !DILocation(line: 97, column: 5, scope: !97) -!109 = !DILocation(line: 99, column: 5, scope: !97) -!110 = !DILocation(line: 100, column: 5, scope: !97) -!111 = !DILocation(line: 101, column: 5, scope: !97) -!112 = !DILocation(line: 104, column: 5, scope: !97) -!113 = !DILocation(line: 105, column: 5, scope: !97) -!114 = !DILocation(line: 106, column: 5, scope: !97) -!115 = !DILocation(line: 108, column: 5, scope: !97) -!116 = distinct !DISubprogram(name: "goodG2B", scope: !2, file: !2, line: 53, type: !36, scopeLine: 54, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !22, retainedNodes: !38) -!117 = !DILocalVariable(name: "data", scope: !116, file: !2, line: 55, type: !40) -!118 = !DILocation(line: 55, column: 15, scope: !116) -!119 = !DILocalVariable(name: "dataBadBuffer", scope: !116, file: !2, line: 56, type: !46) -!120 = !DILocation(line: 56, column: 13, scope: !116) -!121 = !DILocalVariable(name: "dataGoodBuffer", scope: !116, file: !2, line: 57, type: !51) -!122 = !DILocation(line: 57, column: 13, scope: !116) -!123 = !DILocation(line: 58, column: 13, scope: !116) -!124 = !DILocation(line: 58, column: 5, scope: !116) -!125 = !DILocation(line: 59, column: 5, scope: !116) -!126 = !DILocation(line: 59, column: 25, scope: !116) -!127 = !DILocation(line: 60, column: 13, scope: !116) -!128 = !DILocation(line: 60, column: 5, scope: !116) -!129 = !DILocation(line: 61, column: 5, scope: !116) -!130 = !DILocation(line: 61, column: 27, scope: !116) -!131 = !DILocation(line: 63, column: 12, scope: !116) -!132 = !DILocation(line: 63, column: 10, scope: !116) -!133 = !DILocalVariable(name: "dest", scope: !134, file: !2, line: 65, type: !51) -!134 = distinct !DILexicalBlock(scope: !116, file: !2, line: 64, column: 5) -!135 = !DILocation(line: 65, column: 17, scope: !134) -!136 = !DILocation(line: 66, column: 17, scope: !134) -!137 = !DILocation(line: 66, column: 9, scope: !134) -!138 = !DILocation(line: 67, column: 9, scope: !134) -!139 = !DILocation(line: 67, column: 21, scope: !134) -!140 = !DILocation(line: 70, column: 24, scope: !134) -!141 = !DILocation(line: 70, column: 37, scope: !134) -!142 = !DILocation(line: 70, column: 30, scope: !134) -!143 = !DILocation(line: 70, column: 42, scope: !134) -!144 = !DILocation(line: 70, column: 59, scope: !134) -!145 = !DILocation(line: 70, column: 9, scope: !134) -!146 = !DILocation(line: 71, column: 24, scope: !134) -!147 = !DILocation(line: 71, column: 37, scope: !134) -!148 = !DILocation(line: 71, column: 30, scope: !134) -!149 = !DILocation(line: 71, column: 42, scope: !134) -!150 = !DILocation(line: 71, column: 59, scope: !134) -!151 = !DILocation(line: 71, column: 9, scope: !134) -!152 = !DILocation(line: 72, column: 9, scope: !134) -!153 = !DILocation(line: 72, column: 23, scope: !134) -!154 = !DILocation(line: 72, column: 36, scope: !134) -!155 = !DILocation(line: 72, column: 29, scope: !134) -!156 = !DILocation(line: 72, column: 41, scope: !134) -!157 = !DILocation(line: 74, column: 9, scope: !134) -!158 = !DILocation(line: 74, column: 21, scope: !134) -!159 = !DILocation(line: 75, column: 20, scope: !134) -!160 = !DILocation(line: 75, column: 9, scope: !134) -!161 = !DILocation(line: 77, column: 1, scope: !116) diff --git a/test_cases_bc/basic_c_tests/CI-funptr.c.bc b/test_cases_bc/basic_c_tests/CI-funptr.c.bc deleted file mode 100644 index fd5b6f0f..00000000 --- a/test_cases_bc/basic_c_tests/CI-funptr.c.bc +++ /dev/null @@ -1,193 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/CI-funptr.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/CI-funptr.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @f(ptr noundef %m, ptr noundef %n) #0 { -entry: - %m.addr = alloca ptr, align 8 - %n.addr = alloca ptr, align 8 - store ptr %m, ptr %m.addr, align 8 - store ptr %n, ptr %n.addr, align 8 - %0 = load ptr, ptr %m.addr, align 8 - %1 = load ptr, ptr %n.addr, align 8 - call void @MAYALIAS(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %c = alloca i32, align 4 - %d = alloca i32, align 4 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %p = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store ptr %a, ptr %pa, align 8 - store ptr %b, ptr %pb, align 8 - %0 = load ptr, ptr %pa, align 8 - %1 = load ptr, ptr %pb, align 8 - call void @f(ptr noundef %0, ptr noundef %1) - store ptr @f, ptr %p, align 8 - store ptr %a, ptr %pb, align 8 - %2 = load ptr, ptr %p, align 8 - %3 = load ptr, ptr %pa, align 8 - %4 = load ptr, ptr %pb, align 8 - call void %2(ptr noundef %3, ptr noundef %4) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/CI-global.c.bc b/test_cases_bc/basic_c_tests/CI-global.c.bc deleted file mode 100644 index c7df73bb..00000000 --- a/test_cases_bc/basic_c_tests/CI-global.c.bc +++ /dev/null @@ -1,177 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/CI-global.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/CI-global.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global = dso_local global i32 0, align 4 -@p_global = dso_local global ptr null, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @foo() #0 { -entry: - store ptr @global, ptr @p_global, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %p_local = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store ptr @global, ptr %p_local, align 8 - call void @foo() - %0 = load ptr, ptr %p_local, align 8 - %1 = load ptr, ptr @p_global, align 8 - call void @MAYALIAS(ptr noundef %0, ptr noundef %1) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/CI-local.c.bc b/test_cases_bc/basic_c_tests/CI-local.c.bc deleted file mode 100644 index ad01f9fc..00000000 --- a/test_cases_bc/basic_c_tests/CI-local.c.bc +++ /dev/null @@ -1,200 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/CI-local.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/CI-local.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @foo(ptr noundef %m, ptr noundef %n) #0 { -entry: - %m.addr = alloca ptr, align 8 - %n.addr = alloca ptr, align 8 - store ptr %m, ptr %m.addr, align 8 - store ptr %n, ptr %n.addr, align 8 - %0 = load ptr, ptr %m.addr, align 8 - %1 = load ptr, ptr %n.addr, align 8 - call void @MAYALIAS(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %p = alloca ptr, align 8 - %q = alloca ptr, align 8 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %0 = load i32, ptr %a, align 4 - %tobool = icmp ne i32 %0, 0 - br i1 %tobool, label %if.then, label %if.else - -if.then: ; preds = %entry - store ptr %a, ptr %p, align 8 - store ptr %b, ptr %q, align 8 - %1 = load ptr, ptr %p, align 8 - %2 = load ptr, ptr %q, align 8 - call void @foo(ptr noundef %1, ptr noundef %2) - br label %if.end - -if.else: ; preds = %entry - store ptr %b, ptr %p, align 8 - store ptr %a, ptr %q, align 8 - %3 = load ptr, ptr %p, align 8 - %4 = load ptr, ptr %q, align 8 - call void @foo(ptr noundef %3, ptr noundef %4) - br label %if.end - -if.end: ; preds = %if.else, %if.then - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/array-constIdx.c.bc b/test_cases_bc/basic_c_tests/array-constIdx.c.bc deleted file mode 100644 index 52ec1b83..00000000 --- a/test_cases_bc/basic_c_tests/array-constIdx.c.bc +++ /dev/null @@ -1,187 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/array-constIdx.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/array-constIdx.c" -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-unknown-linux-gnu" - -%struct.MyStruct = type { ptr, ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %s = alloca [2 x %struct.MyStruct], align 16 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %arrayidx = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f1 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx, i32 0, i32 0 - store ptr %a, ptr %f1, align 16 - %arrayidx1 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f12 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx1, i32 0, i32 0 - store ptr %b, ptr %f12, align 16 - %arrayidx3 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f14 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx3, i32 0, i32 0 - %0 = load ptr, ptr %f14, align 16 - %arrayidx5 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f2 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx5, i32 0, i32 1 - %1 = load ptr, ptr %f2, align 8 - call void @NOALIAS(ptr noundef %0, ptr noundef %1) - %arrayidx6 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f17 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx6, i32 0, i32 0 - %2 = load ptr, ptr %f17, align 16 - %arrayidx8 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f19 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx8, i32 0, i32 0 - %3 = load ptr, ptr %f19, align 16 - call void @MAYALIAS(ptr noundef %2, ptr noundef %3) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/array-varIdx.c.bc b/test_cases_bc/basic_c_tests/array-varIdx.c.bc deleted file mode 100644 index c1cb56c1..00000000 --- a/test_cases_bc/basic_c_tests/array-varIdx.c.bc +++ /dev/null @@ -1,184 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/array-varIdx.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/array-varIdx.c" -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-unknown-linux-gnu" - -%struct.MyStruct = type { ptr, ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %s = alloca [2 x %struct.MyStruct], align 16 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %arrayidx = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f1 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx, i32 0, i32 0 - store ptr %a, ptr %f1, align 16 - %arrayidx1 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f12 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx1, i32 0, i32 0 - store ptr %b, ptr %f12, align 16 - %0 = load i32, ptr %a, align 4 - %idxprom = sext i32 %0 to i64 - %arrayidx3 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 %idxprom - %f14 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx3, i32 0, i32 0 - %1 = load ptr, ptr %f14, align 16 - %2 = load i32, ptr %b, align 4 - %idxprom5 = sext i32 %2 to i64 - %arrayidx6 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 %idxprom5 - %f2 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx6, i32 0, i32 1 - %3 = load ptr, ptr %f2, align 8 - call void @NOALIAS(ptr noundef %1, ptr noundef %3) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/array-varIdx2.c.bc b/test_cases_bc/basic_c_tests/array-varIdx2.c.bc deleted file mode 100644 index cb7ef16f..00000000 --- a/test_cases_bc/basic_c_tests/array-varIdx2.c.bc +++ /dev/null @@ -1,195 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/array-varIdx2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/array-varIdx2.c" -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-unknown-linux-gnu" - -%struct.MyStruct = type { ptr, ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %s = alloca [2 x %struct.MyStruct], align 16 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %arrayidx = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 0 - %f1 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx, i32 0, i32 0 - store ptr %a, ptr %f1, align 16 - %arrayidx1 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 1 - %f12 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx1, i32 0, i32 0 - store ptr %b, ptr %f12, align 16 - %0 = load i32, ptr %a, align 4 - %idxprom = sext i32 %0 to i64 - %arrayidx3 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 %idxprom - %f14 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx3, i32 0, i32 0 - %1 = load ptr, ptr %f14, align 16 - %2 = load i32, ptr %b, align 4 - %idxprom5 = sext i32 %2 to i64 - %arrayidx6 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 %idxprom5 - %f2 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx6, i32 0, i32 1 - %3 = load ptr, ptr %f2, align 8 - call void @NOALIAS(ptr noundef %1, ptr noundef %3) - %4 = load i32, ptr %a, align 4 - %idxprom7 = sext i32 %4 to i64 - %arrayidx8 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 %idxprom7 - %f19 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx8, i32 0, i32 0 - %5 = load ptr, ptr %f19, align 16 - %6 = load i32, ptr %b, align 4 - %idxprom10 = sext i32 %6 to i64 - %arrayidx11 = getelementptr inbounds [2 x %struct.MyStruct], ptr %s, i64 0, i64 %idxprom10 - %f112 = getelementptr inbounds %struct.MyStruct, ptr %arrayidx11, i32 0, i32 0 - %7 = load ptr, ptr %f112, align 16 - call void @MAYALIAS(ptr noundef %5, ptr noundef %7) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/arraycopy1.c.bc b/test_cases_bc/basic_c_tests/arraycopy1.c.bc deleted file mode 100644 index ef51da0e..00000000 --- a/test_cases_bc/basic_c_tests/arraycopy1.c.bc +++ /dev/null @@ -1,40 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/arraycopy1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/arraycopy1.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %source = alloca [2 x ptr], align 16 - %x = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - %arrayinit.begin = getelementptr inbounds [2 x ptr], ptr %source, i64 0, i64 0 - store ptr %a, ptr %arrayinit.begin, align 8 - %arrayinit.element = getelementptr inbounds ptr, ptr %arrayinit.begin, i64 1 - store ptr %b, ptr %arrayinit.element, align 8 - %arrayidx = getelementptr inbounds [2 x ptr], ptr %source, i64 0, i64 1 - %0 = load ptr, ptr %arrayidx, align 8 - store ptr %0, ptr %x, align 8 - %1 = load ptr, ptr %x, align 8 - call void @MAYALIAS(ptr noundef %a, ptr noundef %1) - ret i32 0 -} - -declare void @MAYALIAS(ptr noundef, ptr noundef) #1 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/branch-call.c.bc b/test_cases_bc/basic_c_tests/branch-call.c.bc deleted file mode 100644 index c49c5d57..00000000 --- a/test_cases_bc/basic_c_tests/branch-call.c.bc +++ /dev/null @@ -1,215 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/branch-call.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/branch-call.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @foo(ptr noundef %m, ptr noundef %n) #0 { -entry: - %m.addr = alloca ptr, align 8 - %n.addr = alloca ptr, align 8 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store ptr %m, ptr %m.addr, align 8 - store ptr %n, ptr %n.addr, align 8 - %0 = load ptr, ptr %m.addr, align 8 - %1 = load ptr, ptr %n.addr, align 8 - call void @MAYALIAS(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr %n.addr, align 8 - %3 = load i32, ptr %2, align 4 - store i32 %3, ptr %x, align 4 - %4 = load ptr, ptr %m.addr, align 8 - %5 = load i32, ptr %4, align 4 - store i32 %5, ptr %y, align 4 - %6 = load i32, ptr %x, align 4 - %7 = load ptr, ptr %m.addr, align 8 - store i32 %6, ptr %7, align 4 - %8 = load i32, ptr %y, align 4 - %9 = load ptr, ptr %n.addr, align 8 - store i32 %8, ptr %9, align 4 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %p = alloca ptr, align 8 - %q = alloca ptr, align 8 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %c = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %0 = load i32, ptr %c, align 4 - %tobool = icmp ne i32 %0, 0 - br i1 %tobool, label %if.then, label %if.else - -if.then: ; preds = %entry - store ptr %a, ptr %p, align 8 - store ptr %b, ptr %q, align 8 - %1 = load ptr, ptr %p, align 8 - %2 = load ptr, ptr %q, align 8 - call void @foo(ptr noundef %1, ptr noundef %2) - br label %if.end - -if.else: ; preds = %entry - store ptr %b, ptr %p, align 8 - store ptr %c, ptr %q, align 8 - %3 = load ptr, ptr %p, align 8 - %4 = load ptr, ptr %q, align 8 - call void @foo(ptr noundef %3, ptr noundef %4) - br label %if.end - -if.end: ; preds = %if.else, %if.then - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/branch-intra.c.bc b/test_cases_bc/basic_c_tests/branch-intra.c.bc deleted file mode 100644 index a761beb0..00000000 --- a/test_cases_bc/basic_c_tests/branch-intra.c.bc +++ /dev/null @@ -1,185 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/branch-intra.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/branch-intra.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %p = alloca ptr, align 8 - %q = alloca ptr, align 8 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %c = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %0 = load i32, ptr %c, align 4 - %tobool = icmp ne i32 %0, 0 - br i1 %tobool, label %if.then, label %if.else - -if.then: ; preds = %entry - store ptr %a, ptr %p, align 8 - store ptr %b, ptr %q, align 8 - br label %if.end - -if.else: ; preds = %entry - store ptr %b, ptr %p, align 8 - store ptr %c, ptr %q, align 8 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %1 = load ptr, ptr %p, align 8 - %2 = load ptr, ptr %q, align 8 - call void @MAYALIAS(ptr noundef %1, ptr noundef %2) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/byteoffset1.c.bc b/test_cases_bc/basic_c_tests/byteoffset1.c.bc deleted file mode 100644 index a9fda41e..00000000 --- a/test_cases_bc/basic_c_tests/byteoffset1.c.bc +++ /dev/null @@ -1,85 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/byteoffset1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/byteoffset1.c" -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-unknown-linux-gnu" - -%struct.StructA = type { i32, ptr } - -@.str = private unnamed_addr constant [6 x i8] c"%c%c\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %0 = load ptr, ptr %p.addr, align 8 - %1 = load ptr, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %0, ptr noundef %1) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @FuncA() #0 { -entry: - ret i32 1 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @CallF(ptr noundef %structA) #0 { -entry: - %structA.addr = alloca ptr, align 8 - %ret = alloca i32, align 4 - store ptr %structA, ptr %structA.addr, align 8 - %0 = load ptr, ptr %structA.addr, align 8 - %f = getelementptr inbounds %struct.StructA, ptr %0, i32 0, i32 1 - %1 = load ptr, ptr %f, align 8 - %call = call i32 %1() - store i32 %call, ptr %ret, align 4 - %2 = load ptr, ptr %structA.addr, align 8 - %f1 = getelementptr inbounds %struct.StructA, ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %f1, align 8 - call void @MAYALIAS(ptr noundef %3, ptr noundef @FuncA) - %4 = load i32, ptr %ret, align 4 - ret i32 %4 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %structA = alloca ptr, align 8 - %ret = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %call = call ptr @malloc(i64 noundef 16) #3 - store ptr %call, ptr %structA, align 8 - %0 = load ptr, ptr %structA, align 8 - %f = getelementptr inbounds %struct.StructA, ptr %0, i32 0, i32 1 - store ptr @FuncA, ptr %f, align 8 - %1 = load ptr, ptr %structA, align 8 - %call1 = call i32 @CallF(ptr noundef %1) - store i32 %call1, ptr %ret, align 4 - %2 = load i32, ptr %ret, align 4 - ret i32 %2 -} - -; Function Attrs: allocsize(0) -declare ptr @malloc(i64 noundef) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/constraint-cycle-copy.c.bc b/test_cases_bc/basic_c_tests/constraint-cycle-copy.c.bc deleted file mode 100644 index d8c2c88b..00000000 --- a/test_cases_bc/basic_c_tests/constraint-cycle-copy.c.bc +++ /dev/null @@ -1,207 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/constraint-cycle-copy.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/constraint-cycle-copy.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %x1 = alloca ptr, align 8 - %y1 = alloca ptr, align 8 - %z1 = alloca ptr, align 8 - %x2 = alloca ptr, align 8 - %y2 = alloca ptr, align 8 - %z2 = alloca ptr, align 8 - %y2_ = alloca ptr, align 8 - %x3 = alloca i32, align 4 - %y3 = alloca i32, align 4 - %z3 = alloca i32, align 4 - %y3_ = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - store ptr %x3, ptr %x2, align 8 - store ptr %y3, ptr %y2, align 8 - store ptr %z3, ptr %z2, align 8 - store ptr %x2, ptr %x1, align 8 - store ptr %y2, ptr %y1, align 8 - store ptr %z2, ptr %z1, align 8 - %0 = load i32, ptr %y3_, align 4 - %tobool = icmp ne i32 %0, 0 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - store ptr %y2_, ptr %y1, align 8 - store ptr %y3_, ptr %y2_, align 8 - br label %if.end - -if.end: ; preds = %if.then, %entry - %1 = load ptr, ptr %y1, align 8 - %2 = load ptr, ptr %1, align 8 - %3 = load ptr, ptr %x1, align 8 - store ptr %2, ptr %3, align 8 - %4 = load ptr, ptr %z1, align 8 - %5 = load ptr, ptr %4, align 8 - %6 = load ptr, ptr %y1, align 8 - store ptr %5, ptr %6, align 8 - %7 = load ptr, ptr %x1, align 8 - %8 = load ptr, ptr %7, align 8 - %9 = load ptr, ptr %z1, align 8 - store ptr %8, ptr %9, align 8 - %10 = load ptr, ptr %x2, align 8 - %11 = load ptr, ptr %y2, align 8 - call void @MAYALIAS(ptr noundef %10, ptr noundef %11) - %12 = load ptr, ptr %z2, align 8 - %13 = load ptr, ptr %x2, align 8 - call void @MAYALIAS(ptr noundef %12, ptr noundef %13) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/constraint-cycle-field.c.bc b/test_cases_bc/basic_c_tests/constraint-cycle-field.c.bc deleted file mode 100644 index c720d672..00000000 --- a/test_cases_bc/basic_c_tests/constraint-cycle-field.c.bc +++ /dev/null @@ -1,222 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/constraint-cycle-field.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/constraint-cycle-field.c" -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-unknown-linux-gnu" - -%struct.MyStruct = type { ptr, ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %p = alloca ptr, align 8 - %num = alloca i32, align 4 - %q = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - %call = call noalias ptr @malloc(i64 noundef 16) #3 - store ptr %call, ptr %p, align 8 - store i32 10, ptr %num, align 4 - br label %while.cond - -while.cond: ; preds = %while.body, %entry - %0 = load i32, ptr %num, align 4 - %tobool = icmp ne i32 %0, 0 - br i1 %tobool, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %call1 = call noalias ptr @malloc(i64 noundef 16) #3 - %1 = load ptr, ptr %p, align 8 - %next = getelementptr inbounds %struct.MyStruct, ptr %1, i32 0, i32 1 - store ptr %call1, ptr %next, align 8 - %call2 = call noalias ptr @malloc(i64 noundef 4) #3 - %2 = load ptr, ptr %p, align 8 - %next3 = getelementptr inbounds %struct.MyStruct, ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %next3, align 8 - %f1 = getelementptr inbounds %struct.MyStruct, ptr %3, i32 0, i32 0 - store ptr %call2, ptr %f1, align 8 - %4 = load ptr, ptr %p, align 8 - %next4 = getelementptr inbounds %struct.MyStruct, ptr %4, i32 0, i32 1 - %5 = load ptr, ptr %next4, align 8 - store ptr %5, ptr %p, align 8 - br label %while.cond, !llvm.loop !6 - -while.end: ; preds = %while.cond - %6 = load ptr, ptr %p, align 8 - store ptr %6, ptr %q, align 8 - %7 = load ptr, ptr %q, align 8 - %next5 = getelementptr inbounds %struct.MyStruct, ptr %7, i32 0, i32 1 - %8 = load ptr, ptr %next5, align 8 - %9 = load ptr, ptr %p, align 8 - %next6 = getelementptr inbounds %struct.MyStruct, ptr %9, i32 0, i32 1 - %10 = load ptr, ptr %next6, align 8 - %next7 = getelementptr inbounds %struct.MyStruct, ptr %10, i32 0, i32 1 - %11 = load ptr, ptr %next7, align 8 - call void @MAYALIAS(ptr noundef %8, ptr noundef %11) - %12 = load ptr, ptr %q, align 8 - %f18 = getelementptr inbounds %struct.MyStruct, ptr %12, i32 0, i32 0 - %13 = load ptr, ptr %f18, align 8 - %14 = load ptr, ptr %p, align 8 - %next9 = getelementptr inbounds %struct.MyStruct, ptr %14, i32 0, i32 1 - %15 = load ptr, ptr %next9, align 8 - %f110 = getelementptr inbounds %struct.MyStruct, ptr %15, i32 0, i32 0 - %16 = load ptr, ptr %f110, align 8 - call void @MAYALIAS(ptr noundef %13, ptr noundef %16) - ret i32 0 -} - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/basic_c_tests/constraint-cycle-pwc.c.bc b/test_cases_bc/basic_c_tests/constraint-cycle-pwc.c.bc deleted file mode 100644 index 96331ee1..00000000 --- a/test_cases_bc/basic_c_tests/constraint-cycle-pwc.c.bc +++ /dev/null @@ -1,83 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/constraint-cycle-pwc.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/constraint-cycle-pwc.c" -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-unknown-linux-gnu" - -%struct.network = type { ptr, ptr, ptr, ptr } -%struct.arc = type { ptr, ptr, i64 } - -@.str = private unnamed_addr constant [13 x i8] c"hello world\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %net = alloca ptr, align 8 - %arc = alloca ptr, align 8 - %stop = alloca ptr, align 8 - %condition = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %0 = load ptr, ptr %net, align 8 - %stop_arcs = getelementptr inbounds %struct.network, ptr %0, i32 0, i32 1 - %1 = load ptr, ptr %stop_arcs, align 8 - store ptr %1, ptr %stop, align 8 - %2 = load ptr, ptr %net, align 8 - %arcs = getelementptr inbounds %struct.network, ptr %2, i32 0, i32 0 - %3 = load ptr, ptr %arcs, align 8 - store ptr %3, ptr %arc, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %4 = load ptr, ptr %arc, align 8 - %5 = load ptr, ptr %stop, align 8 - %cmp = icmp ne ptr %4, %5 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %6 = load ptr, ptr %arc, align 8 - %ident = getelementptr inbounds %struct.arc, ptr %6, i32 0, i32 2 - %7 = load i64, ptr %ident, align 8 - %tobool = icmp ne i64 %7, 0 - br i1 %tobool, label %if.then, label %if.end3 - -if.then: ; preds = %for.body - %8 = load i32, ptr %condition, align 4 - %tobool1 = icmp ne i32 %8, 0 - br i1 %tobool1, label %if.then2, label %if.end - -if.then2: ; preds = %if.then - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - br label %if.end - -if.end: ; preds = %if.then2, %if.then - br label %if.end3 - -if.end3: ; preds = %if.end, %for.body - br label %for.inc - -for.inc: ; preds = %if.end3 - %9 = load ptr, ptr %arc, align 8 - %incdec.ptr = getelementptr inbounds %struct.arc, ptr %9, i32 1 - store ptr %incdec.ptr, ptr %arc, align 8 - br label %for.cond, !llvm.loop !6 - -for.end: ; preds = %for.cond - ret i32 0 -} - -declare i32 @printf(ptr noundef, ...) #1 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/basic_c_tests/field-ptr-arith-constIdx.c.bc b/test_cases_bc/basic_c_tests/field-ptr-arith-constIdx.c.bc deleted file mode 100644 index ababcb4c..00000000 --- a/test_cases_bc/basic_c_tests/field-ptr-arith-constIdx.c.bc +++ /dev/null @@ -1,181 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/field-ptr-arith-constIdx.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/field-ptr-arith-constIdx.c" -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-unknown-linux-gnu" - -%struct.s = type { ptr, ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %q = alloca ptr, align 8 - %p = alloca ptr, align 8 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %s1 = alloca %struct.s, align 8 - store i32 0, ptr %retval, align 4 - %f1 = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 0 - store ptr %a, ptr %f1, align 8 - %f2 = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 1 - store ptr %b, ptr %f2, align 8 - %f11 = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 0 - store ptr %f11, ptr %q, align 8 - %0 = load ptr, ptr %q, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %0, i64 1 - store ptr %add.ptr, ptr %p, align 8 - %1 = load ptr, ptr %p, align 8 - %2 = load ptr, ptr %1, align 8 - call void @EXPECTEDFAIL_MAYALIAS(ptr noundef %2, ptr noundef %b) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/field-ptr-arith-varIdx.c.bc b/test_cases_bc/basic_c_tests/field-ptr-arith-varIdx.c.bc deleted file mode 100644 index a6c00cfb..00000000 --- a/test_cases_bc/basic_c_tests/field-ptr-arith-varIdx.c.bc +++ /dev/null @@ -1,183 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/field-ptr-arith-varIdx.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/field-ptr-arith-varIdx.c" -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-unknown-linux-gnu" - -%struct.s = type { ptr, ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %q = alloca ptr, align 8 - %p = alloca ptr, align 8 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %s1 = alloca %struct.s, align 8 - store i32 0, ptr %retval, align 4 - %f1 = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 0 - store ptr %a, ptr %f1, align 8 - %f2 = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 1 - store ptr %b, ptr %f2, align 8 - %f11 = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 0 - store ptr %f11, ptr %q, align 8 - %0 = load ptr, ptr %q, align 8 - %1 = load i32, ptr %b, align 4 - %idx.ext = sext i32 %1 to i64 - %add.ptr = getelementptr inbounds ptr, ptr %0, i64 %idx.ext - store ptr %add.ptr, ptr %p, align 8 - %2 = load ptr, ptr %p, align 8 - %3 = load ptr, ptr %2, align 8 - call void @MAYALIAS(ptr noundef %3, ptr noundef %b) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/funptr-global.c.bc b/test_cases_bc/basic_c_tests/funptr-global.c.bc deleted file mode 100644 index 22dd2b0e..00000000 --- a/test_cases_bc/basic_c_tests/funptr-global.c.bc +++ /dev/null @@ -1,215 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/funptr-global.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/funptr-global.c" -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-unknown-linux-gnu" - -%struct.PLHashAllocOps = type { ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@defaultHashAllocOps = dso_local global %struct.PLHashAllocOps { ptr @DefaultAllocTable }, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define internal ptr @DefaultAllocTable(ptr noundef %pool, i32 noundef %size) #0 { -entry: - %pool.addr = alloca ptr, align 8 - %size.addr = alloca i32, align 4 - %tmp = alloca ptr, align 8 - store ptr %pool, ptr %pool.addr, align 8 - store i32 %size, ptr %size.addr, align 4 - %0 = load i32, ptr %size.addr, align 4 - %conv = zext i32 %0 to i64 - %call = call noalias ptr @malloc(i64 noundef %conv) #3 - store ptr %call, ptr %tmp, align 8 - %1 = load ptr, ptr %tmp, align 8 - ret ptr %1 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PL_NewHashTable(i32 noundef %n, ptr noundef %allocPriv) #0 { -entry: - %n.addr = alloca i32, align 4 - %allocPriv.addr = alloca ptr, align 8 - %tmp___0 = alloca ptr, align 8 - %tmp___1 = alloca ptr, align 8 - %allocOps = alloca ptr, align 8 - store i32 %n, ptr %n.addr, align 4 - store ptr %allocPriv, ptr %allocPriv.addr, align 8 - store ptr @defaultHashAllocOps, ptr %allocOps, align 8 - %0 = load ptr, ptr %allocOps, align 8 - %allocTable = getelementptr inbounds %struct.PLHashAllocOps, ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %allocTable, align 8 - %2 = load ptr, ptr %allocPriv.addr, align 8 - %call = call ptr %1(ptr noundef %2, i32 noundef 4) - store ptr %call, ptr %tmp___0, align 8 - %3 = load ptr, ptr %allocOps, align 8 - %allocTable1 = getelementptr inbounds %struct.PLHashAllocOps, ptr %3, i32 0, i32 0 - %4 = load ptr, ptr %allocTable1, align 8 - %5 = load ptr, ptr %allocPriv.addr, align 8 - %call2 = call ptr %4(ptr noundef %5, i32 noundef 4) - store ptr %call2, ptr %tmp___1, align 8 - %6 = load ptr, ptr %tmp___0, align 8 - %7 = load ptr, ptr %tmp___1, align 8 - call void @MAYALIAS(ptr noundef %6, ptr noundef %7) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - ret i32 0 -} - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/funptr-nested-call.c.bc b/test_cases_bc/basic_c_tests/funptr-nested-call.c.bc deleted file mode 100644 index dd56a3e8..00000000 --- a/test_cases_bc/basic_c_tests/funptr-nested-call.c.bc +++ /dev/null @@ -1,90 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/funptr-nested-call.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/funptr-nested-call.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [3 x i8] c"f\0A\00", align 1 -@.str.1 = private unnamed_addr constant [3 x i8] c"g\0A\00", align 1 -@p = dso_local global ptr null, align 8 -@fptr = dso_local global ptr null, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @f() #0 { -entry: - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @g() #0 { -entry: - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @fake_fun(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - store ptr %0, ptr @p, align 8 - %1 = load ptr, ptr @p, align 8 - call void (...) %1() - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @real_fun(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - store ptr %0, ptr @p, align 8 - %1 = load ptr, ptr @p, align 8 - call void (...) %1() - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @set(ptr noundef %src) #0 { -entry: - %src.addr = alloca ptr, align 8 - store ptr %src, ptr %src.addr, align 8 - %0 = load ptr, ptr %src.addr, align 8 - store ptr %0, ptr @fptr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - call void @set(ptr noundef @fake_fun) - call void @set(ptr noundef @real_fun) - %0 = load ptr, ptr @fptr, align 8 - call void %0(ptr noundef @f) - %1 = load ptr, ptr @fptr, align 8 - call void %1(ptr noundef @g) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/funptr-simple.c.bc b/test_cases_bc/basic_c_tests/funptr-simple.c.bc deleted file mode 100644 index 223b09b1..00000000 --- a/test_cases_bc/basic_c_tests/funptr-simple.c.bc +++ /dev/null @@ -1,203 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/funptr-simple.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/funptr-simple.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@fptr = dso_local global ptr null, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @f(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %0 = load ptr, ptr %p.addr, align 8 - %1 = load ptr, ptr %q.addr, align 8 - call void @MAYALIAS(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - %m = alloca ptr, align 8 - %n = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - %0 = load i32, ptr %x, align 4 - %tobool = icmp ne i32 %0, 0 - br i1 %tobool, label %if.then, label %if.else - -if.then: ; preds = %entry - store ptr %x, ptr %m, align 8 - store ptr %x, ptr %n, align 8 - store ptr @f, ptr @fptr, align 8 - %1 = load ptr, ptr @fptr, align 8 - %2 = load ptr, ptr %m, align 8 - %3 = load ptr, ptr %n, align 8 - call void %1(ptr noundef %2, ptr noundef %3) - br label %if.end - -if.else: ; preds = %entry - store ptr %x, ptr %m, align 8 - store ptr %y, ptr %n, align 8 - %4 = load ptr, ptr %m, align 8 - %5 = load ptr, ptr %n, align 8 - call void @f(ptr noundef %4, ptr noundef %5) - br label %if.end - -if.end: ; preds = %if.else, %if.then - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/funptr-struct.c.bc b/test_cases_bc/basic_c_tests/funptr-struct.c.bc deleted file mode 100644 index 420d509d..00000000 --- a/test_cases_bc/basic_c_tests/funptr-struct.c.bc +++ /dev/null @@ -1,209 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/funptr-struct.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/funptr-struct.c" -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-unknown-linux-gnu" - -%struct.MYFILE = type { ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@.str.3 = private unnamed_addr constant [15 x i8] c"Executing bar\0A\00", align 1 -@g = dso_local global i32 0, align 4 -@__const.my_vsnprintf.pts = private unnamed_addr constant %struct.MYFILE { ptr @my_sn_write }, align 8 -@.str.4 = private unnamed_addr constant [23 x i8] c"Executing my_sn_write\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @my_vfprintf(ptr noundef %pts) #0 { -entry: - %pts.addr = alloca ptr, align 8 - %p = alloca ptr, align 8 - store ptr %pts, ptr %pts.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.3) - store ptr @g, ptr %p, align 8 - %0 = load ptr, ptr %pts.addr, align 8 - %pt = getelementptr inbounds %struct.MYFILE, ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %pt, align 8 - %2 = load ptr, ptr %p, align 8 - %call1 = call i32 %1(ptr noundef %2) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @my_vsnprintf() #0 { -entry: - %pts = alloca %struct.MYFILE, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %pts, ptr align 8 @__const.my_vsnprintf.pts, i64 8, i1 false) - call void @my_vfprintf(ptr noundef %pts) - ret i32 0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define internal i32 @my_sn_write(ptr noundef %p) #0 { -entry: - %p.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.4) - %0 = load ptr, ptr %p.addr, align 8 - call void @MAYALIAS(ptr noundef @g, ptr noundef %0) - ret i32 0 -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %call = call i32 @my_vsnprintf() - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/global-array.c.bc b/test_cases_bc/basic_c_tests/global-array.c.bc deleted file mode 100644 index e60ea36e..00000000 --- a/test_cases_bc/basic_c_tests/global-array.c.bc +++ /dev/null @@ -1,233 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/global-array.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/global-array.c" -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-unknown-linux-gnu" - -%struct.MyStruct = type { ptr, [64 x i8] } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@context = dso_local global %struct.MyStruct zeroinitializer, align 8 -@padding = internal global <{ i8, [63 x i8] }> <{ i8 -128, [63 x i8] zeroinitializer }>, align 16 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @update(ptr noundef %context, ptr noundef %input, i64 noundef %length) #0 { -entry: - %context.addr = alloca ptr, align 8 - %input.addr = alloca ptr, align 8 - %length.addr = alloca i64, align 8 - %index = alloca i32, align 4 - store ptr %context, ptr %context.addr, align 8 - store ptr %input, ptr %input.addr, align 8 - store i64 %length, ptr %length.addr, align 8 - %0 = load ptr, ptr %context.addr, align 8 - %f2 = getelementptr inbounds %struct.MyStruct, ptr %0, i32 0, i32 1 - %1 = load i32, ptr %index, align 4 - %idxprom = sext i32 %1 to i64 - %arrayidx = getelementptr inbounds [64 x i8], ptr %f2, i64 0, i64 %idxprom - %2 = load ptr, ptr %input.addr, align 8 - %3 = load i64, ptr %length.addr, align 8 - call void @memcpy(ptr noundef %arrayidx, ptr noundef %2, i64 noundef %3) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define internal void @memcpy(ptr noundef %output, ptr noundef %input, i64 noundef %len) #0 { -entry: - %output.addr = alloca ptr, align 8 - %input.addr = alloca ptr, align 8 - %len.addr = alloca i64, align 8 - %i = alloca i64, align 8 - store ptr %output, ptr %output.addr, align 8 - store ptr %input, ptr %input.addr, align 8 - store i64 %len, ptr %len.addr, align 8 - store i64 0, ptr %i, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %0 = load i64, ptr %i, align 8 - %1 = load i64, ptr %len.addr, align 8 - %cmp = icmp ult i64 %0, %1 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %2 = load ptr, ptr %input.addr, align 8 - %3 = load i64, ptr %i, align 8 - %arrayidx = getelementptr inbounds i8, ptr %2, i64 %3 - %4 = load i8, ptr %arrayidx, align 1 - %5 = load ptr, ptr %output.addr, align 8 - %6 = load i64, ptr %i, align 8 - %arrayidx1 = getelementptr inbounds i8, ptr %5, i64 %6 - store i8 %4, ptr %arrayidx1, align 1 - br label %for.inc - -for.inc: ; preds = %for.body - %7 = load i64, ptr %i, align 8 - %inc = add i64 %7, 1 - store i64 %inc, ptr %i, align 8 - br label %for.cond, !llvm.loop !6 - -for.end: ; preds = %for.cond - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %l = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %0 = load i32, ptr %l, align 4 - %conv = sext i32 %0 to i64 - call void @update(ptr noundef @context, ptr noundef @padding, i64 noundef %conv) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/basic_c_tests/global-call-noparam.c.bc b/test_cases_bc/basic_c_tests/global-call-noparam.c.bc deleted file mode 100644 index 2939e5de..00000000 --- a/test_cases_bc/basic_c_tests/global-call-noparam.c.bc +++ /dev/null @@ -1,185 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/global-call-noparam.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/global-call-noparam.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@p = dso_local global ptr null, align 8 -@q = dso_local global ptr null, align 8 -@c = dso_local global i32 0, align 4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @foo() #0 { -entry: - %0 = load ptr, ptr @p, align 8 - %1 = load ptr, ptr @q, align 8 - call void @MAYALIAS(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @bar() #0 { -entry: - store ptr @c, ptr @q, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %a = alloca i32, align 4 - %b = alloca i32, align 4 - store ptr %a, ptr @p, align 8 - %0 = load ptr, ptr @p, align 8 - store ptr %0, ptr @q, align 8 - store ptr @c, ptr @p, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/global-call-struct.c.bc b/test_cases_bc/basic_c_tests/global-call-struct.c.bc deleted file mode 100644 index 6ba7dd7d..00000000 --- a/test_cases_bc/basic_c_tests/global-call-struct.c.bc +++ /dev/null @@ -1,209 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/global-call-struct.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/global-call-struct.c" -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-unknown-linux-gnu" - -%struct.MyStruct = type { [20 x i8], i32, ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@x = dso_local global i32 0, align 4 -@global = dso_local global %struct.MyStruct { [20 x i8] c"abcdefg\00\00\00\00\00\00\00\00\00\00\00\00\00", i32 20, ptr @x }, align 8 -@y = dso_local global i32 0, align 4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @foo(ptr noundef %pp, ptr noundef %qq) #0 { -entry: - %pp.addr = alloca ptr, align 8 - %qq.addr = alloca ptr, align 8 - store ptr %pp, ptr %pp.addr, align 8 - store ptr %qq, ptr %qq.addr, align 8 - %0 = load ptr, ptr %pp.addr, align 8 - store ptr @x, ptr %0, align 8 - %1 = load ptr, ptr %qq.addr, align 8 - store ptr @y, ptr %1, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @bar(ptr noundef %pp, ptr noundef %qq) #0 { -entry: - %pp.addr = alloca ptr, align 8 - %qq.addr = alloca ptr, align 8 - store ptr %pp, ptr %pp.addr, align 8 - store ptr %qq, ptr %qq.addr, align 8 - %0 = load ptr, ptr %pp.addr, align 8 - store ptr @x, ptr %0, align 8 - %1 = load ptr, ptr %qq.addr, align 8 - store ptr @x, ptr %1, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %p = alloca ptr, align 8 - %q = alloca ptr, align 8 - %pp = alloca ptr, align 8 - %qq = alloca ptr, align 8 - store ptr %p, ptr %pp, align 8 - store ptr %q, ptr %qq, align 8 - %0 = load ptr, ptr %pp, align 8 - %1 = load ptr, ptr %qq, align 8 - call void @bar(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr %p, align 8 - %3 = load ptr, ptr %q, align 8 - call void @MAYALIAS(ptr noundef %2, ptr noundef %3) - %4 = load ptr, ptr getelementptr inbounds (%struct.MyStruct, ptr @global, i32 0, i32 2), align 8 - %5 = load ptr, ptr %qq, align 8 - %6 = load ptr, ptr %5, align 8 - call void @MAYALIAS(ptr noundef %4, ptr noundef %6) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/global-call-twoparms.c.bc b/test_cases_bc/basic_c_tests/global-call-twoparms.c.bc deleted file mode 100644 index 223b40af..00000000 --- a/test_cases_bc/basic_c_tests/global-call-twoparms.c.bc +++ /dev/null @@ -1,236 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/global-call-twoparms.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/global-call-twoparms.c" -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-unknown-linux-gnu" - -%struct.MyStruct = type { i32, ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@x = dso_local global i32 0, align 4 -@y = dso_local global i32 0, align 4 -@global = dso_local global %struct.MyStruct zeroinitializer, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @foo(ptr noundef %pp, ptr noundef %qq) #0 { -entry: - %pp.addr = alloca ptr, align 8 - %qq.addr = alloca ptr, align 8 - store ptr %pp, ptr %pp.addr, align 8 - store ptr %qq, ptr %qq.addr, align 8 - %0 = load ptr, ptr %pp.addr, align 8 - store ptr @x, ptr %0, align 8 - %1 = load ptr, ptr %qq.addr, align 8 - store ptr @y, ptr %1, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @bar(ptr noundef %pp, ptr noundef %qq) #0 { -entry: - %pp.addr = alloca ptr, align 8 - %qq.addr = alloca ptr, align 8 - store ptr %pp, ptr %pp.addr, align 8 - store ptr %qq, ptr %qq.addr, align 8 - %0 = load ptr, ptr %pp.addr, align 8 - store ptr @x, ptr %0, align 8 - %1 = load ptr, ptr %qq.addr, align 8 - store ptr @x, ptr %1, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @init() #0 { -entry: - store ptr @foo, ptr getelementptr inbounds (%struct.MyStruct, ptr @global, i32 0, i32 1), align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @init2() #0 { -entry: - store ptr @bar, ptr getelementptr inbounds (%struct.MyStruct, ptr @global, i32 0, i32 1), align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @run(ptr noundef %pp, ptr noundef %qq) #0 { -entry: - %pp.addr = alloca ptr, align 8 - %qq.addr = alloca ptr, align 8 - store ptr %pp, ptr %pp.addr, align 8 - store ptr %qq, ptr %qq.addr, align 8 - %0 = load ptr, ptr getelementptr inbounds (%struct.MyStruct, ptr @global, i32 0, i32 1), align 8 - %1 = load ptr, ptr %pp.addr, align 8 - %2 = load ptr, ptr %qq.addr, align 8 - call void %0(ptr noundef %1, ptr noundef %2) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %p = alloca ptr, align 8 - %q = alloca ptr, align 8 - %pp = alloca ptr, align 8 - %qq = alloca ptr, align 8 - store ptr %p, ptr %pp, align 8 - store ptr %q, ptr %qq, align 8 - call void @init() - %0 = load ptr, ptr %pp, align 8 - %1 = load ptr, ptr %qq, align 8 - call void @run(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr %pp, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %qq, align 8 - %5 = load ptr, ptr %4, align 8 - call void @MAYALIAS(ptr noundef %3, ptr noundef %5) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/global-const-struct.c.bc b/test_cases_bc/basic_c_tests/global-const-struct.c.bc deleted file mode 100644 index 418eeb1c..00000000 --- a/test_cases_bc/basic_c_tests/global-const-struct.c.bc +++ /dev/null @@ -1,200 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/global-const-struct.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/global-const-struct.c" -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-unknown-linux-gnu" - -%struct.MYFILE = type { ptr } -%struct.MyStruct = type { ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@pts = dso_local constant %struct.MYFILE { ptr @my_sn_write }, align 8 -@ms = dso_local constant %struct.MyStruct { ptr @pts }, align 8 -@.str.3 = private unnamed_addr constant [15 x i8] c"Executing bar\0A\00", align 1 -@g = dso_local global i32 0, align 4 -@.str.4 = private unnamed_addr constant [23 x i8] c"Executing my_sn_write\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define internal i32 @my_sn_write(ptr noundef %p) #0 { -entry: - %p.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.4) - %0 = load ptr, ptr %p.addr, align 8 - call void @MAYALIAS(ptr noundef @g, ptr noundef %0) - ret i32 0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @my_vfprintf(ptr noundef %ms) #0 { -entry: - %ms.addr = alloca ptr, align 8 - %p = alloca ptr, align 8 - store ptr %ms, ptr %ms.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.3) - store ptr @g, ptr %p, align 8 - %0 = load ptr, ptr %ms.addr, align 8 - %myfile = getelementptr inbounds %struct.MyStruct, ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %myfile, align 8 - %pt = getelementptr inbounds %struct.MYFILE, ptr %1, i32 0, i32 0 - %2 = load ptr, ptr %pt, align 8 - %3 = load ptr, ptr %p, align 8 - %call1 = call i32 %2(ptr noundef %3) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @my_vfprintf(ptr noundef @ms) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/global-funptr.c.bc b/test_cases_bc/basic_c_tests/global-funptr.c.bc deleted file mode 100644 index 07b2b7bb..00000000 --- a/test_cases_bc/basic_c_tests/global-funptr.c.bc +++ /dev/null @@ -1,182 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/global-funptr.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/global-funptr.c" -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-unknown-linux-gnu" - -%struct.MyStruct = type { ptr, ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@y = dso_local global i32 0, align 4 -@p = dso_local global ptr null, align 8 -@x = dso_local global i32 0, align 4 -@context = dso_local global %struct.MyStruct { ptr @foo, ptr @x }, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @foo() #0 { -entry: - store ptr @y, ptr @p, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %q = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - %0 = load ptr, ptr @context, align 8 - call void (...) %0() - %1 = load ptr, ptr @p, align 8 - store ptr %1, ptr %q, align 8 - %2 = load ptr, ptr %q, align 8 - call void @MUSTALIAS(ptr noundef %2, ptr noundef @y) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/global-initializer.c.bc b/test_cases_bc/basic_c_tests/global-initializer.c.bc deleted file mode 100644 index 34b0bfcd..00000000 --- a/test_cases_bc/basic_c_tests/global-initializer.c.bc +++ /dev/null @@ -1,188 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/global-initializer.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/global-initializer.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@p = dso_local global ptr null, align 8 -@pp = dso_local global ptr @p, align 8 -@q = dso_local global ptr null, align 8 -@qq = dso_local global ptr @q, align 8 -@x = dso_local global i32 0, align 4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @foo() #0 { -entry: - store ptr @x, ptr @p, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @bar() #0 { -entry: - store ptr @x, ptr @q, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %0 = load ptr, ptr @pp, align 8 - %1 = load ptr, ptr %0, align 8 - %2 = load ptr, ptr @qq, align 8 - %3 = load ptr, ptr %2, align 8 - call void @MAYALIAS(ptr noundef %1, ptr noundef %3) - call void @foo() - call void @bar() - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/global-nested-calls.c.bc b/test_cases_bc/basic_c_tests/global-nested-calls.c.bc deleted file mode 100644 index 6d47c376..00000000 --- a/test_cases_bc/basic_c_tests/global-nested-calls.c.bc +++ /dev/null @@ -1,190 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/global-nested-calls.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/global-nested-calls.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@p = dso_local global ptr null, align 8 -@pp = dso_local global ptr null, align 8 -@x = dso_local global i32 0, align 4 -@q = dso_local global ptr null, align 8 -@qq = dso_local global ptr null, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @foo() #0 { -entry: - store ptr @p, ptr @pp, align 8 - store ptr @x, ptr @p, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @bar() #0 { -entry: - store ptr @q, ptr @qq, align 8 - store ptr @x, ptr @q, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %0 = load ptr, ptr @pp, align 8 - %1 = load ptr, ptr %0, align 8 - %2 = load ptr, ptr @qq, align 8 - %3 = load ptr, ptr %2, align 8 - call void @MAYALIAS(ptr noundef %1, ptr noundef %3) - call void @foo() - call void @bar() - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/global-simple.c.bc b/test_cases_bc/basic_c_tests/global-simple.c.bc deleted file mode 100644 index fdbe4430..00000000 --- a/test_cases_bc/basic_c_tests/global-simple.c.bc +++ /dev/null @@ -1,180 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/global-simple.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/global-simple.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@a_int = dso_local global i32 10, align 4 -@p_int = dso_local global ptr @a_int, align 8 -@pp_int = dso_local global ptr @p_int, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %b_int = alloca i32, align 4 - %q_int = alloca ptr, align 8 - %qq_int = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - %0 = load i32, ptr @a_int, align 4 - store i32 %0, ptr %b_int, align 4 - %1 = load ptr, ptr @p_int, align 8 - store ptr %1, ptr %q_int, align 8 - %2 = load ptr, ptr @pp_int, align 8 - store ptr %2, ptr %qq_int, align 8 - %3 = load ptr, ptr %qq_int, align 8 - %4 = load ptr, ptr %3, align 8 - %5 = load ptr, ptr %q_int, align 8 - call void @MUSTALIAS(ptr noundef %4, ptr noundef %5) - %6 = load ptr, ptr %q_int, align 8 - call void @MUSTALIAS(ptr noundef %6, ptr noundef @a_int) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/heap-indirect.c.bc b/test_cases_bc/basic_c_tests/heap-indirect.c.bc deleted file mode 100644 index 645b8ef9..00000000 --- a/test_cases_bc/basic_c_tests/heap-indirect.c.bc +++ /dev/null @@ -1,197 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/heap-indirect.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/heap-indirect.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @malloc_two(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call noalias ptr @malloc(i64 noundef 4) #3 - %0 = load ptr, ptr %p.addr, align 8 - store ptr %call, ptr %0, align 8 - %call1 = call noalias ptr @malloc(i64 noundef 4) #3 - %1 = load ptr, ptr %q.addr, align 8 - store ptr %call1, ptr %1, align 8 - ret void -} - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %o1 = alloca ptr, align 8 - %o2 = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - %call = call noalias ptr @malloc(i64 noundef 100) #3 - store ptr %call, ptr %o1, align 8 - %call1 = call noalias ptr @malloc(i64 noundef 100) #3 - store ptr %call1, ptr %o2, align 8 - %0 = load ptr, ptr %o1, align 8 - %1 = load ptr, ptr %o2, align 8 - call void @malloc_two(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr %o1, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %o2, align 8 - %5 = load ptr, ptr %4, align 8 - call void @NOALIAS(ptr noundef %3, ptr noundef %5) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/heap-linkedlist.c.bc b/test_cases_bc/basic_c_tests/heap-linkedlist.c.bc deleted file mode 100644 index 7ee25ec7..00000000 --- a/test_cases_bc/basic_c_tests/heap-linkedlist.c.bc +++ /dev/null @@ -1,247 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/heap-linkedlist.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/heap-linkedlist.c" -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-unknown-linux-gnu" - -%struct.Node = type { ptr, ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @malloc_list(ptr noundef %p, i32 noundef %num) #0 { -entry: - %p.addr = alloca ptr, align 8 - %num.addr = alloca i32, align 4 - %p_data1 = alloca ptr, align 8 - %p_data2 = alloca ptr, align 8 - %p_next = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store i32 %num, ptr %num.addr, align 4 - store ptr null, ptr %p_data1, align 8 - store ptr null, ptr %p_data2, align 8 - store ptr null, ptr %p_next, align 8 - %0 = load ptr, ptr %p.addr, align 8 - %data = getelementptr inbounds %struct.Node, ptr %0, i32 0, i32 0 - store ptr null, ptr %data, align 8 - br label %while.cond - -while.cond: ; preds = %while.body, %entry - %1 = load i32, ptr %num.addr, align 4 - %cmp = icmp ne i32 %1, 0 - br i1 %cmp, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %call = call noalias ptr @malloc(i64 noundef 4) #3 - %2 = load ptr, ptr %p.addr, align 8 - %data1 = getelementptr inbounds %struct.Node, ptr %2, i32 0, i32 0 - store ptr %call, ptr %data1, align 8 - %3 = load ptr, ptr %p.addr, align 8 - %data2 = getelementptr inbounds %struct.Node, ptr %3, i32 0, i32 0 - %4 = load ptr, ptr %data2, align 8 - store ptr %4, ptr %p_data1, align 8 - %call3 = call noalias ptr @malloc(i64 noundef 16) #3 - store ptr %call3, ptr %p_next, align 8 - %5 = load ptr, ptr %p_next, align 8 - %6 = load ptr, ptr %p.addr, align 8 - %next = getelementptr inbounds %struct.Node, ptr %6, i32 0, i32 1 - store ptr %5, ptr %next, align 8 - %7 = load ptr, ptr %p.addr, align 8 - %data4 = getelementptr inbounds %struct.Node, ptr %7, i32 0, i32 0 - %8 = load ptr, ptr %data4, align 8 - store ptr %8, ptr %p_data2, align 8 - %9 = load i32, ptr %num.addr, align 4 - %dec = add nsw i32 %9, -1 - store i32 %dec, ptr %num.addr, align 4 - br label %while.cond, !llvm.loop !6 - -while.end: ; preds = %while.cond - %10 = load ptr, ptr %p_data1, align 8 - %11 = load ptr, ptr %p_data2, align 8 - call void @MAYALIAS(ptr noundef %10, ptr noundef %11) - %12 = load ptr, ptr %p_next, align 8 - %13 = load ptr, ptr %p_data1, align 8 - call void @NOALIAS(ptr noundef %12, ptr noundef %13) - ret void -} - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %head = alloca ptr, align 8 - %num = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %call = call noalias ptr @malloc(i64 noundef 16) #3 - store ptr %call, ptr %head, align 8 - store i32 4, ptr %num, align 4 - %0 = load ptr, ptr %head, align 8 - %1 = load i32, ptr %num, align 4 - call void @malloc_list(ptr noundef %0, i32 noundef %1) - %2 = load ptr, ptr %head, align 8 - %next = getelementptr inbounds %struct.Node, ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %next, align 8 - %data = getelementptr inbounds %struct.Node, ptr %3, i32 0, i32 0 - %4 = load ptr, ptr %data, align 8 - %5 = load ptr, ptr %head, align 8 - %next1 = getelementptr inbounds %struct.Node, ptr %5, i32 0, i32 1 - %6 = load ptr, ptr %next1, align 8 - %next2 = getelementptr inbounds %struct.Node, ptr %6, i32 0, i32 1 - %7 = load ptr, ptr %next2, align 8 - call void @NOALIAS(ptr noundef %4, ptr noundef %7) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/basic_c_tests/heap-wrapper.c.bc b/test_cases_bc/basic_c_tests/heap-wrapper.c.bc deleted file mode 100644 index 1f1f4962..00000000 --- a/test_cases_bc/basic_c_tests/heap-wrapper.c.bc +++ /dev/null @@ -1,186 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/heap-wrapper.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/heap-wrapper.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @my_alloc() #0 { -entry: - %p = alloca ptr, align 8 - %call = call noalias ptr @malloc(i64 noundef 4) #3 - store ptr %call, ptr %p, align 8 - %0 = load ptr, ptr %p, align 8 - ret ptr %0 -} - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %o1 = alloca ptr, align 8 - %o2 = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - %call = call ptr @my_alloc() - store ptr %call, ptr %o1, align 8 - %call1 = call ptr @my_alloc() - store ptr %call1, ptr %o2, align 8 - %0 = load ptr, ptr %o1, align 8 - %1 = load ptr, ptr %o2, align 8 - call void @MAYALIAS(ptr noundef %0, ptr noundef %1) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/int2pointer.c.bc b/test_cases_bc/basic_c_tests/int2pointer.c.bc deleted file mode 100644 index 47ab9e4c..00000000 --- a/test_cases_bc/basic_c_tests/int2pointer.c.bc +++ /dev/null @@ -1,181 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/int2pointer.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/int2pointer.c" -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-unknown-linux-gnu" - -%struct.MyStruct = type { i32, i32 } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %ms = alloca %struct.MyStruct, align 4 - %p = alloca ptr, align 8 - %q = alloca ptr, align 8 - %addr = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %f1 = getelementptr inbounds %struct.MyStruct, ptr %ms, i32 0, i32 0 - store ptr %f1, ptr %p, align 8 - %0 = load ptr, ptr %p, align 8 - %1 = ptrtoint ptr %0 to i32 - store i32 %1, ptr %addr, align 4 - %2 = load i32, ptr %addr, align 4 - %conv = sext i32 %2 to i64 - %3 = inttoptr i64 %conv to ptr - %add.ptr = getelementptr inbounds i32, ptr %3, i64 1 - store ptr %add.ptr, ptr %q, align 8 - %4 = load ptr, ptr %p, align 8 - %5 = load ptr, ptr %q, align 8 - call void @EXPECTEDFAIL_MAYALIAS(ptr noundef %4, ptr noundef %5) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/mesa.c.bc b/test_cases_bc/basic_c_tests/mesa.c.bc deleted file mode 100644 index ac2e517e..00000000 --- a/test_cases_bc/basic_c_tests/mesa.c.bc +++ /dev/null @@ -1,115 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/mesa.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/mesa.c" -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-unknown-linux-gnu" - -%struct.gl_api_table = type { ptr } - -@.str = private unnamed_addr constant [44 x i8] c"found uninitialized function pointer at %d\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @gl_Accum(ptr noundef %x, i32 noundef %y, float noundef %z) #0 { -entry: - %x.addr = alloca ptr, align 8 - %y.addr = alloca i32, align 4 - %z.addr = alloca float, align 4 - store ptr %x, ptr %x.addr, align 8 - store i32 %y, ptr %y.addr, align 4 - store float %z, ptr %z.addr, align 4 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @check_pointers(ptr noundef %table) #0 { -entry: - %table.addr = alloca ptr, align 8 - %entry1 = alloca ptr, align 8 - %numentries = alloca i32, align 4 - %i = alloca i32, align 4 - store ptr %table, ptr %table.addr, align 8 - store i32 1, ptr %numentries, align 4 - %0 = load ptr, ptr %table.addr, align 8 - store ptr %0, ptr %entry1, align 8 - store i32 0, ptr %i, align 4 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %1 = load i32, ptr %i, align 4 - %2 = load i32, ptr %numentries, align 4 - %cmp = icmp slt i32 %1, %2 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %3 = load ptr, ptr %entry1, align 8 - %4 = load i32, ptr %i, align 4 - %idxprom = sext i32 %4 to i64 - %arrayidx = getelementptr inbounds ptr, ptr %3, i64 %idxprom - %5 = load ptr, ptr %arrayidx, align 8 - %tobool = icmp ne ptr %5, null - br i1 %tobool, label %if.end, label %if.then - -if.then: ; preds = %for.body - %6 = load i32, ptr %i, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %6) - br label %if.end - -if.end: ; preds = %if.then, %for.body - br label %for.inc - -for.inc: ; preds = %if.end - %7 = load i32, ptr %i, align 4 - %inc = add nsw i32 %7, 1 - store i32 %inc, ptr %i, align 4 - br label %for.cond, !llvm.loop !6 - -for.end: ; preds = %for.cond - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @init_exec_pointers(ptr noundef %table) #0 { -entry: - %table.addr = alloca ptr, align 8 - store ptr %table, ptr %table.addr, align 8 - %0 = load ptr, ptr %table.addr, align 8 - %Accum = getelementptr inbounds %struct.gl_api_table, ptr %0, i32 0, i32 0 - store ptr @gl_Accum, ptr %Accum, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %table = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - %call = call noalias ptr @calloc(i64 noundef 1, i64 noundef 8) #3 - store ptr %call, ptr %table, align 8 - %0 = load ptr, ptr %table, align 8 - call void @init_exec_pointers(ptr noundef %0) - %1 = load ptr, ptr %table, align 8 - call void @check_pointers(ptr noundef %1) - ret i32 0 -} - -; Function Attrs: nounwind allocsize(0,1) -declare noalias ptr @calloc(i64 noundef, i64 noundef) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind allocsize(0,1) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind allocsize(0,1) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/basic_c_tests/ptr-dereference1.c.bc b/test_cases_bc/basic_c_tests/ptr-dereference1.c.bc deleted file mode 100644 index d11f98ea..00000000 --- a/test_cases_bc/basic_c_tests/ptr-dereference1.c.bc +++ /dev/null @@ -1,177 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/ptr-dereference1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/ptr-dereference1.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %c = alloca ptr, align 8 - %d = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store ptr %a, ptr %c, align 8 - store ptr %a, ptr %d, align 8 - %0 = load ptr, ptr %c, align 8 - %1 = load ptr, ptr %d, align 8 - call void @MUSTALIAS(ptr noundef %0, ptr noundef %1) - store ptr %b, ptr %c, align 8 - %2 = load ptr, ptr %c, align 8 - %3 = load ptr, ptr %d, align 8 - call void @MAYALIAS(ptr noundef %2, ptr noundef %3) - %4 = load ptr, ptr %d, align 8 - call void @NOALIAS(ptr noundef %b, ptr noundef %4) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/ptr-dereference2.c.bc b/test_cases_bc/basic_c_tests/ptr-dereference2.c.bc deleted file mode 100644 index 6cd8fe15..00000000 --- a/test_cases_bc/basic_c_tests/ptr-dereference2.c.bc +++ /dev/null @@ -1,181 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/ptr-dereference2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/ptr-dereference2.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %a = alloca ptr, align 8 - %b = alloca ptr, align 8 - %x = alloca ptr, align 8 - %c = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - store i32 10, ptr %c, align 4 - store ptr %b, ptr %a, align 8 - store ptr %c, ptr %b, align 8 - %0 = load ptr, ptr %a, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %x, align 8 - %2 = load ptr, ptr %x, align 8 - %3 = load i32, ptr %2, align 4 - store i32 %3, ptr %y, align 4 - %4 = load ptr, ptr %x, align 8 - call void @MUSTALIAS(ptr noundef %4, ptr noundef %c) - %5 = load ptr, ptr %x, align 8 - %6 = load ptr, ptr %b, align 8 - call void @MUSTALIAS(ptr noundef %5, ptr noundef %6) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/ptr-dereference3.c.bc b/test_cases_bc/basic_c_tests/ptr-dereference3.c.bc deleted file mode 100644 index 36445b8b..00000000 --- a/test_cases_bc/basic_c_tests/ptr-dereference3.c.bc +++ /dev/null @@ -1,197 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/ptr-dereference3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/ptr-dereference3.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @foo(i32 noundef %q) #0 { -entry: - %q.addr = alloca i32, align 4 - %i = alloca i32, align 4 - %k = alloca i32, align 4 - store i32 %q, ptr %q.addr, align 4 - store i32 10, ptr %i, align 4 - %0 = load i32, ptr %i, align 4 - store i32 %0, ptr %k, align 4 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %s = alloca ptr, align 8 - %r = alloca ptr, align 8 - %x = alloca ptr, align 8 - %y = alloca ptr, align 8 - %t = alloca i32, align 4 - %z = alloca i32, align 4 - %k = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - store ptr %t, ptr %s, align 8 - store ptr %z, ptr %r, align 8 - store ptr %r, ptr %y, align 8 - %0 = load ptr, ptr %r, align 8 - store ptr %0, ptr %s, align 8 - %1 = load ptr, ptr %s, align 8 - call void @MUSTALIAS(ptr noundef %1, ptr noundef %z) - %2 = load ptr, ptr %y, align 8 - %3 = load ptr, ptr %2, align 8 - store ptr %3, ptr %x, align 8 - %4 = load ptr, ptr %x, align 8 - %5 = load ptr, ptr %r, align 8 - call void @MUSTALIAS(ptr noundef %4, ptr noundef %5) - %6 = load i32, ptr %k, align 4 - call void @foo(i32 noundef %6) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/spec-equake.c.bc b/test_cases_bc/basic_c_tests/spec-equake.c.bc deleted file mode 100644 index 16dea3e9..00000000 --- a/test_cases_bc/basic_c_tests/spec-equake.c.bc +++ /dev/null @@ -1,1128 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/spec-equake.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/spec-equake.c" -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-unknown-linux-gnu" - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@disp = dso_local global ptr null, align 8 -@.str.3 = private unnamed_addr constant [17 x i8] c"null pointer 2!\0A\00", align 1 -@K = dso_local global ptr null, align 8 -@v = dso_local global ptr null, align 8 -@ARCHmatrixindex = dso_local global ptr null, align 8 -@Acol = dso_local global ptr null, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main(i32 noundef %argc, ptr noundef %argv) #0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %i = alloca i32, align 4 - %j = alloca i32, align 4 - %k = alloca i32, align 4 - %disptplus = alloca i32, align 4 - %pp = alloca i32, align 4 - %Anext = alloca i32, align 4 - %Alast = alloca i32, align 4 - %col = alloca i32, align 4 - %sum0 = alloca double, align 8 - %sum1 = alloca double, align 8 - %sum2 = alloca double, align 8 - %sum3 = alloca double, align 8 - %rst = alloca double, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - %call = call noalias ptr @malloc(i64 noundef 24) #5 - store ptr %call, ptr @disp, align 8 - store i32 0, ptr %disptplus, align 4 - br label %for.cond - -for.cond: ; preds = %for.inc10, %entry - %0 = load i32, ptr %disptplus, align 4 - %cmp = icmp slt i32 %0, 3 - br i1 %cmp, label %for.body, label %for.end12 - -for.body: ; preds = %for.cond - %call1 = call noalias ptr @malloc(i64 noundef 40000) #5 - %1 = load ptr, ptr @disp, align 8 - %2 = load i32, ptr %disptplus, align 4 - %idxprom = sext i32 %2 to i64 - %arrayidx = getelementptr inbounds ptr, ptr %1, i64 %idxprom - store ptr %call1, ptr %arrayidx, align 8 - store i32 0, ptr %i, align 4 - br label %for.cond2 - -for.cond2: ; preds = %for.inc, %for.body - %3 = load i32, ptr %i, align 4 - %cmp3 = icmp slt i32 %3, 5000 - br i1 %cmp3, label %for.body4, label %for.end - -for.body4: ; preds = %for.cond2 - %call5 = call noalias ptr @malloc(i64 noundef 32) #5 - %4 = load ptr, ptr @disp, align 8 - %5 = load i32, ptr %disptplus, align 4 - %idxprom6 = sext i32 %5 to i64 - %arrayidx7 = getelementptr inbounds ptr, ptr %4, i64 %idxprom6 - %6 = load ptr, ptr %arrayidx7, align 8 - %7 = load i32, ptr %i, align 4 - %idxprom8 = sext i32 %7 to i64 - %arrayidx9 = getelementptr inbounds ptr, ptr %6, i64 %idxprom8 - store ptr %call5, ptr %arrayidx9, align 8 - br label %for.inc - -for.inc: ; preds = %for.body4 - %8 = load i32, ptr %i, align 4 - %inc = add nsw i32 %8, 1 - store i32 %inc, ptr %i, align 4 - br label %for.cond2, !llvm.loop !6 - -for.end: ; preds = %for.cond2 - br label %for.inc10 - -for.inc10: ; preds = %for.end - %9 = load i32, ptr %disptplus, align 4 - %inc11 = add nsw i32 %9, 1 - store i32 %inc11, ptr %disptplus, align 4 - br label %for.cond, !llvm.loop !8 - -for.end12: ; preds = %for.cond - %10 = load ptr, ptr @disp, align 8 - %arrayidx13 = getelementptr inbounds ptr, ptr %10, i64 2 - %11 = load ptr, ptr %arrayidx13, align 8 - %arrayidx14 = getelementptr inbounds ptr, ptr %11, i64 4999 - %12 = load ptr, ptr %arrayidx14, align 8 - %cmp15 = icmp eq ptr %12, null - br i1 %cmp15, label %if.then, label %if.end - -if.then: ; preds = %for.end12 - %call16 = call i32 (ptr, ...) @printf(ptr noundef @.str.3) - store i32 0, ptr %retval, align 4 - br label %return - -if.end: ; preds = %for.end12 - %call17 = call noalias ptr @malloc(i64 noundef 24) #5 - store ptr %call17, ptr @K, align 8 - store i32 0, ptr %disptplus, align 4 - br label %for.cond18 - -for.cond18: ; preds = %for.inc35, %if.end - %13 = load i32, ptr %disptplus, align 4 - %cmp19 = icmp slt i32 %13, 3 - br i1 %cmp19, label %for.body20, label %for.end37 - -for.body20: ; preds = %for.cond18 - %call21 = call noalias ptr @malloc(i64 noundef 40000) #5 - %14 = load ptr, ptr @K, align 8 - %15 = load i32, ptr %disptplus, align 4 - %idxprom22 = sext i32 %15 to i64 - %arrayidx23 = getelementptr inbounds ptr, ptr %14, i64 %idxprom22 - store ptr %call21, ptr %arrayidx23, align 8 - store i32 0, ptr %i, align 4 - br label %for.cond24 - -for.cond24: ; preds = %for.inc32, %for.body20 - %16 = load i32, ptr %i, align 4 - %cmp25 = icmp slt i32 %16, 5000 - br i1 %cmp25, label %for.body26, label %for.end34 - -for.body26: ; preds = %for.cond24 - %call27 = call noalias ptr @malloc(i64 noundef 32) #5 - %17 = load ptr, ptr @K, align 8 - %18 = load i32, ptr %disptplus, align 4 - %idxprom28 = sext i32 %18 to i64 - %arrayidx29 = getelementptr inbounds ptr, ptr %17, i64 %idxprom28 - %19 = load ptr, ptr %arrayidx29, align 8 - %20 = load i32, ptr %i, align 4 - %idxprom30 = sext i32 %20 to i64 - %arrayidx31 = getelementptr inbounds ptr, ptr %19, i64 %idxprom30 - store ptr %call27, ptr %arrayidx31, align 8 - br label %for.inc32 - -for.inc32: ; preds = %for.body26 - %21 = load i32, ptr %i, align 4 - %inc33 = add nsw i32 %21, 1 - store i32 %inc33, ptr %i, align 4 - br label %for.cond24, !llvm.loop !9 - -for.end34: ; preds = %for.cond24 - br label %for.inc35 - -for.inc35: ; preds = %for.end34 - %22 = load i32, ptr %disptplus, align 4 - %inc36 = add nsw i32 %22, 1 - store i32 %inc36, ptr %disptplus, align 4 - br label %for.cond18, !llvm.loop !10 - -for.end37: ; preds = %for.cond18 - %23 = load ptr, ptr @K, align 8 - %arrayidx38 = getelementptr inbounds ptr, ptr %23, i64 2 - %24 = load ptr, ptr %arrayidx38, align 8 - %arrayidx39 = getelementptr inbounds ptr, ptr %24, i64 4999 - %25 = load ptr, ptr %arrayidx39, align 8 - %cmp40 = icmp eq ptr %25, null - br i1 %cmp40, label %if.then41, label %if.end43 - -if.then41: ; preds = %for.end37 - %call42 = call i32 (ptr, ...) @printf(ptr noundef @.str.3) - store i32 0, ptr %retval, align 4 - br label %return - -if.end43: ; preds = %for.end37 - %call44 = call noalias ptr @malloc(i64 noundef 40000) #5 - store ptr %call44, ptr @v, align 8 - store i32 0, ptr %i, align 4 - br label %for.cond45 - -for.cond45: ; preds = %for.inc51, %if.end43 - %26 = load i32, ptr %i, align 4 - %cmp46 = icmp slt i32 %26, 5000 - br i1 %cmp46, label %for.body47, label %for.end53 - -for.body47: ; preds = %for.cond45 - %call48 = call noalias ptr @malloc(i64 noundef 32) #5 - %27 = load ptr, ptr @v, align 8 - %28 = load i32, ptr %i, align 4 - %idxprom49 = sext i32 %28 to i64 - %arrayidx50 = getelementptr inbounds ptr, ptr %27, i64 %idxprom49 - store ptr %call48, ptr %arrayidx50, align 8 - br label %for.inc51 - -for.inc51: ; preds = %for.body47 - %29 = load i32, ptr %i, align 4 - %inc52 = add nsw i32 %29, 1 - store i32 %inc52, ptr %i, align 4 - br label %for.cond45, !llvm.loop !11 - -for.end53: ; preds = %for.cond45 - %30 = load ptr, ptr @v, align 8 - %arrayidx54 = getelementptr inbounds ptr, ptr %30, i64 4999 - %31 = load ptr, ptr %arrayidx54, align 8 - %cmp55 = icmp eq ptr %31, null - br i1 %cmp55, label %if.then56, label %if.end58 - -if.then56: ; preds = %for.end53 - %call57 = call i32 (ptr, ...) @printf(ptr noundef @.str.3) - store i32 0, ptr %retval, align 4 - br label %return - -if.end58: ; preds = %for.end53 - %call59 = call noalias ptr @malloc(i64 noundef 20004) #5 - store ptr %call59, ptr @ARCHmatrixindex, align 8 - %32 = load ptr, ptr @ARCHmatrixindex, align 8 - %cmp60 = icmp eq ptr %32, null - br i1 %cmp60, label %if.then61, label %if.end63 - -if.then61: ; preds = %if.end58 - %call62 = call i32 (ptr, ...) @printf(ptr noundef @.str.3) - store i32 0, ptr %retval, align 4 - br label %return - -if.end63: ; preds = %if.end58 - %call64 = call noalias ptr @malloc(i64 noundef 16) #5 - store ptr %call64, ptr @Acol, align 8 - %33 = load ptr, ptr @Acol, align 8 - %cmp65 = icmp eq ptr %33, null - br i1 %cmp65, label %if.then66, label %if.end68 - -if.then66: ; preds = %if.end63 - %call67 = call i32 (ptr, ...) @printf(ptr noundef @.str.3) - store i32 0, ptr %retval, align 4 - br label %return - -if.end68: ; preds = %if.end63 - store i32 0, ptr %disptplus, align 4 - br label %for.cond69 - -for.cond69: ; preds = %for.inc97, %if.end68 - %34 = load i32, ptr %disptplus, align 4 - %cmp70 = icmp slt i32 %34, 3 - br i1 %cmp70, label %for.body71, label %for.end99 - -for.body71: ; preds = %for.cond69 - store i32 0, ptr %i, align 4 - br label %for.cond72 - -for.cond72: ; preds = %for.inc94, %for.body71 - %35 = load i32, ptr %i, align 4 - %cmp73 = icmp slt i32 %35, 5000 - br i1 %cmp73, label %for.body74, label %for.end96 - -for.body74: ; preds = %for.cond72 - store i32 0, ptr %j, align 4 - br label %for.cond75 - -for.cond75: ; preds = %for.inc91, %for.body74 - %36 = load i32, ptr %j, align 4 - %cmp76 = icmp slt i32 %36, 4 - br i1 %cmp76, label %for.body77, label %for.end93 - -for.body77: ; preds = %for.cond75 - %37 = load ptr, ptr @disp, align 8 - %38 = load i32, ptr %disptplus, align 4 - %idxprom78 = sext i32 %38 to i64 - %arrayidx79 = getelementptr inbounds ptr, ptr %37, i64 %idxprom78 - %39 = load ptr, ptr %arrayidx79, align 8 - %40 = load i32, ptr %i, align 4 - %idxprom80 = sext i32 %40 to i64 - %arrayidx81 = getelementptr inbounds ptr, ptr %39, i64 %idxprom80 - %41 = load ptr, ptr %arrayidx81, align 8 - %42 = load i32, ptr %j, align 4 - %idxprom82 = sext i32 %42 to i64 - %arrayidx83 = getelementptr inbounds double, ptr %41, i64 %idxprom82 - store double 0.000000e+00, ptr %arrayidx83, align 8 - %43 = load i32, ptr %i, align 4 - %conv = sitofp i32 %43 to double - %44 = load i32, ptr %j, align 4 - %conv84 = sitofp i32 %44 to double - %45 = call double @llvm.fmuladd.f64(double 1.100000e+00, double %conv, double %conv84) - %46 = load ptr, ptr @K, align 8 - %47 = load i32, ptr %disptplus, align 4 - %idxprom85 = sext i32 %47 to i64 - %arrayidx86 = getelementptr inbounds ptr, ptr %46, i64 %idxprom85 - %48 = load ptr, ptr %arrayidx86, align 8 - %49 = load i32, ptr %i, align 4 - %idxprom87 = sext i32 %49 to i64 - %arrayidx88 = getelementptr inbounds ptr, ptr %48, i64 %idxprom87 - %50 = load ptr, ptr %arrayidx88, align 8 - %51 = load i32, ptr %j, align 4 - %idxprom89 = sext i32 %51 to i64 - %arrayidx90 = getelementptr inbounds double, ptr %50, i64 %idxprom89 - store double %45, ptr %arrayidx90, align 8 - br label %for.inc91 - -for.inc91: ; preds = %for.body77 - %52 = load i32, ptr %j, align 4 - %inc92 = add nsw i32 %52, 1 - store i32 %inc92, ptr %j, align 4 - br label %for.cond75, !llvm.loop !12 - -for.end93: ; preds = %for.cond75 - br label %for.inc94 - -for.inc94: ; preds = %for.end93 - %53 = load i32, ptr %i, align 4 - %inc95 = add nsw i32 %53, 1 - store i32 %inc95, ptr %i, align 4 - br label %for.cond72, !llvm.loop !13 - -for.end96: ; preds = %for.cond72 - br label %for.inc97 - -for.inc97: ; preds = %for.end96 - %54 = load i32, ptr %disptplus, align 4 - %inc98 = add nsw i32 %54, 1 - store i32 %inc98, ptr %disptplus, align 4 - br label %for.cond69, !llvm.loop !14 - -for.end99: ; preds = %for.cond69 - store i32 0, ptr %i, align 4 - br label %for.cond100 - -for.cond100: ; preds = %for.inc117, %for.end99 - %55 = load i32, ptr %i, align 4 - %cmp101 = icmp slt i32 %55, 5000 - br i1 %cmp101, label %for.body103, label %for.end119 - -for.body103: ; preds = %for.cond100 - store i32 0, ptr %j, align 4 - br label %for.cond104 - -for.cond104: ; preds = %for.inc114, %for.body103 - %56 = load i32, ptr %j, align 4 - %cmp105 = icmp slt i32 %56, 4 - br i1 %cmp105, label %for.body107, label %for.end116 - -for.body107: ; preds = %for.cond104 - %57 = load i32, ptr %i, align 4 - %conv108 = sitofp i32 %57 to double - %58 = load i32, ptr %j, align 4 - %conv109 = sitofp i32 %58 to double - %59 = call double @llvm.fmuladd.f64(double 1.100000e+00, double %conv108, double %conv109) - %60 = load ptr, ptr @v, align 8 - %61 = load i32, ptr %i, align 4 - %idxprom110 = sext i32 %61 to i64 - %arrayidx111 = getelementptr inbounds ptr, ptr %60, i64 %idxprom110 - %62 = load ptr, ptr %arrayidx111, align 8 - %63 = load i32, ptr %j, align 4 - %idxprom112 = sext i32 %63 to i64 - %arrayidx113 = getelementptr inbounds double, ptr %62, i64 %idxprom112 - store double %59, ptr %arrayidx113, align 8 - br label %for.inc114 - -for.inc114: ; preds = %for.body107 - %64 = load i32, ptr %j, align 4 - %inc115 = add nsw i32 %64, 1 - store i32 %inc115, ptr %j, align 4 - br label %for.cond104, !llvm.loop !15 - -for.end116: ; preds = %for.cond104 - br label %for.inc117 - -for.inc117: ; preds = %for.end116 - %65 = load i32, ptr %i, align 4 - %inc118 = add nsw i32 %65, 1 - store i32 %inc118, ptr %i, align 4 - br label %for.cond100, !llvm.loop !16 - -for.end119: ; preds = %for.cond100 - store i32 0, ptr %i, align 4 - br label %for.cond120 - -for.cond120: ; preds = %for.inc131, %for.end119 - %66 = load i32, ptr %i, align 4 - %cmp121 = icmp slt i32 %66, 5001 - br i1 %cmp121, label %for.body123, label %for.end133 - -for.body123: ; preds = %for.cond120 - %67 = load ptr, ptr @ARCHmatrixindex, align 8 - %68 = load i32, ptr %i, align 4 - %idxprom124 = sext i32 %68 to i64 - %arrayidx125 = getelementptr inbounds i32, ptr %67, i64 %idxprom124 - store i32 0, ptr %arrayidx125, align 4 - %69 = load ptr, ptr @ARCHmatrixindex, align 8 - %70 = load i32, ptr %i, align 4 - %add = add nsw i32 %70, 1 - %idxprom126 = sext i32 %add to i64 - %arrayidx127 = getelementptr inbounds i32, ptr %69, i64 %idxprom126 - store i32 1, ptr %arrayidx127, align 4 - %71 = load ptr, ptr @ARCHmatrixindex, align 8 - %72 = load i32, ptr %i, align 4 - %add128 = add nsw i32 %72, 2 - %idxprom129 = sext i32 %add128 to i64 - %arrayidx130 = getelementptr inbounds i32, ptr %71, i64 %idxprom129 - store i32 2, ptr %arrayidx130, align 4 - br label %for.inc131 - -for.inc131: ; preds = %for.body123 - %73 = load i32, ptr %i, align 4 - %add132 = add nsw i32 %73, 3 - store i32 %add132, ptr %i, align 4 - br label %for.cond120, !llvm.loop !17 - -for.end133: ; preds = %for.cond120 - store i32 0, ptr %i, align 4 - br label %for.cond134 - -for.cond134: ; preds = %for.inc140, %for.end133 - %74 = load i32, ptr %i, align 4 - %cmp135 = icmp slt i32 %74, 4 - br i1 %cmp135, label %for.body137, label %for.end142 - -for.body137: ; preds = %for.cond134 - %75 = load i32, ptr %i, align 4 - %mul = mul nsw i32 300, %75 - %76 = load ptr, ptr @Acol, align 8 - %77 = load i32, ptr %i, align 4 - %idxprom138 = sext i32 %77 to i64 - %arrayidx139 = getelementptr inbounds i32, ptr %76, i64 %idxprom138 - store i32 %mul, ptr %arrayidx139, align 4 - br label %for.inc140 - -for.inc140: ; preds = %for.body137 - %78 = load i32, ptr %i, align 4 - %inc141 = add nsw i32 %78, 1 - store i32 %inc141, ptr %i, align 4 - br label %for.cond134, !llvm.loop !18 - -for.end142: ; preds = %for.cond134 - store i32 0, ptr %pp, align 4 - br label %for.cond143 - -for.cond143: ; preds = %for.inc291, %for.end142 - %79 = load i32, ptr %pp, align 4 - %cmp144 = icmp slt i32 %79, 100000 - br i1 %cmp144, label %for.body146, label %for.end293 - -for.body146: ; preds = %for.cond143 - store i32 0, ptr %i, align 4 - br label %for.cond147 - -for.cond147: ; preds = %for.inc288, %for.body146 - %80 = load i32, ptr %i, align 4 - %cmp148 = icmp slt i32 %80, 5000 - br i1 %cmp148, label %for.body150, label %for.end290 - -for.body150: ; preds = %for.cond147 - %81 = load ptr, ptr @ARCHmatrixindex, align 8 - %82 = load i32, ptr %i, align 4 - %idxprom151 = sext i32 %82 to i64 - %arrayidx152 = getelementptr inbounds i32, ptr %81, i64 %idxprom151 - %83 = load i32, ptr %arrayidx152, align 4 - store i32 %83, ptr %Anext, align 4 - %84 = load ptr, ptr @ARCHmatrixindex, align 8 - %85 = load i32, ptr %i, align 4 - %add153 = add nsw i32 %85, 1 - %idxprom154 = sext i32 %add153 to i64 - %arrayidx155 = getelementptr inbounds i32, ptr %84, i64 %idxprom154 - %86 = load i32, ptr %arrayidx155, align 4 - store i32 %86, ptr %Alast, align 4 - br label %while.cond - -while.cond: ; preds = %while.body, %for.body150 - %87 = load i32, ptr %Anext, align 4 - %88 = load i32, ptr %Alast, align 4 - %cmp156 = icmp slt i32 %87, %88 - br i1 %cmp156, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %89 = load ptr, ptr @Acol, align 8 - %90 = load i32, ptr %Anext, align 4 - %idxprom158 = sext i32 %90 to i64 - %arrayidx159 = getelementptr inbounds i32, ptr %89, i64 %idxprom158 - %91 = load i32, ptr %arrayidx159, align 4 - store i32 %91, ptr %col, align 4 - %92 = load ptr, ptr @K, align 8 - %93 = load i32, ptr %Anext, align 4 - %idxprom160 = sext i32 %93 to i64 - %arrayidx161 = getelementptr inbounds ptr, ptr %92, i64 %idxprom160 - %94 = load ptr, ptr %arrayidx161, align 8 - %arrayidx162 = getelementptr inbounds ptr, ptr %94, i64 0 - %95 = load ptr, ptr %arrayidx162, align 8 - %arrayidx163 = getelementptr inbounds double, ptr %95, i64 0 - %96 = load double, ptr %arrayidx163, align 8 - %97 = load ptr, ptr @v, align 8 - %98 = load i32, ptr %i, align 4 - %idxprom164 = sext i32 %98 to i64 - %arrayidx165 = getelementptr inbounds ptr, ptr %97, i64 %idxprom164 - %99 = load ptr, ptr %arrayidx165, align 8 - %arrayidx166 = getelementptr inbounds double, ptr %99, i64 0 - %100 = load double, ptr %arrayidx166, align 8 - %101 = load ptr, ptr @K, align 8 - %102 = load i32, ptr %Anext, align 4 - %idxprom168 = sext i32 %102 to i64 - %arrayidx169 = getelementptr inbounds ptr, ptr %101, i64 %idxprom168 - %103 = load ptr, ptr %arrayidx169, align 8 - %arrayidx170 = getelementptr inbounds ptr, ptr %103, i64 1 - %104 = load ptr, ptr %arrayidx170, align 8 - %arrayidx171 = getelementptr inbounds double, ptr %104, i64 0 - %105 = load double, ptr %arrayidx171, align 8 - %106 = load ptr, ptr @v, align 8 - %107 = load i32, ptr %i, align 4 - %idxprom172 = sext i32 %107 to i64 - %arrayidx173 = getelementptr inbounds ptr, ptr %106, i64 %idxprom172 - %108 = load ptr, ptr %arrayidx173, align 8 - %arrayidx174 = getelementptr inbounds double, ptr %108, i64 1 - %109 = load double, ptr %arrayidx174, align 8 - %mul175 = fmul double %105, %109 - %110 = call double @llvm.fmuladd.f64(double %96, double %100, double %mul175) - %111 = load ptr, ptr @K, align 8 - %112 = load i32, ptr %Anext, align 4 - %idxprom176 = sext i32 %112 to i64 - %arrayidx177 = getelementptr inbounds ptr, ptr %111, i64 %idxprom176 - %113 = load ptr, ptr %arrayidx177, align 8 - %arrayidx178 = getelementptr inbounds ptr, ptr %113, i64 2 - %114 = load ptr, ptr %arrayidx178, align 8 - %arrayidx179 = getelementptr inbounds double, ptr %114, i64 0 - %115 = load double, ptr %arrayidx179, align 8 - %116 = load ptr, ptr @v, align 8 - %117 = load i32, ptr %i, align 4 - %idxprom180 = sext i32 %117 to i64 - %arrayidx181 = getelementptr inbounds ptr, ptr %116, i64 %idxprom180 - %118 = load ptr, ptr %arrayidx181, align 8 - %arrayidx182 = getelementptr inbounds double, ptr %118, i64 2 - %119 = load double, ptr %arrayidx182, align 8 - %120 = call double @llvm.fmuladd.f64(double %115, double %119, double %110) - %121 = load ptr, ptr @disp, align 8 - %arrayidx184 = getelementptr inbounds ptr, ptr %121, i64 1 - %122 = load ptr, ptr %arrayidx184, align 8 - %123 = load i32, ptr %col, align 4 - %idxprom185 = sext i32 %123 to i64 - %arrayidx186 = getelementptr inbounds ptr, ptr %122, i64 %idxprom185 - %124 = load ptr, ptr %arrayidx186, align 8 - %arrayidx187 = getelementptr inbounds double, ptr %124, i64 0 - %125 = load double, ptr %arrayidx187, align 8 - %add188 = fadd double %125, %120 - store double %add188, ptr %arrayidx187, align 8 - %126 = load ptr, ptr @K, align 8 - %127 = load i32, ptr %Anext, align 4 - %idxprom189 = sext i32 %127 to i64 - %arrayidx190 = getelementptr inbounds ptr, ptr %126, i64 %idxprom189 - %128 = load ptr, ptr %arrayidx190, align 8 - %arrayidx191 = getelementptr inbounds ptr, ptr %128, i64 0 - %129 = load ptr, ptr %arrayidx191, align 8 - %arrayidx192 = getelementptr inbounds double, ptr %129, i64 1 - %130 = load double, ptr %arrayidx192, align 8 - %131 = load ptr, ptr @v, align 8 - %132 = load i32, ptr %i, align 4 - %idxprom193 = sext i32 %132 to i64 - %arrayidx194 = getelementptr inbounds ptr, ptr %131, i64 %idxprom193 - %133 = load ptr, ptr %arrayidx194, align 8 - %arrayidx195 = getelementptr inbounds double, ptr %133, i64 0 - %134 = load double, ptr %arrayidx195, align 8 - %135 = load ptr, ptr @K, align 8 - %136 = load i32, ptr %Anext, align 4 - %idxprom197 = sext i32 %136 to i64 - %arrayidx198 = getelementptr inbounds ptr, ptr %135, i64 %idxprom197 - %137 = load ptr, ptr %arrayidx198, align 8 - %arrayidx199 = getelementptr inbounds ptr, ptr %137, i64 1 - %138 = load ptr, ptr %arrayidx199, align 8 - %arrayidx200 = getelementptr inbounds double, ptr %138, i64 1 - %139 = load double, ptr %arrayidx200, align 8 - %140 = load ptr, ptr @v, align 8 - %141 = load i32, ptr %i, align 4 - %idxprom201 = sext i32 %141 to i64 - %arrayidx202 = getelementptr inbounds ptr, ptr %140, i64 %idxprom201 - %142 = load ptr, ptr %arrayidx202, align 8 - %arrayidx203 = getelementptr inbounds double, ptr %142, i64 1 - %143 = load double, ptr %arrayidx203, align 8 - %mul204 = fmul double %139, %143 - %144 = call double @llvm.fmuladd.f64(double %130, double %134, double %mul204) - %145 = load ptr, ptr @K, align 8 - %146 = load i32, ptr %Anext, align 4 - %idxprom205 = sext i32 %146 to i64 - %arrayidx206 = getelementptr inbounds ptr, ptr %145, i64 %idxprom205 - %147 = load ptr, ptr %arrayidx206, align 8 - %arrayidx207 = getelementptr inbounds ptr, ptr %147, i64 2 - %148 = load ptr, ptr %arrayidx207, align 8 - %arrayidx208 = getelementptr inbounds double, ptr %148, i64 1 - %149 = load double, ptr %arrayidx208, align 8 - %150 = load ptr, ptr @v, align 8 - %151 = load i32, ptr %i, align 4 - %idxprom209 = sext i32 %151 to i64 - %arrayidx210 = getelementptr inbounds ptr, ptr %150, i64 %idxprom209 - %152 = load ptr, ptr %arrayidx210, align 8 - %arrayidx211 = getelementptr inbounds double, ptr %152, i64 2 - %153 = load double, ptr %arrayidx211, align 8 - %154 = call double @llvm.fmuladd.f64(double %149, double %153, double %144) - %155 = load ptr, ptr @disp, align 8 - %arrayidx213 = getelementptr inbounds ptr, ptr %155, i64 1 - %156 = load ptr, ptr %arrayidx213, align 8 - %157 = load i32, ptr %col, align 4 - %idxprom214 = sext i32 %157 to i64 - %arrayidx215 = getelementptr inbounds ptr, ptr %156, i64 %idxprom214 - %158 = load ptr, ptr %arrayidx215, align 8 - %arrayidx216 = getelementptr inbounds double, ptr %158, i64 1 - %159 = load double, ptr %arrayidx216, align 8 - %add217 = fadd double %159, %154 - store double %add217, ptr %arrayidx216, align 8 - %160 = load ptr, ptr @K, align 8 - %161 = load i32, ptr %Anext, align 4 - %idxprom218 = sext i32 %161 to i64 - %arrayidx219 = getelementptr inbounds ptr, ptr %160, i64 %idxprom218 - %162 = load ptr, ptr %arrayidx219, align 8 - %arrayidx220 = getelementptr inbounds ptr, ptr %162, i64 0 - %163 = load ptr, ptr %arrayidx220, align 8 - %arrayidx221 = getelementptr inbounds double, ptr %163, i64 2 - %164 = load double, ptr %arrayidx221, align 8 - %165 = load ptr, ptr @v, align 8 - %166 = load i32, ptr %i, align 4 - %idxprom222 = sext i32 %166 to i64 - %arrayidx223 = getelementptr inbounds ptr, ptr %165, i64 %idxprom222 - %167 = load ptr, ptr %arrayidx223, align 8 - %arrayidx224 = getelementptr inbounds double, ptr %167, i64 0 - %168 = load double, ptr %arrayidx224, align 8 - %169 = load ptr, ptr @K, align 8 - %170 = load i32, ptr %Anext, align 4 - %idxprom226 = sext i32 %170 to i64 - %arrayidx227 = getelementptr inbounds ptr, ptr %169, i64 %idxprom226 - %171 = load ptr, ptr %arrayidx227, align 8 - %arrayidx228 = getelementptr inbounds ptr, ptr %171, i64 1 - %172 = load ptr, ptr %arrayidx228, align 8 - %arrayidx229 = getelementptr inbounds double, ptr %172, i64 2 - %173 = load double, ptr %arrayidx229, align 8 - %174 = load ptr, ptr @v, align 8 - %175 = load i32, ptr %i, align 4 - %idxprom230 = sext i32 %175 to i64 - %arrayidx231 = getelementptr inbounds ptr, ptr %174, i64 %idxprom230 - %176 = load ptr, ptr %arrayidx231, align 8 - %arrayidx232 = getelementptr inbounds double, ptr %176, i64 1 - %177 = load double, ptr %arrayidx232, align 8 - %mul233 = fmul double %173, %177 - %178 = call double @llvm.fmuladd.f64(double %164, double %168, double %mul233) - %179 = load ptr, ptr @K, align 8 - %180 = load i32, ptr %Anext, align 4 - %idxprom234 = sext i32 %180 to i64 - %arrayidx235 = getelementptr inbounds ptr, ptr %179, i64 %idxprom234 - %181 = load ptr, ptr %arrayidx235, align 8 - %arrayidx236 = getelementptr inbounds ptr, ptr %181, i64 2 - %182 = load ptr, ptr %arrayidx236, align 8 - %arrayidx237 = getelementptr inbounds double, ptr %182, i64 2 - %183 = load double, ptr %arrayidx237, align 8 - %184 = load ptr, ptr @v, align 8 - %185 = load i32, ptr %i, align 4 - %idxprom238 = sext i32 %185 to i64 - %arrayidx239 = getelementptr inbounds ptr, ptr %184, i64 %idxprom238 - %186 = load ptr, ptr %arrayidx239, align 8 - %arrayidx240 = getelementptr inbounds double, ptr %186, i64 2 - %187 = load double, ptr %arrayidx240, align 8 - %188 = call double @llvm.fmuladd.f64(double %183, double %187, double %178) - %189 = load ptr, ptr @disp, align 8 - %arrayidx242 = getelementptr inbounds ptr, ptr %189, i64 1 - %190 = load ptr, ptr %arrayidx242, align 8 - %191 = load i32, ptr %col, align 4 - %idxprom243 = sext i32 %191 to i64 - %arrayidx244 = getelementptr inbounds ptr, ptr %190, i64 %idxprom243 - %192 = load ptr, ptr %arrayidx244, align 8 - %arrayidx245 = getelementptr inbounds double, ptr %192, i64 2 - %193 = load double, ptr %arrayidx245, align 8 - %add246 = fadd double %193, %188 - store double %add246, ptr %arrayidx245, align 8 - %194 = load ptr, ptr @K, align 8 - %195 = load i32, ptr %Anext, align 4 - %idxprom247 = sext i32 %195 to i64 - %arrayidx248 = getelementptr inbounds ptr, ptr %194, i64 %idxprom247 - %196 = load ptr, ptr %arrayidx248, align 8 - %arrayidx249 = getelementptr inbounds ptr, ptr %196, i64 0 - %197 = load ptr, ptr %arrayidx249, align 8 - %arrayidx250 = getelementptr inbounds double, ptr %197, i64 3 - %198 = load double, ptr %arrayidx250, align 8 - %199 = load ptr, ptr @v, align 8 - %200 = load i32, ptr %i, align 4 - %idxprom251 = sext i32 %200 to i64 - %arrayidx252 = getelementptr inbounds ptr, ptr %199, i64 %idxprom251 - %201 = load ptr, ptr %arrayidx252, align 8 - %arrayidx253 = getelementptr inbounds double, ptr %201, i64 0 - %202 = load double, ptr %arrayidx253, align 8 - %203 = load ptr, ptr @K, align 8 - %204 = load i32, ptr %Anext, align 4 - %idxprom255 = sext i32 %204 to i64 - %arrayidx256 = getelementptr inbounds ptr, ptr %203, i64 %idxprom255 - %205 = load ptr, ptr %arrayidx256, align 8 - %arrayidx257 = getelementptr inbounds ptr, ptr %205, i64 1 - %206 = load ptr, ptr %arrayidx257, align 8 - %arrayidx258 = getelementptr inbounds double, ptr %206, i64 3 - %207 = load double, ptr %arrayidx258, align 8 - %208 = load ptr, ptr @v, align 8 - %209 = load i32, ptr %i, align 4 - %idxprom259 = sext i32 %209 to i64 - %arrayidx260 = getelementptr inbounds ptr, ptr %208, i64 %idxprom259 - %210 = load ptr, ptr %arrayidx260, align 8 - %arrayidx261 = getelementptr inbounds double, ptr %210, i64 1 - %211 = load double, ptr %arrayidx261, align 8 - %mul262 = fmul double %207, %211 - %212 = call double @llvm.fmuladd.f64(double %198, double %202, double %mul262) - %213 = load ptr, ptr @K, align 8 - %214 = load i32, ptr %Anext, align 4 - %idxprom263 = sext i32 %214 to i64 - %arrayidx264 = getelementptr inbounds ptr, ptr %213, i64 %idxprom263 - %215 = load ptr, ptr %arrayidx264, align 8 - %arrayidx265 = getelementptr inbounds ptr, ptr %215, i64 2 - %216 = load ptr, ptr %arrayidx265, align 8 - %arrayidx266 = getelementptr inbounds double, ptr %216, i64 3 - %217 = load double, ptr %arrayidx266, align 8 - %218 = load ptr, ptr @v, align 8 - %219 = load i32, ptr %i, align 4 - %idxprom267 = sext i32 %219 to i64 - %arrayidx268 = getelementptr inbounds ptr, ptr %218, i64 %idxprom267 - %220 = load ptr, ptr %arrayidx268, align 8 - %arrayidx269 = getelementptr inbounds double, ptr %220, i64 2 - %221 = load double, ptr %arrayidx269, align 8 - %222 = call double @llvm.fmuladd.f64(double %217, double %221, double %212) - %223 = load ptr, ptr @disp, align 8 - %arrayidx271 = getelementptr inbounds ptr, ptr %223, i64 1 - %224 = load ptr, ptr %arrayidx271, align 8 - %225 = load i32, ptr %col, align 4 - %idxprom272 = sext i32 %225 to i64 - %arrayidx273 = getelementptr inbounds ptr, ptr %224, i64 %idxprom272 - %226 = load ptr, ptr %arrayidx273, align 8 - %arrayidx274 = getelementptr inbounds double, ptr %226, i64 3 - %227 = load double, ptr %arrayidx274, align 8 - %add275 = fadd double %227, %222 - store double %add275, ptr %arrayidx274, align 8 - %228 = load ptr, ptr @disp, align 8 - %229 = load ptr, ptr @K, align 8 - call void @NOALIAS(ptr noundef %228, ptr noundef %229) - %230 = load ptr, ptr @disp, align 8 - %231 = load ptr, ptr @v, align 8 - call void @NOALIAS(ptr noundef %230, ptr noundef %231) - %232 = load ptr, ptr @disp, align 8 - %arrayidx276 = getelementptr inbounds ptr, ptr %232, i64 1 - %233 = load ptr, ptr %arrayidx276, align 8 - %234 = load ptr, ptr @K, align 8 - %235 = load i32, ptr %Anext, align 4 - %idxprom277 = sext i32 %235 to i64 - %arrayidx278 = getelementptr inbounds ptr, ptr %234, i64 %idxprom277 - %236 = load ptr, ptr %arrayidx278, align 8 - call void @NOALIAS(ptr noundef %233, ptr noundef %236) - %237 = load ptr, ptr @disp, align 8 - %arrayidx279 = getelementptr inbounds ptr, ptr %237, i64 1 - %238 = load ptr, ptr %arrayidx279, align 8 - %239 = load ptr, ptr @v, align 8 - %240 = load i32, ptr %i, align 4 - %idxprom280 = sext i32 %240 to i64 - %arrayidx281 = getelementptr inbounds ptr, ptr %239, i64 %idxprom280 - %241 = load ptr, ptr %arrayidx281, align 8 - call void @NOALIAS(ptr noundef %238, ptr noundef %241) - %242 = load ptr, ptr @disp, align 8 - %arrayidx282 = getelementptr inbounds ptr, ptr %242, i64 1 - %243 = load ptr, ptr %arrayidx282, align 8 - %244 = load i32, ptr %col, align 4 - %idxprom283 = sext i32 %244 to i64 - %arrayidx284 = getelementptr inbounds ptr, ptr %243, i64 %idxprom283 - %245 = load ptr, ptr %arrayidx284, align 8 - %246 = load ptr, ptr @v, align 8 - %247 = load i32, ptr %i, align 4 - %idxprom285 = sext i32 %247 to i64 - %arrayidx286 = getelementptr inbounds ptr, ptr %246, i64 %idxprom285 - %248 = load ptr, ptr %arrayidx286, align 8 - call void @NOALIAS(ptr noundef %245, ptr noundef %248) - %249 = load i32, ptr %Anext, align 4 - %inc287 = add nsw i32 %249, 1 - store i32 %inc287, ptr %Anext, align 4 - br label %while.cond, !llvm.loop !19 - -while.end: ; preds = %while.cond - br label %for.inc288 - -for.inc288: ; preds = %while.end - %250 = load i32, ptr %i, align 4 - %inc289 = add nsw i32 %250, 1 - store i32 %inc289, ptr %i, align 4 - br label %for.cond147, !llvm.loop !20 - -for.end290: ; preds = %for.cond147 - br label %for.inc291 - -for.inc291: ; preds = %for.end290 - %251 = load i32, ptr %pp, align 4 - %inc292 = add nsw i32 %251, 1 - store i32 %inc292, ptr %pp, align 4 - br label %for.cond143, !llvm.loop !21 - -for.end293: ; preds = %for.cond143 - %252 = load ptr, ptr @disp, align 8 - %arrayidx294 = getelementptr inbounds ptr, ptr %252, i64 1 - %253 = load ptr, ptr %arrayidx294, align 8 - %arrayidx295 = getelementptr inbounds ptr, ptr %253, i64 4999 - %254 = load ptr, ptr %arrayidx295, align 8 - %arrayidx296 = getelementptr inbounds double, ptr %254, i64 2 - %255 = load double, ptr %arrayidx296, align 8 - store double %255, ptr %rst, align 8 - store i32 0, ptr %disptplus, align 4 - br label %for.cond297 - -for.cond297: ; preds = %for.inc314, %for.end293 - %256 = load i32, ptr %disptplus, align 4 - %cmp298 = icmp slt i32 %256, 3 - br i1 %cmp298, label %for.body300, label %for.end316 - -for.body300: ; preds = %for.cond297 - store i32 0, ptr %i, align 4 - br label %for.cond301 - -for.cond301: ; preds = %for.inc309, %for.body300 - %257 = load i32, ptr %i, align 4 - %cmp302 = icmp slt i32 %257, 5000 - br i1 %cmp302, label %for.body304, label %for.end311 - -for.body304: ; preds = %for.cond301 - %258 = load ptr, ptr @disp, align 8 - %259 = load i32, ptr %disptplus, align 4 - %idxprom305 = sext i32 %259 to i64 - %arrayidx306 = getelementptr inbounds ptr, ptr %258, i64 %idxprom305 - %260 = load ptr, ptr %arrayidx306, align 8 - %261 = load i32, ptr %i, align 4 - %idxprom307 = sext i32 %261 to i64 - %arrayidx308 = getelementptr inbounds ptr, ptr %260, i64 %idxprom307 - %262 = load ptr, ptr %arrayidx308, align 8 - call void @free(ptr noundef %262) #6 - br label %for.inc309 - -for.inc309: ; preds = %for.body304 - %263 = load i32, ptr %i, align 4 - %inc310 = add nsw i32 %263, 1 - store i32 %inc310, ptr %i, align 4 - br label %for.cond301, !llvm.loop !22 - -for.end311: ; preds = %for.cond301 - %264 = load ptr, ptr @disp, align 8 - %265 = load i32, ptr %disptplus, align 4 - %idxprom312 = sext i32 %265 to i64 - %arrayidx313 = getelementptr inbounds ptr, ptr %264, i64 %idxprom312 - %266 = load ptr, ptr %arrayidx313, align 8 - call void @free(ptr noundef %266) #6 - br label %for.inc314 - -for.inc314: ; preds = %for.end311 - %267 = load i32, ptr %disptplus, align 4 - %inc315 = add nsw i32 %267, 1 - store i32 %inc315, ptr %disptplus, align 4 - br label %for.cond297, !llvm.loop !23 - -for.end316: ; preds = %for.cond297 - %268 = load ptr, ptr @disp, align 8 - call void @free(ptr noundef %268) #6 - store i32 0, ptr %disptplus, align 4 - br label %for.cond317 - -for.cond317: ; preds = %for.inc334, %for.end316 - %269 = load i32, ptr %disptplus, align 4 - %cmp318 = icmp slt i32 %269, 3 - br i1 %cmp318, label %for.body320, label %for.end336 - -for.body320: ; preds = %for.cond317 - store i32 0, ptr %i, align 4 - br label %for.cond321 - -for.cond321: ; preds = %for.inc329, %for.body320 - %270 = load i32, ptr %i, align 4 - %cmp322 = icmp slt i32 %270, 5000 - br i1 %cmp322, label %for.body324, label %for.end331 - -for.body324: ; preds = %for.cond321 - %271 = load ptr, ptr @K, align 8 - %272 = load i32, ptr %disptplus, align 4 - %idxprom325 = sext i32 %272 to i64 - %arrayidx326 = getelementptr inbounds ptr, ptr %271, i64 %idxprom325 - %273 = load ptr, ptr %arrayidx326, align 8 - %274 = load i32, ptr %i, align 4 - %idxprom327 = sext i32 %274 to i64 - %arrayidx328 = getelementptr inbounds ptr, ptr %273, i64 %idxprom327 - %275 = load ptr, ptr %arrayidx328, align 8 - call void @free(ptr noundef %275) #6 - br label %for.inc329 - -for.inc329: ; preds = %for.body324 - %276 = load i32, ptr %i, align 4 - %inc330 = add nsw i32 %276, 1 - store i32 %inc330, ptr %i, align 4 - br label %for.cond321, !llvm.loop !24 - -for.end331: ; preds = %for.cond321 - %277 = load ptr, ptr @K, align 8 - %278 = load i32, ptr %disptplus, align 4 - %idxprom332 = sext i32 %278 to i64 - %arrayidx333 = getelementptr inbounds ptr, ptr %277, i64 %idxprom332 - %279 = load ptr, ptr %arrayidx333, align 8 - call void @free(ptr noundef %279) #6 - br label %for.inc334 - -for.inc334: ; preds = %for.end331 - %280 = load i32, ptr %disptplus, align 4 - %inc335 = add nsw i32 %280, 1 - store i32 %inc335, ptr %disptplus, align 4 - br label %for.cond317, !llvm.loop !25 - -for.end336: ; preds = %for.cond317 - %281 = load ptr, ptr @K, align 8 - call void @free(ptr noundef %281) #6 - store i32 0, ptr %i, align 4 - br label %for.cond337 - -for.cond337: ; preds = %for.inc343, %for.end336 - %282 = load i32, ptr %i, align 4 - %cmp338 = icmp slt i32 %282, 5000 - br i1 %cmp338, label %for.body340, label %for.end345 - -for.body340: ; preds = %for.cond337 - %283 = load ptr, ptr @v, align 8 - %284 = load i32, ptr %i, align 4 - %idxprom341 = sext i32 %284 to i64 - %arrayidx342 = getelementptr inbounds ptr, ptr %283, i64 %idxprom341 - %285 = load ptr, ptr %arrayidx342, align 8 - call void @free(ptr noundef %285) #6 - br label %for.inc343 - -for.inc343: ; preds = %for.body340 - %286 = load i32, ptr %i, align 4 - %inc344 = add nsw i32 %286, 1 - store i32 %inc344, ptr %i, align 4 - br label %for.cond337, !llvm.loop !26 - -for.end345: ; preds = %for.cond337 - %287 = load ptr, ptr @v, align 8 - call void @free(ptr noundef %287) #6 - %288 = load ptr, ptr @ARCHmatrixindex, align 8 - call void @free(ptr noundef %288) #6 - %289 = load ptr, ptr @Acol, align 8 - call void @free(ptr noundef %289) #6 - %290 = load double, ptr %rst, align 8 - %cmp346 = fcmp ogt double %290, 5.500000e+00 - br i1 %cmp346, label %if.then348, label %if.else - -if.then348: ; preds = %for.end345 - store i32 0, ptr %retval, align 4 - br label %return - -if.else: ; preds = %for.end345 - store i32 1, ptr %retval, align 4 - br label %return - -return: ; preds = %if.else, %if.then348, %if.then66, %if.then61, %if.then56, %if.then41, %if.then - %291 = load i32, ptr %retval, align 4 - ret i32 %291 -} - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare double @llvm.fmuladd.f64(double, double, double) #3 - -; Function Attrs: nounwind -declare void @free(ptr noundef) #4 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind allocsize(0) } -attributes #6 = { nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} -!9 = distinct !{!9, !7} -!10 = distinct !{!10, !7} -!11 = distinct !{!11, !7} -!12 = distinct !{!12, !7} -!13 = distinct !{!13, !7} -!14 = distinct !{!14, !7} -!15 = distinct !{!15, !7} -!16 = distinct !{!16, !7} -!17 = distinct !{!17, !7} -!18 = distinct !{!18, !7} -!19 = distinct !{!19, !7} -!20 = distinct !{!20, !7} -!21 = distinct !{!21, !7} -!22 = distinct !{!22, !7} -!23 = distinct !{!23, !7} -!24 = distinct !{!24, !7} -!25 = distinct !{!25, !7} -!26 = distinct !{!26, !7} diff --git a/test_cases_bc/basic_c_tests/spec-gap.c.bc b/test_cases_bc/basic_c_tests/spec-gap.c.bc deleted file mode 100644 index 19fc8504..00000000 --- a/test_cases_bc/basic_c_tests/spec-gap.c.bc +++ /dev/null @@ -1,303 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/spec-gap.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/spec-gap.c" -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-unknown-linux-gnu" - -%struct.TypHeader = type { ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@HdFree = dso_local global ptr null, align 8 -@FirstBag = dso_local global ptr null, align 8 -@FreeHandle = dso_local global ptr null, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @SyGetmem(i64 noundef %size) #0 { -entry: - %retval = alloca ptr, align 8 - %size.addr = alloca i64, align 8 - store i64 %size, ptr %size.addr, align 8 - %0 = load ptr, ptr %retval, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @IntComm() #0 { -entry: - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @NewBag() #0 { -entry: - %needed = alloca i64, align 8 - %d = alloca ptr, align 8 - %s = alloca ptr, align 8 - %e = alloca ptr, align 8 - %h = alloca ptr, align 8 - %0 = load ptr, ptr @HdFree, align 8 - %ptr = getelementptr inbounds %struct.TypHeader, ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %ptr, align 8 - %2 = load i64, ptr %needed, align 8 - %div = udiv i64 %2, 8 - %add.ptr = getelementptr inbounds ptr, ptr %1, i64 %div - %add.ptr1 = getelementptr inbounds ptr, ptr %add.ptr, i64 -1 - store ptr %add.ptr1, ptr %d, align 8 - %3 = load ptr, ptr @HdFree, align 8 - %ptr2 = getelementptr inbounds %struct.TypHeader, ptr %3, i32 0, i32 0 - %4 = load ptr, ptr %ptr2, align 8 - %add.ptr3 = getelementptr inbounds ptr, ptr %4, i64 -1 - store ptr %add.ptr3, ptr %s, align 8 - %5 = load ptr, ptr @FirstBag, align 8 - %add.ptr4 = getelementptr inbounds ptr, ptr %5, i64 -1 - store ptr %add.ptr4, ptr %e, align 8 - br label %while.cond - -while.cond: ; preds = %while.body, %entry - %6 = load ptr, ptr %e, align 8 - %7 = load ptr, ptr %s, align 8 - %cmp = icmp ule ptr %6, %7 - br i1 %cmp, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %8 = load ptr, ptr %s, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %8, i32 -1 - store ptr %incdec.ptr, ptr %s, align 8 - %9 = load ptr, ptr %8, align 8 - %10 = load ptr, ptr %d, align 8 - %incdec.ptr5 = getelementptr inbounds ptr, ptr %10, i32 -1 - store ptr %incdec.ptr5, ptr %d, align 8 - store ptr %9, ptr %10, align 8 - br label %while.cond, !llvm.loop !6 - -while.end: ; preds = %while.cond - %11 = load ptr, ptr %s, align 8 - %12 = load ptr, ptr %11, align 8 - call void @MAYALIAS(ptr noundef %12, ptr noundef @IntComm) - %13 = load ptr, ptr @HdFree, align 8 - store ptr %13, ptr %h, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %while.end - %14 = load ptr, ptr %h, align 8 - %15 = load ptr, ptr @FirstBag, align 8 - %add.ptr6 = getelementptr inbounds ptr, ptr %15, i64 -1 - %cmp7 = icmp ult ptr %14, %add.ptr6 - br i1 %cmp7, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %16 = load i64, ptr %needed, align 8 - %div8 = udiv i64 %16, 8 - %17 = load ptr, ptr %h, align 8 - %ptr9 = getelementptr inbounds %struct.TypHeader, ptr %17, i32 0, i32 0 - %18 = load ptr, ptr %ptr9, align 8 - %add.ptr10 = getelementptr inbounds ptr, ptr %18, i64 %div8 - store ptr %add.ptr10, ptr %ptr9, align 8 - br label %for.inc - -for.inc: ; preds = %for.body - %19 = load ptr, ptr %h, align 8 - %incdec.ptr11 = getelementptr inbounds %struct.TypHeader, ptr %19, i32 1 - store ptr %incdec.ptr11, ptr %h, align 8 - br label %for.cond, !llvm.loop !8 - -for.end: ; preds = %for.cond - %20 = load ptr, ptr @FreeHandle, align 8 - %21 = load ptr, ptr %h, align 8 - %ptr12 = getelementptr inbounds %struct.TypHeader, ptr %21, i32 0, i32 0 - store ptr %20, ptr %ptr12, align 8 - %22 = load ptr, ptr %h, align 8 - store ptr %22, ptr @FreeHandle, align 8 - %23 = load ptr, ptr @FreeHandle, align 8 - ret ptr %23 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @InstIntFunc(ptr noundef %func) #0 { -entry: - %func.addr = alloca ptr, align 8 - %hdDef = alloca ptr, align 8 - store ptr %func, ptr %func.addr, align 8 - %call = call ptr @NewBag() - store ptr %call, ptr %hdDef, align 8 - %0 = load ptr, ptr %func.addr, align 8 - %1 = load ptr, ptr %hdDef, align 8 - %ptr = getelementptr inbounds %struct.TypHeader, ptr %1, i32 0, i32 0 - %2 = load ptr, ptr %ptr, align 8 - store ptr %0, ptr %2, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @InitGasman() #0 { -entry: - %SyMemory = alloca i64, align 8 - %0 = load i64, ptr %SyMemory, align 8 - %call = call ptr @SyGetmem(i64 noundef %0) - store ptr %call, ptr @HdFree, align 8 - %1 = load ptr, ptr @FreeHandle, align 8 - %ptr = getelementptr inbounds %struct.TypHeader, ptr %1, i32 0, i32 0 - %2 = load ptr, ptr %ptr, align 8 - store ptr %2, ptr @FreeHandle, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @InitGasman() - call void @InstIntFunc(ptr noundef @IntComm) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} diff --git a/test_cases_bc/basic_c_tests/spec-mesa.c.bc b/test_cases_bc/basic_c_tests/spec-mesa.c.bc deleted file mode 100644 index 976a840f..00000000 --- a/test_cases_bc/basic_c_tests/spec-mesa.c.bc +++ /dev/null @@ -1,380 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/spec-mesa.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/spec-mesa.c" -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-unknown-linux-gnu" - -%struct.api_table = type { ptr, ptr, ptr } -%struct.context = type { %struct.api_table, %struct.api_table } -%struct.mesa_context = type { ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@CC = dso_local global ptr null, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @begin(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %0 = load ptr, ptr %p.addr, align 8 - %1 = load ptr, ptr %q.addr, align 8 - call void @NOALIAS(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @end(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %0 = load ptr, ptr %p.addr, align 8 - %1 = load ptr, ptr %q.addr, align 8 - call void @MAYALIAS(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @render(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %0 = load ptr, ptr %p.addr, align 8 - %1 = load ptr, ptr %q.addr, align 8 - call void @MAYALIAS(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @init_exec_pointers(ptr noundef %table) #0 { -entry: - %table.addr = alloca ptr, align 8 - store ptr %table, ptr %table.addr, align 8 - %0 = load ptr, ptr %table.addr, align 8 - %Begin = getelementptr inbounds %struct.api_table, ptr %0, i32 0, i32 0 - store ptr @begin, ptr %Begin, align 8 - %1 = load ptr, ptr %table.addr, align 8 - %End = getelementptr inbounds %struct.api_table, ptr %1, i32 0, i32 1 - store ptr @end, ptr %End, align 8 - %2 = load ptr, ptr %table.addr, align 8 - %Render = getelementptr inbounds %struct.api_table, ptr %2, i32 0, i32 2 - store ptr @render, ptr %Render, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @init_api_function(ptr noundef %ctx) #0 { -entry: - %ctx.addr = alloca ptr, align 8 - store ptr %ctx, ptr %ctx.addr, align 8 - %0 = load ptr, ptr %ctx.addr, align 8 - %Exec = getelementptr inbounds %struct.context, ptr %0, i32 0, i32 1 - call void @init_exec_pointers(ptr noundef %Exec) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @create_context() #0 { -entry: - %ctx = alloca ptr, align 8 - %call = call noalias ptr @malloc(i64 noundef 48) #5 - store ptr %call, ptr %ctx, align 8 - %0 = load ptr, ptr %ctx, align 8 - call void @init_api_function(ptr noundef %0) - %1 = load ptr, ptr %ctx, align 8 - %API = getelementptr inbounds %struct.context, ptr %1, i32 0, i32 0 - %2 = load ptr, ptr %ctx, align 8 - %Exec = getelementptr inbounds %struct.context, ptr %2, i32 0, i32 1 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %API, ptr align 8 %Exec, i64 24, i1 false) - %3 = load ptr, ptr %ctx, align 8 - ret ptr %3 -} - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @change_context(ptr noundef %ctx) #0 { -entry: - %ctx.addr = alloca ptr, align 8 - store ptr %ctx, ptr %ctx.addr, align 8 - %0 = load ptr, ptr %ctx.addr, align 8 - store ptr %0, ptr @CC, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @make_current(ptr noundef %ctx) #0 { -entry: - %ctx.addr = alloca ptr, align 8 - store ptr %ctx, ptr %ctx.addr, align 8 - %0 = load ptr, ptr %ctx.addr, align 8 - %ctx1 = getelementptr inbounds %struct.mesa_context, ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %ctx1, align 8 - call void @change_context(ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @draw(ptr noundef %p, ptr noundef %q, ptr noundef %r) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - %r.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - store ptr %r, ptr %r.addr, align 8 - %0 = load ptr, ptr @CC, align 8 - %API = getelementptr inbounds %struct.context, ptr %0, i32 0, i32 0 - %Begin = getelementptr inbounds %struct.api_table, ptr %API, i32 0, i32 0 - %1 = load ptr, ptr %Begin, align 8 - %2 = load ptr, ptr %p.addr, align 8 - %3 = load ptr, ptr %q.addr, align 8 - call void %1(ptr noundef %2, ptr noundef %3) - %4 = load ptr, ptr %p.addr, align 8 - %tobool = icmp ne ptr %4, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %5 = load ptr, ptr %r.addr, align 8 - store ptr %5, ptr %q.addr, align 8 - br label %if.end - -if.end: ; preds = %if.then, %entry - %6 = load ptr, ptr @CC, align 8 - %API1 = getelementptr inbounds %struct.context, ptr %6, i32 0, i32 0 - %Render = getelementptr inbounds %struct.api_table, ptr %API1, i32 0, i32 2 - %7 = load ptr, ptr %Render, align 8 - %tobool2 = icmp ne ptr %7, null - br i1 %tobool2, label %if.then3, label %if.else - -if.then3: ; preds = %if.end - %8 = load ptr, ptr @CC, align 8 - %API4 = getelementptr inbounds %struct.context, ptr %8, i32 0, i32 0 - %Render5 = getelementptr inbounds %struct.api_table, ptr %API4, i32 0, i32 2 - %9 = load ptr, ptr %Render5, align 8 - %10 = load ptr, ptr %q.addr, align 8 - %11 = load ptr, ptr %r.addr, align 8 - call void %9(ptr noundef %10, ptr noundef %11) - %12 = load ptr, ptr @CC, align 8 - %API6 = getelementptr inbounds %struct.context, ptr %12, i32 0, i32 0 - %End = getelementptr inbounds %struct.api_table, ptr %API6, i32 0, i32 1 - %13 = load ptr, ptr %End, align 8 - %14 = load ptr, ptr %p.addr, align 8 - %15 = load ptr, ptr %r.addr, align 8 - call void %13(ptr noundef %14, ptr noundef %15) - br label %if.end9 - -if.else: ; preds = %if.end - %16 = load ptr, ptr @CC, align 8 - %API7 = getelementptr inbounds %struct.context, ptr %16, i32 0, i32 0 - %End8 = getelementptr inbounds %struct.api_table, ptr %API7, i32 0, i32 1 - %17 = load ptr, ptr %End8, align 8 - %18 = load ptr, ptr %q.addr, align 8 - %19 = load ptr, ptr %p.addr, align 8 - call void %17(ptr noundef %18, ptr noundef %19) - br label %if.end9 - -if.end9: ; preds = %if.else, %if.then3 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @delete_context(ptr noundef %ctx) #0 { -entry: - %ctx.addr = alloca ptr, align 8 - store ptr %ctx, ptr %ctx.addr, align 8 - %0 = load ptr, ptr %ctx.addr, align 8 - call void @free(ptr noundef %0) #6 - ret void -} - -; Function Attrs: nounwind -declare void @free(ptr noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - %z = alloca i32, align 4 - %mesa = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - %call = call noalias ptr @malloc(i64 noundef 8) #5 - store ptr %call, ptr %mesa, align 8 - %call1 = call ptr @create_context() - %0 = load ptr, ptr %mesa, align 8 - %ctx = getelementptr inbounds %struct.mesa_context, ptr %0, i32 0, i32 0 - store ptr %call1, ptr %ctx, align 8 - %1 = load ptr, ptr %mesa, align 8 - call void @make_current(ptr noundef %1) - call void @draw(ptr noundef %x, ptr noundef %y, ptr noundef %z) - %2 = load ptr, ptr %mesa, align 8 - %ctx2 = getelementptr inbounds %struct.mesa_context, ptr %2, i32 0, i32 0 - %3 = load ptr, ptr %ctx2, align 8 - call void @delete_context(ptr noundef %3) - %4 = load ptr, ptr %mesa, align 8 - call void @free(ptr noundef %4) #6 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind allocsize(0) } -attributes #6 = { nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/spec-parser.c.bc b/test_cases_bc/basic_c_tests/spec-parser.c.bc deleted file mode 100644 index cf546afe..00000000 --- a/test_cases_bc/basic_c_tests/spec-parser.c.bc +++ /dev/null @@ -1,271 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/spec-parser.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/spec-parser.c" -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-unknown-linux-gnu" - -%struct.Word_struct = type { ptr, ptr } -%struct.clause_struct = type { ptr } -%struct.X_node_struct = type { ptr, ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@sentence = dso_local global [250 x %struct.Word_struct] zeroinitializer, align 16 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @xalloc(i32 noundef %size) #0 { -entry: - %size.addr = alloca i32, align 4 - store i32 %size, ptr %size.addr, align 4 - %call = call noalias ptr @malloc(i64 noundef 1000) #3 - ret ptr %call -} - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @build_clause() #0 { -entry: - %c = alloca ptr, align 8 - %c1 = alloca ptr, align 8 - %c2 = alloca ptr, align 8 - store ptr null, ptr %c, align 8 - %call = call ptr @xalloc(i32 noundef 8) - store ptr %call, ptr %c1, align 8 - br label %while.cond - -while.cond: ; preds = %while.body, %entry - %0 = load ptr, ptr %c1, align 8 - %cmp = icmp ne ptr %0, null - br i1 %cmp, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %1 = load ptr, ptr %c1, align 8 - %next = getelementptr inbounds %struct.clause_struct, ptr %1, i32 0, i32 0 - %2 = load ptr, ptr %next, align 8 - store ptr %2, ptr %c2, align 8 - %3 = load ptr, ptr %c, align 8 - %4 = load ptr, ptr %c1, align 8 - %next1 = getelementptr inbounds %struct.clause_struct, ptr %4, i32 0, i32 0 - store ptr %3, ptr %next1, align 8 - %5 = load ptr, ptr %c1, align 8 - store ptr %5, ptr %c, align 8 - %6 = load ptr, ptr %c2, align 8 - store ptr %6, ptr %c1, align 8 - br label %while.cond, !llvm.loop !6 - -while.end: ; preds = %while.cond - %7 = load ptr, ptr @sentence, align 16 - %8 = load ptr, ptr %c1, align 8 - call void @NOALIAS(ptr noundef %7, ptr noundef %8) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @special_string(i32 noundef %i) #0 { -entry: - %i.addr = alloca i32, align 4 - %e = alloca ptr, align 8 - store i32 %i, ptr %i.addr, align 4 - %call = call ptr @xalloc(i32 noundef 16) - %0 = load i32, ptr %i.addr, align 4 - %idxprom = sext i32 %0 to i64 - %arrayidx = getelementptr inbounds [250 x %struct.Word_struct], ptr @sentence, i64 0, i64 %idxprom - %x = getelementptr inbounds %struct.Word_struct, ptr %arrayidx, i32 0, i32 1 - store ptr %call, ptr %x, align 8 - %1 = load i32, ptr %i.addr, align 4 - %idxprom1 = sext i32 %1 to i64 - %arrayidx2 = getelementptr inbounds [250 x %struct.Word_struct], ptr @sentence, i64 0, i64 %idxprom1 - %x3 = getelementptr inbounds %struct.Word_struct, ptr %arrayidx2, i32 0, i32 1 - %2 = load ptr, ptr %x3, align 8 - store ptr %2, ptr %e, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %3 = load ptr, ptr %e, align 8 - %cmp = icmp ne ptr %3, null - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %4 = load i32, ptr %i.addr, align 4 - %idxprom4 = sext i32 %4 to i64 - %arrayidx5 = getelementptr inbounds [250 x %struct.Word_struct], ptr @sentence, i64 0, i64 %idxprom4 - %string = getelementptr inbounds %struct.Word_struct, ptr %arrayidx5, i32 0, i32 0 - %5 = load ptr, ptr %string, align 16 - %6 = load ptr, ptr %e, align 8 - %string6 = getelementptr inbounds %struct.X_node_struct, ptr %6, i32 0, i32 0 - store ptr %5, ptr %string6, align 8 - br label %for.inc - -for.inc: ; preds = %for.body - %7 = load ptr, ptr %e, align 8 - %next = getelementptr inbounds %struct.X_node_struct, ptr %7, i32 0, i32 1 - %8 = load ptr, ptr %next, align 8 - store ptr %8, ptr %e, align 8 - br label %for.cond, !llvm.loop !8 - -for.end: ; preds = %for.cond - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @build_clause() - call void @special_string(i32 noundef 10) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} diff --git a/test_cases_bc/basic_c_tests/spec-vortex.c.bc b/test_cases_bc/basic_c_tests/spec-vortex.c.bc deleted file mode 100644 index 36ca4289..00000000 --- a/test_cases_bc/basic_c_tests/spec-vortex.c.bc +++ /dev/null @@ -1,299 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/spec-vortex.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/spec-vortex.c" -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-unknown-linux-gnu" - -%struct.Ory = type { ptr } -%struct.Rectangle = type { ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@Theory = dso_local global ptr null, align 8 -@PartLib01 = dso_local global ptr null, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @Rectangle_draw(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @Void_ExtendCore(ptr noundef %p) #0 { -entry: - %retval = alloca ptr, align 8 - %p.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - %0 = load ptr, ptr %retval, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CoreMoreCore(ptr noundef %Region) #0 { -entry: - %Region.addr = alloca ptr, align 8 - %AllocCore1 = alloca i64, align 8 - store ptr %Region, ptr %Region.addr, align 8 - store i64 0, ptr %AllocCore1, align 8 - %call = call ptr @Void_ExtendCore(ptr noundef %AllocCore1) - %0 = load ptr, ptr %Region.addr, align 8 - store ptr %call, ptr %0, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MemNewOry() #0 { -entry: - %ChunkAddrPtr = alloca ptr, align 8 - %ChunkBlk = alloca ptr, align 8 - store ptr null, ptr %ChunkAddrPtr, align 8 - %call = call noalias ptr @calloc(i64 noundef 1, i64 noundef 8) #3 - store ptr %call, ptr %ChunkBlk, align 8 - call void @CoreMoreCore(ptr noundef @Theory) - %0 = load ptr, ptr %ChunkBlk, align 8 - %1 = load ptr, ptr @Theory, align 8 - %ChunkAddr = getelementptr inbounds %struct.Ory, ptr %1, i32 0, i32 0 - store ptr %0, ptr %ChunkAddr, align 8 - %cmp = icmp ne ptr %0, null - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %2 = load ptr, ptr @Theory, align 8 - %ChunkAddr1 = getelementptr inbounds %struct.Ory, ptr %2, i32 0, i32 0 - %3 = load ptr, ptr %ChunkAddr1, align 8 - store ptr %3, ptr %ChunkAddrPtr, align 8 - %4 = load ptr, ptr %ChunkAddrPtr, align 8 - %5 = load ptr, ptr %ChunkAddrPtr, align 8 - store ptr %4, ptr %5, align 8 - br label %if.end - -if.end: ; preds = %if.then, %entry - ret void -} - -; Function Attrs: nounwind allocsize(0,1) -declare noalias ptr @calloc(i64 noundef, i64 noundef) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MemGetAddr(i32 noundef %Chunk, i32 noundef %index, ptr noundef %Addr) #0 { -entry: - %Chunk.addr = alloca i32, align 4 - %index.addr = alloca i32, align 4 - %Addr.addr = alloca ptr, align 8 - store i32 %Chunk, ptr %Chunk.addr, align 4 - store i32 %index, ptr %index.addr, align 4 - store ptr %Addr, ptr %Addr.addr, align 8 - %0 = load ptr, ptr @Theory, align 8 - %ChunkAddr = getelementptr inbounds %struct.Ory, ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %ChunkAddr, align 8 - %2 = load i32, ptr %Chunk.addr, align 4 - %idxprom = zext i32 %2 to i64 - %arrayidx = getelementptr inbounds ptr, ptr %1, i64 %idxprom - %3 = load ptr, ptr %arrayidx, align 8 - %4 = load i32, ptr %index.addr, align 4 - %idx.ext = zext i32 %4 to i64 - %add.ptr = getelementptr inbounds ptr, ptr %3, i64 %idx.ext - %5 = load ptr, ptr %add.ptr, align 8 - %6 = load ptr, ptr %Addr.addr, align 8 - store ptr %5, ptr %6, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @Object_GetImage(ptr noundef %This) #0 { -entry: - %This.addr = alloca ptr, align 8 - %chunk = alloca i32, align 4 - %index = alloca i32, align 4 - store ptr %This, ptr %This.addr, align 8 - %0 = load i32, ptr %chunk, align 4 - %1 = load i32, ptr %index, align 4 - %2 = load ptr, ptr %This.addr, align 8 - call void @MemGetAddr(i32 noundef %0, i32 noundef %1, ptr noundef %2) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @Rectangle_new0() #0 { -entry: - %Image = alloca ptr, align 8 - store ptr null, ptr %Image, align 8 - call void @Object_GetImage(ptr noundef %Image) - %0 = load ptr, ptr %Image, align 8 - %draw = getelementptr inbounds %struct.Rectangle, ptr %0, i32 0, i32 0 - store ptr @Rectangle_draw, ptr %draw, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PartLib_Create(ptr noundef %PrimalObj) #0 { -entry: - %PrimalObj.addr = alloca ptr, align 8 - store ptr %PrimalObj, ptr %PrimalObj.addr, align 8 - %0 = load ptr, ptr %PrimalObj.addr, align 8 - call void @Object_GetImage(ptr noundef %0) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - call void @PartLib_Create(ptr noundef @PartLib01) - %0 = load ptr, ptr @PartLib01, align 8 - call void @NOALIAS(ptr noundef %0, ptr noundef @Rectangle_draw) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind allocsize(0,1) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind allocsize(0,1) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/struct-array.c.bc b/test_cases_bc/basic_c_tests/struct-array.c.bc deleted file mode 100644 index ebbdf0b1..00000000 --- a/test_cases_bc/basic_c_tests/struct-array.c.bc +++ /dev/null @@ -1,193 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/struct-array.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/struct-array.c" -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-unknown-linux-gnu" - -%struct.ArrayStruct = type { i32, i8, [100 x i32], i32 } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %p = alloca ptr, align 8 - %s = alloca %struct.ArrayStruct, align 4 - %q = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store ptr %s, ptr %p, align 8 - %f3 = getelementptr inbounds %struct.ArrayStruct, ptr %s, i32 0, i32 2 - %arrayidx = getelementptr inbounds [100 x i32], ptr %f3, i64 0, i64 40 - store ptr %arrayidx, ptr %q, align 8 - %0 = load ptr, ptr %p, align 8 - %f31 = getelementptr inbounds %struct.ArrayStruct, ptr %0, i32 0, i32 2 - %arrayidx2 = getelementptr inbounds [100 x i32], ptr %f31, i64 0, i64 10 - %1 = load ptr, ptr %q, align 8 - call void @MAYALIAS(ptr noundef %arrayidx2, ptr noundef %1) - %2 = load ptr, ptr %p, align 8 - %f33 = getelementptr inbounds %struct.ArrayStruct, ptr %2, i32 0, i32 2 - %arrayidx4 = getelementptr inbounds [100 x i32], ptr %f33, i64 0, i64 20 - %3 = load ptr, ptr %p, align 8 - %f35 = getelementptr inbounds %struct.ArrayStruct, ptr %3, i32 0, i32 2 - %arrayidx6 = getelementptr inbounds [100 x i32], ptr %f35, i64 0, i64 30 - call void @MAYALIAS(ptr noundef %arrayidx4, ptr noundef %arrayidx6) - %f37 = getelementptr inbounds %struct.ArrayStruct, ptr %s, i32 0, i32 2 - %arrayidx8 = getelementptr inbounds [100 x i32], ptr %f37, i64 0, i64 0 - %f39 = getelementptr inbounds %struct.ArrayStruct, ptr %s, i32 0, i32 2 - %arrayidx10 = getelementptr inbounds [100 x i32], ptr %f39, i64 0, i64 99 - call void @MAYALIAS(ptr noundef %arrayidx8, ptr noundef %arrayidx10) - %4 = load ptr, ptr %p, align 8 - %f311 = getelementptr inbounds %struct.ArrayStruct, ptr %4, i32 0, i32 2 - %arrayidx12 = getelementptr inbounds [100 x i32], ptr %f311, i64 0, i64 0 - %f4 = getelementptr inbounds %struct.ArrayStruct, ptr %s, i32 0, i32 3 - call void @NOALIAS(ptr noundef %arrayidx12, ptr noundef %f4) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/struct-assignment-direct.c.bc b/test_cases_bc/basic_c_tests/struct-assignment-direct.c.bc deleted file mode 100644 index 9c6906a1..00000000 --- a/test_cases_bc/basic_c_tests/struct-assignment-direct.c.bc +++ /dev/null @@ -1,184 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/struct-assignment-direct.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/struct-assignment-direct.c" -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-unknown-linux-gnu" - -%struct.s = type { ptr, i32 } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %s1 = alloca %struct.s, align 8 - %s2 = alloca %struct.s, align 8 - %p1 = alloca ptr, align 8 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %a = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 0 - store ptr %x, ptr %a, align 8 - %0 = load i32, ptr %y, align 4 - %b = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 1 - store i32 %0, ptr %b, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %s2, ptr align 8 %s1, i64 16, i1 false) - %a1 = getelementptr inbounds %struct.s, ptr %s2, i32 0, i32 0 - %1 = load ptr, ptr %a1, align 8 - %a2 = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 0 - %2 = load ptr, ptr %a2, align 8 - call void @MUSTALIAS(ptr noundef %1, ptr noundef %2) - ret i32 0 -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/struct-assignment-indirect.c.bc b/test_cases_bc/basic_c_tests/struct-assignment-indirect.c.bc deleted file mode 100644 index a59d92b1..00000000 --- a/test_cases_bc/basic_c_tests/struct-assignment-indirect.c.bc +++ /dev/null @@ -1,191 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/struct-assignment-indirect.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/struct-assignment-indirect.c" -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-unknown-linux-gnu" - -%struct.s = type { ptr, ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %s1 = alloca %struct.s, align 8 - %s2 = alloca %struct.s, align 8 - %p1 = alloca ptr, align 8 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %a = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 0 - store ptr %x, ptr %a, align 8 - %b = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 1 - store ptr %y, ptr %b, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %s2, ptr align 8 %s1, i64 16, i1 false) - store ptr %s1, ptr %p1, align 8 - %0 = load ptr, ptr %p1, align 8 - %a1 = getelementptr inbounds %struct.s, ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %a1, align 8 - %a2 = getelementptr inbounds %struct.s, ptr %s2, i32 0, i32 0 - %2 = load ptr, ptr %a2, align 8 - call void @MUSTALIAS(ptr noundef %1, ptr noundef %2) - %3 = load ptr, ptr %p1, align 8 - %b3 = getelementptr inbounds %struct.s, ptr %3, i32 0, i32 1 - %4 = load ptr, ptr %b3, align 8 - %b4 = getelementptr inbounds %struct.s, ptr %s2, i32 0, i32 1 - %5 = load ptr, ptr %b4, align 8 - call void @MUSTALIAS(ptr noundef %4, ptr noundef %5) - ret i32 0 -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/struct-assignment-nested.c.bc b/test_cases_bc/basic_c_tests/struct-assignment-nested.c.bc deleted file mode 100644 index 994e09df..00000000 --- a/test_cases_bc/basic_c_tests/struct-assignment-nested.c.bc +++ /dev/null @@ -1,203 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/struct-assignment-nested.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/struct-assignment-nested.c" -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-unknown-linux-gnu" - -%struct.ArrayStruct = type { i8, %struct.MidArrayStruct, ptr } -%struct.MidArrayStruct = type { [10 x i8], [5 x %struct.InnerArrayStruct] } -%struct.InnerArrayStruct = type { [10 x ptr], [20 x ptr], i8 } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %p = alloca ptr, align 8 - %s1 = alloca %struct.ArrayStruct, align 8 - %s2 = alloca %struct.ArrayStruct, align 8 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %out4 = getelementptr inbounds %struct.ArrayStruct, ptr %s1, i32 0, i32 2 - store ptr %x, ptr %out4, align 8 - store ptr %s1, ptr %p, align 8 - %0 = load ptr, ptr %p, align 8 - %out3 = getelementptr inbounds %struct.ArrayStruct, ptr %0, i32 0, i32 1 - %mid2 = getelementptr inbounds %struct.MidArrayStruct, ptr %out3, i32 0, i32 1 - %arrayidx = getelementptr inbounds [5 x %struct.InnerArrayStruct], ptr %mid2, i64 0, i64 3 - %in1 = getelementptr inbounds %struct.InnerArrayStruct, ptr %arrayidx, i32 0, i32 0 - %arrayidx1 = getelementptr inbounds [10 x ptr], ptr %in1, i64 0, i64 3 - store ptr %y, ptr %arrayidx1, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %s2, ptr align 8 %s1, i64 1272, i1 false) - %out42 = getelementptr inbounds %struct.ArrayStruct, ptr %s2, i32 0, i32 2 - %1 = load ptr, ptr %out42, align 8 - call void @MUSTALIAS(ptr noundef %1, ptr noundef %x) - %out33 = getelementptr inbounds %struct.ArrayStruct, ptr %s2, i32 0, i32 1 - %mid24 = getelementptr inbounds %struct.MidArrayStruct, ptr %out33, i32 0, i32 1 - %arrayidx5 = getelementptr inbounds [5 x %struct.InnerArrayStruct], ptr %mid24, i64 0, i64 1 - %in16 = getelementptr inbounds %struct.InnerArrayStruct, ptr %arrayidx5, i32 0, i32 0 - %arrayidx7 = getelementptr inbounds [10 x ptr], ptr %in16, i64 0, i64 1 - %2 = load ptr, ptr %arrayidx7, align 8 - call void @MAYALIAS(ptr noundef %2, ptr noundef %y) - %out38 = getelementptr inbounds %struct.ArrayStruct, ptr %s2, i32 0, i32 1 - %mid29 = getelementptr inbounds %struct.MidArrayStruct, ptr %out38, i32 0, i32 1 - %arrayidx10 = getelementptr inbounds [5 x %struct.InnerArrayStruct], ptr %mid29, i64 0, i64 3 - %in111 = getelementptr inbounds %struct.InnerArrayStruct, ptr %arrayidx10, i32 0, i32 0 - %arrayidx12 = getelementptr inbounds [10 x ptr], ptr %in111, i64 0, i64 20 - %3 = load ptr, ptr %arrayidx12, align 8 - call void @MAYALIAS(ptr noundef %3, ptr noundef %y) - ret i32 0 -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/struct-field-multi-dereference.c.bc b/test_cases_bc/basic_c_tests/struct-field-multi-dereference.c.bc deleted file mode 100644 index ab241ef0..00000000 --- a/test_cases_bc/basic_c_tests/struct-field-multi-dereference.c.bc +++ /dev/null @@ -1,184 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/struct-field-multi-dereference.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/struct-field-multi-dereference.c" -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-unknown-linux-gnu" - -%struct.MyStruct = type { ptr, ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %p = alloca ptr, align 8 - %q = alloca ptr, align 8 - %ms1 = alloca %struct.MyStruct, align 8 - %ms2 = alloca %struct.MyStruct, align 8 - %x = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - store ptr %ms1, ptr %p, align 8 - store ptr %ms1, ptr %q, align 8 - %f2 = getelementptr inbounds %struct.MyStruct, ptr %ms1, i32 0, i32 1 - store ptr %ms2, ptr %f2, align 8 - %0 = load ptr, ptr %p, align 8 - %f21 = getelementptr inbounds %struct.MyStruct, ptr %0, i32 0, i32 1 - %1 = load ptr, ptr %f21, align 8 - %f1 = getelementptr inbounds %struct.MyStruct, ptr %1, i32 0, i32 0 - store ptr %x, ptr %f1, align 8 - %2 = load ptr, ptr %q, align 8 - %f22 = getelementptr inbounds %struct.MyStruct, ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %f22, align 8 - %f13 = getelementptr inbounds %struct.MyStruct, ptr %3, i32 0, i32 0 - %4 = load ptr, ptr %f13, align 8 - call void @MAYALIAS(ptr noundef %4, ptr noundef %x) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/struct-idx-inbound.c.bc b/test_cases_bc/basic_c_tests/struct-idx-inbound.c.bc deleted file mode 100644 index 1f0aa5c5..00000000 --- a/test_cases_bc/basic_c_tests/struct-idx-inbound.c.bc +++ /dev/null @@ -1,47 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/struct-idx-inbound.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/struct-idx-inbound.c" -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-unknown-linux-gnu" - -%struct.S = type { i32, i32, i32 } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %s = alloca %struct.S, align 4 - %a = alloca ptr, align 8 - %b = alloca ptr, align 8 - %c = alloca ptr, align 8 - %d = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store ptr %s, ptr %a, align 8 - %0 = load ptr, ptr %a, align 8 - %f1 = getelementptr inbounds %struct.S, ptr %0, i32 0, i32 1 - store ptr %f1, ptr %b, align 8 - %1 = load ptr, ptr %b, align 8 - %f11 = getelementptr inbounds %struct.S, ptr %1, i32 0, i32 1 - store ptr %f11, ptr %c, align 8 - %2 = load ptr, ptr %a, align 8 - %f12 = getelementptr inbounds %struct.S, ptr %2, i32 0, i32 1 - store ptr %f12, ptr %d, align 8 - %3 = load ptr, ptr %c, align 8 - %4 = load ptr, ptr %d, align 8 - call void @NOALIAS(ptr noundef %3, ptr noundef %4) - ret i32 0 -} - -declare void @NOALIAS(ptr noundef, ptr noundef) #1 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/struct-idx-overflow.c.bc b/test_cases_bc/basic_c_tests/struct-idx-overflow.c.bc deleted file mode 100644 index 41c8f464..00000000 --- a/test_cases_bc/basic_c_tests/struct-idx-overflow.c.bc +++ /dev/null @@ -1,47 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/struct-idx-overflow.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/struct-idx-overflow.c" -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-unknown-linux-gnu" - -%struct.S = type { i32, i32, i32 } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %s = alloca %struct.S, align 4 - %a = alloca ptr, align 8 - %b = alloca ptr, align 8 - %c = alloca ptr, align 8 - %d = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store ptr %s, ptr %a, align 8 - %0 = load ptr, ptr %a, align 8 - %f2 = getelementptr inbounds %struct.S, ptr %0, i32 0, i32 2 - store ptr %f2, ptr %b, align 8 - %1 = load ptr, ptr %b, align 8 - %f21 = getelementptr inbounds %struct.S, ptr %1, i32 0, i32 2 - store ptr %f21, ptr %c, align 8 - %2 = load ptr, ptr %a, align 8 - %f1 = getelementptr inbounds %struct.S, ptr %2, i32 0, i32 1 - store ptr %f1, ptr %d, align 8 - %3 = load ptr, ptr %c, align 8 - %4 = load ptr, ptr %d, align 8 - call void @NOALIAS(ptr noundef %3, ptr noundef %4) - ret i32 0 -} - -declare void @NOALIAS(ptr noundef, ptr noundef) #1 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/struct-incompab-typecast-nested.c.bc b/test_cases_bc/basic_c_tests/struct-incompab-typecast-nested.c.bc deleted file mode 100644 index b7dba022..00000000 --- a/test_cases_bc/basic_c_tests/struct-incompab-typecast-nested.c.bc +++ /dev/null @@ -1,211 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/struct-incompab-typecast-nested.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/struct-incompab-typecast-nested.c" -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-unknown-linux-gnu" - -%struct.SrcStruct = type { [10 x ptr], [10 x i8], [5 x %struct.InnerStruct], i8 } -%struct.InnerStruct = type { i8, ptr } -%struct.DstStruct = type { [10 x ptr], [20 x i8], [5 x %struct.InnerStruct] } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %pdst = alloca ptr, align 8 - %psrc = alloca ptr, align 8 - %s = alloca %struct.SrcStruct, align 8 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - %z = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - store ptr %s, ptr %psrc, align 8 - %0 = load ptr, ptr %psrc, align 8 - %f1 = getelementptr inbounds %struct.SrcStruct, ptr %0, i32 0, i32 0 - %arrayidx = getelementptr inbounds [10 x ptr], ptr %f1, i64 0, i64 3 - store ptr %x, ptr %arrayidx, align 8 - %1 = load ptr, ptr %psrc, align 8 - %f3 = getelementptr inbounds %struct.SrcStruct, ptr %1, i32 0, i32 2 - %arrayidx1 = getelementptr inbounds [5 x %struct.InnerStruct], ptr %f3, i64 0, i64 2 - %in2 = getelementptr inbounds %struct.InnerStruct, ptr %arrayidx1, i32 0, i32 1 - store ptr %y, ptr %in2, align 8 - %2 = load ptr, ptr %psrc, align 8 - store ptr %2, ptr %pdst, align 8 - %3 = load ptr, ptr %pdst, align 8 - %f12 = getelementptr inbounds %struct.DstStruct, ptr %3, i32 0, i32 0 - %arrayidx3 = getelementptr inbounds [10 x ptr], ptr %f12, i64 0, i64 9 - %4 = load ptr, ptr %arrayidx3, align 8 - call void @MAYALIAS(ptr noundef %4, ptr noundef %x) - %5 = load ptr, ptr %pdst, align 8 - %f34 = getelementptr inbounds %struct.DstStruct, ptr %5, i32 0, i32 2 - %arrayidx5 = getelementptr inbounds [5 x %struct.InnerStruct], ptr %f34, i64 0, i64 3 - %in26 = getelementptr inbounds %struct.InnerStruct, ptr %arrayidx5, i32 0, i32 1 - %6 = load ptr, ptr %in26, align 8 - call void @MAYALIAS(ptr noundef %6, ptr noundef %y) - %7 = load ptr, ptr %psrc, align 8 - %f17 = getelementptr inbounds %struct.SrcStruct, ptr %7, i32 0, i32 0 - %arrayidx8 = getelementptr inbounds [10 x ptr], ptr %f17, i64 0, i64 2 - %8 = load ptr, ptr %arrayidx8, align 8 - call void @NOALIAS(ptr noundef %8, ptr noundef %z) - %9 = load ptr, ptr %pdst, align 8 - %f39 = getelementptr inbounds %struct.DstStruct, ptr %9, i32 0, i32 2 - %arrayidx10 = getelementptr inbounds [5 x %struct.InnerStruct], ptr %f39, i64 0, i64 1 - %in211 = getelementptr inbounds %struct.InnerStruct, ptr %arrayidx10, i32 0, i32 1 - store ptr %z, ptr %in211, align 8 - %10 = load ptr, ptr %psrc, align 8 - %f312 = getelementptr inbounds %struct.SrcStruct, ptr %10, i32 0, i32 2 - %arrayidx13 = getelementptr inbounds [5 x %struct.InnerStruct], ptr %f312, i64 0, i64 1 - %in214 = getelementptr inbounds %struct.InnerStruct, ptr %arrayidx13, i32 0, i32 1 - %11 = load ptr, ptr %in214, align 8 - call void @MAYALIAS(ptr noundef %11, ptr noundef %z) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/struct-incompab-typecast.c.bc b/test_cases_bc/basic_c_tests/struct-incompab-typecast.c.bc deleted file mode 100644 index 218a49b3..00000000 --- a/test_cases_bc/basic_c_tests/struct-incompab-typecast.c.bc +++ /dev/null @@ -1,195 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/struct-incompab-typecast.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/struct-incompab-typecast.c" -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-unknown-linux-gnu" - -%struct.SrcStruct = type { ptr, ptr, i8 } -%struct.DstStruct = type { i8, ptr, ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %pdst = alloca ptr, align 8 - %psrc = alloca ptr, align 8 - %s = alloca %struct.SrcStruct, align 8 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - %z = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - store ptr %s, ptr %psrc, align 8 - %0 = load ptr, ptr %psrc, align 8 - %f1 = getelementptr inbounds %struct.SrcStruct, ptr %0, i32 0, i32 0 - store ptr %x, ptr %f1, align 8 - %1 = load ptr, ptr %psrc, align 8 - %f2 = getelementptr inbounds %struct.SrcStruct, ptr %1, i32 0, i32 1 - store ptr %y, ptr %f2, align 8 - %2 = load ptr, ptr %psrc, align 8 - store ptr %2, ptr %pdst, align 8 - %3 = load ptr, ptr %pdst, align 8 - %f21 = getelementptr inbounds %struct.DstStruct, ptr %3, i32 0, i32 1 - %4 = load ptr, ptr %f21, align 8 - call void @EXPECTEDFAIL_MAYALIAS(ptr noundef %4, ptr noundef %x) - %5 = load ptr, ptr %pdst, align 8 - %f22 = getelementptr inbounds %struct.DstStruct, ptr %5, i32 0, i32 1 - %6 = load ptr, ptr %f22, align 8 - call void @MAYALIAS(ptr noundef %6, ptr noundef %y) - %7 = load ptr, ptr %pdst, align 8 - %f3 = getelementptr inbounds %struct.DstStruct, ptr %7, i32 0, i32 2 - store ptr %z, ptr %f3, align 8 - %8 = load ptr, ptr %psrc, align 8 - %f23 = getelementptr inbounds %struct.SrcStruct, ptr %8, i32 0, i32 1 - %9 = load ptr, ptr %f23, align 8 - call void @EXPECTEDFAIL_MAYALIAS(ptr noundef %9, ptr noundef %z) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/struct-instance-return.c.bc b/test_cases_bc/basic_c_tests/struct-instance-return.c.bc deleted file mode 100644 index 59b6e9c1..00000000 --- a/test_cases_bc/basic_c_tests/struct-instance-return.c.bc +++ /dev/null @@ -1,196 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/struct-instance-return.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/struct-instance-return.c" -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-unknown-linux-gnu" - -%struct.MyStruct = type { ptr, i8 } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@x = dso_local global i32 0, align 4 -@y = dso_local global i32 0, align 4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local { ptr, i8 } @foo() #0 { -entry: - %retval = alloca %struct.MyStruct, align 8 - %f1 = getelementptr inbounds %struct.MyStruct, ptr %retval, i32 0, i32 0 - store ptr @x, ptr %f1, align 8 - %0 = load { ptr, i8 }, ptr %retval, align 8 - ret { ptr, i8 } %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %m = alloca %struct.MyStruct, align 8 - %tmp = alloca %struct.MyStruct, align 8 - store i32 0, ptr %retval, align 4 - %call = call { ptr, i8 } @foo() - %0 = getelementptr inbounds { ptr, i8 }, ptr %tmp, i32 0, i32 0 - %1 = extractvalue { ptr, i8 } %call, 0 - store ptr %1, ptr %0, align 8 - %2 = getelementptr inbounds { ptr, i8 }, ptr %tmp, i32 0, i32 1 - %3 = extractvalue { ptr, i8 } %call, 1 - store i8 %3, ptr %2, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %m, ptr align 8 %tmp, i64 16, i1 false) - %f1 = getelementptr inbounds %struct.MyStruct, ptr %m, i32 0, i32 0 - %4 = load ptr, ptr %f1, align 8 - call void @EXPECTEDFAIL_MAYALIAS(ptr noundef %4, ptr noundef @x) - %f11 = getelementptr inbounds %struct.MyStruct, ptr %m, i32 0, i32 0 - %5 = load ptr, ptr %f11, align 8 - call void @NOALIAS(ptr noundef %5, ptr noundef @y) - ret i32 0 -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/struct-nested-1-layer.c.bc b/test_cases_bc/basic_c_tests/struct-nested-1-layer.c.bc deleted file mode 100644 index 79df45b9..00000000 --- a/test_cases_bc/basic_c_tests/struct-nested-1-layer.c.bc +++ /dev/null @@ -1,198 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/struct-nested-1-layer.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/struct-nested-1-layer.c" -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-unknown-linux-gnu" - -%struct.MyStruct1 = type { ptr, %struct.MyStruct2 } -%struct.MyStruct2 = type { ptr, ptr } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %ms = alloca %struct.MyStruct1, align 8 - %pms1 = alloca ptr, align 8 - %pms2 = alloca ptr, align 8 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %c = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %f1 = getelementptr inbounds %struct.MyStruct1, ptr %ms, i32 0, i32 0 - store ptr %c, ptr %f1, align 8 - %f2 = getelementptr inbounds %struct.MyStruct1, ptr %ms, i32 0, i32 1 - %f3 = getelementptr inbounds %struct.MyStruct2, ptr %f2, i32 0, i32 0 - store ptr %a, ptr %f3, align 8 - %f21 = getelementptr inbounds %struct.MyStruct1, ptr %ms, i32 0, i32 1 - %f4 = getelementptr inbounds %struct.MyStruct2, ptr %f21, i32 0, i32 1 - store ptr %b, ptr %f4, align 8 - store ptr %ms, ptr %pms1, align 8 - %f22 = getelementptr inbounds %struct.MyStruct1, ptr %ms, i32 0, i32 1 - store ptr %f22, ptr %pms2, align 8 - %0 = load ptr, ptr %pms2, align 8 - %f43 = getelementptr inbounds %struct.MyStruct2, ptr %0, i32 0, i32 1 - %1 = load ptr, ptr %f43, align 8 - %2 = load ptr, ptr %pms1, align 8 - %f24 = getelementptr inbounds %struct.MyStruct1, ptr %2, i32 0, i32 1 - %f35 = getelementptr inbounds %struct.MyStruct2, ptr %f24, i32 0, i32 0 - %3 = load ptr, ptr %f35, align 8 - call void @NOALIAS(ptr noundef %1, ptr noundef %3) - %4 = load ptr, ptr %pms2, align 8 - %f36 = getelementptr inbounds %struct.MyStruct2, ptr %4, i32 0, i32 0 - %5 = load ptr, ptr %f36, align 8 - %6 = load ptr, ptr %pms1, align 8 - %f27 = getelementptr inbounds %struct.MyStruct1, ptr %6, i32 0, i32 1 - %f38 = getelementptr inbounds %struct.MyStruct2, ptr %f27, i32 0, i32 0 - %7 = load ptr, ptr %f38, align 8 - call void @MUSTALIAS(ptr noundef %5, ptr noundef %7) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/struct-nested-2-layers.c.bc b/test_cases_bc/basic_c_tests/struct-nested-2-layers.c.bc deleted file mode 100644 index 665a29d7..00000000 --- a/test_cases_bc/basic_c_tests/struct-nested-2-layers.c.bc +++ /dev/null @@ -1,219 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/struct-nested-2-layers.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/struct-nested-2-layers.c" -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-unknown-linux-gnu" - -%struct.OuterStruct = type { %struct.MidStruct, i8, %struct.InnerStruct, i32 } -%struct.MidStruct = type { i32, %struct.InnerStruct, i8 } -%struct.InnerStruct = type { i32, i8 } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %pout = alloca ptr, align 8 - %pmid = alloca ptr, align 8 - %ptmp = alloca ptr, align 8 - %itmp = alloca ptr, align 8 - %pin = alloca ptr, align 8 - %s = alloca %struct.OuterStruct, align 4 - store i32 0, ptr %retval, align 4 - store ptr %s, ptr %pout, align 8 - %out1 = getelementptr inbounds %struct.OuterStruct, ptr %s, i32 0, i32 0 - store ptr %out1, ptr %pmid, align 8 - %0 = load ptr, ptr %pout, align 8 - %out11 = getelementptr inbounds %struct.OuterStruct, ptr %0, i32 0, i32 0 - store ptr %out11, ptr %ptmp, align 8 - %1 = load ptr, ptr %ptmp, align 8 - %2 = load ptr, ptr %pmid, align 8 - call void @MUSTALIAS(ptr noundef %1, ptr noundef %2) - %3 = load ptr, ptr %ptmp, align 8 - %mid2 = getelementptr inbounds %struct.MidStruct, ptr %3, i32 0, i32 1 - %in1 = getelementptr inbounds %struct.InnerStruct, ptr %mid2, i32 0, i32 0 - %4 = load ptr, ptr %pmid, align 8 - %mid22 = getelementptr inbounds %struct.MidStruct, ptr %4, i32 0, i32 1 - %in13 = getelementptr inbounds %struct.InnerStruct, ptr %mid22, i32 0, i32 0 - call void @MUSTALIAS(ptr noundef %in1, ptr noundef %in13) - %5 = load ptr, ptr %ptmp, align 8 - %mid24 = getelementptr inbounds %struct.MidStruct, ptr %5, i32 0, i32 1 - %in2 = getelementptr inbounds %struct.InnerStruct, ptr %mid24, i32 0, i32 1 - %6 = load ptr, ptr %pmid, align 8 - %mid25 = getelementptr inbounds %struct.MidStruct, ptr %6, i32 0, i32 1 - %in26 = getelementptr inbounds %struct.InnerStruct, ptr %mid25, i32 0, i32 1 - call void @MUSTALIAS(ptr noundef %in2, ptr noundef %in26) - %out17 = getelementptr inbounds %struct.OuterStruct, ptr %s, i32 0, i32 0 - %mid28 = getelementptr inbounds %struct.MidStruct, ptr %out17, i32 0, i32 1 - store ptr %mid28, ptr %pin, align 8 - %7 = load ptr, ptr %pout, align 8 - %out19 = getelementptr inbounds %struct.OuterStruct, ptr %7, i32 0, i32 0 - %mid210 = getelementptr inbounds %struct.MidStruct, ptr %out19, i32 0, i32 1 - store ptr %mid210, ptr %itmp, align 8 - %8 = load ptr, ptr %itmp, align 8 - %9 = load ptr, ptr %pin, align 8 - call void @MUSTALIAS(ptr noundef %8, ptr noundef %9) - %10 = load ptr, ptr %itmp, align 8 - %in111 = getelementptr inbounds %struct.InnerStruct, ptr %10, i32 0, i32 0 - %11 = load ptr, ptr %pin, align 8 - %in112 = getelementptr inbounds %struct.InnerStruct, ptr %11, i32 0, i32 0 - call void @MUSTALIAS(ptr noundef %in111, ptr noundef %in112) - %12 = load ptr, ptr %itmp, align 8 - %in213 = getelementptr inbounds %struct.InnerStruct, ptr %12, i32 0, i32 1 - %13 = load ptr, ptr %pin, align 8 - %in214 = getelementptr inbounds %struct.InnerStruct, ptr %13, i32 0, i32 1 - call void @MUSTALIAS(ptr noundef %in213, ptr noundef %in214) - %14 = load ptr, ptr %pout, align 8 - %out3 = getelementptr inbounds %struct.OuterStruct, ptr %14, i32 0, i32 2 - %15 = load ptr, ptr %pin, align 8 - call void @NOALIAS(ptr noundef %out3, ptr noundef %15) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/struct-nested-array1.c.bc b/test_cases_bc/basic_c_tests/struct-nested-array1.c.bc deleted file mode 100644 index fa4ef380..00000000 --- a/test_cases_bc/basic_c_tests/struct-nested-array1.c.bc +++ /dev/null @@ -1,194 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/struct-nested-array1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/struct-nested-array1.c" -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-unknown-linux-gnu" - -%struct.ArrayStruct = type { i32, i8, %struct.InnerArrayStruct, i32 } -%struct.InnerArrayStruct = type { [100 x i32] } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %p = alloca ptr, align 8 - %s = alloca %struct.ArrayStruct, align 4 - %q = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store ptr %s, ptr %p, align 8 - %f3 = getelementptr inbounds %struct.ArrayStruct, ptr %s, i32 0, i32 2 - %f1 = getelementptr inbounds %struct.InnerArrayStruct, ptr %f3, i32 0, i32 0 - %arrayidx = getelementptr inbounds [100 x i32], ptr %f1, i64 0, i64 40 - store ptr %arrayidx, ptr %q, align 8 - %0 = load ptr, ptr %p, align 8 - %f31 = getelementptr inbounds %struct.ArrayStruct, ptr %0, i32 0, i32 2 - %f12 = getelementptr inbounds %struct.InnerArrayStruct, ptr %f31, i32 0, i32 0 - %arrayidx3 = getelementptr inbounds [100 x i32], ptr %f12, i64 0, i64 10 - %1 = load ptr, ptr %q, align 8 - call void @MAYALIAS(ptr noundef %arrayidx3, ptr noundef %1) - %2 = load ptr, ptr %p, align 8 - %f34 = getelementptr inbounds %struct.ArrayStruct, ptr %2, i32 0, i32 2 - %f15 = getelementptr inbounds %struct.InnerArrayStruct, ptr %f34, i32 0, i32 0 - %arrayidx6 = getelementptr inbounds [100 x i32], ptr %f15, i64 0, i64 20 - %3 = load ptr, ptr %p, align 8 - %f37 = getelementptr inbounds %struct.ArrayStruct, ptr %3, i32 0, i32 2 - %f18 = getelementptr inbounds %struct.InnerArrayStruct, ptr %f37, i32 0, i32 0 - %arrayidx9 = getelementptr inbounds [100 x i32], ptr %f18, i64 0, i64 30 - call void @MAYALIAS(ptr noundef %arrayidx6, ptr noundef %arrayidx9) - %4 = load ptr, ptr %p, align 8 - %f310 = getelementptr inbounds %struct.ArrayStruct, ptr %4, i32 0, i32 2 - %f111 = getelementptr inbounds %struct.InnerArrayStruct, ptr %f310, i32 0, i32 0 - %arrayidx12 = getelementptr inbounds [100 x i32], ptr %f111, i64 0, i64 0 - %f4 = getelementptr inbounds %struct.ArrayStruct, ptr %s, i32 0, i32 3 - call void @NOALIAS(ptr noundef %arrayidx12, ptr noundef %f4) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/struct-nested-array2.c.bc b/test_cases_bc/basic_c_tests/struct-nested-array2.c.bc deleted file mode 100644 index 789615f2..00000000 --- a/test_cases_bc/basic_c_tests/struct-nested-array2.c.bc +++ /dev/null @@ -1,204 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/struct-nested-array2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/struct-nested-array2.c" -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-unknown-linux-gnu" - -%struct.ArrayStruct = type { i32, i8, %struct.MidArrayStruct, ptr } -%struct.MidArrayStruct = type { i8, [5 x %struct.InnerArrayStruct], [20 x double] } -%struct.InnerArrayStruct = type { [10 x ptr], i8, double } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %p = alloca ptr, align 8 - %s = alloca %struct.ArrayStruct, align 8 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %out4 = getelementptr inbounds %struct.ArrayStruct, ptr %s, i32 0, i32 3 - store ptr %x, ptr %out4, align 8 - store ptr %s, ptr %p, align 8 - %out41 = getelementptr inbounds %struct.ArrayStruct, ptr %s, i32 0, i32 3 - %0 = load ptr, ptr %out41, align 8 - %1 = load ptr, ptr %p, align 8 - %out3 = getelementptr inbounds %struct.ArrayStruct, ptr %1, i32 0, i32 2 - %mid2 = getelementptr inbounds %struct.MidArrayStruct, ptr %out3, i32 0, i32 1 - %arrayidx = getelementptr inbounds [5 x %struct.InnerArrayStruct], ptr %mid2, i64 0, i64 2 - %in1 = getelementptr inbounds %struct.InnerArrayStruct, ptr %arrayidx, i32 0, i32 0 - %arrayidx2 = getelementptr inbounds [10 x ptr], ptr %in1, i64 0, i64 2 - store ptr %0, ptr %arrayidx2, align 8 - %2 = load ptr, ptr %p, align 8 - %out33 = getelementptr inbounds %struct.ArrayStruct, ptr %2, i32 0, i32 2 - %mid24 = getelementptr inbounds %struct.MidArrayStruct, ptr %out33, i32 0, i32 1 - %arrayidx5 = getelementptr inbounds [5 x %struct.InnerArrayStruct], ptr %mid24, i64 0, i64 3 - %in16 = getelementptr inbounds %struct.InnerArrayStruct, ptr %arrayidx5, i32 0, i32 0 - %arrayidx7 = getelementptr inbounds [10 x ptr], ptr %in16, i64 0, i64 3 - store ptr %y, ptr %arrayidx7, align 8 - %3 = load ptr, ptr %p, align 8 - %out38 = getelementptr inbounds %struct.ArrayStruct, ptr %3, i32 0, i32 2 - %mid29 = getelementptr inbounds %struct.MidArrayStruct, ptr %out38, i32 0, i32 1 - %arrayidx10 = getelementptr inbounds [5 x %struct.InnerArrayStruct], ptr %mid29, i64 0, i64 1 - %in111 = getelementptr inbounds %struct.InnerArrayStruct, ptr %arrayidx10, i32 0, i32 0 - %arrayidx12 = getelementptr inbounds [10 x ptr], ptr %in111, i64 0, i64 1 - %4 = load ptr, ptr %arrayidx12, align 8 - call void @MAYALIAS(ptr noundef %4, ptr noundef %x) - %out313 = getelementptr inbounds %struct.ArrayStruct, ptr %s, i32 0, i32 2 - %mid214 = getelementptr inbounds %struct.MidArrayStruct, ptr %out313, i32 0, i32 1 - %arrayidx15 = getelementptr inbounds [5 x %struct.InnerArrayStruct], ptr %mid214, i64 0, i64 3 - %in116 = getelementptr inbounds %struct.InnerArrayStruct, ptr %arrayidx15, i32 0, i32 0 - %arrayidx17 = getelementptr inbounds [10 x ptr], ptr %in116, i64 0, i64 0 - %5 = load ptr, ptr %arrayidx17, align 8 - call void @MAYALIAS(ptr noundef %5, ptr noundef %y) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/struct-nested-array3.c.bc b/test_cases_bc/basic_c_tests/struct-nested-array3.c.bc deleted file mode 100644 index 0ebc552d..00000000 --- a/test_cases_bc/basic_c_tests/struct-nested-array3.c.bc +++ /dev/null @@ -1,207 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/struct-nested-array3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/struct-nested-array3.c" -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-unknown-linux-gnu" - -%struct.ArrayStruct = type { i32, i8, %struct.MidArrayStruct, i32 } -%struct.MidArrayStruct = type { i8, [5 x %struct.InnerArrayStruct], [20 x double] } -%struct.InnerArrayStruct = type { [10 x i32], i8, double } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %p = alloca ptr, align 8 - %s = alloca %struct.ArrayStruct, align 8 - store i32 0, ptr %retval, align 4 - store ptr %s, ptr %p, align 8 - %0 = load ptr, ptr %p, align 8 - %out4 = getelementptr inbounds %struct.ArrayStruct, ptr %0, i32 0, i32 3 - %out41 = getelementptr inbounds %struct.ArrayStruct, ptr %s, i32 0, i32 3 - call void @MUSTALIAS(ptr noundef %out4, ptr noundef %out41) - %1 = load ptr, ptr %p, align 8 - %out3 = getelementptr inbounds %struct.ArrayStruct, ptr %1, i32 0, i32 2 - %mid2 = getelementptr inbounds %struct.MidArrayStruct, ptr %out3, i32 0, i32 1 - %arrayidx = getelementptr inbounds [5 x %struct.InnerArrayStruct], ptr %mid2, i64 0, i64 10 - %in1 = getelementptr inbounds %struct.InnerArrayStruct, ptr %arrayidx, i32 0, i32 0 - %arrayidx2 = getelementptr inbounds [10 x i32], ptr %in1, i64 0, i64 10 - %out33 = getelementptr inbounds %struct.ArrayStruct, ptr %s, i32 0, i32 2 - %mid24 = getelementptr inbounds %struct.MidArrayStruct, ptr %out33, i32 0, i32 1 - %arrayidx5 = getelementptr inbounds [5 x %struct.InnerArrayStruct], ptr %mid24, i64 0, i64 4000 - call void @MAYALIAS(ptr noundef %arrayidx2, ptr noundef %arrayidx5) - %2 = load ptr, ptr %p, align 8 - %out36 = getelementptr inbounds %struct.ArrayStruct, ptr %2, i32 0, i32 2 - %mid27 = getelementptr inbounds %struct.MidArrayStruct, ptr %out36, i32 0, i32 1 - %arrayidx8 = getelementptr inbounds [5 x %struct.InnerArrayStruct], ptr %mid27, i64 0, i64 20 - %3 = load ptr, ptr %p, align 8 - %out39 = getelementptr inbounds %struct.ArrayStruct, ptr %3, i32 0, i32 2 - %mid210 = getelementptr inbounds %struct.MidArrayStruct, ptr %out39, i32 0, i32 1 - %arrayidx11 = getelementptr inbounds [5 x %struct.InnerArrayStruct], ptr %mid210, i64 0, i64 30 - call void @MAYALIAS(ptr noundef %arrayidx8, ptr noundef %arrayidx11) - %4 = load ptr, ptr %p, align 8 - %out312 = getelementptr inbounds %struct.ArrayStruct, ptr %4, i32 0, i32 2 - %mid213 = getelementptr inbounds %struct.MidArrayStruct, ptr %out312, i32 0, i32 1 - %arrayidx14 = getelementptr inbounds [5 x %struct.InnerArrayStruct], ptr %mid213, i64 0, i64 3 - %in3 = getelementptr inbounds %struct.InnerArrayStruct, ptr %arrayidx14, i32 0, i32 2 - %out315 = getelementptr inbounds %struct.ArrayStruct, ptr %s, i32 0, i32 2 - %mid3 = getelementptr inbounds %struct.MidArrayStruct, ptr %out315, i32 0, i32 2 - %arrayidx16 = getelementptr inbounds [20 x double], ptr %mid3, i64 0, i64 2 - call void @NOALIAS(ptr noundef %in3, ptr noundef %arrayidx16) - %5 = load ptr, ptr %p, align 8 - %out317 = getelementptr inbounds %struct.ArrayStruct, ptr %5, i32 0, i32 2 - %mid218 = getelementptr inbounds %struct.MidArrayStruct, ptr %out317, i32 0, i32 1 - %arrayidx19 = getelementptr inbounds [5 x %struct.InnerArrayStruct], ptr %mid218, i64 0, i64 0 - %out420 = getelementptr inbounds %struct.ArrayStruct, ptr %s, i32 0, i32 3 - call void @NOALIAS(ptr noundef %arrayidx19, ptr noundef %out420) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/struct-onefld.c.bc b/test_cases_bc/basic_c_tests/struct-onefld.c.bc deleted file mode 100644 index 4ca35bcc..00000000 --- a/test_cases_bc/basic_c_tests/struct-onefld.c.bc +++ /dev/null @@ -1,193 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/struct-onefld.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/struct-onefld.c" -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-unknown-linux-gnu" - -%struct.IntStruct = type { i32 } -%struct.CharStruct = type { i8 } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %pint1 = alloca ptr, align 8 - %pint2 = alloca ptr, align 8 - %s = alloca %struct.IntStruct, align 4 - %qint1 = alloca ptr, align 8 - %qint2 = alloca ptr, align 8 - %t = alloca %struct.CharStruct, align 1 - store i32 0, ptr %retval, align 4 - store ptr %s, ptr %pint1, align 8 - store ptr %s, ptr %pint2, align 8 - %0 = load ptr, ptr %pint1, align 8 - %f1 = getelementptr inbounds %struct.IntStruct, ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %pint2, align 8 - %f11 = getelementptr inbounds %struct.IntStruct, ptr %1, i32 0, i32 0 - call void @MUSTALIAS(ptr noundef %f1, ptr noundef %f11) - %2 = load ptr, ptr %pint1, align 8 - %f12 = getelementptr inbounds %struct.IntStruct, ptr %2, i32 0, i32 0 - %f13 = getelementptr inbounds %struct.IntStruct, ptr %s, i32 0, i32 0 - call void @MUSTALIAS(ptr noundef %f12, ptr noundef %f13) - store ptr %t, ptr %qint1, align 8 - store ptr %t, ptr %qint2, align 8 - %3 = load ptr, ptr %qint1, align 8 - %f14 = getelementptr inbounds %struct.CharStruct, ptr %3, i32 0, i32 0 - %4 = load ptr, ptr %qint2, align 8 - %f15 = getelementptr inbounds %struct.CharStruct, ptr %4, i32 0, i32 0 - call void @MUSTALIAS(ptr noundef %f14, ptr noundef %f15) - %5 = load ptr, ptr %qint1, align 8 - %f16 = getelementptr inbounds %struct.CharStruct, ptr %5, i32 0, i32 0 - %f17 = getelementptr inbounds %struct.CharStruct, ptr %t, i32 0, i32 0 - call void @MUSTALIAS(ptr noundef %f16, ptr noundef %f17) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/struct-simple.c.bc b/test_cases_bc/basic_c_tests/struct-simple.c.bc deleted file mode 100644 index 06c7eb09..00000000 --- a/test_cases_bc/basic_c_tests/struct-simple.c.bc +++ /dev/null @@ -1,177 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/struct-simple.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/struct-simple.c" -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-unknown-linux-gnu" - -%struct.s = type { ptr, i32 } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %s1 = alloca %struct.s, align 8 - %s2 = alloca %struct.s, align 8 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - %a = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 0 - store ptr %x, ptr %a, align 8 - %a1 = getelementptr inbounds %struct.s, ptr %s1, i32 0, i32 0 - %0 = load ptr, ptr %a1, align 8 - %a2 = getelementptr inbounds %struct.s, ptr %s2, i32 0, i32 0 - store ptr %0, ptr %a2, align 8 - %a3 = getelementptr inbounds %struct.s, ptr %s2, i32 0, i32 0 - %1 = load ptr, ptr %a3, align 8 - call void @MUSTALIAS(ptr noundef %1, ptr noundef %x) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/struct-twoflds.c.bc b/test_cases_bc/basic_c_tests/struct-twoflds.c.bc deleted file mode 100644 index 38c1a6ee..00000000 --- a/test_cases_bc/basic_c_tests/struct-twoflds.c.bc +++ /dev/null @@ -1,205 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/struct-twoflds.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/struct-twoflds.c" -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-unknown-linux-gnu" - -%struct.IntChar = type { i32, i8 } -%struct.CharInt = type { i8, i32 } - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MUSTALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PARTIALALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_MAYALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @EXPECTEDFAIL_NOALIAS(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @RC_ACCESS(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @CXT_THREAD(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @TCT_ACCESS(i32 noundef %thdid, ptr noundef %cxt) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @INTERLEV_ACCESS(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #0 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @LOCK(ptr noundef %lockname) #0 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @PAUSE(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %pint1 = alloca ptr, align 8 - %pint2 = alloca ptr, align 8 - %s = alloca %struct.IntChar, align 4 - %qint1 = alloca ptr, align 8 - %qint2 = alloca ptr, align 8 - %t = alloca %struct.CharInt, align 4 - store i32 0, ptr %retval, align 4 - store ptr %s, ptr %pint1, align 8 - store ptr %s, ptr %pint2, align 8 - %0 = load ptr, ptr %pint1, align 8 - %f1 = getelementptr inbounds %struct.IntChar, ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %pint2, align 8 - %f11 = getelementptr inbounds %struct.IntChar, ptr %1, i32 0, i32 0 - call void @MUSTALIAS(ptr noundef %f1, ptr noundef %f11) - %2 = load ptr, ptr %pint1, align 8 - %f2 = getelementptr inbounds %struct.IntChar, ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %pint2, align 8 - %f22 = getelementptr inbounds %struct.IntChar, ptr %3, i32 0, i32 1 - call void @MUSTALIAS(ptr noundef %f2, ptr noundef %f22) - %4 = load ptr, ptr %pint1, align 8 - %f13 = getelementptr inbounds %struct.IntChar, ptr %4, i32 0, i32 0 - %5 = load ptr, ptr %pint2, align 8 - %f24 = getelementptr inbounds %struct.IntChar, ptr %5, i32 0, i32 1 - call void @NOALIAS(ptr noundef %f13, ptr noundef %f24) - store ptr %t, ptr %qint1, align 8 - store ptr %t, ptr %qint2, align 8 - %6 = load ptr, ptr %qint1, align 8 - %f15 = getelementptr inbounds %struct.CharInt, ptr %6, i32 0, i32 0 - %7 = load ptr, ptr %qint2, align 8 - %f16 = getelementptr inbounds %struct.CharInt, ptr %7, i32 0, i32 0 - call void @MUSTALIAS(ptr noundef %f15, ptr noundef %f16) - %8 = load ptr, ptr %qint1, align 8 - %f27 = getelementptr inbounds %struct.CharInt, ptr %8, i32 0, i32 1 - %9 = load ptr, ptr %qint2, align 8 - %f28 = getelementptr inbounds %struct.CharInt, ptr %9, i32 0, i32 1 - call void @MUSTALIAS(ptr noundef %f27, ptr noundef %f28) - %10 = load ptr, ptr %qint1, align 8 - %f19 = getelementptr inbounds %struct.CharInt, ptr %10, i32 0, i32 0 - %11 = load ptr, ptr %qint2, align 8 - %f210 = getelementptr inbounds %struct.CharInt, ptr %11, i32 0, i32 1 - call void @NOALIAS(ptr noundef %f19, ptr noundef %f210) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_c_tests/structcopy1.c.bc b/test_cases_bc/basic_c_tests/structcopy1.c.bc deleted file mode 100644 index e530c888..00000000 --- a/test_cases_bc/basic_c_tests/structcopy1.c.bc +++ /dev/null @@ -1,51 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_c_tests/structcopy1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_c_tests/structcopy1.c" -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-unknown-linux-gnu" - -%struct.myStruct = type { float, %struct.innerStruct } -%struct.innerStruct = type { i32, ptr } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %x = alloca %struct.myStruct, align 8 - %y = alloca %struct.myStruct, align 8 - %call = call ptr @malloc(i64 noundef 10) #4 - %b = getelementptr inbounds %struct.myStruct, ptr %x, i32 0, i32 1 - %n = getelementptr inbounds %struct.innerStruct, ptr %b, i32 0, i32 1 - store ptr %call, ptr %n, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %y, ptr align 8 %x, i64 24, i1 false) - %b1 = getelementptr inbounds %struct.myStruct, ptr %x, i32 0, i32 1 - %n2 = getelementptr inbounds %struct.innerStruct, ptr %b1, i32 0, i32 1 - %0 = load ptr, ptr %n2, align 8 - %b3 = getelementptr inbounds %struct.myStruct, ptr %y, i32 0, i32 1 - %n4 = getelementptr inbounds %struct.innerStruct, ptr %b3, i32 0, i32 1 - %1 = load ptr, ptr %n4, align 8 - %call5 = call i32 @MAYALIAS(ptr noundef %0, ptr noundef %1) - ret i32 0 -} - -; Function Attrs: allocsize(0) -declare ptr @malloc(i64 noundef) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 - -declare i32 @MAYALIAS(ptr noundef, ptr noundef) #3 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/abstract.cpp.bc b/test_cases_bc/basic_cpp_tests/abstract.cpp.bc deleted file mode 100644 index 70a110b0..00000000 --- a/test_cases_bc/basic_cpp_tests/abstract.cpp.bc +++ /dev/null @@ -1,299 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/abstract.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/abstract.cpp" -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-unknown-linux-gnu" - -$_ZN1BC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZN1B1fEPi = comdat any - -$_ZN1B1gEPi = comdat any - -$_ZN1A1gEPi = comdat any - -$_ZTV1B = comdat any - -$_ZTS1B = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -$_ZTI1B = comdat any - -$_ZTV1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj_f = dso_local global i32 0, align 4 -@global_ptr_f = dso_local global ptr @global_obj_f, align 8 -@global_obj_g = dso_local global i32 0, align 4 -@global_ptr_g = dso_local global ptr @global_obj_g, align 8 -@_ZTV1B = linkonce_odr dso_local unnamed_addr constant { [4 x ptr] } { [4 x ptr] [ptr null, ptr @_ZTI1B, ptr @_ZN1B1fEPi, ptr @_ZN1B1gEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv120__si_class_type_infoE = external global ptr -@_ZTS1B = linkonce_odr dso_local constant [3 x i8] c"1B\00", comdat, align 1 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@_ZTI1B = linkonce_odr dso_local constant { ptr, ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), ptr @_ZTS1B, ptr @_ZTI1A }, comdat, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [4 x ptr] } { [4 x ptr] [ptr null, ptr @_ZTI1A, ptr @__cxa_pure_virtual, ptr @_ZN1A1gEPi] }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main() #3 { -entry: - %retval = alloca i32, align 4 - %ptr_f = alloca ptr, align 8 - %ptr_g = alloca ptr, align 8 - %a = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store ptr @global_obj_f, ptr %ptr_f, align 8 - store ptr @global_obj_g, ptr %ptr_g, align 8 - %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #6 - call void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #7 - store ptr %call, ptr %a, align 8 - %0 = load ptr, ptr %a, align 8 - %1 = load ptr, ptr %ptr_f, align 8 - %vtable = load ptr, ptr %0, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) - %3 = load ptr, ptr %a, align 8 - %4 = load ptr, ptr %ptr_g, align 8 - %vtable1 = load ptr, ptr %3, align 8 - %vfn2 = getelementptr inbounds ptr, ptr %vtable1, i64 1 - %5 = load ptr, ptr %vfn2, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4) - ret i32 0 -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #7 - store ptr getelementptr inbounds ({ [4 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [4 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_f, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_ptr_g, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1gEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_f, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_ptr_g, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -declare void @__cxa_pure_virtual() unnamed_addr - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1gEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_f, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_ptr_g, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { builtin allocsize(0) } -attributes #7 = { nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/array-1.cpp.bc b/test_cases_bc/basic_cpp_tests/array-1.cpp.bc deleted file mode 100644 index 06b3a1af..00000000 --- a/test_cases_bc/basic_cpp_tests/array-1.cpp.bc +++ /dev/null @@ -1,275 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/array-1.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/array-1.cpp" -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-unknown-linux-gnu" - -%"struct.std::array" = type { [2 x ptr] } - -$_ZN1AC2Ev = comdat any - -$_ZNSt5arrayIPK1ALm2EEixEm = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt14__array_traitsIPK1ALm2EE6_S_refERA2_KS2_m = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %aarray = alloca %"struct.std::array", align 8 - %a0 = alloca ptr, align 8 - %a1 = alloca ptr, align 8 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #6 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #7 - store ptr %call, ptr %a0, align 8 - %call1 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #6 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call1) #7 - store ptr %call1, ptr %a1, align 8 - %0 = load ptr, ptr %a1, align 8 - %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %aarray, i64 noundef 0) #7 - store ptr %0, ptr %call2, align 8 - %1 = load ptr, ptr %a1, align 8 - %call3 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %aarray, i64 noundef 1) #7 - store ptr %1, ptr %call3, align 8 - %call4 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %aarray, i64 noundef 0) #7 - %2 = load ptr, ptr %call4, align 8 - store ptr %2, ptr %aptr, align 8 - %3 = load ptr, ptr %aptr, align 8 - %4 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %3, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %5 = load ptr, ptr %vfn, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4) - ret i32 0 -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %this, i64 noundef %__n) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_elems = getelementptr inbounds %"struct.std::array", ptr %this1, i32 0, i32 0 - %0 = load i64, ptr %__n.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14__array_traitsIPK1ALm2EE6_S_refERA2_KS2_m(ptr noundef nonnull align 8 dereferenceable(16) %_M_elems, i64 noundef %0) #7 - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14__array_traitsIPK1ALm2EE6_S_refERA2_KS2_m(ptr noundef nonnull align 8 dereferenceable(16) %__t, i64 noundef %__n) #2 comdat align 2 { -entry: - %__t.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__t, ptr %__t.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__t.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %arrayidx = getelementptr inbounds [2 x ptr], ptr %0, i64 0, i64 %1 - ret ptr %arrayidx -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { builtin allocsize(0) } -attributes #7 = { nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/array-2.cpp.bc b/test_cases_bc/basic_cpp_tests/array-2.cpp.bc deleted file mode 100644 index 93ee80a0..00000000 --- a/test_cases_bc/basic_cpp_tests/array-2.cpp.bc +++ /dev/null @@ -1,324 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/array-2.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/array-2.cpp" -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-unknown-linux-gnu" - -%"struct.std::array" = type { [2 x ptr] } - -$_ZN1AC2Ev = comdat any - -$_ZNSt5arrayIPK1ALm2EEixEm = comdat any - -$_ZNSt5arrayIPK1ALm2EE5frontEv = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt14__array_traitsIPK1ALm2EE6_S_refERA2_KS2_m = comdat any - -$_ZNSt5arrayIPK1ALm2EE5beginEv = comdat any - -$_ZNSt5arrayIPK1ALm2EE4dataEv = comdat any - -$_ZNSt14__array_traitsIPK1ALm2EE6_S_ptrERA2_KS2_ = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %aarray = alloca %"struct.std::array", align 8 - %a0 = alloca ptr, align 8 - %a1 = alloca ptr, align 8 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #6 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #7 - store ptr %call, ptr %a0, align 8 - %call1 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #6 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call1) #7 - store ptr %call1, ptr %a1, align 8 - %0 = load ptr, ptr %a1, align 8 - %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %aarray, i64 noundef 0) #7 - store ptr %0, ptr %call2, align 8 - %1 = load ptr, ptr %a1, align 8 - %call3 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %aarray, i64 noundef 1) #7 - store ptr %1, ptr %call3, align 8 - %call4 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %aarray) #7 - %2 = load ptr, ptr %call4, align 8 - store ptr %2, ptr %aptr, align 8 - %3 = load ptr, ptr %aptr, align 8 - %4 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %3, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %5 = load ptr, ptr %vfn, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4) - ret i32 0 -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %this, i64 noundef %__n) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_elems = getelementptr inbounds %"struct.std::array", ptr %this1, i32 0, i32 0 - %0 = load i64, ptr %__n.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14__array_traitsIPK1ALm2EE6_S_refERA2_KS2_m(ptr noundef nonnull align 8 dereferenceable(16) %_M_elems, i64 noundef %0) #7 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EE5frontEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt5arrayIPK1ALm2EE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #7 - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14__array_traitsIPK1ALm2EE6_S_refERA2_KS2_m(ptr noundef nonnull align 8 dereferenceable(16) %__t, i64 noundef %__n) #2 comdat align 2 { -entry: - %__t.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__t, ptr %__t.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__t.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %arrayidx = getelementptr inbounds [2 x ptr], ptr %0, i64 0, i64 %1 - ret ptr %arrayidx -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt5arrayIPK1ALm2EE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt5arrayIPK1ALm2EE4dataEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #7 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt5arrayIPK1ALm2EE4dataEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_elems = getelementptr inbounds %"struct.std::array", ptr %this1, i32 0, i32 0 - %call = call noundef ptr @_ZNSt14__array_traitsIPK1ALm2EE6_S_ptrERA2_KS2_(ptr noundef nonnull align 8 dereferenceable(16) %_M_elems) #7 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14__array_traitsIPK1ALm2EE6_S_ptrERA2_KS2_(ptr noundef nonnull align 8 dereferenceable(16) %__t) #2 comdat align 2 { -entry: - %__t.addr = alloca ptr, align 8 - store ptr %__t, ptr %__t.addr, align 8 - %0 = load ptr, ptr %__t.addr, align 8 - %arraydecay = getelementptr inbounds [2 x ptr], ptr %0, i64 0, i64 0 - ret ptr %arraydecay -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { builtin allocsize(0) } -attributes #7 = { nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/array-3.cpp.bc b/test_cases_bc/basic_cpp_tests/array-3.cpp.bc deleted file mode 100644 index fa75857e..00000000 --- a/test_cases_bc/basic_cpp_tests/array-3.cpp.bc +++ /dev/null @@ -1,326 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/array-3.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/array-3.cpp" -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-unknown-linux-gnu" - -%"struct.std::array" = type { [2 x ptr] } - -$_ZN1AC2Ev = comdat any - -$_ZNSt5arrayIPK1ALm2EEixEm = comdat any - -$_ZNSt5arrayIPK1ALm2EE4backEv = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt14__array_traitsIPK1ALm2EE6_S_refERA2_KS2_m = comdat any - -$_ZNSt5arrayIPK1ALm2EE3endEv = comdat any - -$_ZNSt5arrayIPK1ALm2EE4dataEv = comdat any - -$_ZNSt14__array_traitsIPK1ALm2EE6_S_ptrERA2_KS2_ = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %aarray = alloca %"struct.std::array", align 8 - %a0 = alloca ptr, align 8 - %a1 = alloca ptr, align 8 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #6 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #7 - store ptr %call, ptr %a0, align 8 - %call1 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #6 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call1) #7 - store ptr %call1, ptr %a1, align 8 - %0 = load ptr, ptr %a1, align 8 - %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %aarray, i64 noundef 0) #7 - store ptr %0, ptr %call2, align 8 - %1 = load ptr, ptr %a1, align 8 - %call3 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %aarray, i64 noundef 1) #7 - store ptr %1, ptr %call3, align 8 - %call4 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %aarray) #7 - %2 = load ptr, ptr %call4, align 8 - store ptr %2, ptr %aptr, align 8 - %3 = load ptr, ptr %aptr, align 8 - %4 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %3, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %5 = load ptr, ptr %vfn, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4) - ret i32 0 -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EEixEm(ptr noundef nonnull align 8 dereferenceable(16) %this, i64 noundef %__n) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_elems = getelementptr inbounds %"struct.std::array", ptr %this1, i32 0, i32 0 - %0 = load i64, ptr %__n.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14__array_traitsIPK1ALm2EE6_S_refERA2_KS2_m(ptr noundef nonnull align 8 dereferenceable(16) %_M_elems, i64 noundef %0) #7 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIPK1ALm2EE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt5arrayIPK1ALm2EE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #7 - %add.ptr = getelementptr inbounds ptr, ptr %call, i64 -1 - ret ptr %add.ptr -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt14__array_traitsIPK1ALm2EE6_S_refERA2_KS2_m(ptr noundef nonnull align 8 dereferenceable(16) %__t, i64 noundef %__n) #2 comdat align 2 { -entry: - %__t.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__t, ptr %__t.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__t.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %arrayidx = getelementptr inbounds [2 x ptr], ptr %0, i64 0, i64 %1 - ret ptr %arrayidx -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt5arrayIPK1ALm2EE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt5arrayIPK1ALm2EE4dataEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #7 - %add.ptr = getelementptr inbounds ptr, ptr %call, i64 2 - ret ptr %add.ptr -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt5arrayIPK1ALm2EE4dataEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_elems = getelementptr inbounds %"struct.std::array", ptr %this1, i32 0, i32 0 - %call = call noundef ptr @_ZNSt14__array_traitsIPK1ALm2EE6_S_ptrERA2_KS2_(ptr noundef nonnull align 8 dereferenceable(16) %_M_elems) #7 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14__array_traitsIPK1ALm2EE6_S_ptrERA2_KS2_(ptr noundef nonnull align 8 dereferenceable(16) %__t) #2 comdat align 2 { -entry: - %__t.addr = alloca ptr, align 8 - store ptr %__t, ptr %__t.addr, align 8 - %0 = load ptr, ptr %__t.addr, align 8 - %arraydecay = getelementptr inbounds [2 x ptr], ptr %0, i64 0, i64 0 - ret ptr %arraydecay -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { builtin allocsize(0) } -attributes #7 = { nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/constructor-1.cpp.bc b/test_cases_bc/basic_cpp_tests/constructor-1.cpp.bc deleted file mode 100644 index 6653d566..00000000 --- a/test_cases_bc/basic_cpp_tests/constructor-1.cpp.bc +++ /dev/null @@ -1,267 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/constructor-1.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/constructor-1.cpp" -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-unknown-linux-gnu" - -%class.B = type { %class.A } -%class.A = type { ptr } - -$_ZN1BC2EPi = comdat any - -$_ZN1AC2EPi = comdat any - -$_ZN1B1fEPi = comdat any - -$_ZN1A1fEPi = comdat any - -$_ZTV1B = comdat any - -$_ZTS1B = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -$_ZTI1B = comdat any - -$_ZTV1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1B = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1B, ptr @_ZN1B1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv120__si_class_type_infoE = external global ptr -@_ZTS1B = linkonce_odr dso_local constant [3 x i8] c"1B\00", comdat, align 1 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@_ZTI1B = linkonce_odr dso_local constant { ptr, ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), ptr @_ZTS1B, ptr @_ZTI1A }, comdat, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1A1fEPi] }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main() #3 { -entry: - %retval = alloca i32, align 4 - %i = alloca ptr, align 8 - %b = alloca %class.B, align 8 - store i32 0, ptr %retval, align 4 - store ptr @global_obj, ptr %i, align 8 - %0 = load ptr, ptr %i, align 8 - call void @_ZN1BC2EPi(ptr noundef nonnull align 8 dereferenceable(8) %b, ptr noundef %0) - ret i32 0 -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1BC2EPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %i.addr, align 8 - call void @_ZN1AC2EPi(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %0) - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - %1 = load ptr, ptr %i.addr, align 8 - %vtable = load ptr, ptr %this1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %1) - ret void -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2EPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - %0 = load ptr, ptr %i.addr, align 8 - %vtable = load ptr, ptr %this1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %1 = load ptr, ptr %vfn, align 8 - call void %1(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %0) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/constructor-2.cpp.bc b/test_cases_bc/basic_cpp_tests/constructor-2.cpp.bc deleted file mode 100644 index da1e6725..00000000 --- a/test_cases_bc/basic_cpp_tests/constructor-2.cpp.bc +++ /dev/null @@ -1,281 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/constructor-2.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/constructor-2.cpp" -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-unknown-linux-gnu" - -%class.B = type { %class.A } -%class.A = type { ptr } - -$_ZN1BC2EPi = comdat any - -$_ZN1AC2EPi = comdat any - -$_ZN1B1fEPi = comdat any - -$_ZN1A1fEPi = comdat any - -$_ZTV1B = comdat any - -$_ZTS1B = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -$_ZTI1B = comdat any - -$_ZTV1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1B = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1B, ptr @_ZN1B1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv120__si_class_type_infoE = external global ptr -@_ZTS1B = linkonce_odr dso_local constant [3 x i8] c"1B\00", comdat, align 1 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@_ZTI1B = linkonce_odr dso_local constant { ptr, ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), ptr @_ZTS1B, ptr @_ZTI1A }, comdat, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1A1fEPi] }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z1gP1APi(ptr noundef %p, ptr noundef %i) #0 { -entry: - %p.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %0 = load ptr, ptr %p.addr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - %vtable = load ptr, ptr %0, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %i = alloca ptr, align 8 - %b = alloca %class.B, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %i, align 8 - %0 = load ptr, ptr %i, align 8 - call void @_ZN1BC2EPi(ptr noundef nonnull align 8 dereferenceable(8) %b, ptr noundef %0) - ret i32 0 -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1BC2EPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %i.addr, align 8 - call void @_ZN1AC2EPi(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %0) - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z1gP1APi(ptr noundef %this1, ptr noundef %1) - ret void -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2EPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - %0 = load ptr, ptr %i.addr, align 8 - call void @_Z1gP1APi(ptr noundef %this1, ptr noundef %0) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/deque-1.cpp.bc b/test_cases_bc/basic_cpp_tests/deque-1.cpp.bc deleted file mode 100644 index 9c6df6fe..00000000 --- a/test_cases_bc/basic_cpp_tests/deque-1.cpp.bc +++ /dev/null @@ -1,2258 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/deque-1.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/deque-1.cpp" -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-unknown-linux-gnu" - -%"class.std::deque" = type { %"class.std::_Deque_base" } -%"class.std::_Deque_base" = type { %"struct.std::_Deque_base>::_Deque_impl" } -%"struct.std::_Deque_base>::_Deque_impl" = type { %"struct.std::_Deque_base>::_Deque_impl_data" } -%"struct.std::_Deque_base>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" } -%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr } -%class.A = type { ptr } -%"class.std::allocator.0" = type { i8 } - -$_ZNSt5dequeIPK1ASaIS2_EEC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE9push_backEOS2_ = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE5frontEv = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EED2Ev = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EEC2Ev = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implC2Ev = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implD2Ev = comdat any - -$_ZNSaIPK1AEC2Ev = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE16_Deque_impl_dataC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AEC2Ev = comdat any - -$_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2Ev = comdat any - -$_ZSt16__deque_buf_sizem = comdat any - -$_ZSt3maxImERKT_S2_S2_ = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_ = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_ = comdat any - -$_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv = comdat any - -$_ZNSt16allocator_traitsISaIPPK1AEE8allocateERS4_m = comdat any - -$_ZNSaIPPK1AED2Ev = comdat any - -$_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv = comdat any - -$_ZNSaIPPK1AEC2IS1_EERKSaIT_E = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPPK1AEC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPPK1AE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIPPK1AE11_M_max_sizeEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPPK1AED2Ev = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_ = comdat any - -$_ZNSt16allocator_traitsISaIPK1AEE8allocateERS3_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIPK1AE11_M_max_sizeEv = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_ = comdat any - -$_ZNSt16allocator_traitsISaIPK1AEE10deallocateERS3_PS2_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AE10deallocateEPS3_m = comdat any - -$_ZNSt16allocator_traitsISaIPPK1AEE10deallocateERS4_PS3_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPPK1AE10deallocateEPS4_m = comdat any - -$_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv = comdat any - -$_ZNSaIPK1AED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AED2Ev = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_ = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE5beginEv = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE3endEv = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EED2Ev = comdat any - -$_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2ERKS5_ = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_ = comdat any - -$_ZNSt16allocator_traitsISaIPK1AEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_ = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE16_M_push_back_auxIJS2_EEEvDpOT_ = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE4backEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AE9constructIS3_JS3_EEEvPT_DpOT0_ = comdat any - -$_ZNKSt5dequeIPK1ASaIS2_EE4sizeEv = comdat any - -$_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE22_M_reserve_map_at_backEm = comdat any - -$_ZStmiRKSt15_Deque_iteratorIPK1ARS2_PS2_ES7_ = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE11_S_max_sizeERKS3_ = comdat any - -$_ZNSt16allocator_traitsISaIPK1AEE8max_sizeERKS3_ = comdat any - -$_ZSt3minImERKT_S2_S2_ = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIPK1AE8max_sizeEv = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE17_M_reallocate_mapEmb = comdat any - -$_ZSt4copyIPPPK1AS4_ET0_T_S6_S5_ = comdat any - -$_ZSt13copy_backwardIPPPK1AS4_ET0_T_S6_S5_ = comdat any - -$_ZSt13__copy_move_aILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any - -$_ZSt12__miter_baseIPPPK1AET_S5_ = comdat any - -$_ZSt12__niter_wrapIPPPK1AET_RKS5_S5_ = comdat any - -$_ZSt14__copy_move_a1ILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any - -$_ZSt12__niter_baseIPPPK1AET_S5_ = comdat any - -$_ZSt14__copy_move_a2ILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any - -$_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPPK1AEEPT_PKS7_SA_S8_ = comdat any - -$_ZSt22__copy_move_backward_aILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any - -$_ZSt23__copy_move_backward_a1ILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any - -$_ZSt23__copy_move_backward_a2ILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any - -$_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPPK1AEEPT_PKS7_SA_S8_ = comdat any - -$_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv = comdat any - -$_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@.str.3 = private unnamed_addr constant [48 x i8] c"cannot create std::deque larger than max_size()\00", align 1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %adeque = alloca %"class.std::deque", align 8 - %a = alloca %class.A, align 8 - %ref.tmp = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #11 - store ptr %a, ptr %ref.tmp, align 8 - invoke void @_ZNSt5dequeIPK1ASaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(80) %adeque, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #11 - %0 = load ptr, ptr %call, align 8 - store ptr %0, ptr %aptr, align 8 - %1 = load ptr, ptr %aptr, align 8 - %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) - to label %invoke.cont1 unwind label %lpad - -invoke.cont1: ; preds = %invoke.cont - store i32 0, ptr %retval, align 4 - call void @_ZNSt5dequeIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #11 - %4 = load i32, ptr %retval, align 4 - ret i32 %4 - -lpad: ; preds = %invoke.cont, %entry - %5 = landingpad { ptr, i32 } - cleanup - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - call void @_ZNSt5dequeIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #11 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef nonnull align 8 dereferenceable(8) %0) - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %ref.tmp = alloca %"struct.std::_Deque_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %ref.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #11 - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_Deque_iterator", align 8 - %agg.tmp2 = alloca %"struct.std::_Deque_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - call void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - invoke void @_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %agg.tmp, ptr noundef %agg.tmp2, ptr noundef nonnull align 1 dereferenceable(1) %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #12 - unreachable -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #4 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #11 - invoke void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - ret void - -lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - cleanup - %1 = extractvalue { ptr, i32 } %0, 0 - store ptr %1, ptr %exn.slot, align 8 - %2 = extractvalue { ptr, i32 } %0, 1 - store i32 %2, ptr %ehselector.slot, align 4 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #11 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__num_elements.addr = alloca i64, align 8 - %__num_nodes = alloca i64, align 8 - %ref.tmp = alloca i64, align 8 - %ref.tmp2 = alloca i64, align 8 - %__nstart = alloca ptr, align 8 - %__nfinish = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i64 %__num_elements, ptr %__num_elements.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__num_elements.addr, align 8 - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %div = udiv i64 %0, %call - %add = add i64 %div, 1 - store i64 %add, ptr %__num_nodes, align 8 - store i64 8, ptr %ref.tmp, align 8 - %1 = load i64, ptr %__num_nodes, align 8 - %add3 = add i64 %1, 2 - store i64 %add3, ptr %ref.tmp2, align 8 - %call4 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp2) - %2 = load i64, ptr %call4, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 1 - store i64 %2, ptr %_M_map_size, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %3 = load i64, ptr %_M_map_size6, align 8 - %call7 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %3) - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 0 - store ptr %call7, ptr %_M_map, align 8 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 0 - %4 = load ptr, ptr %_M_map10, align 8 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 1 - %5 = load i64, ptr %_M_map_size12, align 8 - %6 = load i64, ptr %__num_nodes, align 8 - %sub = sub i64 %5, %6 - %div13 = udiv i64 %sub, 2 - %add.ptr = getelementptr inbounds ptr, ptr %4, i64 %div13 - store ptr %add.ptr, ptr %__nstart, align 8 - %7 = load ptr, ptr %__nstart, align 8 - %8 = load i64, ptr %__num_nodes, align 8 - %add.ptr14 = getelementptr inbounds ptr, ptr %7, i64 %8 - store ptr %add.ptr14, ptr %__nfinish, align 8 - %9 = load ptr, ptr %__nstart, align 8 - %10 = load ptr, ptr %__nfinish, align 8 - invoke void @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - br label %try.cont - -lpad: ; preds = %entry - %11 = landingpad { ptr, i32 } - catch ptr null - %12 = extractvalue { ptr, i32 } %11, 0 - store ptr %12, ptr %exn.slot, align 8 - %13 = extractvalue { ptr, i32 } %11, 1 - store i32 %13, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %14 = call ptr @__cxa_begin_catch(ptr %exn) #11 - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 0 - %15 = load ptr, ptr %_M_map16, align 8 - %_M_impl17 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size18 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl17, i32 0, i32 1 - %16 = load i64, ptr %_M_map_size18, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #11 - %_M_impl19 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map20 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl19, i32 0, i32 0 - store ptr null, ptr %_M_map20, align 8 - %_M_impl21 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size22 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl21, i32 0, i32 1 - store i64 0, ptr %_M_map_size22, align 8 - invoke void @__cxa_rethrow() #13 - to label %unreachable unwind label %lpad23 - -lpad23: ; preds = %catch - %17 = landingpad { ptr, i32 } - cleanup - %18 = extractvalue { ptr, i32 } %17, 0 - store ptr %18, ptr %exn.slot, align 8 - %19 = extractvalue { ptr, i32 } %17, 1 - store i32 %19, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont24 unwind label %terminate.lpad - -invoke.cont24: ; preds = %lpad23 - br label %eh.resume - -try.cont: ; preds = %invoke.cont - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 2 - %20 = load ptr, ptr %__nstart, align 8 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start, ptr noundef %20) #11 - %_M_impl26 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl26, i32 0, i32 3 - %21 = load ptr, ptr %__nfinish, align 8 - %add.ptr27 = getelementptr inbounds ptr, ptr %21, i64 -1 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef %add.ptr27) #11 - %_M_impl28 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start29 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl28, i32 0, i32 2 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start29, i32 0, i32 1 - %22 = load ptr, ptr %_M_first, align 8 - %_M_impl30 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start31 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start31, i32 0, i32 0 - store ptr %22, ptr %_M_cur, align 8 - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 - %_M_first34 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish33, i32 0, i32 1 - %23 = load ptr, ptr %_M_first34, align 8 - %24 = load i64, ptr %__num_elements.addr, align 8 - %call35 = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %rem = urem i64 %24, %call35 - %add.ptr36 = getelementptr inbounds ptr, ptr %23, i64 %rem - %_M_impl37 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish38 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 - %_M_cur39 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 - store ptr %add.ptr36, ptr %_M_cur39, align 8 - ret void - -eh.resume: ; preds = %invoke.cont24 - %exn40 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn40, 0 - %lpad.val41 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val41 - -terminate.lpad: ; preds = %lpad23 - %25 = landingpad { ptr, i32 } - catch ptr null - %26 = extractvalue { ptr, i32 } %25, 0 - call void @__clang_call_terminate(ptr %26) #12 - unreachable - -unreachable: ; preds = %catch - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_map, align 8 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_map_size, align 8 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #11 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr null, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef %__size) #2 comdat { -entry: - %__size.addr = alloca i64, align 8 - store i64 %__size, ptr %__size.addr, align 8 - %0 = load i64, ptr %__size.addr, align 8 - %cmp = icmp ult i64 %0, 512 - br i1 %cmp, label %cond.true, label %cond.false - -cond.true: ; preds = %entry - %1 = load i64, ptr %__size.addr, align 8 - %div = udiv i64 512, %1 - br label %cond.end - -cond.false: ; preds = %entry - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %div, %cond.true ], [ 1, %cond.false ] - ret i64 %cond -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__b.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__n) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %__map_alloc = alloca %"class.std::allocator.0", align 1 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv(ptr sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %0 = load i64, ptr %__n.addr, align 8 - %call = invoke noundef ptr @_ZNSt16allocator_traitsISaIPPK1AEE8allocateERS4_m(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc, i64 noundef %0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - call void @_ZNSaIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #11 - ret ptr %call - -lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - cleanup - %2 = extractvalue { ptr, i32 } %1, 0 - store ptr %2, ptr %exn.slot, align 8 - %3 = extractvalue { ptr, i32 } %1, 1 - store i32 %3, ptr %ehselector.slot, align 4 - call void @_ZNSaIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #11 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__nstart.addr = alloca ptr, align 8 - %__nfinish.addr = alloca ptr, align 8 - %__cur = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store ptr %__nstart, ptr %__nstart.addr, align 8 - store ptr %__nfinish, ptr %__nfinish.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__nstart.addr, align 8 - store ptr %0, ptr %__cur, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %1 = load ptr, ptr %__cur, align 8 - %2 = load ptr, ptr %__nfinish.addr, align 8 - %cmp = icmp ult ptr %1, %2 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %call = invoke noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %for.body - %3 = load ptr, ptr %__cur, align 8 - store ptr %call, ptr %3, align 8 - br label %for.inc - -for.inc: ; preds = %invoke.cont - %4 = load ptr, ptr %__cur, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %__cur, align 8 - br label %for.cond, !llvm.loop !6 - -lpad: ; preds = %for.body - %5 = landingpad { ptr, i32 } - catch ptr null - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %8 = call ptr @__cxa_begin_catch(ptr %exn) #11 - %9 = load ptr, ptr %__nstart.addr, align 8 - %10 = load ptr, ptr %__cur, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) #11 - invoke void @__cxa_rethrow() #13 - to label %unreachable unwind label %lpad2 - -for.end: ; preds = %for.cond - br label %try.cont - -lpad2: ; preds = %catch - %11 = landingpad { ptr, i32 } - cleanup - %12 = extractvalue { ptr, i32 } %11, 0 - store ptr %12, ptr %exn.slot, align 8 - %13 = extractvalue { ptr, i32 } %11, 1 - store i32 %13, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont3 unwind label %terminate.lpad - -invoke.cont3: ; preds = %lpad2 - br label %eh.resume - -try.cont: ; preds = %for.end - ret void - -eh.resume: ; preds = %invoke.cont3 - %exn4 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn4, 0 - %lpad.val5 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val5 - -terminate.lpad: ; preds = %lpad2 - %14 = landingpad { ptr, i32 } - catch ptr null - %15 = extractvalue { ptr, i32 } %14, 0 - call void @__clang_call_terminate(ptr %15) #12 - unreachable - -unreachable: ; preds = %catch - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %__map_alloc = alloca %"class.std::allocator.0", align 1 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv(ptr sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - invoke void @_ZNSt16allocator_traitsISaIPPK1AEE10deallocateERS4_PS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc, ptr noundef %0, i64 noundef %1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSaIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #11 - ret void - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 - unreachable -} - -declare void @__cxa_rethrow() - -declare void @__cxa_end_catch() - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #6 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #11 - call void @_ZSt9terminatev() #12 - unreachable -} - -declare void @_ZSt9terminatev() - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__new_node.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__new_node, ptr %__new_node.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__new_node.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr %0, ptr %_M_node, align 8 - %1 = load ptr, ptr %__new_node.addr, align 8 - %2 = load ptr, ptr %1, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr %2, ptr %_M_first, align 8 - %_M_first2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %3 = load ptr, ptr %_M_first2, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #11 - %add.ptr = getelementptr inbounds ptr, ptr %3, i64 %call - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr %add.ptr, ptr %_M_last, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv(ptr noalias sret(%"class.std::allocator.0") align 1 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - call void @_ZNSaIPPK1AEC2IS1_EERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %agg.result, ptr noundef nonnull align 1 dereferenceable(1) %call) #11 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaIPPK1AEE8allocateERS4_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorIPPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPPK1AEC2IS1_EERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 1 dereferenceable(1) %0) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorIPPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPPK1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #13 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #14 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPPK1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #7 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #8 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %call2 = call noundef ptr @_ZNSt16allocator_traitsISaIPK1AEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, i64 noundef %call) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nstart.addr = alloca ptr, align 8 - %__nfinish.addr = alloca ptr, align 8 - %__n = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__nstart, ptr %__nstart.addr, align 8 - store ptr %__nfinish, ptr %__nfinish.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__nstart.addr, align 8 - store ptr %0, ptr %__n, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %1 = load ptr, ptr %__n, align 8 - %2 = load ptr, ptr %__nfinish.addr, align 8 - %cmp = icmp ult ptr %1, %2 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %3 = load ptr, ptr %__n, align 8 - %4 = load ptr, ptr %3, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %4) #11 - br label %for.inc - -for.inc: ; preds = %for.body - %5 = load ptr, ptr %__n, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %5, i32 1 - store ptr %incdec.ptr, ptr %__n, align 8 - br label %for.cond, !llvm.loop !8 - -for.end: ; preds = %for.cond - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaIPK1AEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorIPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorIPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPK1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #13 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #14 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPK1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__p) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__p.addr, align 8 - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - invoke void @_ZNSt16allocator_traitsISaIPK1AEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef %0, i64 noundef %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - ret void - -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #12 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIPK1AEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPK1AE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPK1AE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #11 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #9 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIPPK1AEE10deallocateERS4_PS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPPK1AE10deallocateEPS4_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPPK1AE10deallocateEPS4_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #11 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #2 comdat align 2 { -entry: - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - ret i64 %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__first, ptr noundef %__last, ptr noundef nonnull align 1 dereferenceable(1) %0) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr noalias sret(%"struct.std::_Deque_iterator") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #11 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr noalias sret(%"struct.std::_Deque_iterator") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #11 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_map, align 8 - %tobool = icmp ne ptr %0, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 - %_M_node4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node4, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %2, i64 1 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %1, ptr noundef %add.ptr) #11 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 0 - %3 = load ptr, ptr %_M_map6, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #11 - br label %if.end - -if.end: ; preds = %if.then, %entry - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl8) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef nonnull align 8 dereferenceable(32) %__x) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_cur2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur2, align 8 - store ptr %1, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %__x.addr, align 8 - %_M_first3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %_M_first3, align 8 - store ptr %3, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - %4 = load ptr, ptr %__x.addr, align 8 - %_M_last4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 2 - %5 = load ptr, ptr %_M_last4, align 8 - store ptr %5, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - %6 = load ptr, ptr %__x.addr, align 8 - %_M_node5 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 3 - %7 = load ptr, ptr %_M_node5, align 8 - store ptr %7, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 - %1 = load ptr, ptr %_M_last, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %1, i64 -1 - %cmp = icmp ne ptr %0, %add.ptr - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur7 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur7, align 8 - %3 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaIPK1AEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #11 - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish9 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 - %_M_cur10 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur10, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_cur10, align 8 - br label %if.end - -if.else: ; preds = %entry - %5 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EE16_M_push_back_auxIJS2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef nonnull align 8 dereferenceable(8) %5) - br label %if.end - -if.end: ; preds = %if.else, %if.then - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIPK1AEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPK1AE9constructIS3_JS3_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #11 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE16_M_push_back_auxIJS2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call2 = call noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %cmp = icmp eq i64 %call, %call2 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt20__throw_length_errorPKc(ptr noundef @.str.3) #13 - unreachable - -if.end: ; preds = %entry - call void @_ZNSt5dequeIPK1ASaIS2_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 1) - %call3 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %0 = load ptr, ptr %_M_node, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %0, i64 1 - store ptr %call3, ptr %add.ptr, align 8 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaIPK1AEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #11 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 - %_M_node11 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish10, i32 0, i32 3 - %3 = load ptr, ptr %_M_node11, align 8 - %add.ptr12 = getelementptr inbounds ptr, ptr %3, i64 1 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish8, ptr noundef %add.ptr12) #11 - %_M_impl13 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish14 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl13, i32 0, i32 3 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish14, i32 0, i32 1 - %4 = load ptr, ptr %_M_first, align 8 - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 3 - %_M_cur17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish16, i32 0, i32 0 - store ptr %4, ptr %_M_cur17, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__tmp = alloca %"struct.std::_Deque_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %__tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv(ptr noundef nonnull align 8 dereferenceable(32) %__tmp) #11 - %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %__tmp) #11 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPK1AE9constructIS3_JS3_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - %2 = load ptr, ptr %1, align 8 - store ptr %2, ptr %0, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %call = call noundef i64 @_ZStmiRKSt15_Deque_iteratorIPK1ARS2_PS2_ES7_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #11 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call2 = call noundef i64 @_ZNSt5dequeIPK1ASaIS2_EE11_S_max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %call) #11 - ret i64 %call2 -} - -; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #7 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__nodes_to_add) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nodes_to_add.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__nodes_to_add, ptr %__nodes_to_add.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__nodes_to_add.addr, align 8 - %add = add i64 %0, 1 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 1 - %1 = load i64, ptr %_M_map_size, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 0 - %3 = load ptr, ptr %_M_map, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %2 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %sub = sub i64 %1, %sub.ptr.div - %cmp = icmp ugt i64 %add, %sub - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load i64, ptr %__nodes_to_add.addr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) - br label %if.end - -if.end: ; preds = %if.then, %entry - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorIPK1ARS2_PS2_ES7_(ptr noundef nonnull align 8 dereferenceable(32) %__x, ptr noundef nonnull align 8 dereferenceable(32) %__y) #2 comdat { -entry: - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #11 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %2 = load ptr, ptr %__y.addr, align 8 - %_M_node1 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 - %3 = load ptr, ptr %_M_node1, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %sub = sub nsw i64 %sub.ptr.div, 1 - %mul = mul nsw i64 %call, %sub - %4 = load ptr, ptr %__x.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 0 - %5 = load ptr, ptr %_M_cur, align 8 - %6 = load ptr, ptr %__x.addr, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 1 - %7 = load ptr, ptr %_M_first, align 8 - %sub.ptr.lhs.cast2 = ptrtoint ptr %5 to i64 - %sub.ptr.rhs.cast3 = ptrtoint ptr %7 to i64 - %sub.ptr.sub4 = sub i64 %sub.ptr.lhs.cast2, %sub.ptr.rhs.cast3 - %sub.ptr.div5 = sdiv exact i64 %sub.ptr.sub4, 8 - %add = add nsw i64 %mul, %sub.ptr.div5 - %8 = load ptr, ptr %__y.addr, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %8, i32 0, i32 2 - %9 = load ptr, ptr %_M_last, align 8 - %10 = load ptr, ptr %__y.addr, align 8 - %_M_cur6 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %10, i32 0, i32 0 - %11 = load ptr, ptr %_M_cur6, align 8 - %sub.ptr.lhs.cast7 = ptrtoint ptr %9 to i64 - %sub.ptr.rhs.cast8 = ptrtoint ptr %11 to i64 - %sub.ptr.sub9 = sub i64 %sub.ptr.lhs.cast7, %sub.ptr.rhs.cast8 - %sub.ptr.div10 = sdiv exact i64 %sub.ptr.sub9, 8 - %add11 = add nsw i64 %add, %sub.ptr.div10 - ret i64 %add11 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt5dequeIPK1ASaIS2_EE11_S_max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %__a.addr = alloca ptr, align 8 - %__diffmax = alloca i64, align 8 - %__allocmax = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 9223372036854775807, ptr %__diffmax, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNSt16allocator_traitsISaIPK1AEE8max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %0) #11 - store i64 %call, ptr %__allocmax, align 8 - %call1 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__diffmax, ptr noundef nonnull align 8 dereferenceable(8) %__allocmax) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %1 = load i64, ptr %call1, align 8 - ret i64 %1 - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt16allocator_traitsISaIPK1AEE8max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPK1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %0) #11 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__b.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__a.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPK1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPK1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret i64 %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__nodes_to_add, i1 noundef zeroext %__add_at_front) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nodes_to_add.addr = alloca i64, align 8 - %__add_at_front.addr = alloca i8, align 1 - %__old_num_nodes = alloca i64, align 8 - %__new_num_nodes = alloca i64, align 8 - %__new_nstart = alloca ptr, align 8 - %__new_map_size = alloca i64, align 8 - %__new_map = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__nodes_to_add, ptr %__nodes_to_add.addr, align 8 - %frombool = zext i1 %__add_at_front to i8 - store i8 %frombool, ptr %__add_at_front.addr, align 1 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %0 = load ptr, ptr %_M_node, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node3, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %add = add nsw i64 %sub.ptr.div, 1 - store i64 %add, ptr %__old_num_nodes, align 8 - %2 = load i64, ptr %__old_num_nodes, align 8 - %3 = load i64, ptr %__nodes_to_add.addr, align 8 - %add4 = add i64 %2, %3 - store i64 %add4, ptr %__new_num_nodes, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - %5 = load i64, ptr %__new_num_nodes, align 8 - %mul = mul i64 2, %5 - %cmp = icmp ugt i64 %4, %mul - br i1 %cmp, label %if.then, label %if.else31 - -if.then: ; preds = %entry - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 0 - %6 = load ptr, ptr %_M_map, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %7 = load i64, ptr %_M_map_size8, align 8 - %8 = load i64, ptr %__new_num_nodes, align 8 - %sub = sub i64 %7, %8 - %div = udiv i64 %sub, 2 - %add.ptr = getelementptr inbounds ptr, ptr %6, i64 %div - %9 = load i8, ptr %__add_at_front.addr, align 1 - %tobool = trunc i8 %9 to i1 - br i1 %tobool, label %cond.true, label %cond.false - -cond.true: ; preds = %if.then - %10 = load i64, ptr %__nodes_to_add.addr, align 8 - br label %cond.end - -cond.false: ; preds = %if.then - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %10, %cond.true ], [ 0, %cond.false ] - %add.ptr9 = getelementptr inbounds ptr, ptr %add.ptr, i64 %cond - store ptr %add.ptr9, ptr %__new_nstart, align 8 - %11 = load ptr, ptr %__new_nstart, align 8 - %_M_impl10 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start11 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl10, i32 0, i32 2 - %_M_node12 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start11, i32 0, i32 3 - %12 = load ptr, ptr %_M_node12, align 8 - %cmp13 = icmp ult ptr %11, %12 - br i1 %cmp13, label %if.then14, label %if.else - -if.then14: ; preds = %cond.end - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 - %_M_node17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start16, i32 0, i32 3 - %13 = load ptr, ptr %_M_node17, align 8 - %_M_impl18 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish19 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 - %_M_node20 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish19, i32 0, i32 3 - %14 = load ptr, ptr %_M_node20, align 8 - %add.ptr21 = getelementptr inbounds ptr, ptr %14, i64 1 - %15 = load ptr, ptr %__new_nstart, align 8 - %call = call noundef ptr @_ZSt4copyIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %13, ptr noundef %add.ptr21, ptr noundef %15) - br label %if.end - -if.else: ; preds = %cond.end - %_M_impl22 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start23 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 - %_M_node24 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start23, i32 0, i32 3 - %16 = load ptr, ptr %_M_node24, align 8 - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish26 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 - %_M_node27 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish26, i32 0, i32 3 - %17 = load ptr, ptr %_M_node27, align 8 - %add.ptr28 = getelementptr inbounds ptr, ptr %17, i64 1 - %18 = load ptr, ptr %__new_nstart, align 8 - %19 = load i64, ptr %__old_num_nodes, align 8 - %add.ptr29 = getelementptr inbounds ptr, ptr %18, i64 %19 - %call30 = call noundef ptr @_ZSt13copy_backwardIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %16, ptr noundef %add.ptr28, ptr noundef %add.ptr29) - br label %if.end - -if.end: ; preds = %if.else, %if.then14 - br label %if.end65 - -if.else31: ; preds = %entry - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 1 - %20 = load i64, ptr %_M_map_size33, align 8 - %_M_impl34 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size35 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl34, i32 0, i32 1 - %call36 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %_M_map_size35, ptr noundef nonnull align 8 dereferenceable(8) %__nodes_to_add.addr) - %21 = load i64, ptr %call36, align 8 - %add37 = add i64 %20, %21 - %add38 = add i64 %add37, 2 - store i64 %add38, ptr %__new_map_size, align 8 - %22 = load i64, ptr %__new_map_size, align 8 - %call39 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %22) - store ptr %call39, ptr %__new_map, align 8 - %23 = load ptr, ptr %__new_map, align 8 - %24 = load i64, ptr %__new_map_size, align 8 - %25 = load i64, ptr %__new_num_nodes, align 8 - %sub40 = sub i64 %24, %25 - %div41 = udiv i64 %sub40, 2 - %add.ptr42 = getelementptr inbounds ptr, ptr %23, i64 %div41 - %26 = load i8, ptr %__add_at_front.addr, align 1 - %tobool43 = trunc i8 %26 to i1 - br i1 %tobool43, label %cond.true44, label %cond.false45 - -cond.true44: ; preds = %if.else31 - %27 = load i64, ptr %__nodes_to_add.addr, align 8 - br label %cond.end46 - -cond.false45: ; preds = %if.else31 - br label %cond.end46 - -cond.end46: ; preds = %cond.false45, %cond.true44 - %cond47 = phi i64 [ %27, %cond.true44 ], [ 0, %cond.false45 ] - %add.ptr48 = getelementptr inbounds ptr, ptr %add.ptr42, i64 %cond47 - store ptr %add.ptr48, ptr %__new_nstart, align 8 - %_M_impl49 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start50 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl49, i32 0, i32 2 - %_M_node51 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start50, i32 0, i32 3 - %28 = load ptr, ptr %_M_node51, align 8 - %_M_impl52 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish53 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 - %_M_node54 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish53, i32 0, i32 3 - %29 = load ptr, ptr %_M_node54, align 8 - %add.ptr55 = getelementptr inbounds ptr, ptr %29, i64 1 - %30 = load ptr, ptr %__new_nstart, align 8 - %call56 = call noundef ptr @_ZSt4copyIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %28, ptr noundef %add.ptr55, ptr noundef %30) - %_M_impl57 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map58 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl57, i32 0, i32 0 - %31 = load ptr, ptr %_M_map58, align 8 - %_M_impl59 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size60 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl59, i32 0, i32 1 - %32 = load i64, ptr %_M_map_size60, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #11 - %33 = load ptr, ptr %__new_map, align 8 - %_M_impl61 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map62 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl61, i32 0, i32 0 - store ptr %33, ptr %_M_map62, align 8 - %34 = load i64, ptr %__new_map_size, align 8 - %_M_impl63 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size64 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl63, i32 0, i32 1 - store i64 %34, ptr %_M_map_size64, align 8 - br label %if.end65 - -if.end65: ; preds = %cond.end46, %if.end - %_M_impl66 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start67 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl66, i32 0, i32 2 - %35 = load ptr, ptr %__new_nstart, align 8 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start67, ptr noundef %35) #11 - %_M_impl68 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish69 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl68, i32 0, i32 3 - %36 = load ptr, ptr %__new_nstart, align 8 - %37 = load i64, ptr %__old_num_nodes, align 8 - %add.ptr70 = getelementptr inbounds ptr, ptr %36, i64 %37 - %add.ptr71 = getelementptr inbounds ptr, ptr %add.ptr70, i64 -1 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish69, ptr noundef %add.ptr71) #11 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt4copyIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__miter_baseIPPPK1AET_S5_(ptr noundef %0) - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__miter_baseIPPPK1AET_S5_(ptr noundef %1) - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt13__copy_move_aILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %call, ptr noundef %call1, ptr noundef %2) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt13copy_backwardIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__miter_baseIPPPK1AET_S5_(ptr noundef %0) - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__miter_baseIPPPK1AET_S5_(ptr noundef %1) - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt22__copy_move_backward_aILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %call, ptr noundef %call1, ptr noundef %2) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt13__copy_move_aILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %0) #11 - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %1) #11 - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %2) #11 - %call3 = call noundef ptr @_ZSt14__copy_move_a1ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %call, ptr noundef %call1, ptr noundef %call2) - %call4 = call noundef ptr @_ZSt12__niter_wrapIPPPK1AET_RKS5_S5_(ptr noundef nonnull align 8 dereferenceable(8) %__result.addr, ptr noundef %call3) - ret ptr %call4 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__miter_baseIPPPK1AET_S5_(ptr noundef %__it) #2 comdat { -entry: - %__it.addr = alloca ptr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %0 = load ptr, ptr %__it.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__niter_wrapIPPPK1AET_RKS5_S5_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %__res) #2 comdat { -entry: - %.addr = alloca ptr, align 8 - %__res.addr = alloca ptr, align 8 - store ptr %0, ptr %.addr, align 8 - store ptr %__res, ptr %__res.addr, align 8 - %1 = load ptr, ptr %__res.addr, align 8 - ret ptr %1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt14__copy_move_a1ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZSt14__copy_move_a2ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %__it) #2 comdat { -entry: - %__it.addr = alloca ptr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %0 = load ptr, ptr %__it.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt14__copy_move_a2ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPPK1AEEPT_PKS7_SA_S8_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPPK1AEEPT_PKS7_SA_S8_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #2 comdat align 2 { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %_Num = alloca i64, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__last.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - store i64 %sub.ptr.div, ptr %_Num, align 8 - %2 = load i64, ptr %_Num, align 8 - %tobool = icmp ne i64 %2, 0 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %3 = load ptr, ptr %__result.addr, align 8 - %4 = load ptr, ptr %__first.addr, align 8 - %5 = load i64, ptr %_Num, align 8 - %mul = mul i64 8, %5 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %3, ptr align 8 %4, i64 %mul, i1 false) - br label %if.end - -if.end: ; preds = %if.then, %entry - %6 = load ptr, ptr %__result.addr, align 8 - %7 = load i64, ptr %_Num, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %6, i64 %7 - ret ptr %add.ptr -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #10 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt22__copy_move_backward_aILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %0) #11 - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %1) #11 - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %2) #11 - %call3 = call noundef ptr @_ZSt23__copy_move_backward_a1ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %call, ptr noundef %call1, ptr noundef %call2) - %call4 = call noundef ptr @_ZSt12__niter_wrapIPPPK1AET_RKS5_S5_(ptr noundef nonnull align 8 dereferenceable(8) %__result.addr, ptr noundef %call3) - ret ptr %call4 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt23__copy_move_backward_a1ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZSt23__copy_move_backward_a2ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt23__copy_move_backward_a2ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPPK1AEEPT_PKS7_SA_S8_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPPK1AEEPT_PKS7_SA_S8_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #2 comdat align 2 { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %_Num = alloca i64, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__last.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - store i64 %sub.ptr.div, ptr %_Num, align 8 - %2 = load i64, ptr %_Num, align 8 - %tobool = icmp ne i64 %2, 0 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %3 = load ptr, ptr %__result.addr, align 8 - %4 = load i64, ptr %_Num, align 8 - %idx.neg = sub i64 0, %4 - %add.ptr = getelementptr inbounds ptr, ptr %3, i64 %idx.neg - %5 = load ptr, ptr %__first.addr, align 8 - %6 = load i64, ptr %_Num, align 8 - %mul = mul i64 8, %6 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr, ptr align 8 %5, i64 %mul, i1 false) - br label %if.end - -if.end: ; preds = %if.then, %entry - %7 = load ptr, ptr %__result.addr, align 8 - %8 = load i64, ptr %_Num, align 8 - %idx.neg1 = sub i64 0, %8 - %add.ptr2 = getelementptr inbounds ptr, ptr %7, i64 %idx.neg1 - ret ptr %add.ptr2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %_M_first, align 8 - %cmp = icmp eq ptr %0, %1 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %2, i64 -1 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %this1, ptr noundef %add.ptr) #11 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - %3 = load ptr, ptr %_M_last, align 8 - %_M_cur2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - store ptr %3, ptr %_M_cur2, align 8 - br label %if.end - -if.end: ; preds = %if.then, %entry - %_M_cur3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur3, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 -1 - store ptr %incdec.ptr, ptr %_M_cur3, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - ret ptr %0 -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #11 = { nounwind } -attributes #12 = { noreturn nounwind } -attributes #13 = { noreturn } -attributes #14 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} diff --git a/test_cases_bc/basic_cpp_tests/deque-2.cpp.bc b/test_cases_bc/basic_cpp_tests/deque-2.cpp.bc deleted file mode 100644 index 3cb0ecaa..00000000 --- a/test_cases_bc/basic_cpp_tests/deque-2.cpp.bc +++ /dev/null @@ -1,2246 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/deque-2.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/deque-2.cpp" -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-unknown-linux-gnu" - -%"class.std::deque" = type { %"class.std::_Deque_base" } -%"class.std::_Deque_base" = type { %"struct.std::_Deque_base>::_Deque_impl" } -%"struct.std::_Deque_base>::_Deque_impl" = type { %"struct.std::_Deque_base>::_Deque_impl_data" } -%"struct.std::_Deque_base>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" } -%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr } -%class.A = type { ptr } -%"class.std::allocator.0" = type { i8 } - -$_ZNSt5dequeIPK1ASaIS2_EEC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE9push_backEOS2_ = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE5beginEv = comdat any - -$_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EED2Ev = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EEC2Ev = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implC2Ev = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implD2Ev = comdat any - -$_ZNSaIPK1AEC2Ev = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE16_Deque_impl_dataC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AEC2Ev = comdat any - -$_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2Ev = comdat any - -$_ZSt16__deque_buf_sizem = comdat any - -$_ZSt3maxImERKT_S2_S2_ = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_ = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_ = comdat any - -$_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv = comdat any - -$_ZNSt16allocator_traitsISaIPPK1AEE8allocateERS4_m = comdat any - -$_ZNSaIPPK1AED2Ev = comdat any - -$_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv = comdat any - -$_ZNSaIPPK1AEC2IS1_EERKSaIT_E = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPPK1AEC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPPK1AE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIPPK1AE11_M_max_sizeEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPPK1AED2Ev = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_ = comdat any - -$_ZNSt16allocator_traitsISaIPK1AEE8allocateERS3_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIPK1AE11_M_max_sizeEv = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_ = comdat any - -$_ZNSt16allocator_traitsISaIPK1AEE10deallocateERS3_PS2_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AE10deallocateEPS3_m = comdat any - -$_ZNSt16allocator_traitsISaIPPK1AEE10deallocateERS4_PS3_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPPK1AE10deallocateEPS4_m = comdat any - -$_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv = comdat any - -$_ZNSaIPK1AED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AED2Ev = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_ = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE3endEv = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EED2Ev = comdat any - -$_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2ERKS5_ = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_ = comdat any - -$_ZNSt16allocator_traitsISaIPK1AEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_ = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE16_M_push_back_auxIJS2_EEEvDpOT_ = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE4backEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AE9constructIS3_JS3_EEEvPT_DpOT0_ = comdat any - -$_ZNKSt5dequeIPK1ASaIS2_EE4sizeEv = comdat any - -$_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE22_M_reserve_map_at_backEm = comdat any - -$_ZStmiRKSt15_Deque_iteratorIPK1ARS2_PS2_ES7_ = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE11_S_max_sizeERKS3_ = comdat any - -$_ZNSt16allocator_traitsISaIPK1AEE8max_sizeERKS3_ = comdat any - -$_ZSt3minImERKT_S2_S2_ = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIPK1AE8max_sizeEv = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE17_M_reallocate_mapEmb = comdat any - -$_ZSt4copyIPPPK1AS4_ET0_T_S6_S5_ = comdat any - -$_ZSt13copy_backwardIPPPK1AS4_ET0_T_S6_S5_ = comdat any - -$_ZSt13__copy_move_aILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any - -$_ZSt12__miter_baseIPPPK1AET_S5_ = comdat any - -$_ZSt12__niter_wrapIPPPK1AET_RKS5_S5_ = comdat any - -$_ZSt14__copy_move_a1ILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any - -$_ZSt12__niter_baseIPPPK1AET_S5_ = comdat any - -$_ZSt14__copy_move_a2ILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any - -$_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPPK1AEEPT_PKS7_SA_S8_ = comdat any - -$_ZSt22__copy_move_backward_aILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any - -$_ZSt23__copy_move_backward_a1ILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any - -$_ZSt23__copy_move_backward_a2ILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any - -$_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPPK1AEEPT_PKS7_SA_S8_ = comdat any - -$_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@.str.3 = private unnamed_addr constant [48 x i8] c"cannot create std::deque larger than max_size()\00", align 1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %adeque = alloca %"class.std::deque", align 8 - %a = alloca %class.A, align 8 - %ref.tmp = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %it = alloca %"struct.std::_Deque_iterator", align 8 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #11 - store ptr %a, ptr %ref.tmp, align 8 - invoke void @_ZNSt5dequeIPK1ASaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(80) %adeque, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %it, ptr noundef nonnull align 8 dereferenceable(80) %adeque) #11 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %it) #11 - %0 = load ptr, ptr %call, align 8 - store ptr %0, ptr %aptr, align 8 - %1 = load ptr, ptr %aptr, align 8 - %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) - to label %invoke.cont1 unwind label %lpad - -invoke.cont1: ; preds = %invoke.cont - store i32 0, ptr %retval, align 4 - call void @_ZNSt5dequeIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #11 - %4 = load i32, ptr %retval, align 4 - ret i32 %4 - -lpad: ; preds = %invoke.cont, %entry - %5 = landingpad { ptr, i32 } - cleanup - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - call void @_ZNSt5dequeIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #11 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef nonnull align 8 dereferenceable(8) %0) - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr noalias sret(%"struct.std::_Deque_iterator") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #11 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_Deque_iterator", align 8 - %agg.tmp2 = alloca %"struct.std::_Deque_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - call void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - invoke void @_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %agg.tmp, ptr noundef %agg.tmp2, ptr noundef nonnull align 1 dereferenceable(1) %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #12 - unreachable -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #4 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #11 - invoke void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - ret void - -lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - cleanup - %1 = extractvalue { ptr, i32 } %0, 0 - store ptr %1, ptr %exn.slot, align 8 - %2 = extractvalue { ptr, i32 } %0, 1 - store i32 %2, ptr %ehselector.slot, align 4 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #11 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__num_elements.addr = alloca i64, align 8 - %__num_nodes = alloca i64, align 8 - %ref.tmp = alloca i64, align 8 - %ref.tmp2 = alloca i64, align 8 - %__nstart = alloca ptr, align 8 - %__nfinish = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i64 %__num_elements, ptr %__num_elements.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__num_elements.addr, align 8 - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %div = udiv i64 %0, %call - %add = add i64 %div, 1 - store i64 %add, ptr %__num_nodes, align 8 - store i64 8, ptr %ref.tmp, align 8 - %1 = load i64, ptr %__num_nodes, align 8 - %add3 = add i64 %1, 2 - store i64 %add3, ptr %ref.tmp2, align 8 - %call4 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp2) - %2 = load i64, ptr %call4, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 1 - store i64 %2, ptr %_M_map_size, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %3 = load i64, ptr %_M_map_size6, align 8 - %call7 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %3) - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 0 - store ptr %call7, ptr %_M_map, align 8 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 0 - %4 = load ptr, ptr %_M_map10, align 8 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 1 - %5 = load i64, ptr %_M_map_size12, align 8 - %6 = load i64, ptr %__num_nodes, align 8 - %sub = sub i64 %5, %6 - %div13 = udiv i64 %sub, 2 - %add.ptr = getelementptr inbounds ptr, ptr %4, i64 %div13 - store ptr %add.ptr, ptr %__nstart, align 8 - %7 = load ptr, ptr %__nstart, align 8 - %8 = load i64, ptr %__num_nodes, align 8 - %add.ptr14 = getelementptr inbounds ptr, ptr %7, i64 %8 - store ptr %add.ptr14, ptr %__nfinish, align 8 - %9 = load ptr, ptr %__nstart, align 8 - %10 = load ptr, ptr %__nfinish, align 8 - invoke void @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - br label %try.cont - -lpad: ; preds = %entry - %11 = landingpad { ptr, i32 } - catch ptr null - %12 = extractvalue { ptr, i32 } %11, 0 - store ptr %12, ptr %exn.slot, align 8 - %13 = extractvalue { ptr, i32 } %11, 1 - store i32 %13, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %14 = call ptr @__cxa_begin_catch(ptr %exn) #11 - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 0 - %15 = load ptr, ptr %_M_map16, align 8 - %_M_impl17 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size18 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl17, i32 0, i32 1 - %16 = load i64, ptr %_M_map_size18, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #11 - %_M_impl19 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map20 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl19, i32 0, i32 0 - store ptr null, ptr %_M_map20, align 8 - %_M_impl21 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size22 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl21, i32 0, i32 1 - store i64 0, ptr %_M_map_size22, align 8 - invoke void @__cxa_rethrow() #13 - to label %unreachable unwind label %lpad23 - -lpad23: ; preds = %catch - %17 = landingpad { ptr, i32 } - cleanup - %18 = extractvalue { ptr, i32 } %17, 0 - store ptr %18, ptr %exn.slot, align 8 - %19 = extractvalue { ptr, i32 } %17, 1 - store i32 %19, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont24 unwind label %terminate.lpad - -invoke.cont24: ; preds = %lpad23 - br label %eh.resume - -try.cont: ; preds = %invoke.cont - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 2 - %20 = load ptr, ptr %__nstart, align 8 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start, ptr noundef %20) #11 - %_M_impl26 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl26, i32 0, i32 3 - %21 = load ptr, ptr %__nfinish, align 8 - %add.ptr27 = getelementptr inbounds ptr, ptr %21, i64 -1 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef %add.ptr27) #11 - %_M_impl28 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start29 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl28, i32 0, i32 2 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start29, i32 0, i32 1 - %22 = load ptr, ptr %_M_first, align 8 - %_M_impl30 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start31 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start31, i32 0, i32 0 - store ptr %22, ptr %_M_cur, align 8 - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 - %_M_first34 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish33, i32 0, i32 1 - %23 = load ptr, ptr %_M_first34, align 8 - %24 = load i64, ptr %__num_elements.addr, align 8 - %call35 = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %rem = urem i64 %24, %call35 - %add.ptr36 = getelementptr inbounds ptr, ptr %23, i64 %rem - %_M_impl37 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish38 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 - %_M_cur39 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 - store ptr %add.ptr36, ptr %_M_cur39, align 8 - ret void - -eh.resume: ; preds = %invoke.cont24 - %exn40 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn40, 0 - %lpad.val41 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val41 - -terminate.lpad: ; preds = %lpad23 - %25 = landingpad { ptr, i32 } - catch ptr null - %26 = extractvalue { ptr, i32 } %25, 0 - call void @__clang_call_terminate(ptr %26) #12 - unreachable - -unreachable: ; preds = %catch - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_map, align 8 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_map_size, align 8 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #11 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr null, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef %__size) #2 comdat { -entry: - %__size.addr = alloca i64, align 8 - store i64 %__size, ptr %__size.addr, align 8 - %0 = load i64, ptr %__size.addr, align 8 - %cmp = icmp ult i64 %0, 512 - br i1 %cmp, label %cond.true, label %cond.false - -cond.true: ; preds = %entry - %1 = load i64, ptr %__size.addr, align 8 - %div = udiv i64 512, %1 - br label %cond.end - -cond.false: ; preds = %entry - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %div, %cond.true ], [ 1, %cond.false ] - ret i64 %cond -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__b.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__n) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %__map_alloc = alloca %"class.std::allocator.0", align 1 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv(ptr sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %0 = load i64, ptr %__n.addr, align 8 - %call = invoke noundef ptr @_ZNSt16allocator_traitsISaIPPK1AEE8allocateERS4_m(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc, i64 noundef %0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - call void @_ZNSaIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #11 - ret ptr %call - -lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - cleanup - %2 = extractvalue { ptr, i32 } %1, 0 - store ptr %2, ptr %exn.slot, align 8 - %3 = extractvalue { ptr, i32 } %1, 1 - store i32 %3, ptr %ehselector.slot, align 4 - call void @_ZNSaIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #11 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__nstart.addr = alloca ptr, align 8 - %__nfinish.addr = alloca ptr, align 8 - %__cur = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store ptr %__nstart, ptr %__nstart.addr, align 8 - store ptr %__nfinish, ptr %__nfinish.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__nstart.addr, align 8 - store ptr %0, ptr %__cur, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %1 = load ptr, ptr %__cur, align 8 - %2 = load ptr, ptr %__nfinish.addr, align 8 - %cmp = icmp ult ptr %1, %2 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %call = invoke noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %for.body - %3 = load ptr, ptr %__cur, align 8 - store ptr %call, ptr %3, align 8 - br label %for.inc - -for.inc: ; preds = %invoke.cont - %4 = load ptr, ptr %__cur, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %__cur, align 8 - br label %for.cond, !llvm.loop !6 - -lpad: ; preds = %for.body - %5 = landingpad { ptr, i32 } - catch ptr null - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %8 = call ptr @__cxa_begin_catch(ptr %exn) #11 - %9 = load ptr, ptr %__nstart.addr, align 8 - %10 = load ptr, ptr %__cur, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) #11 - invoke void @__cxa_rethrow() #13 - to label %unreachable unwind label %lpad2 - -for.end: ; preds = %for.cond - br label %try.cont - -lpad2: ; preds = %catch - %11 = landingpad { ptr, i32 } - cleanup - %12 = extractvalue { ptr, i32 } %11, 0 - store ptr %12, ptr %exn.slot, align 8 - %13 = extractvalue { ptr, i32 } %11, 1 - store i32 %13, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont3 unwind label %terminate.lpad - -invoke.cont3: ; preds = %lpad2 - br label %eh.resume - -try.cont: ; preds = %for.end - ret void - -eh.resume: ; preds = %invoke.cont3 - %exn4 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn4, 0 - %lpad.val5 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val5 - -terminate.lpad: ; preds = %lpad2 - %14 = landingpad { ptr, i32 } - catch ptr null - %15 = extractvalue { ptr, i32 } %14, 0 - call void @__clang_call_terminate(ptr %15) #12 - unreachable - -unreachable: ; preds = %catch - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %__map_alloc = alloca %"class.std::allocator.0", align 1 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv(ptr sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - invoke void @_ZNSt16allocator_traitsISaIPPK1AEE10deallocateERS4_PS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc, ptr noundef %0, i64 noundef %1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSaIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #11 - ret void - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 - unreachable -} - -declare void @__cxa_rethrow() - -declare void @__cxa_end_catch() - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #6 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #11 - call void @_ZSt9terminatev() #12 - unreachable -} - -declare void @_ZSt9terminatev() - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__new_node.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__new_node, ptr %__new_node.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__new_node.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr %0, ptr %_M_node, align 8 - %1 = load ptr, ptr %__new_node.addr, align 8 - %2 = load ptr, ptr %1, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr %2, ptr %_M_first, align 8 - %_M_first2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %3 = load ptr, ptr %_M_first2, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #11 - %add.ptr = getelementptr inbounds ptr, ptr %3, i64 %call - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr %add.ptr, ptr %_M_last, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv(ptr noalias sret(%"class.std::allocator.0") align 1 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - call void @_ZNSaIPPK1AEC2IS1_EERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %agg.result, ptr noundef nonnull align 1 dereferenceable(1) %call) #11 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaIPPK1AEE8allocateERS4_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorIPPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPPK1AEC2IS1_EERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 1 dereferenceable(1) %0) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorIPPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPPK1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #13 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #14 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPPK1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #7 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #8 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %call2 = call noundef ptr @_ZNSt16allocator_traitsISaIPK1AEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, i64 noundef %call) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nstart.addr = alloca ptr, align 8 - %__nfinish.addr = alloca ptr, align 8 - %__n = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__nstart, ptr %__nstart.addr, align 8 - store ptr %__nfinish, ptr %__nfinish.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__nstart.addr, align 8 - store ptr %0, ptr %__n, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %1 = load ptr, ptr %__n, align 8 - %2 = load ptr, ptr %__nfinish.addr, align 8 - %cmp = icmp ult ptr %1, %2 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %3 = load ptr, ptr %__n, align 8 - %4 = load ptr, ptr %3, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %4) #11 - br label %for.inc - -for.inc: ; preds = %for.body - %5 = load ptr, ptr %__n, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %5, i32 1 - store ptr %incdec.ptr, ptr %__n, align 8 - br label %for.cond, !llvm.loop !8 - -for.end: ; preds = %for.cond - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaIPK1AEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorIPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorIPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPK1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #13 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #14 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPK1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__p) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__p.addr, align 8 - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - invoke void @_ZNSt16allocator_traitsISaIPK1AEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef %0, i64 noundef %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - ret void - -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #12 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIPK1AEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPK1AE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPK1AE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #11 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #9 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIPPK1AEE10deallocateERS4_PS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPPK1AE10deallocateEPS4_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPPK1AE10deallocateEPS4_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #11 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #2 comdat align 2 { -entry: - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - ret i64 %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__first, ptr noundef %__last, ptr noundef nonnull align 1 dereferenceable(1) %0) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr noalias sret(%"struct.std::_Deque_iterator") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #11 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_map, align 8 - %tobool = icmp ne ptr %0, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 - %_M_node4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node4, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %2, i64 1 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %1, ptr noundef %add.ptr) #11 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 0 - %3 = load ptr, ptr %_M_map6, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #11 - br label %if.end - -if.end: ; preds = %if.then, %entry - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl8) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef nonnull align 8 dereferenceable(32) %__x) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_cur2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur2, align 8 - store ptr %1, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %__x.addr, align 8 - %_M_first3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %_M_first3, align 8 - store ptr %3, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - %4 = load ptr, ptr %__x.addr, align 8 - %_M_last4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 2 - %5 = load ptr, ptr %_M_last4, align 8 - store ptr %5, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - %6 = load ptr, ptr %__x.addr, align 8 - %_M_node5 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 3 - %7 = load ptr, ptr %_M_node5, align 8 - store ptr %7, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 - %1 = load ptr, ptr %_M_last, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %1, i64 -1 - %cmp = icmp ne ptr %0, %add.ptr - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur7 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur7, align 8 - %3 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaIPK1AEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #11 - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish9 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 - %_M_cur10 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur10, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_cur10, align 8 - br label %if.end - -if.else: ; preds = %entry - %5 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EE16_M_push_back_auxIJS2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef nonnull align 8 dereferenceable(8) %5) - br label %if.end - -if.end: ; preds = %if.else, %if.then - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIPK1AEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPK1AE9constructIS3_JS3_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #11 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE16_M_push_back_auxIJS2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call2 = call noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %cmp = icmp eq i64 %call, %call2 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt20__throw_length_errorPKc(ptr noundef @.str.3) #13 - unreachable - -if.end: ; preds = %entry - call void @_ZNSt5dequeIPK1ASaIS2_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 1) - %call3 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %0 = load ptr, ptr %_M_node, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %0, i64 1 - store ptr %call3, ptr %add.ptr, align 8 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaIPK1AEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #11 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 - %_M_node11 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish10, i32 0, i32 3 - %3 = load ptr, ptr %_M_node11, align 8 - %add.ptr12 = getelementptr inbounds ptr, ptr %3, i64 1 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish8, ptr noundef %add.ptr12) #11 - %_M_impl13 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish14 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl13, i32 0, i32 3 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish14, i32 0, i32 1 - %4 = load ptr, ptr %_M_first, align 8 - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 3 - %_M_cur17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish16, i32 0, i32 0 - store ptr %4, ptr %_M_cur17, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__tmp = alloca %"struct.std::_Deque_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %__tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv(ptr noundef nonnull align 8 dereferenceable(32) %__tmp) #11 - %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %__tmp) #11 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPK1AE9constructIS3_JS3_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - %2 = load ptr, ptr %1, align 8 - store ptr %2, ptr %0, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %call = call noundef i64 @_ZStmiRKSt15_Deque_iteratorIPK1ARS2_PS2_ES7_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #11 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call2 = call noundef i64 @_ZNSt5dequeIPK1ASaIS2_EE11_S_max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %call) #11 - ret i64 %call2 -} - -; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #7 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__nodes_to_add) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nodes_to_add.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__nodes_to_add, ptr %__nodes_to_add.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__nodes_to_add.addr, align 8 - %add = add i64 %0, 1 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 1 - %1 = load i64, ptr %_M_map_size, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 0 - %3 = load ptr, ptr %_M_map, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %2 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %sub = sub i64 %1, %sub.ptr.div - %cmp = icmp ugt i64 %add, %sub - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load i64, ptr %__nodes_to_add.addr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) - br label %if.end - -if.end: ; preds = %if.then, %entry - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorIPK1ARS2_PS2_ES7_(ptr noundef nonnull align 8 dereferenceable(32) %__x, ptr noundef nonnull align 8 dereferenceable(32) %__y) #2 comdat { -entry: - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #11 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %2 = load ptr, ptr %__y.addr, align 8 - %_M_node1 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 - %3 = load ptr, ptr %_M_node1, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %sub = sub nsw i64 %sub.ptr.div, 1 - %mul = mul nsw i64 %call, %sub - %4 = load ptr, ptr %__x.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 0 - %5 = load ptr, ptr %_M_cur, align 8 - %6 = load ptr, ptr %__x.addr, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 1 - %7 = load ptr, ptr %_M_first, align 8 - %sub.ptr.lhs.cast2 = ptrtoint ptr %5 to i64 - %sub.ptr.rhs.cast3 = ptrtoint ptr %7 to i64 - %sub.ptr.sub4 = sub i64 %sub.ptr.lhs.cast2, %sub.ptr.rhs.cast3 - %sub.ptr.div5 = sdiv exact i64 %sub.ptr.sub4, 8 - %add = add nsw i64 %mul, %sub.ptr.div5 - %8 = load ptr, ptr %__y.addr, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %8, i32 0, i32 2 - %9 = load ptr, ptr %_M_last, align 8 - %10 = load ptr, ptr %__y.addr, align 8 - %_M_cur6 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %10, i32 0, i32 0 - %11 = load ptr, ptr %_M_cur6, align 8 - %sub.ptr.lhs.cast7 = ptrtoint ptr %9 to i64 - %sub.ptr.rhs.cast8 = ptrtoint ptr %11 to i64 - %sub.ptr.sub9 = sub i64 %sub.ptr.lhs.cast7, %sub.ptr.rhs.cast8 - %sub.ptr.div10 = sdiv exact i64 %sub.ptr.sub9, 8 - %add11 = add nsw i64 %add, %sub.ptr.div10 - ret i64 %add11 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt5dequeIPK1ASaIS2_EE11_S_max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %__a.addr = alloca ptr, align 8 - %__diffmax = alloca i64, align 8 - %__allocmax = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 9223372036854775807, ptr %__diffmax, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNSt16allocator_traitsISaIPK1AEE8max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %0) #11 - store i64 %call, ptr %__allocmax, align 8 - %call1 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__diffmax, ptr noundef nonnull align 8 dereferenceable(8) %__allocmax) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %1 = load i64, ptr %call1, align 8 - ret i64 %1 - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt16allocator_traitsISaIPK1AEE8max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPK1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %0) #11 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__b.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__a.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPK1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPK1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret i64 %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__nodes_to_add, i1 noundef zeroext %__add_at_front) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nodes_to_add.addr = alloca i64, align 8 - %__add_at_front.addr = alloca i8, align 1 - %__old_num_nodes = alloca i64, align 8 - %__new_num_nodes = alloca i64, align 8 - %__new_nstart = alloca ptr, align 8 - %__new_map_size = alloca i64, align 8 - %__new_map = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__nodes_to_add, ptr %__nodes_to_add.addr, align 8 - %frombool = zext i1 %__add_at_front to i8 - store i8 %frombool, ptr %__add_at_front.addr, align 1 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %0 = load ptr, ptr %_M_node, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node3, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %add = add nsw i64 %sub.ptr.div, 1 - store i64 %add, ptr %__old_num_nodes, align 8 - %2 = load i64, ptr %__old_num_nodes, align 8 - %3 = load i64, ptr %__nodes_to_add.addr, align 8 - %add4 = add i64 %2, %3 - store i64 %add4, ptr %__new_num_nodes, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - %5 = load i64, ptr %__new_num_nodes, align 8 - %mul = mul i64 2, %5 - %cmp = icmp ugt i64 %4, %mul - br i1 %cmp, label %if.then, label %if.else31 - -if.then: ; preds = %entry - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 0 - %6 = load ptr, ptr %_M_map, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %7 = load i64, ptr %_M_map_size8, align 8 - %8 = load i64, ptr %__new_num_nodes, align 8 - %sub = sub i64 %7, %8 - %div = udiv i64 %sub, 2 - %add.ptr = getelementptr inbounds ptr, ptr %6, i64 %div - %9 = load i8, ptr %__add_at_front.addr, align 1 - %tobool = trunc i8 %9 to i1 - br i1 %tobool, label %cond.true, label %cond.false - -cond.true: ; preds = %if.then - %10 = load i64, ptr %__nodes_to_add.addr, align 8 - br label %cond.end - -cond.false: ; preds = %if.then - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %10, %cond.true ], [ 0, %cond.false ] - %add.ptr9 = getelementptr inbounds ptr, ptr %add.ptr, i64 %cond - store ptr %add.ptr9, ptr %__new_nstart, align 8 - %11 = load ptr, ptr %__new_nstart, align 8 - %_M_impl10 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start11 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl10, i32 0, i32 2 - %_M_node12 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start11, i32 0, i32 3 - %12 = load ptr, ptr %_M_node12, align 8 - %cmp13 = icmp ult ptr %11, %12 - br i1 %cmp13, label %if.then14, label %if.else - -if.then14: ; preds = %cond.end - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 - %_M_node17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start16, i32 0, i32 3 - %13 = load ptr, ptr %_M_node17, align 8 - %_M_impl18 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish19 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 - %_M_node20 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish19, i32 0, i32 3 - %14 = load ptr, ptr %_M_node20, align 8 - %add.ptr21 = getelementptr inbounds ptr, ptr %14, i64 1 - %15 = load ptr, ptr %__new_nstart, align 8 - %call = call noundef ptr @_ZSt4copyIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %13, ptr noundef %add.ptr21, ptr noundef %15) - br label %if.end - -if.else: ; preds = %cond.end - %_M_impl22 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start23 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 - %_M_node24 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start23, i32 0, i32 3 - %16 = load ptr, ptr %_M_node24, align 8 - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish26 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 - %_M_node27 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish26, i32 0, i32 3 - %17 = load ptr, ptr %_M_node27, align 8 - %add.ptr28 = getelementptr inbounds ptr, ptr %17, i64 1 - %18 = load ptr, ptr %__new_nstart, align 8 - %19 = load i64, ptr %__old_num_nodes, align 8 - %add.ptr29 = getelementptr inbounds ptr, ptr %18, i64 %19 - %call30 = call noundef ptr @_ZSt13copy_backwardIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %16, ptr noundef %add.ptr28, ptr noundef %add.ptr29) - br label %if.end - -if.end: ; preds = %if.else, %if.then14 - br label %if.end65 - -if.else31: ; preds = %entry - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 1 - %20 = load i64, ptr %_M_map_size33, align 8 - %_M_impl34 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size35 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl34, i32 0, i32 1 - %call36 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %_M_map_size35, ptr noundef nonnull align 8 dereferenceable(8) %__nodes_to_add.addr) - %21 = load i64, ptr %call36, align 8 - %add37 = add i64 %20, %21 - %add38 = add i64 %add37, 2 - store i64 %add38, ptr %__new_map_size, align 8 - %22 = load i64, ptr %__new_map_size, align 8 - %call39 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %22) - store ptr %call39, ptr %__new_map, align 8 - %23 = load ptr, ptr %__new_map, align 8 - %24 = load i64, ptr %__new_map_size, align 8 - %25 = load i64, ptr %__new_num_nodes, align 8 - %sub40 = sub i64 %24, %25 - %div41 = udiv i64 %sub40, 2 - %add.ptr42 = getelementptr inbounds ptr, ptr %23, i64 %div41 - %26 = load i8, ptr %__add_at_front.addr, align 1 - %tobool43 = trunc i8 %26 to i1 - br i1 %tobool43, label %cond.true44, label %cond.false45 - -cond.true44: ; preds = %if.else31 - %27 = load i64, ptr %__nodes_to_add.addr, align 8 - br label %cond.end46 - -cond.false45: ; preds = %if.else31 - br label %cond.end46 - -cond.end46: ; preds = %cond.false45, %cond.true44 - %cond47 = phi i64 [ %27, %cond.true44 ], [ 0, %cond.false45 ] - %add.ptr48 = getelementptr inbounds ptr, ptr %add.ptr42, i64 %cond47 - store ptr %add.ptr48, ptr %__new_nstart, align 8 - %_M_impl49 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start50 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl49, i32 0, i32 2 - %_M_node51 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start50, i32 0, i32 3 - %28 = load ptr, ptr %_M_node51, align 8 - %_M_impl52 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish53 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 - %_M_node54 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish53, i32 0, i32 3 - %29 = load ptr, ptr %_M_node54, align 8 - %add.ptr55 = getelementptr inbounds ptr, ptr %29, i64 1 - %30 = load ptr, ptr %__new_nstart, align 8 - %call56 = call noundef ptr @_ZSt4copyIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %28, ptr noundef %add.ptr55, ptr noundef %30) - %_M_impl57 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map58 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl57, i32 0, i32 0 - %31 = load ptr, ptr %_M_map58, align 8 - %_M_impl59 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size60 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl59, i32 0, i32 1 - %32 = load i64, ptr %_M_map_size60, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #11 - %33 = load ptr, ptr %__new_map, align 8 - %_M_impl61 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map62 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl61, i32 0, i32 0 - store ptr %33, ptr %_M_map62, align 8 - %34 = load i64, ptr %__new_map_size, align 8 - %_M_impl63 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size64 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl63, i32 0, i32 1 - store i64 %34, ptr %_M_map_size64, align 8 - br label %if.end65 - -if.end65: ; preds = %cond.end46, %if.end - %_M_impl66 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start67 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl66, i32 0, i32 2 - %35 = load ptr, ptr %__new_nstart, align 8 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start67, ptr noundef %35) #11 - %_M_impl68 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish69 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl68, i32 0, i32 3 - %36 = load ptr, ptr %__new_nstart, align 8 - %37 = load i64, ptr %__old_num_nodes, align 8 - %add.ptr70 = getelementptr inbounds ptr, ptr %36, i64 %37 - %add.ptr71 = getelementptr inbounds ptr, ptr %add.ptr70, i64 -1 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish69, ptr noundef %add.ptr71) #11 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt4copyIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__miter_baseIPPPK1AET_S5_(ptr noundef %0) - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__miter_baseIPPPK1AET_S5_(ptr noundef %1) - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt13__copy_move_aILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %call, ptr noundef %call1, ptr noundef %2) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt13copy_backwardIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__miter_baseIPPPK1AET_S5_(ptr noundef %0) - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__miter_baseIPPPK1AET_S5_(ptr noundef %1) - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt22__copy_move_backward_aILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %call, ptr noundef %call1, ptr noundef %2) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt13__copy_move_aILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %0) #11 - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %1) #11 - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %2) #11 - %call3 = call noundef ptr @_ZSt14__copy_move_a1ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %call, ptr noundef %call1, ptr noundef %call2) - %call4 = call noundef ptr @_ZSt12__niter_wrapIPPPK1AET_RKS5_S5_(ptr noundef nonnull align 8 dereferenceable(8) %__result.addr, ptr noundef %call3) - ret ptr %call4 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__miter_baseIPPPK1AET_S5_(ptr noundef %__it) #2 comdat { -entry: - %__it.addr = alloca ptr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %0 = load ptr, ptr %__it.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__niter_wrapIPPPK1AET_RKS5_S5_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %__res) #2 comdat { -entry: - %.addr = alloca ptr, align 8 - %__res.addr = alloca ptr, align 8 - store ptr %0, ptr %.addr, align 8 - store ptr %__res, ptr %__res.addr, align 8 - %1 = load ptr, ptr %__res.addr, align 8 - ret ptr %1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt14__copy_move_a1ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZSt14__copy_move_a2ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %__it) #2 comdat { -entry: - %__it.addr = alloca ptr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %0 = load ptr, ptr %__it.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt14__copy_move_a2ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPPK1AEEPT_PKS7_SA_S8_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPPK1AEEPT_PKS7_SA_S8_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #2 comdat align 2 { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %_Num = alloca i64, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__last.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - store i64 %sub.ptr.div, ptr %_Num, align 8 - %2 = load i64, ptr %_Num, align 8 - %tobool = icmp ne i64 %2, 0 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %3 = load ptr, ptr %__result.addr, align 8 - %4 = load ptr, ptr %__first.addr, align 8 - %5 = load i64, ptr %_Num, align 8 - %mul = mul i64 8, %5 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %3, ptr align 8 %4, i64 %mul, i1 false) - br label %if.end - -if.end: ; preds = %if.then, %entry - %6 = load ptr, ptr %__result.addr, align 8 - %7 = load i64, ptr %_Num, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %6, i64 %7 - ret ptr %add.ptr -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #10 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt22__copy_move_backward_aILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %0) #11 - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %1) #11 - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %2) #11 - %call3 = call noundef ptr @_ZSt23__copy_move_backward_a1ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %call, ptr noundef %call1, ptr noundef %call2) - %call4 = call noundef ptr @_ZSt12__niter_wrapIPPPK1AET_RKS5_S5_(ptr noundef nonnull align 8 dereferenceable(8) %__result.addr, ptr noundef %call3) - ret ptr %call4 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt23__copy_move_backward_a1ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZSt23__copy_move_backward_a2ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt23__copy_move_backward_a2ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPPK1AEEPT_PKS7_SA_S8_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPPK1AEEPT_PKS7_SA_S8_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #2 comdat align 2 { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %_Num = alloca i64, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__last.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - store i64 %sub.ptr.div, ptr %_Num, align 8 - %2 = load i64, ptr %_Num, align 8 - %tobool = icmp ne i64 %2, 0 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %3 = load ptr, ptr %__result.addr, align 8 - %4 = load i64, ptr %_Num, align 8 - %idx.neg = sub i64 0, %4 - %add.ptr = getelementptr inbounds ptr, ptr %3, i64 %idx.neg - %5 = load ptr, ptr %__first.addr, align 8 - %6 = load i64, ptr %_Num, align 8 - %mul = mul i64 8, %6 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr, ptr align 8 %5, i64 %mul, i1 false) - br label %if.end - -if.end: ; preds = %if.then, %entry - %7 = load ptr, ptr %__result.addr, align 8 - %8 = load i64, ptr %_Num, align 8 - %idx.neg1 = sub i64 0, %8 - %add.ptr2 = getelementptr inbounds ptr, ptr %7, i64 %idx.neg1 - ret ptr %add.ptr2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %_M_first, align 8 - %cmp = icmp eq ptr %0, %1 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %2, i64 -1 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %this1, ptr noundef %add.ptr) #11 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - %3 = load ptr, ptr %_M_last, align 8 - %_M_cur2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - store ptr %3, ptr %_M_cur2, align 8 - br label %if.end - -if.end: ; preds = %if.then, %entry - %_M_cur3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur3, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 -1 - store ptr %incdec.ptr, ptr %_M_cur3, align 8 - ret ptr %this1 -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #11 = { nounwind } -attributes #12 = { noreturn nounwind } -attributes #13 = { noreturn } -attributes #14 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} diff --git a/test_cases_bc/basic_cpp_tests/deque-3.cpp.bc b/test_cases_bc/basic_cpp_tests/deque-3.cpp.bc deleted file mode 100644 index 56547ba8..00000000 --- a/test_cases_bc/basic_cpp_tests/deque-3.cpp.bc +++ /dev/null @@ -1,2203 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/deque-3.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/deque-3.cpp" -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-unknown-linux-gnu" - -%"class.std::deque" = type { %"class.std::_Deque_base" } -%"class.std::_Deque_base" = type { %"struct.std::_Deque_base>::_Deque_impl" } -%"struct.std::_Deque_base>::_Deque_impl" = type { %"struct.std::_Deque_base>::_Deque_impl_data" } -%"struct.std::_Deque_base>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" } -%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr } -%class.A = type { ptr } -%"class.std::allocator.0" = type { i8 } - -$_ZNSt5dequeI1ASaIS0_EEC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_ = comdat any - -$_ZNSt5dequeI1ASaIS0_EE5frontEv = comdat any - -$_ZNSt5dequeI1ASaIS0_EED2Ev = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implC2Ev = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev = comdat any - -$_ZNSaI1AEC2Ev = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE16_Deque_impl_dataC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AEC2Ev = comdat any - -$_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev = comdat any - -$_ZSt16__deque_buf_sizem = comdat any - -$_ZSt3maxImERKT_S2_S2_ = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_ = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_ = comdat any - -$_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv = comdat any - -$_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m = comdat any - -$_ZNSaIP1AED2Ev = comdat any - -$_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv = comdat any - -$_ZNSaIP1AEC2IS_EERKSaIT_E = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AEC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIP1AE11_M_max_sizeEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AED2Ev = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_ = comdat any - -$_ZNSt16allocator_traitsISaI1AEE8allocateERS1_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_ = comdat any - -$_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE10deallocateEPS1_m = comdat any - -$_ZNSt16allocator_traitsISaIP1AEE10deallocateERS2_PS1_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m = comdat any - -$_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv = comdat any - -$_ZNSaI1AED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AED2Ev = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_ = comdat any - -$_ZNSt5dequeI1ASaIS0_EE5beginEv = comdat any - -$_ZNSt5dequeI1ASaIS0_EE3endEv = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EED2Ev = comdat any - -$_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2ERKS3_ = comdat any - -$_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_ = comdat any - -$_ZNSt5dequeI1ASaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JRKS1_EEEvPT_DpOT0_ = comdat any - -$_ZN1AC2ERKS_ = comdat any - -$_ZNKSt5dequeI1ASaIS0_EE4sizeEv = comdat any - -$_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv = comdat any - -$_ZNSt5dequeI1ASaIS0_EE22_M_reserve_map_at_backEm = comdat any - -$_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_ = comdat any - -$_ZNSt5dequeI1ASaIS0_EE11_S_max_sizeERKS1_ = comdat any - -$_ZNSt16allocator_traitsISaI1AEE8max_sizeERKS1_ = comdat any - -$_ZSt3minImERKT_S2_S2_ = comdat any - -$_ZNK9__gnu_cxx13new_allocatorI1AE8max_sizeEv = comdat any - -$_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb = comdat any - -$_ZSt4copyIPP1AS2_ET0_T_S4_S3_ = comdat any - -$_ZSt13copy_backwardIPP1AS2_ET0_T_S4_S3_ = comdat any - -$_ZSt13__copy_move_aILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZSt12__miter_baseIPP1AET_S3_ = comdat any - -$_ZSt12__niter_wrapIPP1AET_RKS3_S3_ = comdat any - -$_ZSt14__copy_move_a1ILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZSt12__niter_baseIPP1AET_S3_ = comdat any - -$_ZSt14__copy_move_a2ILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AEEPT_PKS5_S8_S6_ = comdat any - -$_ZSt22__copy_move_backward_aILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZSt23__copy_move_backward_a1ILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZSt23__copy_move_backward_a2ILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AEEPT_PKS5_S8_S6_ = comdat any - -$_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@.str.3 = private unnamed_addr constant [48 x i8] c"cannot create std::deque larger than max_size()\00", align 1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %adeque = alloca %"class.std::deque", align 8 - %a = alloca %class.A, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #11 - invoke void @_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %adeque, ptr noundef nonnull align 8 dereferenceable(8) %a) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeI1ASaIS0_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #11 - store ptr %call, ptr %aptr, align 8 - %0 = load ptr, ptr %aptr, align 8 - %1 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %0, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %2 = load ptr, ptr %vfn, align 8 - invoke void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) - to label %invoke.cont1 unwind label %lpad - -invoke.cont1: ; preds = %invoke.cont - store i32 0, ptr %retval, align 4 - call void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #11 - %3 = load i32, ptr %retval, align 4 - ret i32 %3 - -lpad: ; preds = %invoke.cont, %entry - %4 = landingpad { ptr, i32 } - cleanup - %5 = extractvalue { ptr, i32 } %4, 0 - store ptr %5, ptr %exn.slot, align 8 - %6 = extractvalue { ptr, i32 } %4, 1 - store i32 %6, ptr %ehselector.slot, align 4 - call void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #11 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 - %1 = load ptr, ptr %_M_last, align 8 - %add.ptr = getelementptr inbounds %class.A, ptr %1, i64 -1 - %cmp = icmp ne ptr %0, %add.ptr - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur7 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur7, align 8 - %3 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #11 - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish9 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 - %_M_cur10 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur10, align 8 - %incdec.ptr = getelementptr inbounds %class.A, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_cur10, align 8 - br label %if.end - -if.else: ; preds = %entry - %5 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef nonnull align 8 dereferenceable(8) %5) - br label %if.end - -if.end: ; preds = %if.else, %if.then - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeI1ASaIS0_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %ref.tmp = alloca %"struct.std::_Deque_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %ref.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #11 - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_Deque_iterator", align 8 - %agg.tmp2 = alloca %"struct.std::_Deque_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - call void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - invoke void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %agg.tmp, ptr noundef %agg.tmp2, ptr noundef nonnull align 1 dereferenceable(1) %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt11_Deque_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #12 - unreachable -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #4 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #11 - invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - ret void - -lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - cleanup - %1 = extractvalue { ptr, i32 } %0, 0 - store ptr %1, ptr %exn.slot, align 8 - %2 = extractvalue { ptr, i32 } %0, 1 - store i32 %2, ptr %ehselector.slot, align 4 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #11 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__num_elements.addr = alloca i64, align 8 - %__num_nodes = alloca i64, align 8 - %ref.tmp = alloca i64, align 8 - %ref.tmp2 = alloca i64, align 8 - %__nstart = alloca ptr, align 8 - %__nfinish = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i64 %__num_elements, ptr %__num_elements.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__num_elements.addr, align 8 - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %div = udiv i64 %0, %call - %add = add i64 %div, 1 - store i64 %add, ptr %__num_nodes, align 8 - store i64 8, ptr %ref.tmp, align 8 - %1 = load i64, ptr %__num_nodes, align 8 - %add3 = add i64 %1, 2 - store i64 %add3, ptr %ref.tmp2, align 8 - %call4 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp2) - %2 = load i64, ptr %call4, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 1 - store i64 %2, ptr %_M_map_size, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %3 = load i64, ptr %_M_map_size6, align 8 - %call7 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %3) - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 0 - store ptr %call7, ptr %_M_map, align 8 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 0 - %4 = load ptr, ptr %_M_map10, align 8 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 1 - %5 = load i64, ptr %_M_map_size12, align 8 - %6 = load i64, ptr %__num_nodes, align 8 - %sub = sub i64 %5, %6 - %div13 = udiv i64 %sub, 2 - %add.ptr = getelementptr inbounds ptr, ptr %4, i64 %div13 - store ptr %add.ptr, ptr %__nstart, align 8 - %7 = load ptr, ptr %__nstart, align 8 - %8 = load i64, ptr %__num_nodes, align 8 - %add.ptr14 = getelementptr inbounds ptr, ptr %7, i64 %8 - store ptr %add.ptr14, ptr %__nfinish, align 8 - %9 = load ptr, ptr %__nstart, align 8 - %10 = load ptr, ptr %__nfinish, align 8 - invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - br label %try.cont - -lpad: ; preds = %entry - %11 = landingpad { ptr, i32 } - catch ptr null - %12 = extractvalue { ptr, i32 } %11, 0 - store ptr %12, ptr %exn.slot, align 8 - %13 = extractvalue { ptr, i32 } %11, 1 - store i32 %13, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %14 = call ptr @__cxa_begin_catch(ptr %exn) #11 - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 0 - %15 = load ptr, ptr %_M_map16, align 8 - %_M_impl17 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size18 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl17, i32 0, i32 1 - %16 = load i64, ptr %_M_map_size18, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #11 - %_M_impl19 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map20 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl19, i32 0, i32 0 - store ptr null, ptr %_M_map20, align 8 - %_M_impl21 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size22 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl21, i32 0, i32 1 - store i64 0, ptr %_M_map_size22, align 8 - invoke void @__cxa_rethrow() #13 - to label %unreachable unwind label %lpad23 - -lpad23: ; preds = %catch - %17 = landingpad { ptr, i32 } - cleanup - %18 = extractvalue { ptr, i32 } %17, 0 - store ptr %18, ptr %exn.slot, align 8 - %19 = extractvalue { ptr, i32 } %17, 1 - store i32 %19, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont24 unwind label %terminate.lpad - -invoke.cont24: ; preds = %lpad23 - br label %eh.resume - -try.cont: ; preds = %invoke.cont - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 2 - %20 = load ptr, ptr %__nstart, align 8 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start, ptr noundef %20) #11 - %_M_impl26 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl26, i32 0, i32 3 - %21 = load ptr, ptr %__nfinish, align 8 - %add.ptr27 = getelementptr inbounds ptr, ptr %21, i64 -1 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef %add.ptr27) #11 - %_M_impl28 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start29 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl28, i32 0, i32 2 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start29, i32 0, i32 1 - %22 = load ptr, ptr %_M_first, align 8 - %_M_impl30 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start31 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start31, i32 0, i32 0 - store ptr %22, ptr %_M_cur, align 8 - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 - %_M_first34 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish33, i32 0, i32 1 - %23 = load ptr, ptr %_M_first34, align 8 - %24 = load i64, ptr %__num_elements.addr, align 8 - %call35 = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %rem = urem i64 %24, %call35 - %add.ptr36 = getelementptr inbounds %class.A, ptr %23, i64 %rem - %_M_impl37 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish38 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 - %_M_cur39 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 - store ptr %add.ptr36, ptr %_M_cur39, align 8 - ret void - -eh.resume: ; preds = %invoke.cont24 - %exn40 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn40, 0 - %lpad.val41 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val41 - -terminate.lpad: ; preds = %lpad23 - %25 = landingpad { ptr, i32 } - catch ptr null - %26 = extractvalue { ptr, i32 } %25, 0 - call void @__clang_call_terminate(ptr %26) #12 - unreachable - -unreachable: ; preds = %catch - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_map, align 8 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_map_size, align 8 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #11 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr null, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef %__size) #2 comdat { -entry: - %__size.addr = alloca i64, align 8 - store i64 %__size, ptr %__size.addr, align 8 - %0 = load i64, ptr %__size.addr, align 8 - %cmp = icmp ult i64 %0, 512 - br i1 %cmp, label %cond.true, label %cond.false - -cond.true: ; preds = %entry - %1 = load i64, ptr %__size.addr, align 8 - %div = udiv i64 512, %1 - br label %cond.end - -cond.false: ; preds = %entry - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %div, %cond.true ], [ 1, %cond.false ] - ret i64 %cond -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__b.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__n) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %__map_alloc = alloca %"class.std::allocator.0", align 1 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %0 = load i64, ptr %__n.addr, align 8 - %call = invoke noundef ptr @_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc, i64 noundef %0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - call void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #11 - ret ptr %call - -lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - cleanup - %2 = extractvalue { ptr, i32 } %1, 0 - store ptr %2, ptr %exn.slot, align 8 - %3 = extractvalue { ptr, i32 } %1, 1 - store i32 %3, ptr %ehselector.slot, align 4 - call void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #11 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__nstart.addr = alloca ptr, align 8 - %__nfinish.addr = alloca ptr, align 8 - %__cur = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store ptr %__nstart, ptr %__nstart.addr, align 8 - store ptr %__nfinish, ptr %__nfinish.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__nstart.addr, align 8 - store ptr %0, ptr %__cur, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %1 = load ptr, ptr %__cur, align 8 - %2 = load ptr, ptr %__nfinish.addr, align 8 - %cmp = icmp ult ptr %1, %2 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %call = invoke noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %for.body - %3 = load ptr, ptr %__cur, align 8 - store ptr %call, ptr %3, align 8 - br label %for.inc - -for.inc: ; preds = %invoke.cont - %4 = load ptr, ptr %__cur, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %__cur, align 8 - br label %for.cond, !llvm.loop !6 - -lpad: ; preds = %for.body - %5 = landingpad { ptr, i32 } - catch ptr null - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %8 = call ptr @__cxa_begin_catch(ptr %exn) #11 - %9 = load ptr, ptr %__nstart.addr, align 8 - %10 = load ptr, ptr %__cur, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) #11 - invoke void @__cxa_rethrow() #13 - to label %unreachable unwind label %lpad2 - -for.end: ; preds = %for.cond - br label %try.cont - -lpad2: ; preds = %catch - %11 = landingpad { ptr, i32 } - cleanup - %12 = extractvalue { ptr, i32 } %11, 0 - store ptr %12, ptr %exn.slot, align 8 - %13 = extractvalue { ptr, i32 } %11, 1 - store i32 %13, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont3 unwind label %terminate.lpad - -invoke.cont3: ; preds = %lpad2 - br label %eh.resume - -try.cont: ; preds = %for.end - ret void - -eh.resume: ; preds = %invoke.cont3 - %exn4 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn4, 0 - %lpad.val5 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val5 - -terminate.lpad: ; preds = %lpad2 - %14 = landingpad { ptr, i32 } - catch ptr null - %15 = extractvalue { ptr, i32 } %14, 0 - call void @__clang_call_terminate(ptr %15) #12 - unreachable - -unreachable: ; preds = %catch - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %__map_alloc = alloca %"class.std::allocator.0", align 1 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - invoke void @_ZNSt16allocator_traitsISaIP1AEE10deallocateERS2_PS1_m(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc, ptr noundef %0, i64 noundef %1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #11 - ret void - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 - unreachable -} - -declare void @__cxa_rethrow() - -declare void @__cxa_end_catch() - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #6 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #11 - call void @_ZSt9terminatev() #12 - unreachable -} - -declare void @_ZSt9terminatev() - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__new_node.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__new_node, ptr %__new_node.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__new_node.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr %0, ptr %_M_node, align 8 - %1 = load ptr, ptr %__new_node.addr, align 8 - %2 = load ptr, ptr %1, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr %2, ptr %_M_first, align 8 - %_M_first2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %3 = load ptr, ptr %_M_first2, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #11 - %add.ptr = getelementptr inbounds %class.A, ptr %3, i64 %call - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr %add.ptr, ptr %_M_last, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr noalias sret(%"class.std::allocator.0") align 1 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - call void @_ZNSaIP1AEC2IS_EERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %agg.result, ptr noundef nonnull align 1 dereferenceable(1) %call) #11 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIP1AEC2IS_EERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 1 dereferenceable(1) %0) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIP1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #13 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #14 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIP1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #7 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #8 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %call2 = call noundef ptr @_ZNSt16allocator_traitsISaI1AEE8allocateERS1_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, i64 noundef %call) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nstart.addr = alloca ptr, align 8 - %__nfinish.addr = alloca ptr, align 8 - %__n = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__nstart, ptr %__nstart.addr, align 8 - store ptr %__nfinish, ptr %__nfinish.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__nstart.addr, align 8 - store ptr %0, ptr %__n, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %1 = load ptr, ptr %__n, align 8 - %2 = load ptr, ptr %__nfinish.addr, align 8 - %cmp = icmp ult ptr %1, %2 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %3 = load ptr, ptr %__n, align 8 - %4 = load ptr, ptr %3, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %4) #11 - br label %for.inc - -for.inc: ; preds = %for.body - %5 = load ptr, ptr %__n, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %5, i32 1 - store ptr %incdec.ptr, ptr %__n, align 8 - br label %for.cond, !llvm.loop !8 - -for.end: ; preds = %for.cond - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaI1AEE8allocateERS1_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #13 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #14 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__p) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__p.addr, align 8 - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - invoke void @_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef %0, i64 noundef %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - ret void - -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #12 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #11 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #9 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIP1AEE10deallocateERS2_PS1_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #11 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #2 comdat align 2 { -entry: - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - ret i64 %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__first, ptr noundef %__last, ptr noundef nonnull align 1 dereferenceable(1) %0) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr noalias sret(%"struct.std::_Deque_iterator") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #11 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr noalias sret(%"struct.std::_Deque_iterator") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #11 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_map, align 8 - %tobool = icmp ne ptr %0, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 - %_M_node4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node4, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %2, i64 1 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %1, ptr noundef %add.ptr) #11 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 0 - %3 = load ptr, ptr %_M_map6, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #11 - br label %if.end - -if.end: ; preds = %if.then, %entry - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl8) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef nonnull align 8 dereferenceable(32) %__x) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_cur2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur2, align 8 - store ptr %1, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %__x.addr, align 8 - %_M_first3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %_M_first3, align 8 - store ptr %3, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - %4 = load ptr, ptr %__x.addr, align 8 - %_M_last4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 2 - %5 = load ptr, ptr %_M_last4, align 8 - store ptr %5, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - %6 = load ptr, ptr %__x.addr, align 8 - %_M_node5 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 3 - %7 = load ptr, ptr %_M_node5, align 8 - store ptr %7, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JRKS1_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #11 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNKSt5dequeI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call2 = call noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %cmp = icmp eq i64 %call, %call2 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt20__throw_length_errorPKc(ptr noundef @.str.3) #13 - unreachable - -if.end: ; preds = %entry - call void @_ZNSt5dequeI1ASaIS0_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 1) - %call3 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %0 = load ptr, ptr %_M_node, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %0, i64 1 - store ptr %call3, ptr %add.ptr, align 8 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #11 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 - %_M_node11 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish10, i32 0, i32 3 - %3 = load ptr, ptr %_M_node11, align 8 - %add.ptr12 = getelementptr inbounds ptr, ptr %3, i64 1 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish8, ptr noundef %add.ptr12) #11 - %_M_impl13 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish14 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl13, i32 0, i32 3 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish14, i32 0, i32 1 - %4 = load ptr, ptr %_M_first, align 8 - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 3 - %_M_cur17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish16, i32 0, i32 0 - store ptr %4, ptr %_M_cur17, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JRKS1_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %call = call noundef i64 @_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #11 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call2 = call noundef i64 @_ZNSt5dequeI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %call) #11 - ret i64 %call2 -} - -; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #7 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__nodes_to_add) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nodes_to_add.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__nodes_to_add, ptr %__nodes_to_add.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__nodes_to_add.addr, align 8 - %add = add i64 %0, 1 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 1 - %1 = load i64, ptr %_M_map_size, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 0 - %3 = load ptr, ptr %_M_map, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %2 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %sub = sub i64 %1, %sub.ptr.div - %cmp = icmp ugt i64 %add, %sub - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load i64, ptr %__nodes_to_add.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) - br label %if.end - -if.end: ; preds = %if.then, %entry - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_(ptr noundef nonnull align 8 dereferenceable(32) %__x, ptr noundef nonnull align 8 dereferenceable(32) %__y) #2 comdat { -entry: - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #11 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %2 = load ptr, ptr %__y.addr, align 8 - %_M_node1 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 - %3 = load ptr, ptr %_M_node1, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %sub = sub nsw i64 %sub.ptr.div, 1 - %mul = mul nsw i64 %call, %sub - %4 = load ptr, ptr %__x.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 0 - %5 = load ptr, ptr %_M_cur, align 8 - %6 = load ptr, ptr %__x.addr, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 1 - %7 = load ptr, ptr %_M_first, align 8 - %sub.ptr.lhs.cast2 = ptrtoint ptr %5 to i64 - %sub.ptr.rhs.cast3 = ptrtoint ptr %7 to i64 - %sub.ptr.sub4 = sub i64 %sub.ptr.lhs.cast2, %sub.ptr.rhs.cast3 - %sub.ptr.div5 = sdiv exact i64 %sub.ptr.sub4, 8 - %add = add nsw i64 %mul, %sub.ptr.div5 - %8 = load ptr, ptr %__y.addr, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %8, i32 0, i32 2 - %9 = load ptr, ptr %_M_last, align 8 - %10 = load ptr, ptr %__y.addr, align 8 - %_M_cur6 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %10, i32 0, i32 0 - %11 = load ptr, ptr %_M_cur6, align 8 - %sub.ptr.lhs.cast7 = ptrtoint ptr %9 to i64 - %sub.ptr.rhs.cast8 = ptrtoint ptr %11 to i64 - %sub.ptr.sub9 = sub i64 %sub.ptr.lhs.cast7, %sub.ptr.rhs.cast8 - %sub.ptr.div10 = sdiv exact i64 %sub.ptr.sub9, 8 - %add11 = add nsw i64 %add, %sub.ptr.div10 - ret i64 %add11 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt5dequeI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %__a.addr = alloca ptr, align 8 - %__diffmax = alloca i64, align 8 - %__allocmax = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 9223372036854775807, ptr %__diffmax, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNSt16allocator_traitsISaI1AEE8max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %0) #11 - store i64 %call, ptr %__allocmax, align 8 - %call1 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__diffmax, ptr noundef nonnull align 8 dereferenceable(8) %__allocmax) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %1 = load i64, ptr %call1, align 8 - ret i64 %1 - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt16allocator_traitsISaI1AEE8max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %0) #11 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__b.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__a.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret i64 %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__nodes_to_add, i1 noundef zeroext %__add_at_front) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nodes_to_add.addr = alloca i64, align 8 - %__add_at_front.addr = alloca i8, align 1 - %__old_num_nodes = alloca i64, align 8 - %__new_num_nodes = alloca i64, align 8 - %__new_nstart = alloca ptr, align 8 - %__new_map_size = alloca i64, align 8 - %__new_map = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__nodes_to_add, ptr %__nodes_to_add.addr, align 8 - %frombool = zext i1 %__add_at_front to i8 - store i8 %frombool, ptr %__add_at_front.addr, align 1 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %0 = load ptr, ptr %_M_node, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node3, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %add = add nsw i64 %sub.ptr.div, 1 - store i64 %add, ptr %__old_num_nodes, align 8 - %2 = load i64, ptr %__old_num_nodes, align 8 - %3 = load i64, ptr %__nodes_to_add.addr, align 8 - %add4 = add i64 %2, %3 - store i64 %add4, ptr %__new_num_nodes, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - %5 = load i64, ptr %__new_num_nodes, align 8 - %mul = mul i64 2, %5 - %cmp = icmp ugt i64 %4, %mul - br i1 %cmp, label %if.then, label %if.else31 - -if.then: ; preds = %entry - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 0 - %6 = load ptr, ptr %_M_map, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %7 = load i64, ptr %_M_map_size8, align 8 - %8 = load i64, ptr %__new_num_nodes, align 8 - %sub = sub i64 %7, %8 - %div = udiv i64 %sub, 2 - %add.ptr = getelementptr inbounds ptr, ptr %6, i64 %div - %9 = load i8, ptr %__add_at_front.addr, align 1 - %tobool = trunc i8 %9 to i1 - br i1 %tobool, label %cond.true, label %cond.false - -cond.true: ; preds = %if.then - %10 = load i64, ptr %__nodes_to_add.addr, align 8 - br label %cond.end - -cond.false: ; preds = %if.then - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %10, %cond.true ], [ 0, %cond.false ] - %add.ptr9 = getelementptr inbounds ptr, ptr %add.ptr, i64 %cond - store ptr %add.ptr9, ptr %__new_nstart, align 8 - %11 = load ptr, ptr %__new_nstart, align 8 - %_M_impl10 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start11 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl10, i32 0, i32 2 - %_M_node12 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start11, i32 0, i32 3 - %12 = load ptr, ptr %_M_node12, align 8 - %cmp13 = icmp ult ptr %11, %12 - br i1 %cmp13, label %if.then14, label %if.else - -if.then14: ; preds = %cond.end - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 - %_M_node17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start16, i32 0, i32 3 - %13 = load ptr, ptr %_M_node17, align 8 - %_M_impl18 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish19 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 - %_M_node20 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish19, i32 0, i32 3 - %14 = load ptr, ptr %_M_node20, align 8 - %add.ptr21 = getelementptr inbounds ptr, ptr %14, i64 1 - %15 = load ptr, ptr %__new_nstart, align 8 - %call = call noundef ptr @_ZSt4copyIPP1AS2_ET0_T_S4_S3_(ptr noundef %13, ptr noundef %add.ptr21, ptr noundef %15) - br label %if.end - -if.else: ; preds = %cond.end - %_M_impl22 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start23 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 - %_M_node24 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start23, i32 0, i32 3 - %16 = load ptr, ptr %_M_node24, align 8 - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish26 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 - %_M_node27 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish26, i32 0, i32 3 - %17 = load ptr, ptr %_M_node27, align 8 - %add.ptr28 = getelementptr inbounds ptr, ptr %17, i64 1 - %18 = load ptr, ptr %__new_nstart, align 8 - %19 = load i64, ptr %__old_num_nodes, align 8 - %add.ptr29 = getelementptr inbounds ptr, ptr %18, i64 %19 - %call30 = call noundef ptr @_ZSt13copy_backwardIPP1AS2_ET0_T_S4_S3_(ptr noundef %16, ptr noundef %add.ptr28, ptr noundef %add.ptr29) - br label %if.end - -if.end: ; preds = %if.else, %if.then14 - br label %if.end65 - -if.else31: ; preds = %entry - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 1 - %20 = load i64, ptr %_M_map_size33, align 8 - %_M_impl34 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size35 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl34, i32 0, i32 1 - %call36 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %_M_map_size35, ptr noundef nonnull align 8 dereferenceable(8) %__nodes_to_add.addr) - %21 = load i64, ptr %call36, align 8 - %add37 = add i64 %20, %21 - %add38 = add i64 %add37, 2 - store i64 %add38, ptr %__new_map_size, align 8 - %22 = load i64, ptr %__new_map_size, align 8 - %call39 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %22) - store ptr %call39, ptr %__new_map, align 8 - %23 = load ptr, ptr %__new_map, align 8 - %24 = load i64, ptr %__new_map_size, align 8 - %25 = load i64, ptr %__new_num_nodes, align 8 - %sub40 = sub i64 %24, %25 - %div41 = udiv i64 %sub40, 2 - %add.ptr42 = getelementptr inbounds ptr, ptr %23, i64 %div41 - %26 = load i8, ptr %__add_at_front.addr, align 1 - %tobool43 = trunc i8 %26 to i1 - br i1 %tobool43, label %cond.true44, label %cond.false45 - -cond.true44: ; preds = %if.else31 - %27 = load i64, ptr %__nodes_to_add.addr, align 8 - br label %cond.end46 - -cond.false45: ; preds = %if.else31 - br label %cond.end46 - -cond.end46: ; preds = %cond.false45, %cond.true44 - %cond47 = phi i64 [ %27, %cond.true44 ], [ 0, %cond.false45 ] - %add.ptr48 = getelementptr inbounds ptr, ptr %add.ptr42, i64 %cond47 - store ptr %add.ptr48, ptr %__new_nstart, align 8 - %_M_impl49 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start50 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl49, i32 0, i32 2 - %_M_node51 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start50, i32 0, i32 3 - %28 = load ptr, ptr %_M_node51, align 8 - %_M_impl52 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish53 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 - %_M_node54 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish53, i32 0, i32 3 - %29 = load ptr, ptr %_M_node54, align 8 - %add.ptr55 = getelementptr inbounds ptr, ptr %29, i64 1 - %30 = load ptr, ptr %__new_nstart, align 8 - %call56 = call noundef ptr @_ZSt4copyIPP1AS2_ET0_T_S4_S3_(ptr noundef %28, ptr noundef %add.ptr55, ptr noundef %30) - %_M_impl57 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map58 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl57, i32 0, i32 0 - %31 = load ptr, ptr %_M_map58, align 8 - %_M_impl59 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size60 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl59, i32 0, i32 1 - %32 = load i64, ptr %_M_map_size60, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #11 - %33 = load ptr, ptr %__new_map, align 8 - %_M_impl61 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map62 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl61, i32 0, i32 0 - store ptr %33, ptr %_M_map62, align 8 - %34 = load i64, ptr %__new_map_size, align 8 - %_M_impl63 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size64 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl63, i32 0, i32 1 - store i64 %34, ptr %_M_map_size64, align 8 - br label %if.end65 - -if.end65: ; preds = %cond.end46, %if.end - %_M_impl66 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start67 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl66, i32 0, i32 2 - %35 = load ptr, ptr %__new_nstart, align 8 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start67, ptr noundef %35) #11 - %_M_impl68 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish69 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl68, i32 0, i32 3 - %36 = load ptr, ptr %__new_nstart, align 8 - %37 = load i64, ptr %__old_num_nodes, align 8 - %add.ptr70 = getelementptr inbounds ptr, ptr %36, i64 %37 - %add.ptr71 = getelementptr inbounds ptr, ptr %add.ptr70, i64 -1 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish69, ptr noundef %add.ptr71) #11 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt4copyIPP1AS2_ET0_T_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__miter_baseIPP1AET_S3_(ptr noundef %0) - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__miter_baseIPP1AET_S3_(ptr noundef %1) - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt13__copy_move_aILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %call, ptr noundef %call1, ptr noundef %2) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt13copy_backwardIPP1AS2_ET0_T_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__miter_baseIPP1AET_S3_(ptr noundef %0) - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__miter_baseIPP1AET_S3_(ptr noundef %1) - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt22__copy_move_backward_aILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %call, ptr noundef %call1, ptr noundef %2) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt13__copy_move_aILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %0) #11 - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #11 - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #11 - %call3 = call noundef ptr @_ZSt14__copy_move_a1ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %call, ptr noundef %call1, ptr noundef %call2) - %call4 = call noundef ptr @_ZSt12__niter_wrapIPP1AET_RKS3_S3_(ptr noundef nonnull align 8 dereferenceable(8) %__result.addr, ptr noundef %call3) - ret ptr %call4 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__miter_baseIPP1AET_S3_(ptr noundef %__it) #2 comdat { -entry: - %__it.addr = alloca ptr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %0 = load ptr, ptr %__it.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__niter_wrapIPP1AET_RKS3_S3_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %__res) #2 comdat { -entry: - %.addr = alloca ptr, align 8 - %__res.addr = alloca ptr, align 8 - store ptr %0, ptr %.addr, align 8 - store ptr %__res, ptr %__res.addr, align 8 - %1 = load ptr, ptr %__res.addr, align 8 - ret ptr %1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt14__copy_move_a1ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZSt14__copy_move_a2ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %__it) #2 comdat { -entry: - %__it.addr = alloca ptr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %0 = load ptr, ptr %__it.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt14__copy_move_a2ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AEEPT_PKS5_S8_S6_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AEEPT_PKS5_S8_S6_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #2 comdat align 2 { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %_Num = alloca i64, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__last.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - store i64 %sub.ptr.div, ptr %_Num, align 8 - %2 = load i64, ptr %_Num, align 8 - %tobool = icmp ne i64 %2, 0 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %3 = load ptr, ptr %__result.addr, align 8 - %4 = load ptr, ptr %__first.addr, align 8 - %5 = load i64, ptr %_Num, align 8 - %mul = mul i64 8, %5 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %3, ptr align 8 %4, i64 %mul, i1 false) - br label %if.end - -if.end: ; preds = %if.then, %entry - %6 = load ptr, ptr %__result.addr, align 8 - %7 = load i64, ptr %_Num, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %6, i64 %7 - ret ptr %add.ptr -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #10 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt22__copy_move_backward_aILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %0) #11 - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #11 - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #11 - %call3 = call noundef ptr @_ZSt23__copy_move_backward_a1ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %call, ptr noundef %call1, ptr noundef %call2) - %call4 = call noundef ptr @_ZSt12__niter_wrapIPP1AET_RKS3_S3_(ptr noundef nonnull align 8 dereferenceable(8) %__result.addr, ptr noundef %call3) - ret ptr %call4 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt23__copy_move_backward_a1ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZSt23__copy_move_backward_a2ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt23__copy_move_backward_a2ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AEEPT_PKS5_S8_S6_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AEEPT_PKS5_S8_S6_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #2 comdat align 2 { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %_Num = alloca i64, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__last.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - store i64 %sub.ptr.div, ptr %_Num, align 8 - %2 = load i64, ptr %_Num, align 8 - %tobool = icmp ne i64 %2, 0 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %3 = load ptr, ptr %__result.addr, align 8 - %4 = load i64, ptr %_Num, align 8 - %idx.neg = sub i64 0, %4 - %add.ptr = getelementptr inbounds ptr, ptr %3, i64 %idx.neg - %5 = load ptr, ptr %__first.addr, align 8 - %6 = load i64, ptr %_Num, align 8 - %mul = mul i64 8, %6 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr, ptr align 8 %5, i64 %mul, i1 false) - br label %if.end - -if.end: ; preds = %if.then, %entry - %7 = load ptr, ptr %__result.addr, align 8 - %8 = load i64, ptr %_Num, align 8 - %idx.neg1 = sub i64 0, %8 - %add.ptr2 = getelementptr inbounds ptr, ptr %7, i64 %idx.neg1 - ret ptr %add.ptr2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - ret ptr %0 -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #11 = { nounwind } -attributes #12 = { noreturn nounwind } -attributes #13 = { noreturn } -attributes #14 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} diff --git a/test_cases_bc/basic_cpp_tests/deque-4.cpp.bc b/test_cases_bc/basic_cpp_tests/deque-4.cpp.bc deleted file mode 100644 index 177da3d6..00000000 --- a/test_cases_bc/basic_cpp_tests/deque-4.cpp.bc +++ /dev/null @@ -1,2191 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/deque-4.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/deque-4.cpp" -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-unknown-linux-gnu" - -%"class.std::deque" = type { %"class.std::_Deque_base" } -%"class.std::_Deque_base" = type { %"struct.std::_Deque_base>::_Deque_impl" } -%"struct.std::_Deque_base>::_Deque_impl" = type { %"struct.std::_Deque_base>::_Deque_impl_data" } -%"struct.std::_Deque_base>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" } -%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr } -%class.A = type { ptr } -%"class.std::allocator.0" = type { i8 } - -$_ZNSt5dequeI1ASaIS0_EEC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_ = comdat any - -$_ZNSt5dequeI1ASaIS0_EE5beginEv = comdat any - -$_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv = comdat any - -$_ZNSt5dequeI1ASaIS0_EED2Ev = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implC2Ev = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev = comdat any - -$_ZNSaI1AEC2Ev = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE16_Deque_impl_dataC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AEC2Ev = comdat any - -$_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev = comdat any - -$_ZSt16__deque_buf_sizem = comdat any - -$_ZSt3maxImERKT_S2_S2_ = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_ = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_ = comdat any - -$_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv = comdat any - -$_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m = comdat any - -$_ZNSaIP1AED2Ev = comdat any - -$_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv = comdat any - -$_ZNSaIP1AEC2IS_EERKSaIT_E = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AEC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIP1AE11_M_max_sizeEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AED2Ev = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_ = comdat any - -$_ZNSt16allocator_traitsISaI1AEE8allocateERS1_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_ = comdat any - -$_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE10deallocateEPS1_m = comdat any - -$_ZNSt16allocator_traitsISaIP1AEE10deallocateERS2_PS1_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m = comdat any - -$_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv = comdat any - -$_ZNSaI1AED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AED2Ev = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_ = comdat any - -$_ZNSt5dequeI1ASaIS0_EE3endEv = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EED2Ev = comdat any - -$_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2ERKS3_ = comdat any - -$_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_ = comdat any - -$_ZNSt5dequeI1ASaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JRKS1_EEEvPT_DpOT0_ = comdat any - -$_ZN1AC2ERKS_ = comdat any - -$_ZNKSt5dequeI1ASaIS0_EE4sizeEv = comdat any - -$_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv = comdat any - -$_ZNSt5dequeI1ASaIS0_EE22_M_reserve_map_at_backEm = comdat any - -$_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_ = comdat any - -$_ZNSt5dequeI1ASaIS0_EE11_S_max_sizeERKS1_ = comdat any - -$_ZNSt16allocator_traitsISaI1AEE8max_sizeERKS1_ = comdat any - -$_ZSt3minImERKT_S2_S2_ = comdat any - -$_ZNK9__gnu_cxx13new_allocatorI1AE8max_sizeEv = comdat any - -$_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb = comdat any - -$_ZSt4copyIPP1AS2_ET0_T_S4_S3_ = comdat any - -$_ZSt13copy_backwardIPP1AS2_ET0_T_S4_S3_ = comdat any - -$_ZSt13__copy_move_aILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZSt12__miter_baseIPP1AET_S3_ = comdat any - -$_ZSt12__niter_wrapIPP1AET_RKS3_S3_ = comdat any - -$_ZSt14__copy_move_a1ILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZSt12__niter_baseIPP1AET_S3_ = comdat any - -$_ZSt14__copy_move_a2ILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AEEPT_PKS5_S8_S6_ = comdat any - -$_ZSt22__copy_move_backward_aILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZSt23__copy_move_backward_a1ILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZSt23__copy_move_backward_a2ILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AEEPT_PKS5_S8_S6_ = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@.str.3 = private unnamed_addr constant [48 x i8] c"cannot create std::deque larger than max_size()\00", align 1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %adeque = alloca %"class.std::deque", align 8 - %a = alloca %class.A, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %it = alloca %"struct.std::_Deque_iterator", align 8 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #11 - invoke void @_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %adeque, ptr noundef nonnull align 8 dereferenceable(8) %a) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %it, ptr noundef nonnull align 8 dereferenceable(80) %adeque) #11 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %it) #11 - store ptr %call, ptr %aptr, align 8 - %0 = load ptr, ptr %aptr, align 8 - %1 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %0, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %2 = load ptr, ptr %vfn, align 8 - invoke void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) - to label %invoke.cont1 unwind label %lpad - -invoke.cont1: ; preds = %invoke.cont - store i32 0, ptr %retval, align 4 - call void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #11 - %3 = load i32, ptr %retval, align 4 - ret i32 %3 - -lpad: ; preds = %invoke.cont, %entry - %4 = landingpad { ptr, i32 } - cleanup - %5 = extractvalue { ptr, i32 } %4, 0 - store ptr %5, ptr %exn.slot, align 8 - %6 = extractvalue { ptr, i32 } %4, 1 - store i32 %6, ptr %ehselector.slot, align 4 - call void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %adeque) #11 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 - %1 = load ptr, ptr %_M_last, align 8 - %add.ptr = getelementptr inbounds %class.A, ptr %1, i64 -1 - %cmp = icmp ne ptr %0, %add.ptr - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur7 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur7, align 8 - %3 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #11 - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish9 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 - %_M_cur10 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur10, align 8 - %incdec.ptr = getelementptr inbounds %class.A, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_cur10, align 8 - br label %if.end - -if.else: ; preds = %entry - %5 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef nonnull align 8 dereferenceable(8) %5) - br label %if.end - -if.end: ; preds = %if.else, %if.then - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr noalias sret(%"struct.std::_Deque_iterator") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #11 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_Deque_iterator", align 8 - %agg.tmp2 = alloca %"struct.std::_Deque_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - call void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - invoke void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %agg.tmp, ptr noundef %agg.tmp2, ptr noundef nonnull align 1 dereferenceable(1) %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt11_Deque_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #12 - unreachable -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #4 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #11 - invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - ret void - -lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - cleanup - %1 = extractvalue { ptr, i32 } %0, 0 - store ptr %1, ptr %exn.slot, align 8 - %2 = extractvalue { ptr, i32 } %0, 1 - store i32 %2, ptr %ehselector.slot, align 4 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #11 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__num_elements.addr = alloca i64, align 8 - %__num_nodes = alloca i64, align 8 - %ref.tmp = alloca i64, align 8 - %ref.tmp2 = alloca i64, align 8 - %__nstart = alloca ptr, align 8 - %__nfinish = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i64 %__num_elements, ptr %__num_elements.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__num_elements.addr, align 8 - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %div = udiv i64 %0, %call - %add = add i64 %div, 1 - store i64 %add, ptr %__num_nodes, align 8 - store i64 8, ptr %ref.tmp, align 8 - %1 = load i64, ptr %__num_nodes, align 8 - %add3 = add i64 %1, 2 - store i64 %add3, ptr %ref.tmp2, align 8 - %call4 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp2) - %2 = load i64, ptr %call4, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 1 - store i64 %2, ptr %_M_map_size, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %3 = load i64, ptr %_M_map_size6, align 8 - %call7 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %3) - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 0 - store ptr %call7, ptr %_M_map, align 8 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 0 - %4 = load ptr, ptr %_M_map10, align 8 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 1 - %5 = load i64, ptr %_M_map_size12, align 8 - %6 = load i64, ptr %__num_nodes, align 8 - %sub = sub i64 %5, %6 - %div13 = udiv i64 %sub, 2 - %add.ptr = getelementptr inbounds ptr, ptr %4, i64 %div13 - store ptr %add.ptr, ptr %__nstart, align 8 - %7 = load ptr, ptr %__nstart, align 8 - %8 = load i64, ptr %__num_nodes, align 8 - %add.ptr14 = getelementptr inbounds ptr, ptr %7, i64 %8 - store ptr %add.ptr14, ptr %__nfinish, align 8 - %9 = load ptr, ptr %__nstart, align 8 - %10 = load ptr, ptr %__nfinish, align 8 - invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - br label %try.cont - -lpad: ; preds = %entry - %11 = landingpad { ptr, i32 } - catch ptr null - %12 = extractvalue { ptr, i32 } %11, 0 - store ptr %12, ptr %exn.slot, align 8 - %13 = extractvalue { ptr, i32 } %11, 1 - store i32 %13, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %14 = call ptr @__cxa_begin_catch(ptr %exn) #11 - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 0 - %15 = load ptr, ptr %_M_map16, align 8 - %_M_impl17 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size18 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl17, i32 0, i32 1 - %16 = load i64, ptr %_M_map_size18, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #11 - %_M_impl19 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map20 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl19, i32 0, i32 0 - store ptr null, ptr %_M_map20, align 8 - %_M_impl21 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size22 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl21, i32 0, i32 1 - store i64 0, ptr %_M_map_size22, align 8 - invoke void @__cxa_rethrow() #13 - to label %unreachable unwind label %lpad23 - -lpad23: ; preds = %catch - %17 = landingpad { ptr, i32 } - cleanup - %18 = extractvalue { ptr, i32 } %17, 0 - store ptr %18, ptr %exn.slot, align 8 - %19 = extractvalue { ptr, i32 } %17, 1 - store i32 %19, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont24 unwind label %terminate.lpad - -invoke.cont24: ; preds = %lpad23 - br label %eh.resume - -try.cont: ; preds = %invoke.cont - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 2 - %20 = load ptr, ptr %__nstart, align 8 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start, ptr noundef %20) #11 - %_M_impl26 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl26, i32 0, i32 3 - %21 = load ptr, ptr %__nfinish, align 8 - %add.ptr27 = getelementptr inbounds ptr, ptr %21, i64 -1 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef %add.ptr27) #11 - %_M_impl28 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start29 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl28, i32 0, i32 2 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start29, i32 0, i32 1 - %22 = load ptr, ptr %_M_first, align 8 - %_M_impl30 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start31 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start31, i32 0, i32 0 - store ptr %22, ptr %_M_cur, align 8 - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 - %_M_first34 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish33, i32 0, i32 1 - %23 = load ptr, ptr %_M_first34, align 8 - %24 = load i64, ptr %__num_elements.addr, align 8 - %call35 = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %rem = urem i64 %24, %call35 - %add.ptr36 = getelementptr inbounds %class.A, ptr %23, i64 %rem - %_M_impl37 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish38 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 - %_M_cur39 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 - store ptr %add.ptr36, ptr %_M_cur39, align 8 - ret void - -eh.resume: ; preds = %invoke.cont24 - %exn40 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn40, 0 - %lpad.val41 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val41 - -terminate.lpad: ; preds = %lpad23 - %25 = landingpad { ptr, i32 } - catch ptr null - %26 = extractvalue { ptr, i32 } %25, 0 - call void @__clang_call_terminate(ptr %26) #12 - unreachable - -unreachable: ; preds = %catch - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_map, align 8 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_map_size, align 8 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #11 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr null, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef %__size) #2 comdat { -entry: - %__size.addr = alloca i64, align 8 - store i64 %__size, ptr %__size.addr, align 8 - %0 = load i64, ptr %__size.addr, align 8 - %cmp = icmp ult i64 %0, 512 - br i1 %cmp, label %cond.true, label %cond.false - -cond.true: ; preds = %entry - %1 = load i64, ptr %__size.addr, align 8 - %div = udiv i64 512, %1 - br label %cond.end - -cond.false: ; preds = %entry - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %div, %cond.true ], [ 1, %cond.false ] - ret i64 %cond -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__b.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__n) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %__map_alloc = alloca %"class.std::allocator.0", align 1 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %0 = load i64, ptr %__n.addr, align 8 - %call = invoke noundef ptr @_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc, i64 noundef %0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - call void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #11 - ret ptr %call - -lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - cleanup - %2 = extractvalue { ptr, i32 } %1, 0 - store ptr %2, ptr %exn.slot, align 8 - %3 = extractvalue { ptr, i32 } %1, 1 - store i32 %3, ptr %ehselector.slot, align 4 - call void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #11 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__nstart.addr = alloca ptr, align 8 - %__nfinish.addr = alloca ptr, align 8 - %__cur = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store ptr %__nstart, ptr %__nstart.addr, align 8 - store ptr %__nfinish, ptr %__nfinish.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__nstart.addr, align 8 - store ptr %0, ptr %__cur, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %1 = load ptr, ptr %__cur, align 8 - %2 = load ptr, ptr %__nfinish.addr, align 8 - %cmp = icmp ult ptr %1, %2 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %call = invoke noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %for.body - %3 = load ptr, ptr %__cur, align 8 - store ptr %call, ptr %3, align 8 - br label %for.inc - -for.inc: ; preds = %invoke.cont - %4 = load ptr, ptr %__cur, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %__cur, align 8 - br label %for.cond, !llvm.loop !6 - -lpad: ; preds = %for.body - %5 = landingpad { ptr, i32 } - catch ptr null - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %8 = call ptr @__cxa_begin_catch(ptr %exn) #11 - %9 = load ptr, ptr %__nstart.addr, align 8 - %10 = load ptr, ptr %__cur, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) #11 - invoke void @__cxa_rethrow() #13 - to label %unreachable unwind label %lpad2 - -for.end: ; preds = %for.cond - br label %try.cont - -lpad2: ; preds = %catch - %11 = landingpad { ptr, i32 } - cleanup - %12 = extractvalue { ptr, i32 } %11, 0 - store ptr %12, ptr %exn.slot, align 8 - %13 = extractvalue { ptr, i32 } %11, 1 - store i32 %13, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont3 unwind label %terminate.lpad - -invoke.cont3: ; preds = %lpad2 - br label %eh.resume - -try.cont: ; preds = %for.end - ret void - -eh.resume: ; preds = %invoke.cont3 - %exn4 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn4, 0 - %lpad.val5 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val5 - -terminate.lpad: ; preds = %lpad2 - %14 = landingpad { ptr, i32 } - catch ptr null - %15 = extractvalue { ptr, i32 } %14, 0 - call void @__clang_call_terminate(ptr %15) #12 - unreachable - -unreachable: ; preds = %catch - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %__map_alloc = alloca %"class.std::allocator.0", align 1 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - invoke void @_ZNSt16allocator_traitsISaIP1AEE10deallocateERS2_PS1_m(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc, ptr noundef %0, i64 noundef %1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #11 - ret void - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 - unreachable -} - -declare void @__cxa_rethrow() - -declare void @__cxa_end_catch() - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #6 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #11 - call void @_ZSt9terminatev() #12 - unreachable -} - -declare void @_ZSt9terminatev() - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__new_node.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__new_node, ptr %__new_node.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__new_node.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr %0, ptr %_M_node, align 8 - %1 = load ptr, ptr %__new_node.addr, align 8 - %2 = load ptr, ptr %1, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr %2, ptr %_M_first, align 8 - %_M_first2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %3 = load ptr, ptr %_M_first2, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #11 - %add.ptr = getelementptr inbounds %class.A, ptr %3, i64 %call - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr %add.ptr, ptr %_M_last, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr noalias sret(%"class.std::allocator.0") align 1 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - call void @_ZNSaIP1AEC2IS_EERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %agg.result, ptr noundef nonnull align 1 dereferenceable(1) %call) #11 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIP1AEC2IS_EERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 1 dereferenceable(1) %0) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIP1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #13 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #14 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIP1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #7 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #8 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %call2 = call noundef ptr @_ZNSt16allocator_traitsISaI1AEE8allocateERS1_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, i64 noundef %call) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nstart.addr = alloca ptr, align 8 - %__nfinish.addr = alloca ptr, align 8 - %__n = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__nstart, ptr %__nstart.addr, align 8 - store ptr %__nfinish, ptr %__nfinish.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__nstart.addr, align 8 - store ptr %0, ptr %__n, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %1 = load ptr, ptr %__n, align 8 - %2 = load ptr, ptr %__nfinish.addr, align 8 - %cmp = icmp ult ptr %1, %2 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %3 = load ptr, ptr %__n, align 8 - %4 = load ptr, ptr %3, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %4) #11 - br label %for.inc - -for.inc: ; preds = %for.body - %5 = load ptr, ptr %__n, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %5, i32 1 - store ptr %incdec.ptr, ptr %__n, align 8 - br label %for.cond, !llvm.loop !8 - -for.end: ; preds = %for.cond - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaI1AEE8allocateERS1_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #13 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #14 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__p) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__p.addr, align 8 - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - invoke void @_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef %0, i64 noundef %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - ret void - -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #12 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #11 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #9 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIP1AEE10deallocateERS2_PS1_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #11 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #2 comdat align 2 { -entry: - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - ret i64 %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__first, ptr noundef %__last, ptr noundef nonnull align 1 dereferenceable(1) %0) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr noalias sret(%"struct.std::_Deque_iterator") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #11 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_map, align 8 - %tobool = icmp ne ptr %0, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 - %_M_node4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node4, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %2, i64 1 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %1, ptr noundef %add.ptr) #11 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 0 - %3 = load ptr, ptr %_M_map6, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #11 - br label %if.end - -if.end: ; preds = %if.then, %entry - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl8) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef nonnull align 8 dereferenceable(32) %__x) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_cur2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur2, align 8 - store ptr %1, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %__x.addr, align 8 - %_M_first3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %_M_first3, align 8 - store ptr %3, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - %4 = load ptr, ptr %__x.addr, align 8 - %_M_last4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 2 - %5 = load ptr, ptr %_M_last4, align 8 - store ptr %5, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - %6 = load ptr, ptr %__x.addr, align 8 - %_M_node5 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 3 - %7 = load ptr, ptr %_M_node5, align 8 - store ptr %7, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JRKS1_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #11 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNKSt5dequeI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call2 = call noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %cmp = icmp eq i64 %call, %call2 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt20__throw_length_errorPKc(ptr noundef @.str.3) #13 - unreachable - -if.end: ; preds = %entry - call void @_ZNSt5dequeI1ASaIS0_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 1) - %call3 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %0 = load ptr, ptr %_M_node, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %0, i64 1 - store ptr %call3, ptr %add.ptr, align 8 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #11 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 - %_M_node11 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish10, i32 0, i32 3 - %3 = load ptr, ptr %_M_node11, align 8 - %add.ptr12 = getelementptr inbounds ptr, ptr %3, i64 1 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish8, ptr noundef %add.ptr12) #11 - %_M_impl13 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish14 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl13, i32 0, i32 3 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish14, i32 0, i32 1 - %4 = load ptr, ptr %_M_first, align 8 - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 3 - %_M_cur17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish16, i32 0, i32 0 - store ptr %4, ptr %_M_cur17, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JRKS1_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #11 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %call = call noundef i64 @_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #11 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #11 - %call2 = call noundef i64 @_ZNSt5dequeI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %call) #11 - ret i64 %call2 -} - -; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #7 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__nodes_to_add) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nodes_to_add.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__nodes_to_add, ptr %__nodes_to_add.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__nodes_to_add.addr, align 8 - %add = add i64 %0, 1 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 1 - %1 = load i64, ptr %_M_map_size, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 0 - %3 = load ptr, ptr %_M_map, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %2 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %sub = sub i64 %1, %sub.ptr.div - %cmp = icmp ugt i64 %add, %sub - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load i64, ptr %__nodes_to_add.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) - br label %if.end - -if.end: ; preds = %if.then, %entry - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_(ptr noundef nonnull align 8 dereferenceable(32) %__x, ptr noundef nonnull align 8 dereferenceable(32) %__y) #2 comdat { -entry: - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #11 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %2 = load ptr, ptr %__y.addr, align 8 - %_M_node1 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 - %3 = load ptr, ptr %_M_node1, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %sub = sub nsw i64 %sub.ptr.div, 1 - %mul = mul nsw i64 %call, %sub - %4 = load ptr, ptr %__x.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 0 - %5 = load ptr, ptr %_M_cur, align 8 - %6 = load ptr, ptr %__x.addr, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 1 - %7 = load ptr, ptr %_M_first, align 8 - %sub.ptr.lhs.cast2 = ptrtoint ptr %5 to i64 - %sub.ptr.rhs.cast3 = ptrtoint ptr %7 to i64 - %sub.ptr.sub4 = sub i64 %sub.ptr.lhs.cast2, %sub.ptr.rhs.cast3 - %sub.ptr.div5 = sdiv exact i64 %sub.ptr.sub4, 8 - %add = add nsw i64 %mul, %sub.ptr.div5 - %8 = load ptr, ptr %__y.addr, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %8, i32 0, i32 2 - %9 = load ptr, ptr %_M_last, align 8 - %10 = load ptr, ptr %__y.addr, align 8 - %_M_cur6 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %10, i32 0, i32 0 - %11 = load ptr, ptr %_M_cur6, align 8 - %sub.ptr.lhs.cast7 = ptrtoint ptr %9 to i64 - %sub.ptr.rhs.cast8 = ptrtoint ptr %11 to i64 - %sub.ptr.sub9 = sub i64 %sub.ptr.lhs.cast7, %sub.ptr.rhs.cast8 - %sub.ptr.div10 = sdiv exact i64 %sub.ptr.sub9, 8 - %add11 = add nsw i64 %add, %sub.ptr.div10 - ret i64 %add11 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt5dequeI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %__a.addr = alloca ptr, align 8 - %__diffmax = alloca i64, align 8 - %__allocmax = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 9223372036854775807, ptr %__diffmax, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNSt16allocator_traitsISaI1AEE8max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %0) #11 - store i64 %call, ptr %__allocmax, align 8 - %call1 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__diffmax, ptr noundef nonnull align 8 dereferenceable(8) %__allocmax) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %1 = load i64, ptr %call1, align 8 - ret i64 %1 - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt16allocator_traitsISaI1AEE8max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %0) #11 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__b.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__a.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #11 - ret i64 %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__nodes_to_add, i1 noundef zeroext %__add_at_front) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nodes_to_add.addr = alloca i64, align 8 - %__add_at_front.addr = alloca i8, align 1 - %__old_num_nodes = alloca i64, align 8 - %__new_num_nodes = alloca i64, align 8 - %__new_nstart = alloca ptr, align 8 - %__new_map_size = alloca i64, align 8 - %__new_map = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__nodes_to_add, ptr %__nodes_to_add.addr, align 8 - %frombool = zext i1 %__add_at_front to i8 - store i8 %frombool, ptr %__add_at_front.addr, align 1 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %0 = load ptr, ptr %_M_node, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node3, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %add = add nsw i64 %sub.ptr.div, 1 - store i64 %add, ptr %__old_num_nodes, align 8 - %2 = load i64, ptr %__old_num_nodes, align 8 - %3 = load i64, ptr %__nodes_to_add.addr, align 8 - %add4 = add i64 %2, %3 - store i64 %add4, ptr %__new_num_nodes, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - %5 = load i64, ptr %__new_num_nodes, align 8 - %mul = mul i64 2, %5 - %cmp = icmp ugt i64 %4, %mul - br i1 %cmp, label %if.then, label %if.else31 - -if.then: ; preds = %entry - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 0 - %6 = load ptr, ptr %_M_map, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %7 = load i64, ptr %_M_map_size8, align 8 - %8 = load i64, ptr %__new_num_nodes, align 8 - %sub = sub i64 %7, %8 - %div = udiv i64 %sub, 2 - %add.ptr = getelementptr inbounds ptr, ptr %6, i64 %div - %9 = load i8, ptr %__add_at_front.addr, align 1 - %tobool = trunc i8 %9 to i1 - br i1 %tobool, label %cond.true, label %cond.false - -cond.true: ; preds = %if.then - %10 = load i64, ptr %__nodes_to_add.addr, align 8 - br label %cond.end - -cond.false: ; preds = %if.then - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %10, %cond.true ], [ 0, %cond.false ] - %add.ptr9 = getelementptr inbounds ptr, ptr %add.ptr, i64 %cond - store ptr %add.ptr9, ptr %__new_nstart, align 8 - %11 = load ptr, ptr %__new_nstart, align 8 - %_M_impl10 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start11 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl10, i32 0, i32 2 - %_M_node12 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start11, i32 0, i32 3 - %12 = load ptr, ptr %_M_node12, align 8 - %cmp13 = icmp ult ptr %11, %12 - br i1 %cmp13, label %if.then14, label %if.else - -if.then14: ; preds = %cond.end - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 - %_M_node17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start16, i32 0, i32 3 - %13 = load ptr, ptr %_M_node17, align 8 - %_M_impl18 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish19 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 - %_M_node20 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish19, i32 0, i32 3 - %14 = load ptr, ptr %_M_node20, align 8 - %add.ptr21 = getelementptr inbounds ptr, ptr %14, i64 1 - %15 = load ptr, ptr %__new_nstart, align 8 - %call = call noundef ptr @_ZSt4copyIPP1AS2_ET0_T_S4_S3_(ptr noundef %13, ptr noundef %add.ptr21, ptr noundef %15) - br label %if.end - -if.else: ; preds = %cond.end - %_M_impl22 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start23 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 - %_M_node24 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start23, i32 0, i32 3 - %16 = load ptr, ptr %_M_node24, align 8 - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish26 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 - %_M_node27 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish26, i32 0, i32 3 - %17 = load ptr, ptr %_M_node27, align 8 - %add.ptr28 = getelementptr inbounds ptr, ptr %17, i64 1 - %18 = load ptr, ptr %__new_nstart, align 8 - %19 = load i64, ptr %__old_num_nodes, align 8 - %add.ptr29 = getelementptr inbounds ptr, ptr %18, i64 %19 - %call30 = call noundef ptr @_ZSt13copy_backwardIPP1AS2_ET0_T_S4_S3_(ptr noundef %16, ptr noundef %add.ptr28, ptr noundef %add.ptr29) - br label %if.end - -if.end: ; preds = %if.else, %if.then14 - br label %if.end65 - -if.else31: ; preds = %entry - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 1 - %20 = load i64, ptr %_M_map_size33, align 8 - %_M_impl34 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size35 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl34, i32 0, i32 1 - %call36 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %_M_map_size35, ptr noundef nonnull align 8 dereferenceable(8) %__nodes_to_add.addr) - %21 = load i64, ptr %call36, align 8 - %add37 = add i64 %20, %21 - %add38 = add i64 %add37, 2 - store i64 %add38, ptr %__new_map_size, align 8 - %22 = load i64, ptr %__new_map_size, align 8 - %call39 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %22) - store ptr %call39, ptr %__new_map, align 8 - %23 = load ptr, ptr %__new_map, align 8 - %24 = load i64, ptr %__new_map_size, align 8 - %25 = load i64, ptr %__new_num_nodes, align 8 - %sub40 = sub i64 %24, %25 - %div41 = udiv i64 %sub40, 2 - %add.ptr42 = getelementptr inbounds ptr, ptr %23, i64 %div41 - %26 = load i8, ptr %__add_at_front.addr, align 1 - %tobool43 = trunc i8 %26 to i1 - br i1 %tobool43, label %cond.true44, label %cond.false45 - -cond.true44: ; preds = %if.else31 - %27 = load i64, ptr %__nodes_to_add.addr, align 8 - br label %cond.end46 - -cond.false45: ; preds = %if.else31 - br label %cond.end46 - -cond.end46: ; preds = %cond.false45, %cond.true44 - %cond47 = phi i64 [ %27, %cond.true44 ], [ 0, %cond.false45 ] - %add.ptr48 = getelementptr inbounds ptr, ptr %add.ptr42, i64 %cond47 - store ptr %add.ptr48, ptr %__new_nstart, align 8 - %_M_impl49 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start50 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl49, i32 0, i32 2 - %_M_node51 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start50, i32 0, i32 3 - %28 = load ptr, ptr %_M_node51, align 8 - %_M_impl52 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish53 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 - %_M_node54 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish53, i32 0, i32 3 - %29 = load ptr, ptr %_M_node54, align 8 - %add.ptr55 = getelementptr inbounds ptr, ptr %29, i64 1 - %30 = load ptr, ptr %__new_nstart, align 8 - %call56 = call noundef ptr @_ZSt4copyIPP1AS2_ET0_T_S4_S3_(ptr noundef %28, ptr noundef %add.ptr55, ptr noundef %30) - %_M_impl57 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map58 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl57, i32 0, i32 0 - %31 = load ptr, ptr %_M_map58, align 8 - %_M_impl59 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size60 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl59, i32 0, i32 1 - %32 = load i64, ptr %_M_map_size60, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #11 - %33 = load ptr, ptr %__new_map, align 8 - %_M_impl61 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map62 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl61, i32 0, i32 0 - store ptr %33, ptr %_M_map62, align 8 - %34 = load i64, ptr %__new_map_size, align 8 - %_M_impl63 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size64 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl63, i32 0, i32 1 - store i64 %34, ptr %_M_map_size64, align 8 - br label %if.end65 - -if.end65: ; preds = %cond.end46, %if.end - %_M_impl66 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start67 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl66, i32 0, i32 2 - %35 = load ptr, ptr %__new_nstart, align 8 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start67, ptr noundef %35) #11 - %_M_impl68 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish69 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl68, i32 0, i32 3 - %36 = load ptr, ptr %__new_nstart, align 8 - %37 = load i64, ptr %__old_num_nodes, align 8 - %add.ptr70 = getelementptr inbounds ptr, ptr %36, i64 %37 - %add.ptr71 = getelementptr inbounds ptr, ptr %add.ptr70, i64 -1 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish69, ptr noundef %add.ptr71) #11 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt4copyIPP1AS2_ET0_T_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__miter_baseIPP1AET_S3_(ptr noundef %0) - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__miter_baseIPP1AET_S3_(ptr noundef %1) - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt13__copy_move_aILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %call, ptr noundef %call1, ptr noundef %2) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt13copy_backwardIPP1AS2_ET0_T_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__miter_baseIPP1AET_S3_(ptr noundef %0) - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__miter_baseIPP1AET_S3_(ptr noundef %1) - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt22__copy_move_backward_aILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %call, ptr noundef %call1, ptr noundef %2) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt13__copy_move_aILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %0) #11 - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #11 - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #11 - %call3 = call noundef ptr @_ZSt14__copy_move_a1ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %call, ptr noundef %call1, ptr noundef %call2) - %call4 = call noundef ptr @_ZSt12__niter_wrapIPP1AET_RKS3_S3_(ptr noundef nonnull align 8 dereferenceable(8) %__result.addr, ptr noundef %call3) - ret ptr %call4 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__miter_baseIPP1AET_S3_(ptr noundef %__it) #2 comdat { -entry: - %__it.addr = alloca ptr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %0 = load ptr, ptr %__it.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__niter_wrapIPP1AET_RKS3_S3_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %__res) #2 comdat { -entry: - %.addr = alloca ptr, align 8 - %__res.addr = alloca ptr, align 8 - store ptr %0, ptr %.addr, align 8 - store ptr %__res, ptr %__res.addr, align 8 - %1 = load ptr, ptr %__res.addr, align 8 - ret ptr %1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt14__copy_move_a1ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZSt14__copy_move_a2ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %__it) #2 comdat { -entry: - %__it.addr = alloca ptr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %0 = load ptr, ptr %__it.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt14__copy_move_a2ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AEEPT_PKS5_S8_S6_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AEEPT_PKS5_S8_S6_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #2 comdat align 2 { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %_Num = alloca i64, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__last.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - store i64 %sub.ptr.div, ptr %_Num, align 8 - %2 = load i64, ptr %_Num, align 8 - %tobool = icmp ne i64 %2, 0 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %3 = load ptr, ptr %__result.addr, align 8 - %4 = load ptr, ptr %__first.addr, align 8 - %5 = load i64, ptr %_Num, align 8 - %mul = mul i64 8, %5 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %3, ptr align 8 %4, i64 %mul, i1 false) - br label %if.end - -if.end: ; preds = %if.then, %entry - %6 = load ptr, ptr %__result.addr, align 8 - %7 = load i64, ptr %_Num, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %6, i64 %7 - ret ptr %add.ptr -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #10 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt22__copy_move_backward_aILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %0) #11 - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #11 - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #11 - %call3 = call noundef ptr @_ZSt23__copy_move_backward_a1ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %call, ptr noundef %call1, ptr noundef %call2) - %call4 = call noundef ptr @_ZSt12__niter_wrapIPP1AET_RKS3_S3_(ptr noundef nonnull align 8 dereferenceable(8) %__result.addr, ptr noundef %call3) - ret ptr %call4 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt23__copy_move_backward_a1ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZSt23__copy_move_backward_a2ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt23__copy_move_backward_a2ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AEEPT_PKS5_S8_S6_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AEEPT_PKS5_S8_S6_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #2 comdat align 2 { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %_Num = alloca i64, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__last.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - store i64 %sub.ptr.div, ptr %_Num, align 8 - %2 = load i64, ptr %_Num, align 8 - %tobool = icmp ne i64 %2, 0 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %3 = load ptr, ptr %__result.addr, align 8 - %4 = load i64, ptr %_Num, align 8 - %idx.neg = sub i64 0, %4 - %add.ptr = getelementptr inbounds ptr, ptr %3, i64 %idx.neg - %5 = load ptr, ptr %__first.addr, align 8 - %6 = load i64, ptr %_Num, align 8 - %mul = mul i64 8, %6 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr, ptr align 8 %5, i64 %mul, i1 false) - br label %if.end - -if.end: ; preds = %if.then, %entry - %7 = load ptr, ptr %__result.addr, align 8 - %8 = load i64, ptr %_Num, align 8 - %idx.neg1 = sub i64 0, %8 - %add.ptr2 = getelementptr inbounds ptr, ptr %7, i64 %idx.neg1 - ret ptr %add.ptr2 -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #11 = { nounwind } -attributes #12 = { noreturn nounwind } -attributes #13 = { noreturn } -attributes #14 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} diff --git a/test_cases_bc/basic_cpp_tests/destructor-1.cpp.bc b/test_cases_bc/basic_cpp_tests/destructor-1.cpp.bc deleted file mode 100644 index 82c81635..00000000 --- a/test_cases_bc/basic_cpp_tests/destructor-1.cpp.bc +++ /dev/null @@ -1,405 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/destructor-1.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/destructor-1.cpp" -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-unknown-linux-gnu" - -%class.B = type { %class.A, ptr } -%class.A = type { ptr, ptr } - -$_ZN1BC2EPi = comdat any - -$_ZN1AC2EPi = comdat any - -$_ZN1BD2Ev = comdat any - -$_ZN1BD0Ev = comdat any - -$_ZN1B1fEv = comdat any - -$_ZN1AD2Ev = comdat any - -$_ZN1AD0Ev = comdat any - -$_ZN1A1fEv = comdat any - -$__clang_call_terminate = comdat any - -$_ZTV1B = comdat any - -$_ZTS1B = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -$_ZTI1B = comdat any - -$_ZTV1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1B = linkonce_odr dso_local unnamed_addr constant { [5 x ptr] } { [5 x ptr] [ptr null, ptr @_ZTI1B, ptr @_ZN1BD2Ev, ptr @_ZN1BD0Ev, ptr @_ZN1B1fEv] }, comdat, align 8 -@_ZTVN10__cxxabiv120__si_class_type_infoE = external global ptr -@_ZTS1B = linkonce_odr dso_local constant [3 x i8] c"1B\00", comdat, align 1 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@_ZTI1B = linkonce_odr dso_local constant { ptr, ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), ptr @_ZTS1B, ptr @_ZTI1A }, comdat, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [5 x ptr] } { [5 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1AD2Ev, ptr @_ZN1AD0Ev, ptr @_ZN1A1fEv] }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main() #3 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %i = alloca ptr, align 8 - %b = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - store ptr @global_obj, ptr %i, align 8 - %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #9 - %0 = load ptr, ptr %i, align 8 - invoke void @_ZN1BC2EPi(ptr noundef nonnull align 8 dereferenceable(24) %call, ptr noundef %0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - store ptr %call, ptr %b, align 8 - %1 = load ptr, ptr %b, align 8 - %isnull = icmp eq ptr %1, null - br i1 %isnull, label %delete.end, label %delete.notnull - -delete.notnull: ; preds = %invoke.cont - %vtable = load ptr, ptr %1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 1 - %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(24) %1) #10 - br label %delete.end - -delete.end: ; preds = %delete.notnull, %invoke.cont - ret i32 0 - -lpad: ; preds = %entry - %3 = landingpad { ptr, i32 } - cleanup - %4 = extractvalue { ptr, i32 } %3, 0 - store ptr %4, ptr %exn.slot, align 8 - %5 = extractvalue { ptr, i32 } %3, 1 - store i32 %5, ptr %ehselector.slot, align 4 - call void @_ZdlPv(ptr noundef %call) #11 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val1 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val1 -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #4 - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1BC2EPi(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef %i) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %i.addr, align 8 - call void @_ZN1AC2EPi(ptr noundef nonnull align 8 dereferenceable(16) %this1, ptr noundef %0) - store ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - %bptr = getelementptr inbounds %class.B, ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %i.addr, align 8 - store ptr %1, ptr %bptr, align 8 - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #6 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2EPi(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef %i) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - %aptr = getelementptr inbounds %class.A, ptr %this1, i32 0, i32 1 - %0 = load ptr, ptr %i.addr, align 8 - store ptr %0, ptr %aptr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - %vtable = load ptr, ptr %this1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 2 - %0 = load ptr, ptr %vfn, align 8 - invoke void %0(ptr noundef nonnull align 8 dereferenceable(24) %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZN1AD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this1) #10 - ret void - -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #12 - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BD0Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN1BD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 - call void @_ZdlPv(ptr noundef %this1) #11 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEv(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %bptr = getelementptr inbounds %class.B, ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %bptr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - %vtable = load ptr, ptr %this1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 2 - %0 = load ptr, ptr %vfn, align 8 - invoke void %0(ptr noundef nonnull align 8 dereferenceable(16) %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - ret void - -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #12 - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AD0Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN1AD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this1) #10 - call void @_ZdlPv(ptr noundef %this1) #11 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEv(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %aptr = getelementptr inbounds %class.A, ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %aptr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #8 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #10 - call void @_ZSt9terminatev() #12 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { builtin allocsize(0) } -attributes #10 = { nounwind } -attributes #11 = { builtin nounwind } -attributes #12 = { noreturn nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/destructor-2.cpp.bc b/test_cases_bc/basic_cpp_tests/destructor-2.cpp.bc deleted file mode 100644 index bb6f1a6a..00000000 --- a/test_cases_bc/basic_cpp_tests/destructor-2.cpp.bc +++ /dev/null @@ -1,412 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/destructor-2.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/destructor-2.cpp" -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-unknown-linux-gnu" - -%class.B = type { %class.A, ptr } -%class.A = type { ptr, ptr } - -$_ZN1BC2EPi = comdat any - -$_ZN1AC2EPi = comdat any - -$_ZN1BD2Ev = comdat any - -$_ZN1BD0Ev = comdat any - -$_ZN1B1fEv = comdat any - -$_ZN1AD2Ev = comdat any - -$_ZN1AD0Ev = comdat any - -$_ZN1A1fEv = comdat any - -$__clang_call_terminate = comdat any - -$_ZTV1B = comdat any - -$_ZTS1B = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -$_ZTI1B = comdat any - -$_ZTV1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1B = linkonce_odr dso_local unnamed_addr constant { [5 x ptr] } { [5 x ptr] [ptr null, ptr @_ZTI1B, ptr @_ZN1BD2Ev, ptr @_ZN1BD0Ev, ptr @_ZN1B1fEv] }, comdat, align 8 -@_ZTVN10__cxxabiv120__si_class_type_infoE = external global ptr -@_ZTS1B = linkonce_odr dso_local constant [3 x i8] c"1B\00", comdat, align 1 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@_ZTI1B = linkonce_odr dso_local constant { ptr, ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), ptr @_ZTS1B, ptr @_ZTI1A }, comdat, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [5 x ptr] } { [5 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1AD2Ev, ptr @_ZN1AD0Ev, ptr @_ZN1A1fEv] }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z1gP1A(ptr noundef %p) #0 { -entry: - %p.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - %0 = load ptr, ptr %p.addr, align 8 - %vtable = load ptr, ptr %0, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 2 - %1 = load ptr, ptr %vfn, align 8 - call void %1(ptr noundef nonnull align 8 dereferenceable(16) %0) - ret void -} - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main() #3 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %i = alloca ptr, align 8 - %b = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - store ptr @global_obj, ptr %i, align 8 - %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #9 - %0 = load ptr, ptr %i, align 8 - invoke void @_ZN1BC2EPi(ptr noundef nonnull align 8 dereferenceable(24) %call, ptr noundef %0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - store ptr %call, ptr %b, align 8 - %1 = load ptr, ptr %b, align 8 - %isnull = icmp eq ptr %1, null - br i1 %isnull, label %delete.end, label %delete.notnull - -delete.notnull: ; preds = %invoke.cont - %vtable = load ptr, ptr %1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 1 - %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(24) %1) #10 - br label %delete.end - -delete.end: ; preds = %delete.notnull, %invoke.cont - ret i32 0 - -lpad: ; preds = %entry - %3 = landingpad { ptr, i32 } - cleanup - %4 = extractvalue { ptr, i32 } %3, 0 - store ptr %4, ptr %exn.slot, align 8 - %5 = extractvalue { ptr, i32 } %3, 1 - store i32 %5, ptr %ehselector.slot, align 4 - call void @_ZdlPv(ptr noundef %call) #11 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val1 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val1 -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #4 - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1BC2EPi(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef %i) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %i.addr, align 8 - call void @_ZN1AC2EPi(ptr noundef nonnull align 8 dereferenceable(16) %this1, ptr noundef %0) - store ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - %bptr = getelementptr inbounds %class.B, ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %i.addr, align 8 - store ptr %1, ptr %bptr, align 8 - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #6 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2EPi(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef %i) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - %aptr = getelementptr inbounds %class.A, ptr %this1, i32 0, i32 1 - %0 = load ptr, ptr %i.addr, align 8 - store ptr %0, ptr %aptr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - invoke void @_Z1gP1A(ptr noundef %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZN1AD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this1) #10 - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #12 - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BD0Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN1BD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 - call void @_ZdlPv(ptr noundef %this1) #11 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEv(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %bptr = getelementptr inbounds %class.B, ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %bptr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - invoke void @_Z1gP1A(ptr noundef %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #12 - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AD0Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN1AD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this1) #10 - call void @_ZdlPv(ptr noundef %this1) #11 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEv(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %aptr = getelementptr inbounds %class.A, ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %aptr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #8 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #10 - call void @_ZSt9terminatev() #12 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { builtin allocsize(0) } -attributes #10 = { nounwind } -attributes #11 = { builtin nounwind } -attributes #12 = { noreturn nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/diamond-inheritance.cpp.bc b/test_cases_bc/basic_cpp_tests/diamond-inheritance.cpp.bc deleted file mode 100644 index 180e7c5e..00000000 --- a/test_cases_bc/basic_cpp_tests/diamond-inheritance.cpp.bc +++ /dev/null @@ -1,357 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/diamond-inheritance.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/diamond-inheritance.cpp" -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-unknown-linux-gnu" - -%class.D = type { %class.B, %class.C } -%class.B = type { %class.A } -%class.A = type { ptr } -%class.C = type { %class.A } - -$_ZN1DC2Ev = comdat any - -$_ZN1BC2Ev = comdat any - -$_ZN1CC2Ev = comdat any - -$_ZN1B1fEPi = comdat any - -$_ZN1C1fEPi = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZN1A1fEPi = comdat any - -$_ZTV1D = comdat any - -$_ZTS1D = comdat any - -$_ZTS1B = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -$_ZTI1B = comdat any - -$_ZTS1C = comdat any - -$_ZTI1C = comdat any - -$_ZTI1D = comdat any - -$_ZTV1B = comdat any - -$_ZTV1A = comdat any - -$_ZTV1C = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj_b = dso_local global i32 0, align 4 -@global_ptr_b = dso_local global ptr @global_obj_b, align 8 -@global_obj_c = dso_local global i32 0, align 4 -@global_ptr_c = dso_local global ptr @global_obj_c, align 8 -@_ZTV1D = linkonce_odr dso_local unnamed_addr constant { [3 x ptr], [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1D, ptr @_ZN1B1fEPi], [3 x ptr] [ptr inttoptr (i64 -8 to ptr), ptr @_ZTI1D, ptr @_ZN1C1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv121__vmi_class_type_infoE = external global ptr -@_ZTS1D = linkonce_odr dso_local constant [3 x i8] c"1D\00", comdat, align 1 -@_ZTVN10__cxxabiv120__si_class_type_infoE = external global ptr -@_ZTS1B = linkonce_odr dso_local constant [3 x i8] c"1B\00", comdat, align 1 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@_ZTI1B = linkonce_odr dso_local constant { ptr, ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), ptr @_ZTS1B, ptr @_ZTI1A }, comdat, align 8 -@_ZTS1C = linkonce_odr dso_local constant [3 x i8] c"1C\00", comdat, align 1 -@_ZTI1C = linkonce_odr dso_local constant { ptr, ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), ptr @_ZTS1C, ptr @_ZTI1A }, comdat, align 8 -@_ZTI1D = linkonce_odr dso_local constant { ptr, ptr, i32, i32, ptr, i64, ptr, i64 } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv121__vmi_class_type_infoE, i64 2), ptr @_ZTS1D, i32 1, i32 2, ptr @_ZTI1B, i64 2, ptr @_ZTI1C, i64 2050 }, comdat, align 8 -@_ZTV1B = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1B, ptr @_ZN1B1fEPi] }, comdat, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1A1fEPi] }, comdat, align 8 -@_ZTV1C = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1C, ptr @_ZN1C1fEPi] }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main() #3 { -entry: - %retval = alloca i32, align 4 - %ptr_b = alloca ptr, align 8 - %ptr_c = alloca ptr, align 8 - %d = alloca %class.D, align 8 - %b = alloca ptr, align 8 - %c = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store ptr @global_obj_b, ptr %ptr_b, align 8 - store ptr @global_obj_c, ptr %ptr_c, align 8 - call void @_ZN1DC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %d) #5 - store ptr %d, ptr %b, align 8 - %0 = load ptr, ptr %b, align 8 - %1 = load ptr, ptr %ptr_b, align 8 - %vtable = load ptr, ptr %0, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) - %3 = icmp eq ptr %d, null - br i1 %3, label %cast.end, label %cast.notnull - -cast.notnull: ; preds = %entry - %add.ptr = getelementptr inbounds i8, ptr %d, i64 8 - br label %cast.end - -cast.end: ; preds = %cast.notnull, %entry - %cast.result = phi ptr [ %add.ptr, %cast.notnull ], [ null, %entry ] - store ptr %cast.result, ptr %c, align 8 - %4 = load ptr, ptr %c, align 8 - %5 = load ptr, ptr %ptr_c, align 8 - %vtable1 = load ptr, ptr %4, align 8 - %vfn2 = getelementptr inbounds ptr, ptr %vtable1, i64 0 - %6 = load ptr, ptr %vfn2, align 8 - call void %6(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %5) - ret i32 0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1DC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %0 = getelementptr inbounds i8, ptr %this1, i64 8 - call void @_ZN1CC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 - store ptr getelementptr inbounds ({ [3 x ptr], [3 x ptr] }, ptr @_ZTV1D, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - %add.ptr = getelementptr inbounds i8, ptr %this1, i64 8 - store ptr getelementptr inbounds ({ [3 x ptr], [3 x ptr] }, ptr @_ZTV1D, i32 0, inrange i32 1, i32 2), ptr %add.ptr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1CC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1C, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_b, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_ptr_c, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1C1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_b, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_ptr_c, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_b, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_ptr_c, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/dynamic_cast-1.cpp.bc b/test_cases_bc/basic_cpp_tests/dynamic_cast-1.cpp.bc deleted file mode 100644 index 16b1cf10..00000000 --- a/test_cases_bc/basic_cpp_tests/dynamic_cast-1.cpp.bc +++ /dev/null @@ -1,293 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/dynamic_cast-1.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/dynamic_cast-1.cpp" -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-unknown-linux-gnu" - -$_ZN1BC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZN1B1fEPi = comdat any - -$_ZN1A1fEPi = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -$_ZTS1B = comdat any - -$_ZTI1B = comdat any - -$_ZTV1B = comdat any - -$_ZTV1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@_ZTVN10__cxxabiv120__si_class_type_infoE = external global ptr -@_ZTS1B = linkonce_odr dso_local constant [3 x i8] c"1B\00", comdat, align 1 -@_ZTI1B = linkonce_odr dso_local constant { ptr, ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), ptr @_ZTS1B, ptr @_ZTI1A }, comdat, align 8 -@_ZTV1B = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1B, ptr @_ZN1B1fEPi] }, comdat, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1A1fEPi] }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #7 - call void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #8 - store ptr %call, ptr %pa, align 8 - %0 = load ptr, ptr %pa, align 8 - %1 = icmp eq ptr %0, null - br i1 %1, label %dynamic_cast.null, label %dynamic_cast.notnull - -dynamic_cast.notnull: ; preds = %entry - %2 = call ptr @__dynamic_cast(ptr %0, ptr @_ZTI1A, ptr @_ZTI1B, i64 0) #8 - br label %dynamic_cast.end - -dynamic_cast.null: ; preds = %entry - br label %dynamic_cast.end - -dynamic_cast.end: ; preds = %dynamic_cast.null, %dynamic_cast.notnull - %3 = phi ptr [ %2, %dynamic_cast.notnull ], [ null, %dynamic_cast.null ] - store ptr %3, ptr %pb, align 8 - %4 = load ptr, ptr %pb, align 8 - %tobool = icmp ne ptr %4, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %dynamic_cast.end - %5 = load ptr, ptr %pb, align 8 - %6 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %5, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %7 = load ptr, ptr %vfn, align 8 - call void %7(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef %6) - br label %if.end - -if.end: ; preds = %if.then, %dynamic_cast.end - ret i32 0 -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: nounwind memory(read) -declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) #6 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nounwind memory(read) } -attributes #7 = { builtin allocsize(0) } -attributes #8 = { nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/forward_list-1.cpp.bc b/test_cases_bc/basic_cpp_tests/forward_list-1.cpp.bc deleted file mode 100644 index 1672c53c..00000000 --- a/test_cases_bc/basic_cpp_tests/forward_list-1.cpp.bc +++ /dev/null @@ -1,949 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/forward_list-1.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/forward_list-1.cpp" -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-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%"class.std::forward_list" = type { %"struct.std::_Fwd_list_base" } -%"struct.std::_Fwd_list_base" = type { %"struct.std::_Fwd_list_base>::_Fwd_list_impl" } -%"struct.std::_Fwd_list_base>::_Fwd_list_impl" = type { %"struct.std::_Fwd_list_node_base" } -%"struct.std::_Fwd_list_node_base" = type { ptr } -%"struct.std::_Fwd_list_const_iterator" = type { ptr } -%"struct.std::_Fwd_list_node" = type { %"struct.std::_Fwd_list_node_base", %"struct.__gnu_cxx::__aligned_buffer" } -%"struct.__gnu_cxx::__aligned_buffer" = type { %"union.std::aligned_storage<8, 8>::type" } -%"union.std::aligned_storage<8, 8>::type" = type { [8 x i8] } - -$_ZNSt12forward_listIPK1ASaIS2_EEC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt12forward_listIPK1ASaIS2_EE10push_frontERKS2_ = comdat any - -$_ZNSt12forward_listIPK1ASaIS2_EE5frontEv = comdat any - -$_ZNSt12forward_listIPK1ASaIS2_EED2Ev = comdat any - -$_ZNSt14_Fwd_list_baseIPK1ASaIS2_EEC2Ev = comdat any - -$_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_Fwd_list_implC2Ev = comdat any - -$_ZNSaISt14_Fwd_list_nodeIPK1AEEC2Ev = comdat any - -$_ZNSt19_Fwd_list_node_baseC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEEC2Ev = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt14_Fwd_list_baseIPK1ASaIS2_EED2Ev = comdat any - -$_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_M_erase_afterEPSt19_Fwd_list_node_baseS6_ = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_Fwd_list_implD2Ev = comdat any - -$_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE7destroyIS3_EEvRS5_PT_ = comdat any - -$_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE21_M_get_Node_allocatorEv = comdat any - -$_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv = comdat any - -$_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE11_M_put_nodeEPSt14_Fwd_list_nodeIS2_E = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE7destroyIS4_EEvPT_ = comdat any - -$_ZN9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv = comdat any - -$_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv = comdat any - -$_ZNSt14pointer_traitsIPSt14_Fwd_list_nodeIPK1AEE10pointer_toERS4_ = comdat any - -$_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE10deallocateERS5_PS4_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE10deallocateEPS5_m = comdat any - -$_ZNSaISt14_Fwd_list_nodeIPK1AEED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEED2Ev = comdat any - -$_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE15_M_insert_afterIJRKS2_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS2_EDpOT_ = comdat any - -$_ZNKSt12forward_listIPK1ASaIS2_EE13cbefore_beginEv = comdat any - -$_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_M_create_nodeIJRKS2_EEEPSt14_Fwd_list_nodeIS2_EDpOT_ = comdat any - -$_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE11_M_get_nodeEv = comdat any - -$_ZNSt14_Fwd_list_nodeIPK1AEC2Ev = comdat any - -$_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE9constructIS3_JRKS3_EEEvRS5_PT_DpOT0_ = comdat any - -$_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE8allocateERS5_m = comdat any - -$_ZSt12__to_addressISt14_Fwd_list_nodeIPK1AEEPT_S6_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE11_M_max_sizeEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE9constructIS4_JRKS4_EEEvPT_DpOT0_ = comdat any - -$_ZNSt24_Fwd_list_const_iteratorIPK1AEC2EPKSt19_Fwd_list_node_base = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 -@__dso_handle = external hidden global i8 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_forward_list_1.cpp, ptr null }] - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init() #3 section ".text.startup" { -entry: - call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = call i32 @__cxa_atexit(ptr @_ZNSt8ios_base4InitD1Ev, ptr @_ZStL8__ioinit, ptr @__dso_handle) #5 - ret void -} - -declare void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 - -; Function Attrs: nounwind -declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 - -; Function Attrs: nounwind -declare i32 @__cxa_atexit(ptr, ptr, ptr) #5 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #6 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %alist = alloca %"class.std::forward_list", align 8 - %a = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt12forward_listIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 - %call = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #13 - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #5 - store ptr %call, ptr %a, align 8 - invoke void @_ZNSt12forward_listIPK1ASaIS2_EE10push_frontERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %alist, ptr noundef nonnull align 8 dereferenceable(8) %a) - to label %invoke.cont1 unwind label %lpad - -invoke.cont1: ; preds = %invoke.cont - %call3 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt12forward_listIPK1ASaIS2_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(8) %alist) - to label %invoke.cont2 unwind label %lpad - -invoke.cont2: ; preds = %invoke.cont1 - %0 = load ptr, ptr %call3, align 8 - store ptr %0, ptr %aptr, align 8 - %1 = load ptr, ptr %aptr, align 8 - %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) - to label %invoke.cont4 unwind label %lpad - -invoke.cont4: ; preds = %invoke.cont2 - store i32 0, ptr %retval, align 4 - call void @_ZNSt12forward_listIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 - %4 = load i32, ptr %retval, align 4 - ret i32 %4 - -lpad: ; preds = %invoke.cont2, %invoke.cont1, %invoke.cont, %entry - %5 = landingpad { ptr, i32 } - cleanup - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - call void @_ZNSt12forward_listIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val5 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val5 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12forward_listIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - ret void -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #8 - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt12forward_listIPK1ASaIS2_EE10push_frontERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__val) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__val.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_Fwd_list_const_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__val, ptr %__val.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call ptr @_ZNKSt12forward_listIPK1ASaIS2_EE13cbefore_beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %agg.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %0 = load ptr, ptr %__val.addr, align 8 - %coerce.dive2 = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %agg.tmp, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive2, align 8 - %call3 = call noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE15_M_insert_afterIJRKS2_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS2_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr %1, ptr noundef nonnull align 8 dereferenceable(8) %0) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt12forward_listIPK1ASaIS2_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__front = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %_M_head, i32 0, i32 0 - %0 = load ptr, ptr %_M_next, align 8 - store ptr %0, ptr %__front, align 8 - %1 = load ptr, ptr %__front, align 8 - %call = call noundef ptr @_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #5 - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12forward_listIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_Fwd_list_implC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_impl) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_Fwd_list_implC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaISt14_Fwd_list_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %this1, i32 0, i32 0 - call void @llvm.memset.p0.i64(ptr align 8 %_M_head, i8 0, i64 8, i1 false) - call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_head) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt14_Fwd_list_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #9 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_next, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 - %call = invoke noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_M_erase_afterEPSt19_Fwd_list_node_baseS6_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %_M_head, ptr noundef null) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %_M_impl2 = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_Fwd_list_implD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_impl2) #5 - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #14 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_M_erase_afterEPSt19_Fwd_list_node_baseS6_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__pos, ptr noundef %__last) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__pos.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__curr = alloca ptr, align 8 - %__temp = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__pos, ptr %__pos.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__pos.addr, align 8 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_next, align 8 - store ptr %1, ptr %__curr, align 8 - br label %while.cond - -while.cond: ; preds = %while.body, %entry - %2 = load ptr, ptr %__curr, align 8 - %3 = load ptr, ptr %__last.addr, align 8 - %cmp = icmp ne ptr %2, %3 - br i1 %cmp, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %4 = load ptr, ptr %__curr, align 8 - store ptr %4, ptr %__temp, align 8 - %5 = load ptr, ptr %__curr, align 8 - %_M_next2 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %5, i32 0, i32 0 - %6 = load ptr, ptr %_M_next2, align 8 - store ptr %6, ptr %__curr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %7 = load ptr, ptr %__temp, align 8 - %call3 = call noundef ptr @_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #5 - call void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE7destroyIS3_EEvRS5_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %call3) #5 - %8 = load ptr, ptr %__temp, align 8 - %9 = load ptr, ptr %__temp, align 8 - call void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE11_M_put_nodeEPSt14_Fwd_list_nodeIS2_E(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %9) - br label %while.cond, !llvm.loop !6 - -while.end: ; preds = %while.cond - %10 = load ptr, ptr %__last.addr, align 8 - %11 = load ptr, ptr %__pos.addr, align 8 - %_M_next4 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %11, i32 0, i32 0 - store ptr %10, ptr %_M_next4, align 8 - %12 = load ptr, ptr %__last.addr, align 8 - ret ptr %12 -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #10 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #5 - call void @_ZSt9terminatev() #14 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_Fwd_list_implD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaISt14_Fwd_list_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE7destroyIS3_EEvRS5_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE7destroyIS4_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_Fwd_list_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %_M_storage) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE11_M_put_nodeEPSt14_Fwd_list_nodeIS2_E(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__p) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__ptr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %call = call noundef ptr @_ZNSt14pointer_traitsIPSt14_Fwd_list_nodeIPK1AEE10pointer_toERS4_(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - store ptr %call, ptr %__ptr, align 8 - %call2 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %1 = load ptr, ptr %__ptr, align 8 - call void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE10deallocateERS5_PS4_m(ptr noundef nonnull align 1 dereferenceable(1) %call2, ptr noundef %1, i64 noundef 1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE7destroyIS4_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_buffer", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14pointer_traitsIPSt14_Fwd_list_nodeIPK1AEE10pointer_toERS4_(ptr noundef nonnull align 8 dereferenceable(16) %__r) #2 comdat align 2 { -entry: - %__r.addr = alloca ptr, align 8 - store ptr %__r, ptr %__r.addr, align 8 - %0 = load ptr, ptr %__r.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE10deallocateERS5_PS4_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE10deallocateEPS5_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE10deallocateEPS5_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #11 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt14_Fwd_list_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE15_M_insert_afterIJRKS2_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS2_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr %__pos.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %__pos = alloca %"struct.std::_Fwd_list_const_iterator", align 8 - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__to = alloca ptr, align 8 - %__thing = alloca ptr, align 8 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %__pos, i32 0, i32 0 - store ptr %__pos.coerce, ptr %coerce.dive, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %__pos, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - store ptr %0, ptr %__to, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - %call = call noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_M_create_nodeIJRKS2_EEEPSt14_Fwd_list_nodeIS2_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef nonnull align 8 dereferenceable(8) %1) - store ptr %call, ptr %__thing, align 8 - %2 = load ptr, ptr %__to, align 8 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %2, i32 0, i32 0 - %3 = load ptr, ptr %_M_next, align 8 - %4 = load ptr, ptr %__thing, align 8 - %_M_next2 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %4, i32 0, i32 0 - store ptr %3, ptr %_M_next2, align 8 - %5 = load ptr, ptr %__thing, align 8 - %6 = load ptr, ptr %__to, align 8 - %_M_next3 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %6, i32 0, i32 0 - store ptr %5, ptr %_M_next3, align 8 - %7 = load ptr, ptr %__to, align 8 - %_M_next4 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %7, i32 0, i32 0 - %8 = load ptr, ptr %_M_next4, align 8 - ret ptr %8 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNKSt12forward_listIPK1ASaIS2_EE13cbefore_beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::_Fwd_list_const_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 - call void @_ZNSt24_Fwd_list_const_iteratorIPK1AEC2EPKSt19_Fwd_list_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %_M_head) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_M_create_nodeIJRKS2_EEEPSt14_Fwd_list_nodeIS2_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__node = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) - store ptr %call, ptr %__node, align 8 - %0 = load ptr, ptr %__node, align 8 - call void @_ZNSt14_Fwd_list_nodeIPK1AEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - %call2 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %1 = load ptr, ptr %__node, align 8 - %call3 = call noundef ptr @_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #5 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE9constructIS3_JRKS3_EEEvRS5_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %call2, ptr noundef %call3, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - %3 = load ptr, ptr %__node, align 8 - ret ptr %3 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__ptr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %call2 = call noundef ptr @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE8allocateERS5_m(ptr noundef nonnull align 1 dereferenceable(1) %call, i64 noundef 1) - store ptr %call2, ptr %__ptr, align 8 - %0 = load ptr, ptr %__ptr, align 8 - %call3 = call noundef ptr @_ZSt12__to_addressISt14_Fwd_list_nodeIPK1AEEPT_S6_(ptr noundef %0) #5 - ret ptr %call3 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_nodeIPK1AEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %_M_storage = getelementptr inbounds %"struct.std::_Fwd_list_node", ptr %this1, i32 0, i32 1 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE9constructIS3_JRKS3_EEEvRS5_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE9constructIS4_JRKS4_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE8allocateERS5_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__to_addressISt14_Fwd_list_nodeIPK1AEEPT_S6_(ptr noundef %__ptr) #2 comdat { -entry: - %__ptr.addr = alloca ptr, align 8 - store ptr %__ptr, ptr %__ptr.addr, align 8 - %0 = load ptr, ptr %__ptr.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #15 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 16 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #16 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 576460752303423487 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #12 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE9constructIS4_JRKS4_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - %2 = load ptr, ptr %1, align 8 - store ptr %2, ptr %0, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt24_Fwd_list_const_iteratorIPK1AEC2EPKSt19_Fwd_list_node_base(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__n) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__n.addr, align 8 - store ptr %0, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_forward_list_1.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noinline uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #10 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #13 = { builtin allocsize(0) } -attributes #14 = { noreturn nounwind } -attributes #15 = { noreturn } -attributes #16 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/basic_cpp_tests/forward_list-2.cpp.bc b/test_cases_bc/basic_cpp_tests/forward_list-2.cpp.bc deleted file mode 100644 index 4dcf28c2..00000000 --- a/test_cases_bc/basic_cpp_tests/forward_list-2.cpp.bc +++ /dev/null @@ -1,981 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/forward_list-2.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/forward_list-2.cpp" -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-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%"class.std::forward_list" = type { %"struct.std::_Fwd_list_base" } -%"struct.std::_Fwd_list_base" = type { %"struct.std::_Fwd_list_base>::_Fwd_list_impl" } -%"struct.std::_Fwd_list_base>::_Fwd_list_impl" = type { %"struct.std::_Fwd_list_node_base" } -%"struct.std::_Fwd_list_node_base" = type { ptr } -%"struct.std::_Fwd_list_iterator" = type { ptr } -%"struct.std::_Fwd_list_const_iterator" = type { ptr } -%"struct.std::_Fwd_list_node" = type { %"struct.std::_Fwd_list_node_base", %"struct.__gnu_cxx::__aligned_buffer" } -%"struct.__gnu_cxx::__aligned_buffer" = type { %"union.std::aligned_storage<8, 8>::type" } -%"union.std::aligned_storage<8, 8>::type" = type { [8 x i8] } - -$_ZNSt12forward_listIPK1ASaIS2_EEC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt12forward_listIPK1ASaIS2_EE10push_frontERKS2_ = comdat any - -$_ZNSt12forward_listIPK1ASaIS2_EE5beginEv = comdat any - -$_ZNKSt18_Fwd_list_iteratorIPK1AEdeEv = comdat any - -$_ZNSt12forward_listIPK1ASaIS2_EED2Ev = comdat any - -$_ZNSt14_Fwd_list_baseIPK1ASaIS2_EEC2Ev = comdat any - -$_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_Fwd_list_implC2Ev = comdat any - -$_ZNSaISt14_Fwd_list_nodeIPK1AEEC2Ev = comdat any - -$_ZNSt19_Fwd_list_node_baseC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEEC2Ev = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt14_Fwd_list_baseIPK1ASaIS2_EED2Ev = comdat any - -$_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_M_erase_afterEPSt19_Fwd_list_node_baseS6_ = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_Fwd_list_implD2Ev = comdat any - -$_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE7destroyIS3_EEvRS5_PT_ = comdat any - -$_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE21_M_get_Node_allocatorEv = comdat any - -$_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv = comdat any - -$_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE11_M_put_nodeEPSt14_Fwd_list_nodeIS2_E = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE7destroyIS4_EEvPT_ = comdat any - -$_ZN9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv = comdat any - -$_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv = comdat any - -$_ZNSt14pointer_traitsIPSt14_Fwd_list_nodeIPK1AEE10pointer_toERS4_ = comdat any - -$_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE10deallocateERS5_PS4_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE10deallocateEPS5_m = comdat any - -$_ZNSaISt14_Fwd_list_nodeIPK1AEED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEED2Ev = comdat any - -$_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE15_M_insert_afterIJRKS2_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS2_EDpOT_ = comdat any - -$_ZNKSt12forward_listIPK1ASaIS2_EE13cbefore_beginEv = comdat any - -$_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_M_create_nodeIJRKS2_EEEPSt14_Fwd_list_nodeIS2_EDpOT_ = comdat any - -$_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE11_M_get_nodeEv = comdat any - -$_ZNSt14_Fwd_list_nodeIPK1AEC2Ev = comdat any - -$_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE9constructIS3_JRKS3_EEEvRS5_PT_DpOT0_ = comdat any - -$_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE8allocateERS5_m = comdat any - -$_ZSt12__to_addressISt14_Fwd_list_nodeIPK1AEEPT_S6_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE11_M_max_sizeEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE9constructIS4_JRKS4_EEEvPT_DpOT0_ = comdat any - -$_ZNSt24_Fwd_list_const_iteratorIPK1AEC2EPKSt19_Fwd_list_node_base = comdat any - -$_ZNSt18_Fwd_list_iteratorIPK1AEC2EPSt19_Fwd_list_node_base = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 -@__dso_handle = external hidden global i8 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_forward_list_2.cpp, ptr null }] - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init() #3 section ".text.startup" { -entry: - call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = call i32 @__cxa_atexit(ptr @_ZNSt8ios_base4InitD1Ev, ptr @_ZStL8__ioinit, ptr @__dso_handle) #5 - ret void -} - -declare void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 - -; Function Attrs: nounwind -declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 - -; Function Attrs: nounwind -declare i32 @__cxa_atexit(ptr, ptr, ptr) #5 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #6 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %alist = alloca %"class.std::forward_list", align 8 - %a = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %it = alloca %"struct.std::_Fwd_list_iterator", align 8 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt12forward_listIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 - %call = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #13 - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #5 - store ptr %call, ptr %a, align 8 - invoke void @_ZNSt12forward_listIPK1ASaIS2_EE10push_frontERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %alist, ptr noundef nonnull align 8 dereferenceable(8) %a) - to label %invoke.cont1 unwind label %lpad - -invoke.cont1: ; preds = %invoke.cont - %call2 = call ptr @_ZNSt12forward_listIPK1ASaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_iterator", ptr %it, i32 0, i32 0 - store ptr %call2, ptr %coerce.dive, align 8 - %call3 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt18_Fwd_list_iteratorIPK1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 - %0 = load ptr, ptr %call3, align 8 - store ptr %0, ptr %aptr, align 8 - %1 = load ptr, ptr %aptr, align 8 - %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) - to label %invoke.cont4 unwind label %lpad - -invoke.cont4: ; preds = %invoke.cont1 - store i32 0, ptr %retval, align 4 - call void @_ZNSt12forward_listIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 - %4 = load i32, ptr %retval, align 4 - ret i32 %4 - -lpad: ; preds = %invoke.cont1, %invoke.cont, %entry - %5 = landingpad { ptr, i32 } - cleanup - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - call void @_ZNSt12forward_listIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val5 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val5 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12forward_listIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - ret void -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #8 - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt12forward_listIPK1ASaIS2_EE10push_frontERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__val) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__val.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_Fwd_list_const_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__val, ptr %__val.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call ptr @_ZNKSt12forward_listIPK1ASaIS2_EE13cbefore_beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %agg.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %0 = load ptr, ptr %__val.addr, align 8 - %coerce.dive2 = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %agg.tmp, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive2, align 8 - %call3 = call noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE15_M_insert_afterIJRKS2_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS2_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr %1, ptr noundef nonnull align 8 dereferenceable(8) %0) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt12forward_listIPK1ASaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::_Fwd_list_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %_M_head, i32 0, i32 0 - %0 = load ptr, ptr %_M_next, align 8 - call void @_ZNSt18_Fwd_list_iteratorIPK1AEC2EPSt19_Fwd_list_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_iterator", ptr %retval, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive, align 8 - ret ptr %1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt18_Fwd_list_iteratorIPK1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = call noundef ptr @_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12forward_listIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_Fwd_list_implC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_impl) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_Fwd_list_implC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaISt14_Fwd_list_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %this1, i32 0, i32 0 - call void @llvm.memset.p0.i64(ptr align 8 %_M_head, i8 0, i64 8, i1 false) - call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_head) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt14_Fwd_list_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #9 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_next, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 - %call = invoke noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_M_erase_afterEPSt19_Fwd_list_node_baseS6_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %_M_head, ptr noundef null) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %_M_impl2 = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_Fwd_list_implD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_impl2) #5 - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #14 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_M_erase_afterEPSt19_Fwd_list_node_baseS6_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__pos, ptr noundef %__last) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__pos.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__curr = alloca ptr, align 8 - %__temp = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__pos, ptr %__pos.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__pos.addr, align 8 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_next, align 8 - store ptr %1, ptr %__curr, align 8 - br label %while.cond - -while.cond: ; preds = %while.body, %entry - %2 = load ptr, ptr %__curr, align 8 - %3 = load ptr, ptr %__last.addr, align 8 - %cmp = icmp ne ptr %2, %3 - br i1 %cmp, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %4 = load ptr, ptr %__curr, align 8 - store ptr %4, ptr %__temp, align 8 - %5 = load ptr, ptr %__curr, align 8 - %_M_next2 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %5, i32 0, i32 0 - %6 = load ptr, ptr %_M_next2, align 8 - store ptr %6, ptr %__curr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %7 = load ptr, ptr %__temp, align 8 - %call3 = call noundef ptr @_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #5 - call void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE7destroyIS3_EEvRS5_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %call3) #5 - %8 = load ptr, ptr %__temp, align 8 - %9 = load ptr, ptr %__temp, align 8 - call void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE11_M_put_nodeEPSt14_Fwd_list_nodeIS2_E(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %9) - br label %while.cond, !llvm.loop !6 - -while.end: ; preds = %while.cond - %10 = load ptr, ptr %__last.addr, align 8 - %11 = load ptr, ptr %__pos.addr, align 8 - %_M_next4 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %11, i32 0, i32 0 - store ptr %10, ptr %_M_next4, align 8 - %12 = load ptr, ptr %__last.addr, align 8 - ret ptr %12 -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #10 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #5 - call void @_ZSt9terminatev() #14 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_Fwd_list_implD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaISt14_Fwd_list_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE7destroyIS3_EEvRS5_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE7destroyIS4_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_Fwd_list_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %_M_storage) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE11_M_put_nodeEPSt14_Fwd_list_nodeIS2_E(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__p) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__ptr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %call = call noundef ptr @_ZNSt14pointer_traitsIPSt14_Fwd_list_nodeIPK1AEE10pointer_toERS4_(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - store ptr %call, ptr %__ptr, align 8 - %call2 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %1 = load ptr, ptr %__ptr, align 8 - call void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE10deallocateERS5_PS4_m(ptr noundef nonnull align 1 dereferenceable(1) %call2, ptr noundef %1, i64 noundef 1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE7destroyIS4_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_buffer", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14pointer_traitsIPSt14_Fwd_list_nodeIPK1AEE10pointer_toERS4_(ptr noundef nonnull align 8 dereferenceable(16) %__r) #2 comdat align 2 { -entry: - %__r.addr = alloca ptr, align 8 - store ptr %__r, ptr %__r.addr, align 8 - %0 = load ptr, ptr %__r.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE10deallocateERS5_PS4_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE10deallocateEPS5_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE10deallocateEPS5_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #11 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt14_Fwd_list_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE15_M_insert_afterIJRKS2_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS2_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr %__pos.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %__pos = alloca %"struct.std::_Fwd_list_const_iterator", align 8 - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__to = alloca ptr, align 8 - %__thing = alloca ptr, align 8 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %__pos, i32 0, i32 0 - store ptr %__pos.coerce, ptr %coerce.dive, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %__pos, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - store ptr %0, ptr %__to, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - %call = call noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_M_create_nodeIJRKS2_EEEPSt14_Fwd_list_nodeIS2_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef nonnull align 8 dereferenceable(8) %1) - store ptr %call, ptr %__thing, align 8 - %2 = load ptr, ptr %__to, align 8 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %2, i32 0, i32 0 - %3 = load ptr, ptr %_M_next, align 8 - %4 = load ptr, ptr %__thing, align 8 - %_M_next2 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %4, i32 0, i32 0 - store ptr %3, ptr %_M_next2, align 8 - %5 = load ptr, ptr %__thing, align 8 - %6 = load ptr, ptr %__to, align 8 - %_M_next3 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %6, i32 0, i32 0 - store ptr %5, ptr %_M_next3, align 8 - %7 = load ptr, ptr %__to, align 8 - %_M_next4 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %7, i32 0, i32 0 - %8 = load ptr, ptr %_M_next4, align 8 - ret ptr %8 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNKSt12forward_listIPK1ASaIS2_EE13cbefore_beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::_Fwd_list_const_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 - call void @_ZNSt24_Fwd_list_const_iteratorIPK1AEC2EPKSt19_Fwd_list_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %_M_head) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE14_M_create_nodeIJRKS2_EEEPSt14_Fwd_list_nodeIS2_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__node = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) - store ptr %call, ptr %__node, align 8 - %0 = load ptr, ptr %__node, align 8 - call void @_ZNSt14_Fwd_list_nodeIPK1AEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - %call2 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %1 = load ptr, ptr %__node, align 8 - %call3 = call noundef ptr @_ZNSt14_Fwd_list_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #5 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE9constructIS3_JRKS3_EEEvRS5_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %call2, ptr noundef %call3, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - %3 = load ptr, ptr %__node, align 8 - ret ptr %3 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__ptr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseIPK1ASaIS2_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %call2 = call noundef ptr @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE8allocateERS5_m(ptr noundef nonnull align 1 dereferenceable(1) %call, i64 noundef 1) - store ptr %call2, ptr %__ptr, align 8 - %0 = load ptr, ptr %__ptr, align 8 - %call3 = call noundef ptr @_ZSt12__to_addressISt14_Fwd_list_nodeIPK1AEEPT_S6_(ptr noundef %0) #5 - ret ptr %call3 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_nodeIPK1AEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %_M_storage = getelementptr inbounds %"struct.std::_Fwd_list_node", ptr %this1, i32 0, i32 1 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE9constructIS3_JRKS3_EEEvRS5_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE9constructIS4_JRKS4_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeIPK1AEEE8allocateERS5_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__to_addressISt14_Fwd_list_nodeIPK1AEEPT_S6_(ptr noundef %__ptr) #2 comdat { -entry: - %__ptr.addr = alloca ptr, align 8 - store ptr %__ptr, ptr %__ptr.addr, align 8 - %0 = load ptr, ptr %__ptr.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #15 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 16 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #16 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 576460752303423487 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #12 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeIPK1AEE9constructIS4_JRKS4_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - %2 = load ptr, ptr %1, align 8 - store ptr %2, ptr %0, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt24_Fwd_list_const_iteratorIPK1AEC2EPKSt19_Fwd_list_node_base(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__n) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__n.addr, align 8 - store ptr %0, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt18_Fwd_list_iteratorIPK1AEC2EPSt19_Fwd_list_node_base(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__n) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__n.addr, align 8 - store ptr %0, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_forward_list_2.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noinline uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #10 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #13 = { builtin allocsize(0) } -attributes #14 = { noreturn nounwind } -attributes #15 = { noreturn } -attributes #16 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/basic_cpp_tests/forward_list-3.cpp.bc b/test_cases_bc/basic_cpp_tests/forward_list-3.cpp.bc deleted file mode 100644 index bde27b51..00000000 --- a/test_cases_bc/basic_cpp_tests/forward_list-3.cpp.bc +++ /dev/null @@ -1,956 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/forward_list-3.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/forward_list-3.cpp" -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-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%"class.std::forward_list" = type { %"struct.std::_Fwd_list_base" } -%"struct.std::_Fwd_list_base" = type { %"struct.std::_Fwd_list_base>::_Fwd_list_impl" } -%"struct.std::_Fwd_list_base>::_Fwd_list_impl" = type { %"struct.std::_Fwd_list_node_base" } -%"struct.std::_Fwd_list_node_base" = type { ptr } -%class.A = type { ptr } -%"struct.std::_Fwd_list_const_iterator" = type { ptr } -%"struct.std::_Fwd_list_node" = type { %"struct.std::_Fwd_list_node_base", %"struct.__gnu_cxx::__aligned_buffer" } -%"struct.__gnu_cxx::__aligned_buffer" = type { %"union.std::aligned_storage<8, 8>::type" } -%"union.std::aligned_storage<8, 8>::type" = type { [8 x i8] } - -$_ZNSt12forward_listI1ASaIS0_EEC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt12forward_listI1ASaIS0_EE10push_frontERKS0_ = comdat any - -$_ZNSt12forward_listI1ASaIS0_EE5frontEv = comdat any - -$_ZNSt12forward_listI1ASaIS0_EED2Ev = comdat any - -$_ZNSt14_Fwd_list_baseI1ASaIS0_EEC2Ev = comdat any - -$_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_Fwd_list_implC2Ev = comdat any - -$_ZNSaISt14_Fwd_list_nodeI1AEEC2Ev = comdat any - -$_ZNSt19_Fwd_list_node_baseC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEEC2Ev = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt14_Fwd_list_baseI1ASaIS0_EED2Ev = comdat any - -$_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_M_erase_afterEPSt19_Fwd_list_node_baseS4_ = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_Fwd_list_implD2Ev = comdat any - -$_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE7destroyIS1_EEvRS3_PT_ = comdat any - -$_ZNSt14_Fwd_list_baseI1ASaIS0_EE21_M_get_Node_allocatorEv = comdat any - -$_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv = comdat any - -$_ZNSt14_Fwd_list_baseI1ASaIS0_EE11_M_put_nodeEPSt14_Fwd_list_nodeIS0_E = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE7destroyIS2_EEvPT_ = comdat any - -$_ZN9__gnu_cxx16__aligned_bufferI1AE6_M_ptrEv = comdat any - -$_ZN9__gnu_cxx16__aligned_bufferI1AE7_M_addrEv = comdat any - -$_ZNSt14pointer_traitsIPSt14_Fwd_list_nodeI1AEE10pointer_toERS2_ = comdat any - -$_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE10deallocateERS3_PS2_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE10deallocateEPS3_m = comdat any - -$_ZNSaISt14_Fwd_list_nodeI1AEED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEED2Ev = comdat any - -$_ZNSt14_Fwd_list_baseI1ASaIS0_EE15_M_insert_afterIJRKS0_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS0_EDpOT_ = comdat any - -$_ZNKSt12forward_listI1ASaIS0_EE13cbefore_beginEv = comdat any - -$_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_M_create_nodeIJRKS0_EEEPSt14_Fwd_list_nodeIS0_EDpOT_ = comdat any - -$_ZNSt14_Fwd_list_baseI1ASaIS0_EE11_M_get_nodeEv = comdat any - -$_ZNSt14_Fwd_list_nodeI1AEC2Ev = comdat any - -$_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE9constructIS1_JRKS1_EEEvRS3_PT_DpOT0_ = comdat any - -$_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE8allocateERS3_m = comdat any - -$_ZSt12__to_addressISt14_Fwd_list_nodeI1AEEPT_S4_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE11_M_max_sizeEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE9constructIS2_JRKS2_EEEvPT_DpOT0_ = comdat any - -$_ZN1AC2ERKS_ = comdat any - -$_ZNSt24_Fwd_list_const_iteratorI1AEC2EPKSt19_Fwd_list_node_base = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 -@__dso_handle = external hidden global i8 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_forward_list_3.cpp, ptr null }] - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init() #3 section ".text.startup" { -entry: - call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = call i32 @__cxa_atexit(ptr @_ZNSt8ios_base4InitD1Ev, ptr @_ZStL8__ioinit, ptr @__dso_handle) #5 - ret void -} - -declare void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 - -; Function Attrs: nounwind -declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 - -; Function Attrs: nounwind -declare i32 @__cxa_atexit(ptr, ptr, ptr) #5 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #6 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %alist = alloca %"class.std::forward_list", align 8 - %a = alloca %class.A, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt12forward_listI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 - invoke void @_ZNSt12forward_listI1ASaIS0_EE10push_frontERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %alist, ptr noundef nonnull align 8 dereferenceable(8) %a) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %call = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt12forward_listI1ASaIS0_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(8) %alist) - to label %invoke.cont1 unwind label %lpad - -invoke.cont1: ; preds = %invoke.cont - store ptr %call, ptr %aptr, align 8 - %0 = load ptr, ptr %aptr, align 8 - %1 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %0, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %2 = load ptr, ptr %vfn, align 8 - invoke void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) - to label %invoke.cont2 unwind label %lpad - -invoke.cont2: ; preds = %invoke.cont1 - store i32 0, ptr %retval, align 4 - call void @_ZNSt12forward_listI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 - %3 = load i32, ptr %retval, align 4 - ret i32 %3 - -lpad: ; preds = %invoke.cont1, %invoke.cont, %entry - %4 = landingpad { ptr, i32 } - cleanup - %5 = extractvalue { ptr, i32 } %4, 0 - store ptr %5, ptr %exn.slot, align 8 - %6 = extractvalue { ptr, i32 } %4, 1 - store i32 %6, ptr %ehselector.slot, align 4 - call void @_ZNSt12forward_listI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val3 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val3 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12forward_listI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt14_Fwd_list_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt12forward_listI1ASaIS0_EE10push_frontERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__val) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__val.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_Fwd_list_const_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__val, ptr %__val.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call ptr @_ZNKSt12forward_listI1ASaIS0_EE13cbefore_beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %agg.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %0 = load ptr, ptr %__val.addr, align 8 - %coerce.dive2 = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %agg.tmp, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive2, align 8 - %call3 = call noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE15_M_insert_afterIJRKS0_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS0_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr %1, ptr noundef nonnull align 8 dereferenceable(8) %0) - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt12forward_listI1ASaIS0_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__front = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %_M_head, i32 0, i32 0 - %0 = load ptr, ptr %_M_next, align 8 - store ptr %0, ptr %__front, align 8 - %1 = load ptr, ptr %__front, align 8 - %call = call noundef ptr @_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #5 - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12forward_listI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt14_Fwd_list_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_Fwd_list_implC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_impl) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_Fwd_list_implC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaISt14_Fwd_list_nodeI1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %this1, i32 0, i32 0 - call void @llvm.memset.p0.i64(ptr align 8 %_M_head, i8 0, i64 8, i1 false) - call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_head) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt14_Fwd_list_nodeI1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #8 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_next, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 - %call = invoke noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_M_erase_afterEPSt19_Fwd_list_node_baseS4_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %_M_head, ptr noundef null) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %_M_impl2 = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_Fwd_list_implD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_impl2) #5 - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #13 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_M_erase_afterEPSt19_Fwd_list_node_baseS4_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__pos, ptr noundef %__last) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__pos.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__curr = alloca ptr, align 8 - %__temp = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__pos, ptr %__pos.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__pos.addr, align 8 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_next, align 8 - store ptr %1, ptr %__curr, align 8 - br label %while.cond - -while.cond: ; preds = %while.body, %entry - %2 = load ptr, ptr %__curr, align 8 - %3 = load ptr, ptr %__last.addr, align 8 - %cmp = icmp ne ptr %2, %3 - br i1 %cmp, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %4 = load ptr, ptr %__curr, align 8 - store ptr %4, ptr %__temp, align 8 - %5 = load ptr, ptr %__curr, align 8 - %_M_next2 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %5, i32 0, i32 0 - %6 = load ptr, ptr %_M_next2, align 8 - store ptr %6, ptr %__curr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %7 = load ptr, ptr %__temp, align 8 - %call3 = call noundef ptr @_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #5 - call void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE7destroyIS1_EEvRS3_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %call3) #5 - %8 = load ptr, ptr %__temp, align 8 - %9 = load ptr, ptr %__temp, align 8 - call void @_ZNSt14_Fwd_list_baseI1ASaIS0_EE11_M_put_nodeEPSt14_Fwd_list_nodeIS0_E(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %9) - br label %while.cond, !llvm.loop !6 - -while.end: ; preds = %while.cond - %10 = load ptr, ptr %__last.addr, align 8 - %11 = load ptr, ptr %__pos.addr, align 8 - %_M_next4 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %11, i32 0, i32 0 - store ptr %10, ptr %_M_next4, align 8 - %12 = load ptr, ptr %__last.addr, align 8 - ret ptr %12 -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #9 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #5 - call void @_ZSt9terminatev() #13 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_Fwd_list_implD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaISt14_Fwd_list_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE7destroyIS1_EEvRS3_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE7destroyIS2_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_Fwd_list_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %_M_storage) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseI1ASaIS0_EE11_M_put_nodeEPSt14_Fwd_list_nodeIS0_E(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__p) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__ptr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %call = call noundef ptr @_ZNSt14pointer_traitsIPSt14_Fwd_list_nodeI1AEE10pointer_toERS2_(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - store ptr %call, ptr %__ptr, align 8 - %call2 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %1 = load ptr, ptr %__ptr, align 8 - call void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %call2, ptr noundef %1, i64 noundef 1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE7destroyIS2_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_buffer", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14pointer_traitsIPSt14_Fwd_list_nodeI1AEE10pointer_toERS2_(ptr noundef nonnull align 8 dereferenceable(16) %__r) #2 comdat align 2 { -entry: - %__r.addr = alloca ptr, align 8 - store ptr %__r, ptr %__r.addr, align 8 - %0 = load ptr, ptr %__r.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #10 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt14_Fwd_list_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE15_M_insert_afterIJRKS0_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS0_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr %__pos.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %__pos = alloca %"struct.std::_Fwd_list_const_iterator", align 8 - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__to = alloca ptr, align 8 - %__thing = alloca ptr, align 8 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %__pos, i32 0, i32 0 - store ptr %__pos.coerce, ptr %coerce.dive, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %__pos, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - store ptr %0, ptr %__to, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - %call = call noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_M_create_nodeIJRKS0_EEEPSt14_Fwd_list_nodeIS0_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef nonnull align 8 dereferenceable(8) %1) - store ptr %call, ptr %__thing, align 8 - %2 = load ptr, ptr %__to, align 8 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %2, i32 0, i32 0 - %3 = load ptr, ptr %_M_next, align 8 - %4 = load ptr, ptr %__thing, align 8 - %_M_next2 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %4, i32 0, i32 0 - store ptr %3, ptr %_M_next2, align 8 - %5 = load ptr, ptr %__thing, align 8 - %6 = load ptr, ptr %__to, align 8 - %_M_next3 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %6, i32 0, i32 0 - store ptr %5, ptr %_M_next3, align 8 - %7 = load ptr, ptr %__to, align 8 - %_M_next4 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %7, i32 0, i32 0 - %8 = load ptr, ptr %_M_next4, align 8 - ret ptr %8 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNKSt12forward_listI1ASaIS0_EE13cbefore_beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::_Fwd_list_const_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 - call void @_ZNSt24_Fwd_list_const_iteratorI1AEC2EPKSt19_Fwd_list_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %_M_head) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_M_create_nodeIJRKS0_EEEPSt14_Fwd_list_nodeIS0_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__node = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) - store ptr %call, ptr %__node, align 8 - %0 = load ptr, ptr %__node, align 8 - call void @_ZNSt14_Fwd_list_nodeI1AEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - %call2 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %1 = load ptr, ptr %__node, align 8 - %call3 = call noundef ptr @_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #5 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE9constructIS1_JRKS1_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %call2, ptr noundef %call3, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - %3 = load ptr, ptr %__node, align 8 - ret ptr %3 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__ptr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %call2 = call noundef ptr @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %call, i64 noundef 1) - store ptr %call2, ptr %__ptr, align 8 - %0 = load ptr, ptr %__ptr, align 8 - %call3 = call noundef ptr @_ZSt12__to_addressISt14_Fwd_list_nodeI1AEEPT_S4_(ptr noundef %0) #5 - ret ptr %call3 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_nodeI1AEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %_M_storage = getelementptr inbounds %"struct.std::_Fwd_list_node", ptr %this1, i32 0, i32 1 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE9constructIS1_JRKS1_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE9constructIS2_JRKS2_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__to_addressISt14_Fwd_list_nodeI1AEEPT_S4_(ptr noundef %__ptr) #2 comdat { -entry: - %__ptr.addr = alloca ptr, align 8 - store ptr %__ptr, ptr %__ptr.addr, align 8 - %0 = load ptr, ptr %__ptr.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #14 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 16 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #15 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 576460752303423487 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #11 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #12 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE9constructIS2_JRKS2_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt24_Fwd_list_const_iteratorI1AEC2EPKSt19_Fwd_list_node_base(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__n) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__n.addr, align 8 - store ptr %0, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_forward_list_3.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noinline uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #9 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #13 = { noreturn nounwind } -attributes #14 = { noreturn } -attributes #15 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/basic_cpp_tests/forward_list-4.cpp.bc b/test_cases_bc/basic_cpp_tests/forward_list-4.cpp.bc deleted file mode 100644 index 3b4b3016..00000000 --- a/test_cases_bc/basic_cpp_tests/forward_list-4.cpp.bc +++ /dev/null @@ -1,988 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/forward_list-4.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/forward_list-4.cpp" -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-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%"class.std::forward_list" = type { %"struct.std::_Fwd_list_base" } -%"struct.std::_Fwd_list_base" = type { %"struct.std::_Fwd_list_base>::_Fwd_list_impl" } -%"struct.std::_Fwd_list_base>::_Fwd_list_impl" = type { %"struct.std::_Fwd_list_node_base" } -%"struct.std::_Fwd_list_node_base" = type { ptr } -%class.A = type { ptr } -%"struct.std::_Fwd_list_iterator" = type { ptr } -%"struct.std::_Fwd_list_const_iterator" = type { ptr } -%"struct.std::_Fwd_list_node" = type { %"struct.std::_Fwd_list_node_base", %"struct.__gnu_cxx::__aligned_buffer" } -%"struct.__gnu_cxx::__aligned_buffer" = type { %"union.std::aligned_storage<8, 8>::type" } -%"union.std::aligned_storage<8, 8>::type" = type { [8 x i8] } - -$_ZNSt12forward_listI1ASaIS0_EEC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt12forward_listI1ASaIS0_EE10push_frontERKS0_ = comdat any - -$_ZNSt12forward_listI1ASaIS0_EE5beginEv = comdat any - -$_ZNKSt18_Fwd_list_iteratorI1AEdeEv = comdat any - -$_ZNSt12forward_listI1ASaIS0_EED2Ev = comdat any - -$_ZNSt14_Fwd_list_baseI1ASaIS0_EEC2Ev = comdat any - -$_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_Fwd_list_implC2Ev = comdat any - -$_ZNSaISt14_Fwd_list_nodeI1AEEC2Ev = comdat any - -$_ZNSt19_Fwd_list_node_baseC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEEC2Ev = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt14_Fwd_list_baseI1ASaIS0_EED2Ev = comdat any - -$_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_M_erase_afterEPSt19_Fwd_list_node_baseS4_ = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_Fwd_list_implD2Ev = comdat any - -$_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE7destroyIS1_EEvRS3_PT_ = comdat any - -$_ZNSt14_Fwd_list_baseI1ASaIS0_EE21_M_get_Node_allocatorEv = comdat any - -$_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv = comdat any - -$_ZNSt14_Fwd_list_baseI1ASaIS0_EE11_M_put_nodeEPSt14_Fwd_list_nodeIS0_E = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE7destroyIS2_EEvPT_ = comdat any - -$_ZN9__gnu_cxx16__aligned_bufferI1AE6_M_ptrEv = comdat any - -$_ZN9__gnu_cxx16__aligned_bufferI1AE7_M_addrEv = comdat any - -$_ZNSt14pointer_traitsIPSt14_Fwd_list_nodeI1AEE10pointer_toERS2_ = comdat any - -$_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE10deallocateERS3_PS2_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE10deallocateEPS3_m = comdat any - -$_ZNSaISt14_Fwd_list_nodeI1AEED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEED2Ev = comdat any - -$_ZNSt14_Fwd_list_baseI1ASaIS0_EE15_M_insert_afterIJRKS0_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS0_EDpOT_ = comdat any - -$_ZNKSt12forward_listI1ASaIS0_EE13cbefore_beginEv = comdat any - -$_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_M_create_nodeIJRKS0_EEEPSt14_Fwd_list_nodeIS0_EDpOT_ = comdat any - -$_ZNSt14_Fwd_list_baseI1ASaIS0_EE11_M_get_nodeEv = comdat any - -$_ZNSt14_Fwd_list_nodeI1AEC2Ev = comdat any - -$_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE9constructIS1_JRKS1_EEEvRS3_PT_DpOT0_ = comdat any - -$_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE8allocateERS3_m = comdat any - -$_ZSt12__to_addressISt14_Fwd_list_nodeI1AEEPT_S4_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE11_M_max_sizeEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE9constructIS2_JRKS2_EEEvPT_DpOT0_ = comdat any - -$_ZN1AC2ERKS_ = comdat any - -$_ZNSt24_Fwd_list_const_iteratorI1AEC2EPKSt19_Fwd_list_node_base = comdat any - -$_ZNSt18_Fwd_list_iteratorI1AEC2EPSt19_Fwd_list_node_base = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 -@__dso_handle = external hidden global i8 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_forward_list_4.cpp, ptr null }] - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init() #3 section ".text.startup" { -entry: - call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = call i32 @__cxa_atexit(ptr @_ZNSt8ios_base4InitD1Ev, ptr @_ZStL8__ioinit, ptr @__dso_handle) #5 - ret void -} - -declare void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 - -; Function Attrs: nounwind -declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 - -; Function Attrs: nounwind -declare i32 @__cxa_atexit(ptr, ptr, ptr) #5 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #6 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %alist = alloca %"class.std::forward_list", align 8 - %a = alloca %class.A, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %it = alloca %"struct.std::_Fwd_list_iterator", align 8 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt12forward_listI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 - invoke void @_ZNSt12forward_listI1ASaIS0_EE10push_frontERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %alist, ptr noundef nonnull align 8 dereferenceable(8) %a) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %call = call ptr @_ZNSt12forward_listI1ASaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_iterator", ptr %it, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %call1 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt18_Fwd_list_iteratorI1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 - store ptr %call1, ptr %aptr, align 8 - %0 = load ptr, ptr %aptr, align 8 - %1 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %0, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %2 = load ptr, ptr %vfn, align 8 - invoke void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) - to label %invoke.cont2 unwind label %lpad - -invoke.cont2: ; preds = %invoke.cont - store i32 0, ptr %retval, align 4 - call void @_ZNSt12forward_listI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 - %3 = load i32, ptr %retval, align 4 - ret i32 %3 - -lpad: ; preds = %invoke.cont, %entry - %4 = landingpad { ptr, i32 } - cleanup - %5 = extractvalue { ptr, i32 } %4, 0 - store ptr %5, ptr %exn.slot, align 8 - %6 = extractvalue { ptr, i32 } %4, 1 - store i32 %6, ptr %ehselector.slot, align 4 - call void @_ZNSt12forward_listI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %alist) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val3 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val3 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12forward_listI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt14_Fwd_list_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt12forward_listI1ASaIS0_EE10push_frontERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__val) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__val.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_Fwd_list_const_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__val, ptr %__val.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call ptr @_ZNKSt12forward_listI1ASaIS0_EE13cbefore_beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %agg.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %0 = load ptr, ptr %__val.addr, align 8 - %coerce.dive2 = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %agg.tmp, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive2, align 8 - %call3 = call noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE15_M_insert_afterIJRKS0_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS0_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr %1, ptr noundef nonnull align 8 dereferenceable(8) %0) - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt12forward_listI1ASaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::_Fwd_list_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %_M_head, i32 0, i32 0 - %0 = load ptr, ptr %_M_next, align 8 - call void @_ZNSt18_Fwd_list_iteratorI1AEC2EPSt19_Fwd_list_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_iterator", ptr %retval, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive, align 8 - ret ptr %1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt18_Fwd_list_iteratorI1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = call noundef ptr @_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12forward_listI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt14_Fwd_list_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_Fwd_list_implC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_impl) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_Fwd_list_implC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaISt14_Fwd_list_nodeI1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %this1, i32 0, i32 0 - call void @llvm.memset.p0.i64(ptr align 8 %_M_head, i8 0, i64 8, i1 false) - call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_head) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt14_Fwd_list_nodeI1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #8 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_next, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 - %call = invoke noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_M_erase_afterEPSt19_Fwd_list_node_baseS4_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %_M_head, ptr noundef null) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %_M_impl2 = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_Fwd_list_implD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_impl2) #5 - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #13 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_M_erase_afterEPSt19_Fwd_list_node_baseS4_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__pos, ptr noundef %__last) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__pos.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__curr = alloca ptr, align 8 - %__temp = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__pos, ptr %__pos.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__pos.addr, align 8 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_next, align 8 - store ptr %1, ptr %__curr, align 8 - br label %while.cond - -while.cond: ; preds = %while.body, %entry - %2 = load ptr, ptr %__curr, align 8 - %3 = load ptr, ptr %__last.addr, align 8 - %cmp = icmp ne ptr %2, %3 - br i1 %cmp, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %4 = load ptr, ptr %__curr, align 8 - store ptr %4, ptr %__temp, align 8 - %5 = load ptr, ptr %__curr, align 8 - %_M_next2 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %5, i32 0, i32 0 - %6 = load ptr, ptr %_M_next2, align 8 - store ptr %6, ptr %__curr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %7 = load ptr, ptr %__temp, align 8 - %call3 = call noundef ptr @_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #5 - call void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE7destroyIS1_EEvRS3_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %call3) #5 - %8 = load ptr, ptr %__temp, align 8 - %9 = load ptr, ptr %__temp, align 8 - call void @_ZNSt14_Fwd_list_baseI1ASaIS0_EE11_M_put_nodeEPSt14_Fwd_list_nodeIS0_E(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %9) - br label %while.cond, !llvm.loop !6 - -while.end: ; preds = %while.cond - %10 = load ptr, ptr %__last.addr, align 8 - %11 = load ptr, ptr %__pos.addr, align 8 - %_M_next4 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %11, i32 0, i32 0 - store ptr %10, ptr %_M_next4, align 8 - %12 = load ptr, ptr %__last.addr, align 8 - ret ptr %12 -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #9 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #5 - call void @_ZSt9terminatev() #13 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_Fwd_list_implD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaISt14_Fwd_list_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE7destroyIS1_EEvRS3_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE7destroyIS2_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_Fwd_list_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %_M_storage) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_baseI1ASaIS0_EE11_M_put_nodeEPSt14_Fwd_list_nodeIS0_E(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__p) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__ptr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %call = call noundef ptr @_ZNSt14pointer_traitsIPSt14_Fwd_list_nodeI1AEE10pointer_toERS2_(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - store ptr %call, ptr %__ptr, align 8 - %call2 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %1 = load ptr, ptr %__ptr, align 8 - call void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %call2, ptr noundef %1, i64 noundef 1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE7destroyIS2_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferI1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_buffer", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14pointer_traitsIPSt14_Fwd_list_nodeI1AEE10pointer_toERS2_(ptr noundef nonnull align 8 dereferenceable(16) %__r) #2 comdat align 2 { -entry: - %__r.addr = alloca ptr, align 8 - store ptr %__r, ptr %__r.addr, align 8 - %0 = load ptr, ptr %__r.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #10 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt14_Fwd_list_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE15_M_insert_afterIJRKS0_EEEPSt19_Fwd_list_node_baseSt24_Fwd_list_const_iteratorIS0_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr %__pos.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %__pos = alloca %"struct.std::_Fwd_list_const_iterator", align 8 - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__to = alloca ptr, align 8 - %__thing = alloca ptr, align 8 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %__pos, i32 0, i32 0 - store ptr %__pos.coerce, ptr %coerce.dive, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %__pos, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - store ptr %0, ptr %__to, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - %call = call noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_M_create_nodeIJRKS0_EEEPSt14_Fwd_list_nodeIS0_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef nonnull align 8 dereferenceable(8) %1) - store ptr %call, ptr %__thing, align 8 - %2 = load ptr, ptr %__to, align 8 - %_M_next = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %2, i32 0, i32 0 - %3 = load ptr, ptr %_M_next, align 8 - %4 = load ptr, ptr %__thing, align 8 - %_M_next2 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %4, i32 0, i32 0 - store ptr %3, ptr %_M_next2, align 8 - %5 = load ptr, ptr %__thing, align 8 - %6 = load ptr, ptr %__to, align 8 - %_M_next3 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %6, i32 0, i32 0 - store ptr %5, ptr %_M_next3, align 8 - %7 = load ptr, ptr %__to, align 8 - %_M_next4 = getelementptr inbounds %"struct.std::_Fwd_list_node_base", ptr %7, i32 0, i32 0 - %8 = load ptr, ptr %_M_next4, align 8 - ret ptr %8 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNKSt12forward_listI1ASaIS0_EE13cbefore_beginEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::_Fwd_list_const_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Fwd_list_base", ptr %this1, i32 0, i32 0 - %_M_head = getelementptr inbounds %"struct.std::_Fwd_list_base>::_Fwd_list_impl", ptr %_M_impl, i32 0, i32 0 - call void @_ZNSt24_Fwd_list_const_iteratorI1AEC2EPKSt19_Fwd_list_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %_M_head) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE14_M_create_nodeIJRKS0_EEEPSt14_Fwd_list_nodeIS0_EDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__node = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) - store ptr %call, ptr %__node, align 8 - %0 = load ptr, ptr %__node, align 8 - call void @_ZNSt14_Fwd_list_nodeI1AEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - %call2 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %1 = load ptr, ptr %__node, align 8 - %call3 = call noundef ptr @_ZNSt14_Fwd_list_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %1) #5 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE9constructIS1_JRKS1_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %call2, ptr noundef %call3, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - %3 = load ptr, ptr %__node, align 8 - ret ptr %3 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__ptr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt14_Fwd_list_baseI1ASaIS0_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %call2 = call noundef ptr @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %call, i64 noundef 1) - store ptr %call2, ptr %__ptr, align 8 - %0 = load ptr, ptr %__ptr, align 8 - %call3 = call noundef ptr @_ZSt12__to_addressISt14_Fwd_list_nodeI1AEEPT_S4_(ptr noundef %0) #5 - ret ptr %call3 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_Fwd_list_nodeI1AEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt19_Fwd_list_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %_M_storage = getelementptr inbounds %"struct.std::_Fwd_list_node", ptr %this1, i32 0, i32 1 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE9constructIS1_JRKS1_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE9constructIS2_JRKS2_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaISt14_Fwd_list_nodeI1AEEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__to_addressISt14_Fwd_list_nodeI1AEEPT_S4_(ptr noundef %__ptr) #2 comdat { -entry: - %__ptr.addr = alloca ptr, align 8 - store ptr %__ptr, ptr %__ptr.addr, align 8 - %0 = load ptr, ptr %__ptr.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #14 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 16 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #15 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 576460752303423487 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #11 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #12 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt14_Fwd_list_nodeI1AEE9constructIS2_JRKS2_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt24_Fwd_list_const_iteratorI1AEC2EPKSt19_Fwd_list_node_base(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__n) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__n.addr, align 8 - store ptr %0, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt18_Fwd_list_iteratorI1AEC2EPSt19_Fwd_list_node_base(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__n) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Fwd_list_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__n.addr, align 8 - store ptr %0, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_forward_list_4.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noinline uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #9 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #13 = { noreturn nounwind } -attributes #14 = { noreturn } -attributes #15 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/basic_cpp_tests/func-ptr-in-class.cpp.bc b/test_cases_bc/basic_cpp_tests/func-ptr-in-class.cpp.bc deleted file mode 100644 index 91dfd7d1..00000000 --- a/test_cases_bc/basic_cpp_tests/func-ptr-in-class.cpp.bc +++ /dev/null @@ -1,333 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/func-ptr-in-class.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/func-ptr-in-class.cpp" -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-unknown-linux-gnu" - -%class.A = type { ptr, ptr, ptr } - -$_ZN1AC2Ev = comdat any - -$_ZN1A1fEPi = comdat any - -$_ZN1A1gEPi = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj_f = dso_local global i32 0, align 4 -@global_ptr_f = dso_local global ptr @global_obj_f, align 8 -@global_obj_g = dso_local global i32 0, align 4 -@global_ptr_g = dso_local global ptr @global_obj_g, align 8 -@global_obj_f_v = dso_local global i32 0, align 4 -@global_ptr_f_v = dso_local global ptr @global_obj_f_v, align 8 -@global_obj_g_v = dso_local global i32 0, align 4 -@global_ptr_g_v = dso_local global ptr @global_obj_g_v, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [4 x ptr] } { [4 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1A1fEPi, ptr @_ZN1A1gEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z1fPi(ptr noundef %i) #0 { -entry: - %i.addr = alloca ptr, align 8 - store ptr %i, ptr %i.addr, align 8 - %0 = load ptr, ptr @global_ptr_f, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_ptr_g, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %2, ptr noundef %3) - %4 = load ptr, ptr @global_ptr_f_v, align 8 - %5 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %4, ptr noundef %5) - %6 = load ptr, ptr @global_ptr_g_v, align 8 - %7 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %6, ptr noundef %7) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z1gPi(ptr noundef %i) #0 { -entry: - %i.addr = alloca ptr, align 8 - store ptr %i, ptr %i.addr, align 8 - %0 = load ptr, ptr @global_ptr_f, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_ptr_g, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %2, ptr noundef %3) - %4 = load ptr, ptr @global_ptr_f_v, align 8 - %5 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %4, ptr noundef %5) - %6 = load ptr, ptr @global_ptr_g_v, align 8 - %7 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %6, ptr noundef %7) - ret void -} - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main() #3 { -entry: - %retval = alloca i32, align 4 - %ptr_f = alloca ptr, align 8 - %ptr_g = alloca ptr, align 8 - %ptr_f_v = alloca ptr, align 8 - %ptr_g_v = alloca ptr, align 8 - %a = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store ptr @global_obj_f, ptr %ptr_f, align 8 - store ptr @global_obj_g, ptr %ptr_g, align 8 - store ptr @global_obj_f_v, ptr %ptr_f_v, align 8 - store ptr @global_obj_g_v, ptr %ptr_g_v, align 8 - %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #6 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %call) #7 - store ptr %call, ptr %a, align 8 - %0 = load ptr, ptr %a, align 8 - %pf = getelementptr inbounds %class.A, ptr %0, i32 0, i32 1 - store ptr @_Z1fPi, ptr %pf, align 8 - %1 = load ptr, ptr %a, align 8 - %pg = getelementptr inbounds %class.A, ptr %1, i32 0, i32 2 - store ptr @_Z1gPi, ptr %pg, align 8 - %2 = load ptr, ptr %a, align 8 - %pf1 = getelementptr inbounds %class.A, ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %pf1, align 8 - %4 = load ptr, ptr %ptr_f, align 8 - call void %3(ptr noundef %4) - %5 = load ptr, ptr %a, align 8 - %pg2 = getelementptr inbounds %class.A, ptr %5, i32 0, i32 2 - %6 = load ptr, ptr %pg2, align 8 - %7 = load ptr, ptr %ptr_g, align 8 - call void %6(ptr noundef %7) - %8 = load ptr, ptr %a, align 8 - %9 = load ptr, ptr %ptr_f_v, align 8 - %vtable = load ptr, ptr %8, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %10 = load ptr, ptr %vfn, align 8 - call void %10(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef %9) - %11 = load ptr, ptr %a, align 8 - %12 = load ptr, ptr %ptr_g_v, align 8 - %vtable3 = load ptr, ptr %11, align 8 - %vfn4 = getelementptr inbounds ptr, ptr %vtable3, i64 1 - %13 = load ptr, ptr %vfn4, align 8 - call void %13(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef %12) - ret i32 0 -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [4 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_f, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_ptr_g, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %2, ptr noundef %3) - %4 = load ptr, ptr @global_ptr_f_v, align 8 - %5 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %4, ptr noundef %5) - %6 = load ptr, ptr @global_ptr_g_v, align 8 - %7 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %6, ptr noundef %7) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1gEPi(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_f, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_ptr_g, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %2, ptr noundef %3) - %4 = load ptr, ptr @global_ptr_f_v, align 8 - %5 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %4, ptr noundef %5) - %6 = load ptr, ptr @global_ptr_g_v, align 8 - %7 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %6, ptr noundef %7) - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { builtin allocsize(0) } -attributes #7 = { nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/global-obj-in-array.cpp.bc b/test_cases_bc/basic_cpp_tests/global-obj-in-array.cpp.bc deleted file mode 100644 index aa253c07..00000000 --- a/test_cases_bc/basic_cpp_tests/global-obj-in-array.cpp.bc +++ /dev/null @@ -1,325 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/global-obj-in-array.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/global-obj-in-array.cpp" -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-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%class.A = type <{ ptr, i32, [4 x i8] }> -%struct.TableEntry = type { i32, ptr } -%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" } -%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr } -%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" } -%"struct.std::ios_base::_Words" = type { ptr, i64 } -%"class.std::locale" = type { ptr } - -$_ZN1AC2Ei = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 -@__dso_handle = external hidden global i8 -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@globalObj = dso_local global i32 10, align 4 -@globalPtr = dso_local global ptr @globalObj, align 8 -@a1 = dso_local global %class.A zeroinitializer, align 8 -@a2 = dso_local global %class.A zeroinitializer, align 8 -@a3 = dso_local global %class.A zeroinitializer, align 8 -@theTable = dso_local global [4 x %struct.TableEntry] [%struct.TableEntry { i32 1, ptr @a1 }, %struct.TableEntry { i32 2, ptr @a2 }, %struct.TableEntry { i32 3, ptr @a3 }, %struct.TableEntry zeroinitializer], align 16 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@_ZSt4cout = external global %"class.std::basic_ostream", align 8 -@.str.6 = private unnamed_addr constant [7 x i8] c"data: \00", align 1 -@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_global_obj_in_array.cpp, ptr null }] - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init() #0 section ".text.startup" { -entry: - call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = call i32 @__cxa_atexit(ptr @_ZNSt8ios_base4InitD1Ev, ptr @_ZStL8__ioinit, ptr @__dso_handle) #3 - ret void -} - -declare void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 - -; Function Attrs: nounwind -declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 - -; Function Attrs: nounwind -declare i32 @__cxa_atexit(ptr, ptr, ptr) #3 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #4 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #4 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #4 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #4 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #4 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #4 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #4 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #5 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #5 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #5 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #5 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #4 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init.3() #0 section ".text.startup" { -entry: - call void @_ZN1AC2Ei(ptr noundef nonnull align 8 dereferenceable(12) @a1, i32 noundef 1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ei(ptr noundef nonnull align 8 dereferenceable(12) %this, i32 noundef %d) unnamed_addr #6 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %d.addr = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i32 %d, ptr %d.addr, align 4 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - %data = getelementptr inbounds %class.A, ptr %this1, i32 0, i32 1 - %0 = load i32, ptr %d.addr, align 4 - store i32 %0, ptr %data, align 8 - ret void -} - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init.4() #0 section ".text.startup" { -entry: - call void @_ZN1AC2Ei(ptr noundef nonnull align 8 dereferenceable(12) @a2, i32 noundef 2) - ret void -} - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init.5() #0 section ".text.startup" { -entry: - call void @_ZN1AC2Ei(ptr noundef nonnull align 8 dereferenceable(12) @a3, i32 noundef 3) - ret void -} - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #7 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %theEntry = alloca ptr, align 8 - %p = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @theTable, ptr %theEntry, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %0 = load ptr, ptr %theEntry, align 8 - %num = getelementptr inbounds %struct.TableEntry, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %num, align 8 - %cmp = icmp ne i32 %1, 0 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %2 = load ptr, ptr %theEntry, align 8 - %p1 = getelementptr inbounds %struct.TableEntry, ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %p1, align 8 - store ptr %3, ptr %p, align 8 - %4 = load ptr, ptr %p, align 8 - %5 = load ptr, ptr @globalPtr, align 8 - %vtable = load ptr, ptr %4, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %6 = load ptr, ptr %vfn, align 8 - call void %6(ptr noundef nonnull align 8 dereferenceable(12) %4, ptr noundef %5) - br label %for.inc - -for.inc: ; preds = %for.body - %7 = load ptr, ptr %theEntry, align 8 - %incdec.ptr = getelementptr inbounds %struct.TableEntry, ptr %7, i32 1 - store ptr %incdec.ptr, ptr %theEntry, align 8 - br label %for.cond, !llvm.loop !6 - -for.end: ; preds = %for.cond - ret i32 0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(12) %this, ptr noundef %p) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %p, ptr %p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.6) - %data = getelementptr inbounds %class.A, ptr %this1, i32 0, i32 1 - %0 = load i32, ptr %data, align 8 - %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %call, i32 noundef %0) - %call3 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %call2, ptr noundef @.str) - %1 = load ptr, ptr %p.addr, align 8 - %2 = load ptr, ptr @globalPtr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %1, ptr noundef %2) - ret void -} - -declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #1 - -declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #1 - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_global_obj_in_array.cpp() #0 section ".text.startup" { -entry: - call void @__cxx_global_var_init() - call void @__cxx_global_var_init.3() - call void @__cxx_global_var_init.4() - call void @__cxx_global_var_init.5() - ret void -} - -attributes #0 = { noinline uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nounwind } -attributes #4 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/basic_cpp_tests/list-1.cpp.bc b/test_cases_bc/basic_cpp_tests/list-1.cpp.bc deleted file mode 100644 index c656820a..00000000 --- a/test_cases_bc/basic_cpp_tests/list-1.cpp.bc +++ /dev/null @@ -1,1062 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/list-1.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/list-1.cpp" -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-unknown-linux-gnu" - -%"class.std::__cxx11::list" = type { %"class.std::__cxx11::_List_base" } -%"class.std::__cxx11::_List_base" = type { %"struct.std::__cxx11::_List_base>::_List_impl" } -%"struct.std::__cxx11::_List_base>::_List_impl" = type { %"struct.std::__detail::_List_node_header" } -%"struct.std::__detail::_List_node_header" = type { %"struct.std::__detail::_List_node_base", i64 } -%"struct.std::__detail::_List_node_base" = type { ptr, ptr } -%class.A = type { ptr } -%"struct.std::_List_const_iterator" = type { ptr } -%"struct.std::_List_iterator" = type { ptr } -%"struct.std::_List_node" = type { %"struct.std::__detail::_List_node_base", %"struct.__gnu_cxx::__aligned_membuf" } -%"struct.__gnu_cxx::__aligned_membuf" = type { [8 x i8] } -%"struct.std::__allocated_ptr" = type { ptr, ptr } - -$_ZNSt7__cxx114listIPK1ASaIS3_EEC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt7__cxx114listIPK1ASaIS3_EE9push_backEOS3_ = comdat any - -$_ZNSt7__cxx114listIPK1ASaIS3_EE5beginEv = comdat any - -$_ZNSt20_List_const_iteratorIPK1AEC2ERKSt14_List_iteratorIS2_E = comdat any - -$_ZNKSt20_List_const_iteratorIPK1AEdeEv = comdat any - -$_ZNSt7__cxx114listIPK1ASaIS3_EED2Ev = comdat any - -$_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EEC2Ev = comdat any - -$_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE10_List_implC2Ev = comdat any - -$_ZNSaISt10_List_nodeIPK1AEEC2Ev = comdat any - -$_ZNSt8__detail17_List_node_headerC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEEC2Ev = comdat any - -$_ZNSt8__detail17_List_node_header7_M_initEv = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EED2Ev = comdat any - -$_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE8_M_clearEv = comdat any - -$_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE10_List_implD2Ev = comdat any - -$_ZNSt10_List_nodeIPK1AE9_M_valptrEv = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE7destroyIS3_EEvRS5_PT_ = comdat any - -$_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE21_M_get_Node_allocatorEv = comdat any - -$_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_put_nodeEPSt10_List_nodeIS3_E = comdat any - -$_ZN9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv = comdat any - -$_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE7destroyIS4_EEvPT_ = comdat any - -$_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE10deallocateERS5_PS4_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE10deallocateEPS5_m = comdat any - -$_ZNSaISt10_List_nodeIPK1AEED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEED2Ev = comdat any - -$_ZNSt7__cxx114listIPK1ASaIS3_EE9_M_insertIJS3_EEEvSt14_List_iteratorIS3_EDpOT_ = comdat any - -$_ZNSt7__cxx114listIPK1ASaIS3_EE3endEv = comdat any - -$_ZNSt7__cxx114listIPK1ASaIS3_EE14_M_create_nodeIJS3_EEEPSt10_List_nodeIS3_EDpOT_ = comdat any - -$_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_inc_sizeEm = comdat any - -$_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_get_nodeEv = comdat any - -$_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEEC2ERS5_PS4_ = comdat any - -$_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE9constructIS3_JS3_EEEvRS5_PT_DpOT0_ = comdat any - -$_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEEaSEDn = comdat any - -$_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEED2Ev = comdat any - -$_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE8allocateERS5_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE11_M_max_sizeEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE9constructIS4_JS4_EEEvPT_DpOT0_ = comdat any - -$_ZNSt14_List_iteratorIPK1AEC2EPNSt8__detail15_List_node_baseE = comdat any - -$_ZNKSt10_List_nodeIPK1AE9_M_valptrEv = comdat any - -$_ZNK9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv = comdat any - -$_ZNK9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %alist = alloca %"class.std::__cxx11::list", align 8 - %a = alloca %class.A, align 8 - %ref.tmp = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %it = alloca %"struct.std::_List_const_iterator", align 8 - %ref.tmp1 = alloca %"struct.std::_List_iterator", align 8 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt7__cxx114listIPK1ASaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %alist) #10 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #10 - store ptr %a, ptr %ref.tmp, align 8 - invoke void @_ZNSt7__cxx114listIPK1ASaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %alist, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %call = call ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %alist) #10 - %coerce.dive = getelementptr inbounds %"struct.std::_List_iterator", ptr %ref.tmp1, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - call void @_ZNSt20_List_const_iteratorIPK1AEC2ERKSt14_List_iteratorIS2_E(ptr noundef nonnull align 8 dereferenceable(8) %it, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp1) #10 - %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt20_List_const_iteratorIPK1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #10 - %0 = load ptr, ptr %call2, align 8 - store ptr %0, ptr %aptr, align 8 - %1 = load ptr, ptr %aptr, align 8 - %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) - to label %invoke.cont3 unwind label %lpad - -invoke.cont3: ; preds = %invoke.cont - store i32 0, ptr %retval, align 4 - call void @_ZNSt7__cxx114listIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %alist) #10 - %4 = load i32, ptr %retval, align 4 - ret i32 %4 - -lpad: ; preds = %invoke.cont, %entry - %5 = landingpad { ptr, i32 } - cleanup - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - call void @_ZNSt7__cxx114listIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %alist) #10 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val4 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val4 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx114listIPK1ASaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx114listIPK1ASaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_List_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 - %coerce.dive = getelementptr inbounds %"struct.std::_List_iterator", ptr %agg.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %coerce.dive2 = getelementptr inbounds %"struct.std::_List_iterator", ptr %agg.tmp, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive2, align 8 - call void @_ZNSt7__cxx114listIPK1ASaIS3_EE9_M_insertIJS3_EEEvSt14_List_iteratorIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr %1, ptr noundef nonnull align 8 dereferenceable(8) %0) - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::_List_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - %_M_node = getelementptr inbounds %"struct.std::__cxx11::_List_base>::_List_impl", ptr %_M_impl, i32 0, i32 0 - %_M_next = getelementptr inbounds %"struct.std::__detail::_List_node_base", ptr %_M_node, i32 0, i32 0 - %0 = load ptr, ptr %_M_next, align 8 - call void @_ZNSt14_List_iteratorIPK1AEC2EPNSt8__detail15_List_node_baseE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #10 - %coerce.dive = getelementptr inbounds %"struct.std::_List_iterator", ptr %retval, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive, align 8 - ret ptr %1 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt20_List_const_iteratorIPK1AEC2ERKSt14_List_iteratorIS2_E(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_List_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_node2 = getelementptr inbounds %"struct.std::_List_iterator", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_node2, align 8 - store ptr %1, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt20_List_const_iteratorIPK1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_List_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = invoke noundef ptr @_ZNKSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %0) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - ret ptr %call - -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #11 - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx114listIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE10_List_implC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %_M_impl) #10 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE10_List_implC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaISt10_List_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #10 - %_M_node = getelementptr inbounds %"struct.std::__cxx11::_List_base>::_List_impl", ptr %this1, i32 0, i32 0 - call void @_ZNSt8__detail17_List_node_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %_M_node) #10 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt10_List_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #10 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail17_List_node_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail17_List_node_header7_M_initEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail17_List_node_header7_M_initEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_prev = getelementptr inbounds %"struct.std::__detail::_List_node_base", ptr %this1, i32 0, i32 1 - store ptr %this1, ptr %_M_prev, align 8 - %_M_next = getelementptr inbounds %"struct.std::__detail::_List_node_base", ptr %this1, i32 0, i32 0 - store ptr %this1, ptr %_M_next, align 8 - %_M_size = getelementptr inbounds %"struct.std::__detail::_List_node_header", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_size, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE8_M_clearEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE10_List_implD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %_M_impl) #10 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE8_M_clearEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__cur = alloca ptr, align 8 - %__tmp = alloca ptr, align 8 - %__val = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - %_M_node = getelementptr inbounds %"struct.std::__cxx11::_List_base>::_List_impl", ptr %_M_impl, i32 0, i32 0 - %_M_next = getelementptr inbounds %"struct.std::__detail::_List_node_base", ptr %_M_node, i32 0, i32 0 - %0 = load ptr, ptr %_M_next, align 8 - store ptr %0, ptr %__cur, align 8 - br label %while.cond - -while.cond: ; preds = %invoke.cont, %entry - %1 = load ptr, ptr %__cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - %_M_node3 = getelementptr inbounds %"struct.std::__cxx11::_List_base>::_List_impl", ptr %_M_impl2, i32 0, i32 0 - %cmp = icmp ne ptr %1, %_M_node3 - br i1 %cmp, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %2 = load ptr, ptr %__cur, align 8 - store ptr %2, ptr %__tmp, align 8 - %3 = load ptr, ptr %__tmp, align 8 - %_M_next4 = getelementptr inbounds %"struct.std::__detail::_List_node_base", ptr %3, i32 0, i32 0 - %4 = load ptr, ptr %_M_next4, align 8 - store ptr %4, ptr %__cur, align 8 - %5 = load ptr, ptr %__tmp, align 8 - %call = invoke noundef ptr @_ZNSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %5) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %while.body - store ptr %call, ptr %__val, align 8 - %call5 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 - %6 = load ptr, ptr %__val, align 8 - call void @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE7destroyIS3_EEvRS5_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call5, ptr noundef %6) #10 - %7 = load ptr, ptr %__tmp, align 8 - call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_put_nodeEPSt10_List_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef %7) #10 - br label %while.cond, !llvm.loop !6 - -while.end: ; preds = %while.cond - ret void - -terminate.lpad: ; preds = %while.body - %8 = landingpad { ptr, i32 } - catch ptr null - %9 = extractvalue { ptr, i32 } %8, 0 - call void @__clang_call_terminate(ptr %9) #11 - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE10_List_implD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaISt10_List_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #10 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_List_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %_M_storage) #10 - ret ptr %call -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #5 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #10 - call void @_ZSt9terminatev() #11 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE7destroyIS3_EEvRS5_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE7destroyIS4_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #10 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_put_nodeEPSt10_List_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef %__p) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__p.addr, align 8 - invoke void @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE10deallocateERS5_PS4_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef %0, i64 noundef 1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - ret void - -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #11 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #10 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE7destroyIS4_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE10deallocateERS5_PS4_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE10deallocateEPS5_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE10deallocateEPS5_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #10 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #6 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt10_List_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #10 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx114listIPK1ASaIS3_EE9_M_insertIJS3_EEEvSt14_List_iteratorIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr %__position.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %__position = alloca %"struct.std::_List_iterator", align 8 - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__tmp = alloca ptr, align 8 - %coerce.dive = getelementptr inbounds %"struct.std::_List_iterator", ptr %__position, i32 0, i32 0 - store ptr %__position.coerce, ptr %coerce.dive, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__args.addr, align 8 - %call = call noundef ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE14_M_create_nodeIJS3_EEEPSt10_List_nodeIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef nonnull align 8 dereferenceable(8) %0) - store ptr %call, ptr %__tmp, align 8 - %1 = load ptr, ptr %__tmp, align 8 - %_M_node = getelementptr inbounds %"struct.std::_List_iterator", ptr %__position, i32 0, i32 0 - %2 = load ptr, ptr %_M_node, align 8 - call void @_ZNSt8__detail15_List_node_base7_M_hookEPS0_(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef %2) #10 - call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_inc_sizeEm(ptr noundef nonnull align 8 dereferenceable(24) %this1, i64 noundef 1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::_List_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - %_M_node = getelementptr inbounds %"struct.std::__cxx11::_List_base>::_List_impl", ptr %_M_impl, i32 0, i32 0 - call void @_ZNSt14_List_iteratorIPK1AEC2EPNSt8__detail15_List_node_baseE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %_M_node) #10 - %coerce.dive = getelementptr inbounds %"struct.std::_List_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE14_M_create_nodeIJS3_EEEPSt10_List_nodeIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__p = alloca ptr, align 8 - %__alloc = alloca ptr, align 8 - %__guard = alloca %"struct.std::__allocated_ptr", align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) - store ptr %call, ptr %__p, align 8 - %call2 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 - store ptr %call2, ptr %__alloc, align 8 - %0 = load ptr, ptr %__alloc, align 8 - %1 = load ptr, ptr %__p, align 8 - call void @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEEC2ERS5_PS4_(ptr noundef nonnull align 8 dereferenceable(16) %__guard, ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #10 - %2 = load ptr, ptr %__alloc, align 8 - %3 = load ptr, ptr %__p, align 8 - %call3 = call noundef ptr @_ZNSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %3) - %4 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE9constructIS3_JS3_EEEvRS5_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef %call3, ptr noundef nonnull align 8 dereferenceable(8) %4) #10 - %call4 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEEaSEDn(ptr noundef nonnull align 8 dereferenceable(16) %__guard, ptr null) #10 - %5 = load ptr, ptr %__p, align 8 - call void @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %__guard) #10 - ret ptr %5 -} - -; Function Attrs: nounwind -declare void @_ZNSt8__detail15_List_node_base7_M_hookEPS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #7 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_inc_sizeEm(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %__n) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__n.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - %_M_node = getelementptr inbounds %"struct.std::__cxx11::_List_base>::_List_impl", ptr %_M_impl, i32 0, i32 0 - %_M_size = getelementptr inbounds %"struct.std::__detail::_List_node_header", ptr %_M_node, i32 0, i32 1 - %1 = load i64, ptr %_M_size, align 8 - %add = add i64 %1, %0 - store i64 %add, ptr %_M_size, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - %call = call noundef ptr @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE8allocateERS5_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, i64 noundef 1) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEEC2ERS5_PS4_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__ptr) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__ptr.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__ptr, ptr %__ptr.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_alloc = getelementptr inbounds %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__a.addr, align 8 - store ptr %0, ptr %_M_alloc, align 8 - %_M_ptr = getelementptr inbounds %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %__ptr.addr, align 8 - store ptr %1, ptr %_M_ptr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE9constructIS3_JS3_EEEvRS5_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE9constructIS4_JS4_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #10 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEEaSEDn(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr %0) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_ptr = getelementptr inbounds %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_ptr, align 8 - ret ptr %this1 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #4 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_ptr = getelementptr inbounds %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 1 - %0 = load ptr, ptr %_M_ptr, align 8 - %cmp = icmp ne ptr %0, null - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_alloc = getelementptr inbounds %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 0 - %1 = load ptr, ptr %_M_alloc, align 8 - %_M_ptr2 = getelementptr inbounds %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %_M_ptr2, align 8 - invoke void @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE10deallocateERS5_PS4_m(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2, i64 noundef 1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %if.then - br label %if.end - -if.end: ; preds = %invoke.cont, %entry - ret void - -terminate.lpad: ; preds = %if.then - %3 = landingpad { ptr, i32 } - catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #11 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE8allocateERS5_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #10 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #12 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 24 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #13 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 384307168202282325 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #8 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #9 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE9constructIS4_JS4_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - %2 = load ptr, ptr %1, align 8 - store ptr %2, ptr %0, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_List_iteratorIPK1AEC2EPNSt8__detail15_List_node_baseE(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__x) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_List_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - store ptr %0, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_List_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %_M_storage) #10 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #10 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { nounwind } -attributes #11 = { noreturn nounwind } -attributes #12 = { noreturn } -attributes #13 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/basic_cpp_tests/list-2.cpp.bc b/test_cases_bc/basic_cpp_tests/list-2.cpp.bc deleted file mode 100644 index b01c46ea..00000000 --- a/test_cases_bc/basic_cpp_tests/list-2.cpp.bc +++ /dev/null @@ -1,1006 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/list-2.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/list-2.cpp" -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-unknown-linux-gnu" - -%"class.std::__cxx11::list" = type { %"class.std::__cxx11::_List_base" } -%"class.std::__cxx11::_List_base" = type { %"struct.std::__cxx11::_List_base>::_List_impl" } -%"struct.std::__cxx11::_List_base>::_List_impl" = type { %"struct.std::__detail::_List_node_header" } -%"struct.std::__detail::_List_node_header" = type { %"struct.std::__detail::_List_node_base", i64 } -%"struct.std::__detail::_List_node_base" = type { ptr, ptr } -%class.A = type { ptr } -%"struct.std::_List_iterator" = type { ptr } -%"struct.std::_List_node" = type { %"struct.std::__detail::_List_node_base", %"struct.__gnu_cxx::__aligned_membuf" } -%"struct.__gnu_cxx::__aligned_membuf" = type { [8 x i8] } -%"struct.std::__allocated_ptr" = type { ptr, ptr } - -$_ZNSt7__cxx114listIPK1ASaIS3_EEC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt7__cxx114listIPK1ASaIS3_EE9push_backEOS3_ = comdat any - -$_ZNSt7__cxx114listIPK1ASaIS3_EE5frontEv = comdat any - -$_ZNSt7__cxx114listIPK1ASaIS3_EED2Ev = comdat any - -$_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EEC2Ev = comdat any - -$_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE10_List_implC2Ev = comdat any - -$_ZNSaISt10_List_nodeIPK1AEEC2Ev = comdat any - -$_ZNSt8__detail17_List_node_headerC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEEC2Ev = comdat any - -$_ZNSt8__detail17_List_node_header7_M_initEv = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EED2Ev = comdat any - -$_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE8_M_clearEv = comdat any - -$_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE10_List_implD2Ev = comdat any - -$_ZNSt10_List_nodeIPK1AE9_M_valptrEv = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE7destroyIS3_EEvRS5_PT_ = comdat any - -$_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE21_M_get_Node_allocatorEv = comdat any - -$_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_put_nodeEPSt10_List_nodeIS3_E = comdat any - -$_ZN9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv = comdat any - -$_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE7destroyIS4_EEvPT_ = comdat any - -$_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE10deallocateERS5_PS4_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE10deallocateEPS5_m = comdat any - -$_ZNSaISt10_List_nodeIPK1AEED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEED2Ev = comdat any - -$_ZNSt7__cxx114listIPK1ASaIS3_EE9_M_insertIJS3_EEEvSt14_List_iteratorIS3_EDpOT_ = comdat any - -$_ZNSt7__cxx114listIPK1ASaIS3_EE3endEv = comdat any - -$_ZNSt7__cxx114listIPK1ASaIS3_EE14_M_create_nodeIJS3_EEEPSt10_List_nodeIS3_EDpOT_ = comdat any - -$_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_inc_sizeEm = comdat any - -$_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_get_nodeEv = comdat any - -$_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEEC2ERS5_PS4_ = comdat any - -$_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE9constructIS3_JS3_EEEvRS5_PT_DpOT0_ = comdat any - -$_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEEaSEDn = comdat any - -$_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEED2Ev = comdat any - -$_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE8allocateERS5_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE11_M_max_sizeEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE9constructIS4_JS4_EEEvPT_DpOT0_ = comdat any - -$_ZNSt14_List_iteratorIPK1AEC2EPNSt8__detail15_List_node_baseE = comdat any - -$_ZNSt7__cxx114listIPK1ASaIS3_EE5beginEv = comdat any - -$_ZNKSt14_List_iteratorIPK1AEdeEv = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %alist = alloca %"class.std::__cxx11::list", align 8 - %a = alloca %class.A, align 8 - %ref.tmp = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt7__cxx114listIPK1ASaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %alist) #10 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #10 - store ptr %a, ptr %ref.tmp, align 8 - invoke void @_ZNSt7__cxx114listIPK1ASaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %alist, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %alist) #10 - %0 = load ptr, ptr %call, align 8 - store ptr %0, ptr %aptr, align 8 - %1 = load ptr, ptr %aptr, align 8 - %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) - to label %invoke.cont1 unwind label %lpad - -invoke.cont1: ; preds = %invoke.cont - store i32 0, ptr %retval, align 4 - call void @_ZNSt7__cxx114listIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %alist) #10 - %4 = load i32, ptr %retval, align 4 - ret i32 %4 - -lpad: ; preds = %invoke.cont, %entry - %5 = landingpad { ptr, i32 } - cleanup - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - call void @_ZNSt7__cxx114listIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %alist) #10 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx114listIPK1ASaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx114listIPK1ASaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_List_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 - %coerce.dive = getelementptr inbounds %"struct.std::_List_iterator", ptr %agg.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %coerce.dive2 = getelementptr inbounds %"struct.std::_List_iterator", ptr %agg.tmp, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive2, align 8 - call void @_ZNSt7__cxx114listIPK1ASaIS3_EE9_M_insertIJS3_EEEvSt14_List_iteratorIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr %1, ptr noundef nonnull align 8 dereferenceable(8) %0) - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %ref.tmp = alloca %"struct.std::_List_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 - %coerce.dive = getelementptr inbounds %"struct.std::_List_iterator", ptr %ref.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt14_List_iteratorIPK1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #10 - ret ptr %call2 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx114listIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE10_List_implC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %_M_impl) #10 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE10_List_implC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaISt10_List_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #10 - %_M_node = getelementptr inbounds %"struct.std::__cxx11::_List_base>::_List_impl", ptr %this1, i32 0, i32 0 - call void @_ZNSt8__detail17_List_node_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %_M_node) #10 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt10_List_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #10 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail17_List_node_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail17_List_node_header7_M_initEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail17_List_node_header7_M_initEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_prev = getelementptr inbounds %"struct.std::__detail::_List_node_base", ptr %this1, i32 0, i32 1 - store ptr %this1, ptr %_M_prev, align 8 - %_M_next = getelementptr inbounds %"struct.std::__detail::_List_node_base", ptr %this1, i32 0, i32 0 - store ptr %this1, ptr %_M_next, align 8 - %_M_size = getelementptr inbounds %"struct.std::__detail::_List_node_header", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_size, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE8_M_clearEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE10_List_implD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %_M_impl) #10 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE8_M_clearEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__cur = alloca ptr, align 8 - %__tmp = alloca ptr, align 8 - %__val = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - %_M_node = getelementptr inbounds %"struct.std::__cxx11::_List_base>::_List_impl", ptr %_M_impl, i32 0, i32 0 - %_M_next = getelementptr inbounds %"struct.std::__detail::_List_node_base", ptr %_M_node, i32 0, i32 0 - %0 = load ptr, ptr %_M_next, align 8 - store ptr %0, ptr %__cur, align 8 - br label %while.cond - -while.cond: ; preds = %invoke.cont, %entry - %1 = load ptr, ptr %__cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - %_M_node3 = getelementptr inbounds %"struct.std::__cxx11::_List_base>::_List_impl", ptr %_M_impl2, i32 0, i32 0 - %cmp = icmp ne ptr %1, %_M_node3 - br i1 %cmp, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %2 = load ptr, ptr %__cur, align 8 - store ptr %2, ptr %__tmp, align 8 - %3 = load ptr, ptr %__tmp, align 8 - %_M_next4 = getelementptr inbounds %"struct.std::__detail::_List_node_base", ptr %3, i32 0, i32 0 - %4 = load ptr, ptr %_M_next4, align 8 - store ptr %4, ptr %__cur, align 8 - %5 = load ptr, ptr %__tmp, align 8 - %call = invoke noundef ptr @_ZNSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %5) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %while.body - store ptr %call, ptr %__val, align 8 - %call5 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 - %6 = load ptr, ptr %__val, align 8 - call void @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE7destroyIS3_EEvRS5_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call5, ptr noundef %6) #10 - %7 = load ptr, ptr %__tmp, align 8 - call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_put_nodeEPSt10_List_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef %7) #10 - br label %while.cond, !llvm.loop !6 - -while.end: ; preds = %while.cond - ret void - -terminate.lpad: ; preds = %while.body - %8 = landingpad { ptr, i32 } - catch ptr null - %9 = extractvalue { ptr, i32 } %8, 0 - call void @__clang_call_terminate(ptr %9) #11 - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE10_List_implD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaISt10_List_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #10 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_List_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %_M_storage) #10 - ret ptr %call -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #5 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #10 - call void @_ZSt9terminatev() #11 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE7destroyIS3_EEvRS5_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE7destroyIS4_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #10 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_put_nodeEPSt10_List_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef %__p) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__p.addr, align 8 - invoke void @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE10deallocateERS5_PS4_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef %0, i64 noundef 1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - ret void - -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #11 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #10 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE7destroyIS4_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE10deallocateERS5_PS4_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE10deallocateEPS5_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE10deallocateEPS5_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #10 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #6 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt10_List_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #10 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx114listIPK1ASaIS3_EE9_M_insertIJS3_EEEvSt14_List_iteratorIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr %__position.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %__position = alloca %"struct.std::_List_iterator", align 8 - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__tmp = alloca ptr, align 8 - %coerce.dive = getelementptr inbounds %"struct.std::_List_iterator", ptr %__position, i32 0, i32 0 - store ptr %__position.coerce, ptr %coerce.dive, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__args.addr, align 8 - %call = call noundef ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE14_M_create_nodeIJS3_EEEPSt10_List_nodeIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef nonnull align 8 dereferenceable(8) %0) - store ptr %call, ptr %__tmp, align 8 - %1 = load ptr, ptr %__tmp, align 8 - %_M_node = getelementptr inbounds %"struct.std::_List_iterator", ptr %__position, i32 0, i32 0 - %2 = load ptr, ptr %_M_node, align 8 - call void @_ZNSt8__detail15_List_node_base7_M_hookEPS0_(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef %2) #10 - call void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_inc_sizeEm(ptr noundef nonnull align 8 dereferenceable(24) %this1, i64 noundef 1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::_List_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - %_M_node = getelementptr inbounds %"struct.std::__cxx11::_List_base>::_List_impl", ptr %_M_impl, i32 0, i32 0 - call void @_ZNSt14_List_iteratorIPK1AEC2EPNSt8__detail15_List_node_baseE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %_M_node) #10 - %coerce.dive = getelementptr inbounds %"struct.std::_List_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE14_M_create_nodeIJS3_EEEPSt10_List_nodeIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__p = alloca ptr, align 8 - %__alloc = alloca ptr, align 8 - %__guard = alloca %"struct.std::__allocated_ptr", align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) - store ptr %call, ptr %__p, align 8 - %call2 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #10 - store ptr %call2, ptr %__alloc, align 8 - %0 = load ptr, ptr %__alloc, align 8 - %1 = load ptr, ptr %__p, align 8 - call void @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEEC2ERS5_PS4_(ptr noundef nonnull align 8 dereferenceable(16) %__guard, ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #10 - %2 = load ptr, ptr %__alloc, align 8 - %3 = load ptr, ptr %__p, align 8 - %call3 = call noundef ptr @_ZNSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %3) - %4 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE9constructIS3_JS3_EEEvRS5_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef %call3, ptr noundef nonnull align 8 dereferenceable(8) %4) #10 - %call4 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEEaSEDn(ptr noundef nonnull align 8 dereferenceable(16) %__guard, ptr null) #10 - %5 = load ptr, ptr %__p, align 8 - call void @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %__guard) #10 - ret ptr %5 -} - -; Function Attrs: nounwind -declare void @_ZNSt8__detail15_List_node_base7_M_hookEPS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #7 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_inc_sizeEm(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %__n) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__n.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - %_M_node = getelementptr inbounds %"struct.std::__cxx11::_List_base>::_List_impl", ptr %_M_impl, i32 0, i32 0 - %_M_size = getelementptr inbounds %"struct.std::__detail::_List_node_header", ptr %_M_node, i32 0, i32 1 - %1 = load i64, ptr %_M_size, align 8 - %add = add i64 %1, %0 - store i64 %add, ptr %_M_size, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt7__cxx1110_List_baseIPK1ASaIS3_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - %call = call noundef ptr @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE8allocateERS5_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, i64 noundef 1) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEEC2ERS5_PS4_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__ptr) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__ptr.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__ptr, ptr %__ptr.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_alloc = getelementptr inbounds %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__a.addr, align 8 - store ptr %0, ptr %_M_alloc, align 8 - %_M_ptr = getelementptr inbounds %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %__ptr.addr, align 8 - store ptr %1, ptr %_M_ptr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE9constructIS3_JS3_EEEvRS5_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE9constructIS4_JS4_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #10 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEEaSEDn(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr %0) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_ptr = getelementptr inbounds %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_ptr, align 8 - ret ptr %this1 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15__allocated_ptrISaISt10_List_nodeIPK1AEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #4 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_ptr = getelementptr inbounds %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 1 - %0 = load ptr, ptr %_M_ptr, align 8 - %cmp = icmp ne ptr %0, null - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_alloc = getelementptr inbounds %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 0 - %1 = load ptr, ptr %_M_alloc, align 8 - %_M_ptr2 = getelementptr inbounds %"struct.std::__allocated_ptr", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %_M_ptr2, align 8 - invoke void @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE10deallocateERS5_PS4_m(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2, i64 noundef 1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %if.then - br label %if.end - -if.end: ; preds = %invoke.cont, %entry - ret void - -terminate.lpad: ; preds = %if.then - %3 = landingpad { ptr, i32 } - catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #11 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaISt10_List_nodeIPK1AEEE8allocateERS5_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #10 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #12 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 24 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #13 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 384307168202282325 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #8 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #9 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIPK1AEE9constructIS4_JS4_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - %2 = load ptr, ptr %1, align 8 - store ptr %2, ptr %0, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt14_List_iteratorIPK1AEC2EPNSt8__detail15_List_node_baseE(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__x) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_List_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - store ptr %0, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt7__cxx114listIPK1ASaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::_List_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::__cxx11::_List_base", ptr %this1, i32 0, i32 0 - %_M_node = getelementptr inbounds %"struct.std::__cxx11::_List_base>::_List_impl", ptr %_M_impl, i32 0, i32 0 - %_M_next = getelementptr inbounds %"struct.std::__detail::_List_node_base", ptr %_M_node, i32 0, i32 0 - %0 = load ptr, ptr %_M_next, align 8 - call void @_ZNSt14_List_iteratorIPK1AEC2EPNSt8__detail15_List_node_baseE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #10 - %coerce.dive = getelementptr inbounds %"struct.std::_List_iterator", ptr %retval, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive, align 8 - ret ptr %1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt14_List_iteratorIPK1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_List_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = call noundef ptr @_ZNSt10_List_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %0) - ret ptr %call -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { nounwind } -attributes #11 = { noreturn nounwind } -attributes #12 = { noreturn } -attributes #13 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/basic_cpp_tests/map-1.cpp.bc b/test_cases_bc/basic_cpp_tests/map-1.cpp.bc deleted file mode 100644 index ddbc19a6..00000000 --- a/test_cases_bc/basic_cpp_tests/map-1.cpp.bc +++ /dev/null @@ -1,1735 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/map-1.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/map-1.cpp" -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-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%"class.std::map" = type { %"class.std::_Rb_tree" } -%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Rb_tree_impl" } -%"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Rb_tree_impl" = type { %"struct.std::_Rb_tree_key_compare", %"struct.std::_Rb_tree_header" } -%"struct.std::_Rb_tree_key_compare" = type { %"struct.std::less" } -%"struct.std::less" = type { i8 } -%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 } -%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr } -%class.A = type { ptr } -%"struct.std::pair.0" = type { i32, %class.A } -%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_iterator", i8, [7 x i8] }> -%"struct.std::_Rb_tree_iterator" = type { ptr } -%"struct.std::_Rb_tree_const_iterator" = type { ptr } -%"struct.std::pair.2" = type { i32, %class.A } -%"struct.std::_Rb_tree_node" = type { %"struct.std::_Rb_tree_node_base", %"struct.__gnu_cxx::__aligned_membuf" } -%"struct.__gnu_cxx::__aligned_membuf" = type { [16 x i8] } -%"struct.std::pair.4" = type { ptr, ptr } -%"struct.std::_Select1st" = type { i8 } - -$_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEEC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE6insertIS3_IiS0_EEENSt9enable_ifIXsr16is_constructibleIS5_T_EE5valueES3_ISt17_Rb_tree_iteratorIS5_EbEE4typeEOSB_ = comdat any - -$_ZNSt4pairIi1AEC2IiRS0_Lb1EEEOT_OT0_ = comdat any - -$_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE5beginEv = comdat any - -$_ZNSt23_Rb_tree_const_iteratorISt4pairIKi1AEEC2ERKSt17_Rb_tree_iteratorIS3_E = comdat any - -$_ZNKSt23_Rb_tree_const_iteratorISt4pairIKi1AEEptEv = comdat any - -$_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEED2Ev = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EEC2Ev = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE13_Rb_tree_implIS7_Lb1EEC2Ev = comdat any - -$_ZNSaISt13_Rb_tree_nodeISt4pairIKi1AEEEC2Ev = comdat any - -$_ZNSt20_Rb_tree_key_compareISt4lessIiEEC2Ev = comdat any - -$_ZNSt15_Rb_tree_headerC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEEC2Ev = comdat any - -$_ZNSt15_Rb_tree_header8_M_resetEv = comdat any - -$__clang_call_terminate = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZN1AC2ERKS_ = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EED2Ev = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_beginEv = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE13_Rb_tree_implIS7_Lb1EED2Ev = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_S_rightEPSt18_Rb_tree_node_base = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE7_S_leftEPSt18_Rb_tree_node_base = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS3_E = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeIS3_E = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_put_nodeEPSt13_Rb_tree_nodeIS3_E = comdat any - -$_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKi1AEEEE7destroyIS4_EEvRS6_PT_ = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE21_M_get_Node_allocatorEv = comdat any - -$_ZNSt13_Rb_tree_nodeISt4pairIKi1AEE9_M_valptrEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE7destroyIS5_EEvPT_ = comdat any - -$_ZN9__gnu_cxx16__aligned_membufISt4pairIKi1AEE6_M_ptrEv = comdat any - -$_ZN9__gnu_cxx16__aligned_membufISt4pairIKi1AEE7_M_addrEv = comdat any - -$_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKi1AEEEE10deallocateERS6_PS5_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE10deallocateEPS6_m = comdat any - -$_ZNSaISt13_Rb_tree_nodeISt4pairIKi1AEEED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEED2Ev = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE17_M_emplace_uniqueIJS0_IiS2_EEEES0_ISt17_Rb_tree_iteratorIS3_EbEDpOT_ = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE14_M_create_nodeIJS0_IiS2_EEEEPSt13_Rb_tree_nodeIS3_EDpOT_ = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE24_M_get_insert_unique_posERS1_ = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_S_keyEPKSt13_Rb_tree_nodeIS3_E = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSB_PSt13_Rb_tree_nodeIS3_E = comdat any - -$_ZNSt4pairISt17_Rb_tree_iteratorIS_IKi1AEEbEC2IS4_bLb1EEEOT_OT0_ = comdat any - -$_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEC2EPSt18_Rb_tree_node_base = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_get_nodeEv = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE17_M_construct_nodeIJS0_IiS2_EEEEvPSt13_Rb_tree_nodeIS3_EDpOT_ = comdat any - -$_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKi1AEEEE8allocateERS6_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE11_M_max_sizeEv = comdat any - -$_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKi1AEEEE9constructIS4_JS1_IiS3_EEEEvRS6_PT_DpOT0_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE9constructIS5_JS2_IiS4_EEEEvPT_DpOT0_ = comdat any - -$_ZNSt4pairIKi1AEC2IiS1_Lb1EEEOS_IT_T0_E = comdat any - -$_ZN1AC2EOS_ = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_M_endEv = comdat any - -$_ZNKSt4lessIiEclERKiS2_ = comdat any - -$_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKi1AEES6_ = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE5beginEv = comdat any - -$_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKi1AEERS1_Lb1EEEOT_OT0_ = comdat any - -$_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEmmEv = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_S_keyEPKSt18_Rb_tree_node_base = comdat any - -$_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_Lb1EEEOT_RKS1_ = comdat any - -$_ZNKSt10_Select1stISt4pairIKi1AEEclERKS3_ = comdat any - -$_ZNKSt13_Rb_tree_nodeISt4pairIKi1AEE9_M_valptrEv = comdat any - -$_ZNK9__gnu_cxx16__aligned_membufISt4pairIKi1AEE6_M_ptrEv = comdat any - -$_ZNK9__gnu_cxx16__aligned_membufISt4pairIKi1AEE7_M_addrEv = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 -@__dso_handle = external hidden global i8 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_map_1.cpp, ptr null }] - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init() #3 section ".text.startup" { -entry: - call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = call i32 @__cxa_atexit(ptr @_ZNSt8ios_base4InitD1Ev, ptr @_ZStL8__ioinit, ptr @__dso_handle) #5 - ret void -} - -declare void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 - -; Function Attrs: nounwind -declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 - -; Function Attrs: nounwind -declare i32 @__cxa_atexit(ptr, ptr, ptr) #5 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #6 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %amap = alloca %"class.std::map", align 8 - %a = alloca %class.A, align 8 - %ref.tmp = alloca %"struct.std::pair.0", align 8 - %ref.tmp1 = alloca i32, align 4 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %coerce = alloca %"struct.std::pair", align 8 - %it = alloca %"struct.std::_Rb_tree_const_iterator", align 8 - %ref.tmp3 = alloca %"struct.std::_Rb_tree_iterator", align 8 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %amap) #5 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 - store i32 0, ptr %ref.tmp1, align 4 - invoke void @_ZNSt4pairIi1AEC2IiRS0_Lb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp, ptr noundef nonnull align 4 dereferenceable(4) %ref.tmp1, ptr noundef nonnull align 8 dereferenceable(8) %a) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %call = invoke { ptr, i8 } @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE6insertIS3_IiS0_EEENSt9enable_ifIXsr16is_constructibleIS5_T_EE5valueES3_ISt17_Rb_tree_iteratorIS5_EbEE4typeEOSB_(ptr noundef nonnull align 8 dereferenceable(48) %amap, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp) - to label %invoke.cont2 unwind label %lpad - -invoke.cont2: ; preds = %invoke.cont - %0 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 0 - %1 = extractvalue { ptr, i8 } %call, 0 - store ptr %1, ptr %0, align 8 - %2 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 1 - %3 = extractvalue { ptr, i8 } %call, 1 - store i8 %3, ptr %2, align 8 - %call4 = call ptr @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %amap) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %ref.tmp3, i32 0, i32 0 - store ptr %call4, ptr %coerce.dive, align 8 - call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKi1AEEC2ERKSt17_Rb_tree_iteratorIS3_E(ptr noundef nonnull align 8 dereferenceable(8) %it, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp3) #5 - %call5 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKi1AEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 - %second = getelementptr inbounds %"struct.std::pair.2", ptr %call5, i32 0, i32 1 - store ptr %second, ptr %aptr, align 8 - %4 = load ptr, ptr %aptr, align 8 - %5 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %4, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %6 = load ptr, ptr %vfn, align 8 - invoke void %6(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %5) - to label %invoke.cont6 unwind label %lpad - -invoke.cont6: ; preds = %invoke.cont2 - store i32 0, ptr %retval, align 4 - call void @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %amap) #5 - %7 = load i32, ptr %retval, align 4 - ret i32 %7 - -lpad: ; preds = %invoke.cont2, %invoke.cont, %entry - %8 = landingpad { ptr, i32 } - cleanup - %9 = extractvalue { ptr, i32 } %8, 0 - store ptr %9, ptr %exn.slot, align 8 - %10 = extractvalue { ptr, i32 } %8, 1 - store i32 %10, ptr %ehselector.slot, align 4 - call void @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %amap) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val7 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val7 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::map", ptr %this1, i32 0, i32 0 - call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, i8 } @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE6insertIS3_IiS0_EEENSt9enable_ifIXsr16is_constructibleIS5_T_EE5valueES3_ISt17_Rb_tree_iteratorIS5_EbEE4typeEOSB_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(16) %__x) #0 comdat align 2 { -entry: - %retval = alloca %"struct.std::pair", align 8 - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::map", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call { ptr, i8 } @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE17_M_emplace_uniqueIJS0_IiS2_EEEES0_ISt17_Rb_tree_iteratorIS3_EbEDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %_M_t, ptr noundef nonnull align 8 dereferenceable(16) %0) - %1 = getelementptr inbounds { ptr, i8 }, ptr %retval, i32 0, i32 0 - %2 = extractvalue { ptr, i8 } %call, 0 - store ptr %2, ptr %1, align 8 - %3 = getelementptr inbounds { ptr, i8 }, ptr %retval, i32 0, i32 1 - %4 = extractvalue { ptr, i8 } %call, 1 - store i8 %4, ptr %3, align 8 - %5 = load { ptr, i8 }, ptr %retval, align 8 - ret { ptr, i8 } %5 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairIi1AEC2IiRS0_Lb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 4 dereferenceable(4) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair.0", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %1 = load i32, ptr %0, align 4 - store i32 %1, ptr %first, align 8 - %second = getelementptr inbounds %"struct.std::pair.0", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %__y.addr, align 8 - call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %second, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::map", ptr %this1, i32 0, i32 0 - %call = call ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %coerce.dive2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive2, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKi1AEEC2ERKSt17_Rb_tree_iteratorIS3_E(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__it) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__it.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__it.addr, align 8 - %_M_node2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_node2, align 8 - store ptr %1, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKi1AEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %0) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt3mapIi1ASt4lessIiESaISt4pairIKiS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::map", ptr %this1, i32 0, i32 0 - call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE13_Rb_tree_implIS7_Lb1EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_impl) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE13_Rb_tree_implIS7_Lb1EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaISt13_Rb_tree_nodeISt4pairIKi1AEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt20_Rb_tree_key_compareISt4lessIiEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %0 = getelementptr inbounds i8, ptr %this1, i64 8 - call void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %0) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt13_Rb_tree_nodeISt4pairIKi1AEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt20_Rb_tree_key_compareISt4lessIiEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_key_compare = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", ptr %this1, i32 0, i32 0 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_header2 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_color = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header2, i32 0, i32 0 - store i32 0, ptr %_M_color, align 8 - invoke void @_ZNSt15_Rb_tree_header8_M_resetEv(ptr noundef nonnull align 8 dereferenceable(40) %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #15 - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Rb_tree_header8_M_resetEv(ptr noundef nonnull align 8 dereferenceable(40) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_parent = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 1 - store ptr null, ptr %_M_parent, align 8 - %_M_header2 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_header3 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header3, i32 0, i32 2 - store ptr %_M_header2, ptr %_M_left, align 8 - %_M_header4 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_header5 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_right = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header5, i32 0, i32 3 - store ptr %_M_header4, ptr %_M_right, align 8 - %_M_node_count = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_node_count, align 8 - ret void -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #8 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #5 - call void @_ZSt9terminatev() #15 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - invoke void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE13_Rb_tree_implIS7_Lb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_impl) #5 - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #15 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - br label %while.cond - -while.cond: ; preds = %while.body, %entry - %0 = load ptr, ptr %__x.addr, align 8 - %cmp = icmp ne ptr %0, null - br i1 %cmp, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %1 = load ptr, ptr %__x.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %1) #5 - call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %call) - %2 = load ptr, ptr %__x.addr, align 8 - %call2 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE7_S_leftEPSt18_Rb_tree_node_base(ptr noundef %2) #5 - store ptr %call2, ptr %__y, align 8 - %3 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %3) #5 - %4 = load ptr, ptr %__y, align 8 - store ptr %4, ptr %__x.addr, align 8 - br label %while.cond, !llvm.loop !6 - -while.end: ; preds = %while.cond - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - %_M_parent = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 1 - %0 = load ptr, ptr %_M_parent, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE13_Rb_tree_implIS7_Lb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaISt13_Rb_tree_nodeISt4pairIKi1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %__x) #2 comdat align 2 { -entry: - %__x.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_right = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 3 - %1 = load ptr, ptr %_M_right, align 8 - ret ptr %1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE7_S_leftEPSt18_Rb_tree_node_base(ptr noundef %__x) #2 comdat align 2 { -entry: - %__x.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 2 - %1 = load ptr, ptr %_M_left, align 8 - ret ptr %1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %0) #5 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_put_nodeEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__p) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %0 = load ptr, ptr %__p.addr, align 8 - %call2 = invoke noundef ptr @_ZNSt13_Rb_tree_nodeISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %0) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKi1AEEEE7destroyIS4_EEvRS6_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %call2) #5 - %1 = load ptr, ptr %__p.addr, align 8 - ret void - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #15 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_put_nodeEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__p) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %0 = load ptr, ptr %__p.addr, align 8 - invoke void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKi1AEEEE10deallocateERS6_PS5_m(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %0, i64 noundef 1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - ret void - -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #15 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKi1AEEEE7destroyIS4_EEvRS6_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE7destroyIS5_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt13_Rb_tree_nodeISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_Rb_tree_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %_M_storage) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE7destroyIS5_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufISt4pairIKi1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufISt4pairIKi1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKi1AEEEE10deallocateERS6_PS5_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE10deallocateEPS6_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE10deallocateEPS6_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #9 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt13_Rb_tree_nodeISt4pairIKi1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, i8 } @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE17_M_emplace_uniqueIJS0_IiS2_EEEES0_ISt17_Rb_tree_iteratorIS3_EbEDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(16) %__args) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca %"struct.std::pair", align 8 - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__z = alloca ptr, align 8 - %__res = alloca %"struct.std::pair.4", align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %ref.tmp = alloca %"struct.std::_Rb_tree_iterator", align 8 - %ref.tmp8 = alloca i8, align 1 - %ref.tmp10 = alloca %"struct.std::_Rb_tree_iterator", align 8 - %ref.tmp12 = alloca i8, align 1 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__args.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE14_M_create_nodeIJS0_IiS2_EEEEPSt13_Rb_tree_nodeIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef nonnull align 8 dereferenceable(16) %0) - store ptr %call, ptr %__z, align 8 - %1 = load ptr, ptr %__z, align 8 - %call2 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_S_keyEPKSt13_Rb_tree_nodeIS3_E(ptr noundef %1) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %call4 = invoke { ptr, ptr } @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE24_M_get_insert_unique_posERS1_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef nonnull align 4 dereferenceable(4) %call2) - to label %invoke.cont3 unwind label %lpad - -invoke.cont3: ; preds = %invoke.cont - %2 = getelementptr inbounds { ptr, ptr }, ptr %__res, i32 0, i32 0 - %3 = extractvalue { ptr, ptr } %call4, 0 - store ptr %3, ptr %2, align 8 - %4 = getelementptr inbounds { ptr, ptr }, ptr %__res, i32 0, i32 1 - %5 = extractvalue { ptr, ptr } %call4, 1 - store ptr %5, ptr %4, align 8 - %second = getelementptr inbounds %"struct.std::pair.4", ptr %__res, i32 0, i32 1 - %6 = load ptr, ptr %second, align 8 - %tobool = icmp ne ptr %6, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %invoke.cont3 - %first = getelementptr inbounds %"struct.std::pair.4", ptr %__res, i32 0, i32 0 - %7 = load ptr, ptr %first, align 8 - %second5 = getelementptr inbounds %"struct.std::pair.4", ptr %__res, i32 0, i32 1 - %8 = load ptr, ptr %second5, align 8 - %9 = load ptr, ptr %__z, align 8 - %call7 = invoke ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSB_PSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %7, ptr noundef %8, ptr noundef %9) - to label %invoke.cont6 unwind label %lpad - -invoke.cont6: ; preds = %if.then - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %ref.tmp, i32 0, i32 0 - store ptr %call7, ptr %coerce.dive, align 8 - store i8 1, ptr %ref.tmp8, align 1 - invoke void @_ZNSt4pairISt17_Rb_tree_iteratorIS_IKi1AEEbEC2IS4_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp8) - to label %invoke.cont9 unwind label %lpad - -invoke.cont9: ; preds = %invoke.cont6 - br label %return - -lpad: ; preds = %if.end, %invoke.cont6, %if.then, %invoke.cont, %entry - %10 = landingpad { ptr, i32 } - catch ptr null - %11 = extractvalue { ptr, i32 } %10, 0 - store ptr %11, ptr %exn.slot, align 8 - %12 = extractvalue { ptr, i32 } %10, 1 - store i32 %12, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %13 = call ptr @__cxa_begin_catch(ptr %exn) #5 - %14 = load ptr, ptr %__z, align 8 - call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %14) #5 - invoke void @__cxa_rethrow() #16 - to label %unreachable unwind label %lpad14 - -if.end: ; preds = %invoke.cont3 - %15 = load ptr, ptr %__z, align 8 - call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %15) #5 - %first11 = getelementptr inbounds %"struct.std::pair.4", ptr %__res, i32 0, i32 0 - %16 = load ptr, ptr %first11, align 8 - call void @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp10, ptr noundef %16) #5 - store i8 0, ptr %ref.tmp12, align 1 - invoke void @_ZNSt4pairISt17_Rb_tree_iteratorIS_IKi1AEEbEC2IS4_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp10, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp12) - to label %invoke.cont13 unwind label %lpad - -invoke.cont13: ; preds = %if.end - br label %return - -lpad14: ; preds = %catch - %17 = landingpad { ptr, i32 } - cleanup - %18 = extractvalue { ptr, i32 } %17, 0 - store ptr %18, ptr %exn.slot, align 8 - %19 = extractvalue { ptr, i32 } %17, 1 - store i32 %19, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont15 unwind label %terminate.lpad - -invoke.cont15: ; preds = %lpad14 - br label %eh.resume - -try.cont: ; No predecessors! - call void @llvm.trap() - unreachable - -return: ; preds = %invoke.cont13, %invoke.cont9 - %20 = load { ptr, i8 }, ptr %retval, align 8 - ret { ptr, i8 } %20 - -eh.resume: ; preds = %invoke.cont15 - %exn16 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn16, 0 - %lpad.val17 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val17 - -terminate.lpad: ; preds = %lpad14 - %21 = landingpad { ptr, i32 } - catch ptr null - %22 = extractvalue { ptr, i32 } %21, 0 - call void @__clang_call_terminate(ptr %22) #15 - unreachable - -unreachable: ; preds = %catch - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE14_M_create_nodeIJS0_IiS2_EEEEPSt13_Rb_tree_nodeIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(16) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__tmp = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) - store ptr %call, ptr %__tmp, align 8 - %0 = load ptr, ptr %__tmp, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE17_M_construct_nodeIJS0_IiS2_EEEEvPSt13_Rb_tree_nodeIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %0, ptr noundef nonnull align 8 dereferenceable(16) %1) - %2 = load ptr, ptr %__tmp, align 8 - ret ptr %2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, ptr } @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE24_M_get_insert_unique_posERS1_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 { -entry: - %retval = alloca %"struct.std::pair.4", align 8 - %this.addr = alloca ptr, align 8 - %__k.addr = alloca ptr, align 8 - %__x = alloca ptr, align 8 - %__y = alloca ptr, align 8 - %__comp = alloca i8, align 1 - %__j = alloca %"struct.std::_Rb_tree_iterator", align 8 - %ref.tmp = alloca %"struct.std::_Rb_tree_iterator", align 8 - %ref.tmp20 = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - store ptr %call, ptr %__x, align 8 - %call2 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - store ptr %call2, ptr %__y, align 8 - store i8 1, ptr %__comp, align 1 - br label %while.cond - -while.cond: ; preds = %cond.end, %entry - %0 = load ptr, ptr %__x, align 8 - %cmp = icmp ne ptr %0, null - br i1 %cmp, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %1 = load ptr, ptr %__x, align 8 - store ptr %1, ptr %__y, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %_M_key_compare = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", ptr %_M_impl, i32 0, i32 0 - %2 = load ptr, ptr %__k.addr, align 8 - %3 = load ptr, ptr %__x, align 8 - %call3 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_S_keyEPKSt13_Rb_tree_nodeIS3_E(ptr noundef %3) - %call4 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_key_compare, ptr noundef nonnull align 4 dereferenceable(4) %2, ptr noundef nonnull align 4 dereferenceable(4) %call3) - %frombool = zext i1 %call4 to i8 - store i8 %frombool, ptr %__comp, align 1 - %4 = load i8, ptr %__comp, align 1 - %tobool = trunc i8 %4 to i1 - br i1 %tobool, label %cond.true, label %cond.false - -cond.true: ; preds = %while.body - %5 = load ptr, ptr %__x, align 8 - %call5 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE7_S_leftEPSt18_Rb_tree_node_base(ptr noundef %5) #5 - br label %cond.end - -cond.false: ; preds = %while.body - %6 = load ptr, ptr %__x, align 8 - %call6 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %6) #5 - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi ptr [ %call5, %cond.true ], [ %call6, %cond.false ] - store ptr %cond, ptr %__x, align 8 - br label %while.cond, !llvm.loop !8 - -while.end: ; preds = %while.cond - %7 = load ptr, ptr %__y, align 8 - call void @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %__j, ptr noundef %7) #5 - %8 = load i8, ptr %__comp, align 1 - %tobool7 = trunc i8 %8 to i1 - br i1 %tobool7, label %if.then, label %if.end12 - -if.then: ; preds = %while.end - %call8 = call ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %ref.tmp, i32 0, i32 0 - store ptr %call8, ptr %coerce.dive, align 8 - %call9 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKi1AEES6_(ptr noundef nonnull align 8 dereferenceable(8) %__j, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #5 - br i1 %call9, label %if.then10, label %if.else - -if.then10: ; preds = %if.then - call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKi1AEERS1_Lb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) - br label %return - -if.else: ; preds = %if.then - %call11 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %__j) #5 - br label %if.end - -if.end: ; preds = %if.else - br label %if.end12 - -if.end12: ; preds = %if.end, %while.end - %_M_impl13 = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %_M_key_compare14 = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", ptr %_M_impl13, i32 0, i32 0 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %__j, i32 0, i32 0 - %9 = load ptr, ptr %_M_node, align 8 - %call15 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %9) - %10 = load ptr, ptr %__k.addr, align 8 - %call16 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_key_compare14, ptr noundef nonnull align 4 dereferenceable(4) %call15, ptr noundef nonnull align 4 dereferenceable(4) %10) - br i1 %call16, label %if.then17, label %if.end18 - -if.then17: ; preds = %if.end12 - call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKi1AEERS1_Lb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) - br label %return - -if.end18: ; preds = %if.end12 - %_M_node19 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %__j, i32 0, i32 0 - store ptr null, ptr %ref.tmp20, align 8 - call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_Lb1EEEOT_RKS1_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_node19, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp20) - br label %return - -return: ; preds = %if.end18, %if.then17, %if.then10 - %11 = load { ptr, ptr }, ptr %retval, align 8 - ret { ptr, ptr } %11 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_S_keyEPKSt13_Rb_tree_nodeIS3_E(ptr noundef %__x) #0 comdat align 2 { -entry: - %__x.addr = alloca ptr, align 8 - %ref.tmp = alloca %"struct.std::_Select1st", align 1 - store ptr %__x, ptr %__x.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %0) - %call1 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt10_Select1stISt4pairIKi1AEEclERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(16) %call) - ret ptr %call1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSB_PSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__x, ptr noundef %__p, ptr noundef %__z) #0 comdat align 2 { -entry: - %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__z.addr = alloca ptr, align 8 - %__insert_left = alloca i8, align 1 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__z, ptr %__z.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %cmp = icmp ne ptr %0, null - br i1 %cmp, label %lor.end, label %lor.lhs.false - -lor.lhs.false: ; preds = %entry - %1 = load ptr, ptr %__p.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %cmp2 = icmp eq ptr %1, %call - br i1 %cmp2, label %lor.end, label %lor.rhs - -lor.rhs: ; preds = %lor.lhs.false - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %_M_key_compare = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", ptr %_M_impl, i32 0, i32 0 - %2 = load ptr, ptr %__z.addr, align 8 - %call3 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_S_keyEPKSt13_Rb_tree_nodeIS3_E(ptr noundef %2) - %3 = load ptr, ptr %__p.addr, align 8 - %call4 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %3) - %call5 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_key_compare, ptr noundef nonnull align 4 dereferenceable(4) %call3, ptr noundef nonnull align 4 dereferenceable(4) %call4) - br label %lor.end - -lor.end: ; preds = %lor.rhs, %lor.lhs.false, %entry - %4 = phi i1 [ true, %lor.lhs.false ], [ true, %entry ], [ %call5, %lor.rhs ] - %frombool = zext i1 %4 to i8 - store i8 %frombool, ptr %__insert_left, align 1 - %5 = load i8, ptr %__insert_left, align 1 - %tobool = trunc i8 %5 to i1 - %6 = load ptr, ptr %__z.addr, align 8 - %7 = load ptr, ptr %__p.addr, align 8 - %_M_impl6 = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl6, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %tobool, ptr noundef %6, ptr noundef %7, ptr noundef nonnull align 8 dereferenceable(32) %_M_header) #5 - %_M_impl7 = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr8 = getelementptr inbounds i8, ptr %_M_impl7, i64 8 - %_M_node_count = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr8, i32 0, i32 1 - %8 = load i64, ptr %_M_node_count, align 8 - %inc = add i64 %8, 1 - store i64 %inc, ptr %_M_node_count, align 8 - %9 = load ptr, ptr %__z.addr, align 8 - call void @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %9) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - %10 = load ptr, ptr %coerce.dive, align 8 - ret ptr %10 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairISt17_Rb_tree_iteratorIS_IKi1AEEbEC2IS4_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 1 dereferenceable(1) %__y) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %first, ptr align 8 %0, i64 8, i1 false) - %second = getelementptr inbounds %"struct.std::pair", ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %__y.addr, align 8 - %2 = load i8, ptr %1, align 1 - %tobool = trunc i8 %2 to i1 - %frombool = zext i1 %tobool to i8 - store i8 %frombool, ptr %second, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__x) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - store ptr %0, ptr %_M_node, align 8 - ret void -} - -declare void @__cxa_rethrow() - -declare void @__cxa_end_catch() - -; Function Attrs: cold noreturn nounwind -declare void @llvm.trap() #10 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %call2 = call noundef ptr @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKi1AEEEE8allocateERS6_m(ptr noundef nonnull align 1 dereferenceable(1) %call, i64 noundef 1) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE17_M_construct_nodeIJS0_IiS2_EEEEvPSt13_Rb_tree_nodeIS3_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__node, ptr noundef nonnull align 8 dereferenceable(16) %__args) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__node.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store ptr %__node, ptr %__node.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__node.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %1 = load ptr, ptr %__node.addr, align 8 - %call2 = call noundef ptr @_ZNSt13_Rb_tree_nodeISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %1) - %2 = load ptr, ptr %__args.addr, align 8 - invoke void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKi1AEEEE9constructIS4_JS1_IiS3_EEEEvRS6_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %call2, ptr noundef nonnull align 8 dereferenceable(16) %2) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - br label %try.cont - -lpad: ; preds = %entry - %3 = landingpad { ptr, i32 } - catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - store ptr %4, ptr %exn.slot, align 8 - %5 = extractvalue { ptr, i32 } %3, 1 - store i32 %5, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %6 = call ptr @__cxa_begin_catch(ptr %exn) #5 - %7 = load ptr, ptr %__node.addr, align 8 - %8 = load ptr, ptr %__node.addr, align 8 - call void @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE11_M_put_nodeEPSt13_Rb_tree_nodeIS3_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %8) #5 - invoke void @__cxa_rethrow() #16 - to label %unreachable unwind label %lpad3 - -lpad3: ; preds = %catch - %9 = landingpad { ptr, i32 } - cleanup - %10 = extractvalue { ptr, i32 } %9, 0 - store ptr %10, ptr %exn.slot, align 8 - %11 = extractvalue { ptr, i32 } %9, 1 - store i32 %11, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont4 unwind label %terminate.lpad - -invoke.cont4: ; preds = %lpad3 - br label %eh.resume - -try.cont: ; preds = %invoke.cont - ret void - -eh.resume: ; preds = %invoke.cont4 - %exn5 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn5, 0 - %lpad.val6 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val6 - -terminate.lpad: ; preds = %lpad3 - %12 = landingpad { ptr, i32 } - catch ptr null - %13 = extractvalue { ptr, i32 } %12, 0 - call void @__clang_call_terminate(ptr %13) #15 - unreachable - -unreachable: ; preds = %catch - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKi1AEEEE8allocateERS6_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 48 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #17 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 192153584101141162 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #11 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #12 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKi1AEEEE9constructIS4_JS1_IiS3_EEEEvRS6_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(16) %__args) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE9constructIS5_JS2_IiS4_EEEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(16) %2) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKi1AEEE9constructIS5_JS2_IiS4_EEEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(16) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt4pairIKi1AEC2IiS1_Lb1EEEOS_IT_T0_E(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairIKi1AEC2IiS1_Lb1EEEOS_IT_T0_E(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(16) %__p) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair.2", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__p.addr, align 8 - %first2 = getelementptr inbounds %"struct.std::pair.0", ptr %0, i32 0, i32 0 - %1 = load i32, ptr %first2, align 4 - store i32 %1, ptr %first, align 8 - %second = getelementptr inbounds %"struct.std::pair.2", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %__p.addr, align 8 - %second3 = getelementptr inbounds %"struct.std::pair.0", ptr %2, i32 0, i32 1 - call void @_ZN1AC2EOS_(ptr noundef nonnull align 8 dereferenceable(8) %second, ptr noundef nonnull align 8 dereferenceable(8) %second3) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2EOS_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - ret ptr %_M_header -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 4 dereferenceable(4) %__x, ptr noundef nonnull align 4 dereferenceable(4) %__y) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %1 = load i32, ptr %0, align 4 - %2 = load ptr, ptr %__y.addr, align 8 - %3 = load i32, ptr %2, align 4 - %cmp = icmp slt i32 %1, %3 - ret i1 %cmp -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKi1AEES6_(ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) #2 comdat { -entry: - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_node, align 8 - %2 = load ptr, ptr %__y.addr, align 8 - %_M_node1 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %2, i32 0, i32 0 - %3 = load ptr, ptr %_M_node1, align 8 - %cmp = icmp eq ptr %1, %3 - ret i1 %cmp -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 2 - %0 = load ptr, ptr %_M_left, align 8 - call void @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive, align 8 - ret ptr %1 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKi1AEERS1_Lb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair.4", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %first, align 8 - %second = getelementptr inbounds %"struct.std::pair.4", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %__y.addr, align 8 - %3 = load ptr, ptr %2, align 8 - store ptr %3, ptr %second, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKi1AEEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef %0) #18 - %_M_node2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 - store ptr %call, ptr %_M_node2, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %__x) #0 comdat align 2 { -entry: - %__x.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKi1AESt10_Select1stIS3_ESt4lessIiESaIS3_EE6_S_keyEPKSt13_Rb_tree_nodeIS3_E(ptr noundef %0) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_Lb1EEEOT_RKS1_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair.4", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %first, align 8 - %second = getelementptr inbounds %"struct.std::pair.4", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %__y.addr, align 8 - %3 = load ptr, ptr %2, align 8 - store ptr %3, ptr %second, align 8 - ret void -} - -; Function Attrs: nounwind willreturn memory(read) -declare noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef) #13 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt10_Select1stISt4pairIKi1AEEclERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(16) %__x) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair.2", ptr %0, i32 0, i32 0 - ret ptr %first -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt13_Rb_tree_nodeISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_Rb_tree_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %_M_storage) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufISt4pairIKi1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufISt4pairIKi1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -; Function Attrs: nounwind -declare void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #4 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #14 - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_map_1.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noinline uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { cold noreturn nounwind } -attributes #11 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #13 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #14 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #15 = { noreturn nounwind } -attributes #16 = { noreturn } -attributes #17 = { allocsize(0) } -attributes #18 = { nounwind willreturn memory(read) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} diff --git a/test_cases_bc/basic_cpp_tests/map-2.cpp.bc b/test_cases_bc/basic_cpp_tests/map-2.cpp.bc deleted file mode 100644 index 6316f096..00000000 --- a/test_cases_bc/basic_cpp_tests/map-2.cpp.bc +++ /dev/null @@ -1,1712 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/map-2.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/map-2.cpp" -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-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%"class.std::map" = type { %"class.std::_Rb_tree" } -%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Rb_tree_impl" } -%"struct.std::_Rb_tree, std::_Select1st>, std::less>::_Rb_tree_impl" = type { %"struct.std::_Rb_tree_key_compare", %"struct.std::_Rb_tree_header" } -%"struct.std::_Rb_tree_key_compare" = type { %"struct.std::less" } -%"struct.std::less" = type { i8 } -%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 } -%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr } -%class.A = type { ptr } -%"struct.std::pair.0" = type { i32, ptr } -%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_iterator", i8, [7 x i8] }> -%"struct.std::_Rb_tree_iterator" = type { ptr } -%"struct.std::_Rb_tree_const_iterator" = type { ptr } -%"struct.std::pair.2" = type { i32, ptr } -%"struct.std::_Rb_tree_node" = type { %"struct.std::_Rb_tree_node_base", %"struct.__gnu_cxx::__aligned_membuf" } -%"struct.__gnu_cxx::__aligned_membuf" = type { [16 x i8] } -%"struct.std::pair.4" = type { ptr, ptr } -%"struct.std::_Select1st" = type { i8 } - -$_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEEC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE6insertIS5_IiS2_EEENSt9enable_ifIXsr16is_constructibleIS7_T_EE5valueES5_ISt17_Rb_tree_iteratorIS7_EbEE4typeEOSD_ = comdat any - -$_ZNSt4pairIiPK1AEC2IiPS0_Lb1EEEOT_OT0_ = comdat any - -$_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE5beginEv = comdat any - -$_ZNSt23_Rb_tree_const_iteratorISt4pairIKiPK1AEEC2ERKSt17_Rb_tree_iteratorIS5_E = comdat any - -$_ZNKSt23_Rb_tree_const_iteratorISt4pairIKiPK1AEEptEv = comdat any - -$_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEED2Ev = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EEC2Ev = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE13_Rb_tree_implIS9_Lb1EEC2Ev = comdat any - -$_ZNSaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEC2Ev = comdat any - -$_ZNSt20_Rb_tree_key_compareISt4lessIiEEC2Ev = comdat any - -$_ZNSt15_Rb_tree_headerC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEEC2Ev = comdat any - -$_ZNSt15_Rb_tree_header8_M_resetEv = comdat any - -$__clang_call_terminate = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EED2Ev = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_M_beginEv = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE13_Rb_tree_implIS9_Lb1EED2Ev = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_S_rightEPSt18_Rb_tree_node_base = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE7_S_leftEPSt18_Rb_tree_node_base = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS5_E = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeIS5_E = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11_M_put_nodeEPSt13_Rb_tree_nodeIS5_E = comdat any - -$_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEE7destroyIS6_EEvRS8_PT_ = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE21_M_get_Node_allocatorEv = comdat any - -$_ZNSt13_Rb_tree_nodeISt4pairIKiPK1AEE9_M_valptrEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE7destroyIS7_EEvPT_ = comdat any - -$_ZN9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE6_M_ptrEv = comdat any - -$_ZN9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE7_M_addrEv = comdat any - -$_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEE10deallocateERS8_PS7_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE10deallocateEPS8_m = comdat any - -$_ZNSaISt13_Rb_tree_nodeISt4pairIKiPK1AEEED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEED2Ev = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE17_M_emplace_uniqueIJS0_IiS4_EEEES0_ISt17_Rb_tree_iteratorIS5_EbEDpOT_ = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE14_M_create_nodeIJS0_IiS4_EEEEPSt13_Rb_tree_nodeIS5_EDpOT_ = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE24_M_get_insert_unique_posERS1_ = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_S_keyEPKSt13_Rb_tree_nodeIS5_E = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSD_PSt13_Rb_tree_nodeIS5_E = comdat any - -$_ZNSt4pairISt17_Rb_tree_iteratorIS_IKiPK1AEEbEC2IS6_bLb1EEEOT_OT0_ = comdat any - -$_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEC2EPSt18_Rb_tree_node_base = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11_M_get_nodeEv = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE17_M_construct_nodeIJS0_IiS4_EEEEvPSt13_Rb_tree_nodeIS5_EDpOT_ = comdat any - -$_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEE8allocateERS8_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE11_M_max_sizeEv = comdat any - -$_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEE9constructIS6_JS1_IiS5_EEEEvRS8_PT_DpOT0_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE9constructIS7_JS2_IiS6_EEEEvPT_DpOT0_ = comdat any - -$_ZNSt4pairIKiPK1AEC2IiS3_Lb1EEEOS_IT_T0_E = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_M_endEv = comdat any - -$_ZNKSt4lessIiEclERKiS2_ = comdat any - -$_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKiPK1AEES8_ = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE5beginEv = comdat any - -$_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKiPK1AEERS1_Lb1EEEOT_OT0_ = comdat any - -$_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEmmEv = comdat any - -$_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_S_keyEPKSt18_Rb_tree_node_base = comdat any - -$_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_Lb1EEEOT_RKS1_ = comdat any - -$_ZNKSt10_Select1stISt4pairIKiPK1AEEclERKS5_ = comdat any - -$_ZNKSt13_Rb_tree_nodeISt4pairIKiPK1AEE9_M_valptrEv = comdat any - -$_ZNK9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE6_M_ptrEv = comdat any - -$_ZNK9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE7_M_addrEv = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 -@__dso_handle = external hidden global i8 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_map_2.cpp, ptr null }] - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init() #3 section ".text.startup" { -entry: - call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = call i32 @__cxa_atexit(ptr @_ZNSt8ios_base4InitD1Ev, ptr @_ZStL8__ioinit, ptr @__dso_handle) #5 - ret void -} - -declare void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 - -; Function Attrs: nounwind -declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 - -; Function Attrs: nounwind -declare i32 @__cxa_atexit(ptr, ptr, ptr) #5 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #6 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %amap = alloca %"class.std::map", align 8 - %a = alloca %class.A, align 8 - %ref.tmp = alloca %"struct.std::pair.0", align 8 - %ref.tmp1 = alloca i32, align 4 - %ref.tmp2 = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %coerce = alloca %"struct.std::pair", align 8 - %it = alloca %"struct.std::_Rb_tree_const_iterator", align 8 - %ref.tmp4 = alloca %"struct.std::_Rb_tree_iterator", align 8 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %amap) #5 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 - store i32 0, ptr %ref.tmp1, align 4 - store ptr %a, ptr %ref.tmp2, align 8 - invoke void @_ZNSt4pairIiPK1AEC2IiPS0_Lb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp, ptr noundef nonnull align 4 dereferenceable(4) %ref.tmp1, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp2) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %call = invoke { ptr, i8 } @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE6insertIS5_IiS2_EEENSt9enable_ifIXsr16is_constructibleIS7_T_EE5valueES5_ISt17_Rb_tree_iteratorIS7_EbEE4typeEOSD_(ptr noundef nonnull align 8 dereferenceable(48) %amap, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp) - to label %invoke.cont3 unwind label %lpad - -invoke.cont3: ; preds = %invoke.cont - %0 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 0 - %1 = extractvalue { ptr, i8 } %call, 0 - store ptr %1, ptr %0, align 8 - %2 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 1 - %3 = extractvalue { ptr, i8 } %call, 1 - store i8 %3, ptr %2, align 8 - %call5 = call ptr @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %amap) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %ref.tmp4, i32 0, i32 0 - store ptr %call5, ptr %coerce.dive, align 8 - call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKiPK1AEEC2ERKSt17_Rb_tree_iteratorIS5_E(ptr noundef nonnull align 8 dereferenceable(8) %it, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp4) #5 - %call6 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKiPK1AEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 - %second = getelementptr inbounds %"struct.std::pair.2", ptr %call6, i32 0, i32 1 - %4 = load ptr, ptr %second, align 8 - store ptr %4, ptr %aptr, align 8 - %5 = load ptr, ptr %aptr, align 8 - %6 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %5, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %7 = load ptr, ptr %vfn, align 8 - invoke void %7(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef %6) - to label %invoke.cont7 unwind label %lpad - -invoke.cont7: ; preds = %invoke.cont3 - store i32 0, ptr %retval, align 4 - call void @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %amap) #5 - %8 = load i32, ptr %retval, align 4 - ret i32 %8 - -lpad: ; preds = %invoke.cont3, %invoke.cont, %entry - %9 = landingpad { ptr, i32 } - cleanup - %10 = extractvalue { ptr, i32 } %9, 0 - store ptr %10, ptr %exn.slot, align 8 - %11 = extractvalue { ptr, i32 } %9, 1 - store i32 %11, ptr %ehselector.slot, align 4 - call void @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %amap) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val8 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val8 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::map", ptr %this1, i32 0, i32 0 - call void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, i8 } @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE6insertIS5_IiS2_EEENSt9enable_ifIXsr16is_constructibleIS7_T_EE5valueES5_ISt17_Rb_tree_iteratorIS7_EbEE4typeEOSD_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(16) %__x) #0 comdat align 2 { -entry: - %retval = alloca %"struct.std::pair", align 8 - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::map", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call { ptr, i8 } @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE17_M_emplace_uniqueIJS0_IiS4_EEEES0_ISt17_Rb_tree_iteratorIS5_EbEDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %_M_t, ptr noundef nonnull align 8 dereferenceable(16) %0) - %1 = getelementptr inbounds { ptr, i8 }, ptr %retval, i32 0, i32 0 - %2 = extractvalue { ptr, i8 } %call, 0 - store ptr %2, ptr %1, align 8 - %3 = getelementptr inbounds { ptr, i8 }, ptr %retval, i32 0, i32 1 - %4 = extractvalue { ptr, i8 } %call, 1 - store i8 %4, ptr %3, align 8 - %5 = load { ptr, i8 }, ptr %retval, align 8 - ret { ptr, i8 } %5 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairIiPK1AEC2IiPS0_Lb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 4 dereferenceable(4) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair.0", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %1 = load i32, ptr %0, align 4 - store i32 %1, ptr %first, align 8 - %second = getelementptr inbounds %"struct.std::pair.0", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %__y.addr, align 8 - %3 = load ptr, ptr %2, align 8 - store ptr %3, ptr %second, align 8 - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::map", ptr %this1, i32 0, i32 0 - %call = call ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %coerce.dive2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive2, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKiPK1AEEC2ERKSt17_Rb_tree_iteratorIS5_E(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__it) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__it.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__it.addr, align 8 - %_M_node2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_node2, align 8 - store ptr %1, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKiPK1AEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %0) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt3mapIiPK1ASt4lessIiESaISt4pairIKiS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::map", ptr %this1, i32 0, i32 0 - call void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - call void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE13_Rb_tree_implIS9_Lb1EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_impl) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE13_Rb_tree_implIS9_Lb1EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt20_Rb_tree_key_compareISt4lessIiEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %0 = getelementptr inbounds i8, ptr %this1, i64 8 - call void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %0) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt20_Rb_tree_key_compareISt4lessIiEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_key_compare = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", ptr %this1, i32 0, i32 0 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_header2 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_color = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header2, i32 0, i32 0 - store i32 0, ptr %_M_color, align 8 - invoke void @_ZNSt15_Rb_tree_header8_M_resetEv(ptr noundef nonnull align 8 dereferenceable(40) %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #15 - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Rb_tree_header8_M_resetEv(ptr noundef nonnull align 8 dereferenceable(40) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_parent = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 1 - store ptr null, ptr %_M_parent, align 8 - %_M_header2 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_header3 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header3, i32 0, i32 2 - store ptr %_M_header2, ptr %_M_left, align 8 - %_M_header4 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_header5 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_right = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header5, i32 0, i32 3 - store ptr %_M_header4, ptr %_M_right, align 8 - %_M_node_count = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_node_count, align 8 - ret void -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #8 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #5 - call void @_ZSt9terminatev() #15 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - invoke void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - call void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE13_Rb_tree_implIS9_Lb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_impl) #5 - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #15 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - br label %while.cond - -while.cond: ; preds = %while.body, %entry - %0 = load ptr, ptr %__x.addr, align 8 - %cmp = icmp ne ptr %0, null - br i1 %cmp, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %1 = load ptr, ptr %__x.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %1) #5 - call void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %call) - %2 = load ptr, ptr %__x.addr, align 8 - %call2 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE7_S_leftEPSt18_Rb_tree_node_base(ptr noundef %2) #5 - store ptr %call2, ptr %__y, align 8 - %3 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %3) #5 - %4 = load ptr, ptr %__y, align 8 - store ptr %4, ptr %__x.addr, align 8 - br label %while.cond, !llvm.loop !6 - -while.end: ; preds = %while.cond - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - %_M_parent = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 1 - %0 = load ptr, ptr %_M_parent, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE13_Rb_tree_implIS9_Lb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaISt13_Rb_tree_nodeISt4pairIKiPK1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %__x) #2 comdat align 2 { -entry: - %__x.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_right = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 3 - %1 = load ptr, ptr %_M_right, align 8 - ret ptr %1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE7_S_leftEPSt18_Rb_tree_node_base(ptr noundef %__x) #2 comdat align 2 { -entry: - %__x.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 2 - %1 = load ptr, ptr %_M_left, align 8 - ret ptr %1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %0) #5 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11_M_put_nodeEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__p) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %0 = load ptr, ptr %__p.addr, align 8 - %call2 = invoke noundef ptr @_ZNSt13_Rb_tree_nodeISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %0) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEE7destroyIS6_EEvRS8_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %call2) #5 - %1 = load ptr, ptr %__p.addr, align 8 - ret void - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #15 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11_M_put_nodeEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__p) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %0 = load ptr, ptr %__p.addr, align 8 - invoke void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEE10deallocateERS8_PS7_m(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %0, i64 noundef 1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - ret void - -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #15 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEE7destroyIS6_EEvRS8_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE7destroyIS7_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt13_Rb_tree_nodeISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_Rb_tree_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %_M_storage) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE7destroyIS7_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEE10deallocateERS8_PS7_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE10deallocateEPS8_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE10deallocateEPS8_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #9 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt13_Rb_tree_nodeISt4pairIKiPK1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, i8 } @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE17_M_emplace_uniqueIJS0_IiS4_EEEES0_ISt17_Rb_tree_iteratorIS5_EbEDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(16) %__args) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca %"struct.std::pair", align 8 - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__z = alloca ptr, align 8 - %__res = alloca %"struct.std::pair.4", align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %ref.tmp = alloca %"struct.std::_Rb_tree_iterator", align 8 - %ref.tmp8 = alloca i8, align 1 - %ref.tmp10 = alloca %"struct.std::_Rb_tree_iterator", align 8 - %ref.tmp12 = alloca i8, align 1 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__args.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE14_M_create_nodeIJS0_IiS4_EEEEPSt13_Rb_tree_nodeIS5_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef nonnull align 8 dereferenceable(16) %0) - store ptr %call, ptr %__z, align 8 - %1 = load ptr, ptr %__z, align 8 - %call2 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_S_keyEPKSt13_Rb_tree_nodeIS5_E(ptr noundef %1) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %call4 = invoke { ptr, ptr } @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE24_M_get_insert_unique_posERS1_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef nonnull align 4 dereferenceable(4) %call2) - to label %invoke.cont3 unwind label %lpad - -invoke.cont3: ; preds = %invoke.cont - %2 = getelementptr inbounds { ptr, ptr }, ptr %__res, i32 0, i32 0 - %3 = extractvalue { ptr, ptr } %call4, 0 - store ptr %3, ptr %2, align 8 - %4 = getelementptr inbounds { ptr, ptr }, ptr %__res, i32 0, i32 1 - %5 = extractvalue { ptr, ptr } %call4, 1 - store ptr %5, ptr %4, align 8 - %second = getelementptr inbounds %"struct.std::pair.4", ptr %__res, i32 0, i32 1 - %6 = load ptr, ptr %second, align 8 - %tobool = icmp ne ptr %6, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %invoke.cont3 - %first = getelementptr inbounds %"struct.std::pair.4", ptr %__res, i32 0, i32 0 - %7 = load ptr, ptr %first, align 8 - %second5 = getelementptr inbounds %"struct.std::pair.4", ptr %__res, i32 0, i32 1 - %8 = load ptr, ptr %second5, align 8 - %9 = load ptr, ptr %__z, align 8 - %call7 = invoke ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSD_PSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %7, ptr noundef %8, ptr noundef %9) - to label %invoke.cont6 unwind label %lpad - -invoke.cont6: ; preds = %if.then - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %ref.tmp, i32 0, i32 0 - store ptr %call7, ptr %coerce.dive, align 8 - store i8 1, ptr %ref.tmp8, align 1 - invoke void @_ZNSt4pairISt17_Rb_tree_iteratorIS_IKiPK1AEEbEC2IS6_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp8) - to label %invoke.cont9 unwind label %lpad - -invoke.cont9: ; preds = %invoke.cont6 - br label %return - -lpad: ; preds = %if.end, %invoke.cont6, %if.then, %invoke.cont, %entry - %10 = landingpad { ptr, i32 } - catch ptr null - %11 = extractvalue { ptr, i32 } %10, 0 - store ptr %11, ptr %exn.slot, align 8 - %12 = extractvalue { ptr, i32 } %10, 1 - store i32 %12, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %13 = call ptr @__cxa_begin_catch(ptr %exn) #5 - %14 = load ptr, ptr %__z, align 8 - call void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %14) #5 - invoke void @__cxa_rethrow() #16 - to label %unreachable unwind label %lpad14 - -if.end: ; preds = %invoke.cont3 - %15 = load ptr, ptr %__z, align 8 - call void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %15) #5 - %first11 = getelementptr inbounds %"struct.std::pair.4", ptr %__res, i32 0, i32 0 - %16 = load ptr, ptr %first11, align 8 - call void @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp10, ptr noundef %16) #5 - store i8 0, ptr %ref.tmp12, align 1 - invoke void @_ZNSt4pairISt17_Rb_tree_iteratorIS_IKiPK1AEEbEC2IS6_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp10, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp12) - to label %invoke.cont13 unwind label %lpad - -invoke.cont13: ; preds = %if.end - br label %return - -lpad14: ; preds = %catch - %17 = landingpad { ptr, i32 } - cleanup - %18 = extractvalue { ptr, i32 } %17, 0 - store ptr %18, ptr %exn.slot, align 8 - %19 = extractvalue { ptr, i32 } %17, 1 - store i32 %19, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont15 unwind label %terminate.lpad - -invoke.cont15: ; preds = %lpad14 - br label %eh.resume - -try.cont: ; No predecessors! - call void @llvm.trap() - unreachable - -return: ; preds = %invoke.cont13, %invoke.cont9 - %20 = load { ptr, i8 }, ptr %retval, align 8 - ret { ptr, i8 } %20 - -eh.resume: ; preds = %invoke.cont15 - %exn16 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn16, 0 - %lpad.val17 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val17 - -terminate.lpad: ; preds = %lpad14 - %21 = landingpad { ptr, i32 } - catch ptr null - %22 = extractvalue { ptr, i32 } %21, 0 - call void @__clang_call_terminate(ptr %22) #15 - unreachable - -unreachable: ; preds = %catch - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE14_M_create_nodeIJS0_IiS4_EEEEPSt13_Rb_tree_nodeIS5_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(16) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__tmp = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) - store ptr %call, ptr %__tmp, align 8 - %0 = load ptr, ptr %__tmp, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE17_M_construct_nodeIJS0_IiS4_EEEEvPSt13_Rb_tree_nodeIS5_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %0, ptr noundef nonnull align 8 dereferenceable(16) %1) - %2 = load ptr, ptr %__tmp, align 8 - ret ptr %2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, ptr } @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE24_M_get_insert_unique_posERS1_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 { -entry: - %retval = alloca %"struct.std::pair.4", align 8 - %this.addr = alloca ptr, align 8 - %__k.addr = alloca ptr, align 8 - %__x = alloca ptr, align 8 - %__y = alloca ptr, align 8 - %__comp = alloca i8, align 1 - %__j = alloca %"struct.std::_Rb_tree_iterator", align 8 - %ref.tmp = alloca %"struct.std::_Rb_tree_iterator", align 8 - %ref.tmp20 = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - store ptr %call, ptr %__x, align 8 - %call2 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - store ptr %call2, ptr %__y, align 8 - store i8 1, ptr %__comp, align 1 - br label %while.cond - -while.cond: ; preds = %cond.end, %entry - %0 = load ptr, ptr %__x, align 8 - %cmp = icmp ne ptr %0, null - br i1 %cmp, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %1 = load ptr, ptr %__x, align 8 - store ptr %1, ptr %__y, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %_M_key_compare = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", ptr %_M_impl, i32 0, i32 0 - %2 = load ptr, ptr %__k.addr, align 8 - %3 = load ptr, ptr %__x, align 8 - %call3 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_S_keyEPKSt13_Rb_tree_nodeIS5_E(ptr noundef %3) - %call4 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_key_compare, ptr noundef nonnull align 4 dereferenceable(4) %2, ptr noundef nonnull align 4 dereferenceable(4) %call3) - %frombool = zext i1 %call4 to i8 - store i8 %frombool, ptr %__comp, align 1 - %4 = load i8, ptr %__comp, align 1 - %tobool = trunc i8 %4 to i1 - br i1 %tobool, label %cond.true, label %cond.false - -cond.true: ; preds = %while.body - %5 = load ptr, ptr %__x, align 8 - %call5 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE7_S_leftEPSt18_Rb_tree_node_base(ptr noundef %5) #5 - br label %cond.end - -cond.false: ; preds = %while.body - %6 = load ptr, ptr %__x, align 8 - %call6 = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %6) #5 - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi ptr [ %call5, %cond.true ], [ %call6, %cond.false ] - store ptr %cond, ptr %__x, align 8 - br label %while.cond, !llvm.loop !8 - -while.end: ; preds = %while.cond - %7 = load ptr, ptr %__y, align 8 - call void @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %__j, ptr noundef %7) #5 - %8 = load i8, ptr %__comp, align 1 - %tobool7 = trunc i8 %8 to i1 - br i1 %tobool7, label %if.then, label %if.end12 - -if.then: ; preds = %while.end - %call8 = call ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %ref.tmp, i32 0, i32 0 - store ptr %call8, ptr %coerce.dive, align 8 - %call9 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKiPK1AEES8_(ptr noundef nonnull align 8 dereferenceable(8) %__j, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #5 - br i1 %call9, label %if.then10, label %if.else - -if.then10: ; preds = %if.then - call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKiPK1AEERS1_Lb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) - br label %return - -if.else: ; preds = %if.then - %call11 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %__j) #5 - br label %if.end - -if.end: ; preds = %if.else - br label %if.end12 - -if.end12: ; preds = %if.end, %while.end - %_M_impl13 = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %_M_key_compare14 = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", ptr %_M_impl13, i32 0, i32 0 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %__j, i32 0, i32 0 - %9 = load ptr, ptr %_M_node, align 8 - %call15 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %9) - %10 = load ptr, ptr %__k.addr, align 8 - %call16 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_key_compare14, ptr noundef nonnull align 4 dereferenceable(4) %call15, ptr noundef nonnull align 4 dereferenceable(4) %10) - br i1 %call16, label %if.then17, label %if.end18 - -if.then17: ; preds = %if.end12 - call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKiPK1AEERS1_Lb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) - br label %return - -if.end18: ; preds = %if.end12 - %_M_node19 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %__j, i32 0, i32 0 - store ptr null, ptr %ref.tmp20, align 8 - call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_Lb1EEEOT_RKS1_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_node19, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp20) - br label %return - -return: ; preds = %if.end18, %if.then17, %if.then10 - %11 = load { ptr, ptr }, ptr %retval, align 8 - ret { ptr, ptr } %11 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_S_keyEPKSt13_Rb_tree_nodeIS5_E(ptr noundef %__x) #0 comdat align 2 { -entry: - %__x.addr = alloca ptr, align 8 - %ref.tmp = alloca %"struct.std::_Select1st", align 1 - store ptr %__x, ptr %__x.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %0) - %call1 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt10_Select1stISt4pairIKiPK1AEEclERKS5_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(16) %call) - ret ptr %call1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSD_PSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__x, ptr noundef %__p, ptr noundef %__z) #0 comdat align 2 { -entry: - %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__z.addr = alloca ptr, align 8 - %__insert_left = alloca i8, align 1 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__z, ptr %__z.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %cmp = icmp ne ptr %0, null - br i1 %cmp, label %lor.end, label %lor.lhs.false - -lor.lhs.false: ; preds = %entry - %1 = load ptr, ptr %__p.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %cmp2 = icmp eq ptr %1, %call - br i1 %cmp2, label %lor.end, label %lor.rhs - -lor.rhs: ; preds = %lor.lhs.false - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %_M_key_compare = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", ptr %_M_impl, i32 0, i32 0 - %2 = load ptr, ptr %__z.addr, align 8 - %call3 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_S_keyEPKSt13_Rb_tree_nodeIS5_E(ptr noundef %2) - %3 = load ptr, ptr %__p.addr, align 8 - %call4 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %3) - %call5 = call noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_key_compare, ptr noundef nonnull align 4 dereferenceable(4) %call3, ptr noundef nonnull align 4 dereferenceable(4) %call4) - br label %lor.end - -lor.end: ; preds = %lor.rhs, %lor.lhs.false, %entry - %4 = phi i1 [ true, %lor.lhs.false ], [ true, %entry ], [ %call5, %lor.rhs ] - %frombool = zext i1 %4 to i8 - store i8 %frombool, ptr %__insert_left, align 1 - %5 = load i8, ptr %__insert_left, align 1 - %tobool = trunc i8 %5 to i1 - %6 = load ptr, ptr %__z.addr, align 8 - %7 = load ptr, ptr %__p.addr, align 8 - %_M_impl6 = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl6, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %tobool, ptr noundef %6, ptr noundef %7, ptr noundef nonnull align 8 dereferenceable(32) %_M_header) #5 - %_M_impl7 = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr8 = getelementptr inbounds i8, ptr %_M_impl7, i64 8 - %_M_node_count = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr8, i32 0, i32 1 - %8 = load i64, ptr %_M_node_count, align 8 - %inc = add i64 %8, 1 - store i64 %inc, ptr %_M_node_count, align 8 - %9 = load ptr, ptr %__z.addr, align 8 - call void @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %9) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - %10 = load ptr, ptr %coerce.dive, align 8 - ret ptr %10 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairISt17_Rb_tree_iteratorIS_IKiPK1AEEbEC2IS6_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 1 dereferenceable(1) %__y) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %first, ptr align 8 %0, i64 8, i1 false) - %second = getelementptr inbounds %"struct.std::pair", ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %__y.addr, align 8 - %2 = load i8, ptr %1, align 1 - %tobool = trunc i8 %2 to i1 - %frombool = zext i1 %tobool to i8 - store i8 %frombool, ptr %second, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__x) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - store ptr %0, ptr %_M_node, align 8 - ret void -} - -declare void @__cxa_rethrow() - -declare void @__cxa_end_catch() - -; Function Attrs: cold noreturn nounwind -declare void @llvm.trap() #10 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %call2 = call noundef ptr @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEE8allocateERS8_m(ptr noundef nonnull align 1 dereferenceable(1) %call, i64 noundef 1) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE17_M_construct_nodeIJS0_IiS4_EEEEvPSt13_Rb_tree_nodeIS5_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__node, ptr noundef nonnull align 8 dereferenceable(16) %__args) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__node.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store ptr %__node, ptr %__node.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__node.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %1 = load ptr, ptr %__node.addr, align 8 - %call2 = call noundef ptr @_ZNSt13_Rb_tree_nodeISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %1) - %2 = load ptr, ptr %__args.addr, align 8 - invoke void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEE9constructIS6_JS1_IiS5_EEEEvRS8_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %call2, ptr noundef nonnull align 8 dereferenceable(16) %2) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - br label %try.cont - -lpad: ; preds = %entry - %3 = landingpad { ptr, i32 } - catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - store ptr %4, ptr %exn.slot, align 8 - %5 = extractvalue { ptr, i32 } %3, 1 - store i32 %5, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %6 = call ptr @__cxa_begin_catch(ptr %exn) #5 - %7 = load ptr, ptr %__node.addr, align 8 - %8 = load ptr, ptr %__node.addr, align 8 - call void @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE11_M_put_nodeEPSt13_Rb_tree_nodeIS5_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %8) #5 - invoke void @__cxa_rethrow() #16 - to label %unreachable unwind label %lpad3 - -lpad3: ; preds = %catch - %9 = landingpad { ptr, i32 } - cleanup - %10 = extractvalue { ptr, i32 } %9, 0 - store ptr %10, ptr %exn.slot, align 8 - %11 = extractvalue { ptr, i32 } %9, 1 - store i32 %11, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont4 unwind label %terminate.lpad - -invoke.cont4: ; preds = %lpad3 - br label %eh.resume - -try.cont: ; preds = %invoke.cont - ret void - -eh.resume: ; preds = %invoke.cont4 - %exn5 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn5, 0 - %lpad.val6 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val6 - -terminate.lpad: ; preds = %lpad3 - %12 = landingpad { ptr, i32 } - catch ptr null - %13 = extractvalue { ptr, i32 } %12, 0 - call void @__clang_call_terminate(ptr %13) #15 - unreachable - -unreachable: ; preds = %catch - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEE8allocateERS8_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 48 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #17 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 192153584101141162 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #11 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #12 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeISt4pairIKiPK1AEEEE9constructIS6_JS1_IiS5_EEEEvRS8_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(16) %__args) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE9constructIS7_JS2_IiS6_EEEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(16) %2) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKiPK1AEEE9constructIS7_JS2_IiS6_EEEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(16) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt4pairIKiPK1AEC2IiS3_Lb1EEEOS_IT_T0_E(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairIKiPK1AEC2IiS3_Lb1EEEOS_IT_T0_E(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(16) %__p) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair.2", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__p.addr, align 8 - %first2 = getelementptr inbounds %"struct.std::pair.0", ptr %0, i32 0, i32 0 - %1 = load i32, ptr %first2, align 4 - store i32 %1, ptr %first, align 8 - %second = getelementptr inbounds %"struct.std::pair.2", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %__p.addr, align 8 - %second3 = getelementptr inbounds %"struct.std::pair.0", ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %second3, align 8 - store ptr %3, ptr %second, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - ret ptr %_M_header -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt4lessIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 4 dereferenceable(4) %__x, ptr noundef nonnull align 4 dereferenceable(4) %__y) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %1 = load i32, ptr %0, align 4 - %2 = load ptr, ptr %__y.addr, align 8 - %3 = load i32, ptr %2, align 4 - %cmp = icmp slt i32 %1, %3 - ret i1 %cmp -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKiPK1AEES8_(ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) #2 comdat { -entry: - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_node, align 8 - %2 = load ptr, ptr %__y.addr, align 8 - %_M_node1 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %2, i32 0, i32 0 - %3 = load ptr, ptr %_M_node1, align 8 - %cmp = icmp eq ptr %1, %3 - ret i1 %cmp -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 2 - %0 = load ptr, ptr %_M_left, align 8 - call void @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive, align 8 - ret ptr %1 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIS_IKiPK1AEERS1_Lb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair.4", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %first, align 8 - %second = getelementptr inbounds %"struct.std::pair.4", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %__y.addr, align 8 - %3 = load ptr, ptr %2, align 8 - store ptr %3, ptr %second, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKiPK1AEEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef %0) #18 - %_M_node2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 - store ptr %call, ptr %_M_node2, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %__x) #0 comdat align 2 { -entry: - %__x.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt8_Rb_treeIiSt4pairIKiPK1AESt10_Select1stIS5_ESt4lessIiESaIS5_EE6_S_keyEPKSt13_Rb_tree_nodeIS5_E(ptr noundef %0) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_Lb1EEEOT_RKS1_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair.4", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %first, align 8 - %second = getelementptr inbounds %"struct.std::pair.4", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %__y.addr, align 8 - %3 = load ptr, ptr %2, align 8 - store ptr %3, ptr %second, align 8 - ret void -} - -; Function Attrs: nounwind willreturn memory(read) -declare noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef) #13 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt10_Select1stISt4pairIKiPK1AEEclERKS5_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(16) %__x) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair.2", ptr %0, i32 0, i32 0 - ret ptr %first -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt13_Rb_tree_nodeISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_Rb_tree_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %_M_storage) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufISt4pairIKiPK1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -; Function Attrs: nounwind -declare void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #4 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #14 - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_map_2.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noinline uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { cold noreturn nounwind } -attributes #11 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #13 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #14 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #15 = { noreturn nounwind } -attributes #16 = { noreturn } -attributes #17 = { allocsize(0) } -attributes #18 = { nounwind willreturn memory(read) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} diff --git a/test_cases_bc/basic_cpp_tests/member-variable.cpp.bc b/test_cases_bc/basic_cpp_tests/member-variable.cpp.bc deleted file mode 100644 index 552fb8a3..00000000 --- a/test_cases_bc/basic_cpp_tests/member-variable.cpp.bc +++ /dev/null @@ -1,323 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/member-variable.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/member-variable.cpp" -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-unknown-linux-gnu" - -%class.B = type { ptr, ptr } - -$_ZN1AC2Ev = comdat any - -$_ZN1BC2EP1A = comdat any - -$_ZN1A1fEPi = comdat any - -$_ZN1B1fEPi = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -$_ZTV1B = comdat any - -$_ZTS1B = comdat any - -$_ZTI1B = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj_a = dso_local global i32 0, align 4 -@global_ptr_a = dso_local global ptr @global_obj_a, align 8 -@global_obj_b = dso_local global i32 0, align 4 -@global_ptr_b = dso_local global ptr @global_obj_b, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@_ZTV1B = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1B, ptr @_ZN1B1fEPi] }, comdat, align 8 -@_ZTS1B = linkonce_odr dso_local constant [3 x i8] c"1B\00", comdat, align 1 -@_ZTI1B = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1B }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %i = alloca ptr, align 8 - %j = alloca ptr, align 8 - %a = alloca ptr, align 8 - %b = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj_a, ptr %i, align 8 - store ptr @global_obj_b, ptr %j, align 8 - %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #7 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #8 - store ptr %call, ptr %a, align 8 - %call1 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #7 - %0 = load ptr, ptr %a, align 8 - invoke void @_ZN1BC2EP1A(ptr noundef nonnull align 8 dereferenceable(16) %call1, ptr noundef %0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - store ptr %call1, ptr %b, align 8 - %1 = load ptr, ptr %b, align 8 - %2 = load ptr, ptr %j, align 8 - %vtable = load ptr, ptr %1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %3 = load ptr, ptr %vfn, align 8 - call void %3(ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef %2) - %4 = load ptr, ptr %b, align 8 - %_a = getelementptr inbounds %class.B, ptr %4, i32 0, i32 1 - %5 = load ptr, ptr %_a, align 8 - %6 = load ptr, ptr %i, align 8 - %vtable2 = load ptr, ptr %5, align 8 - %vfn3 = getelementptr inbounds ptr, ptr %vtable2, i64 0 - %7 = load ptr, ptr %vfn3, align 8 - call void %7(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef %6) - ret i32 0 - -lpad: ; preds = %entry - %8 = landingpad { ptr, i32 } - cleanup - %9 = extractvalue { ptr, i32 } %8, 0 - store ptr %9, ptr %exn.slot, align 8 - %10 = extractvalue { ptr, i32 } %8, 1 - store i32 %10, ptr %ehselector.slot, align 4 - call void @_ZdlPv(ptr noundef %call1) #9 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val4 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val4 -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BC2EP1A(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef %a) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %a.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %a, ptr %a.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - %_a = getelementptr inbounds %class.B, ptr %this1, i32 0, i32 1 - %0 = load ptr, ptr %a.addr, align 8 - store ptr %0, ptr %_a, align 8 - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #6 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_a, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_ptr_b, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_a, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_ptr_b, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { builtin allocsize(0) } -attributes #8 = { nounwind } -attributes #9 = { builtin nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/namespace.cpp.bc b/test_cases_bc/basic_cpp_tests/namespace.cpp.bc deleted file mode 100644 index 25ad4935..00000000 --- a/test_cases_bc/basic_cpp_tests/namespace.cpp.bc +++ /dev/null @@ -1,280 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/namespace.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/namespace.cpp" -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-unknown-linux-gnu" - -$_ZN1n1BC2Ev = comdat any - -$_ZN1n1AC2Ev = comdat any - -$_ZN1n1B1fEPi = comdat any - -$_ZN1n1B1gEPi = comdat any - -$_ZTVN1n1BE = comdat any - -$_ZTSN1n1BE = comdat any - -$_ZTSN1n1AE = comdat any - -$_ZTIN1n1AE = comdat any - -$_ZTIN1n1BE = comdat any - -$_ZTVN1n1AE = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj_f = dso_local global i32 0, align 4 -@global_ptr_f = dso_local global ptr @global_obj_f, align 8 -@global_obj_g = dso_local global i32 0, align 4 -@global_ptr_g = dso_local global ptr @global_obj_g, align 8 -@_ZTVN1n1BE = linkonce_odr dso_local unnamed_addr constant { [4 x ptr] } { [4 x ptr] [ptr null, ptr @_ZTIN1n1BE, ptr @_ZN1n1B1fEPi, ptr @_ZN1n1B1gEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv120__si_class_type_infoE = external global ptr -@_ZTSN1n1BE = linkonce_odr dso_local constant [7 x i8] c"N1n1BE\00", comdat, align 1 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTSN1n1AE = linkonce_odr dso_local constant [7 x i8] c"N1n1AE\00", comdat, align 1 -@_ZTIN1n1AE = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTSN1n1AE }, comdat, align 8 -@_ZTIN1n1BE = linkonce_odr dso_local constant { ptr, ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), ptr @_ZTSN1n1BE, ptr @_ZTIN1n1AE }, comdat, align 8 -@_ZTVN1n1AE = linkonce_odr dso_local unnamed_addr constant { [4 x ptr] } { [4 x ptr] [ptr null, ptr @_ZTIN1n1AE, ptr @__cxa_pure_virtual, ptr @__cxa_pure_virtual] }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main() #3 { -entry: - %retval = alloca i32, align 4 - %ptr_f = alloca ptr, align 8 - %ptr_g = alloca ptr, align 8 - %b = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store ptr @global_obj_f, ptr %ptr_f, align 8 - store ptr @global_obj_g, ptr %ptr_g, align 8 - %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #6 - call void @_ZN1n1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #7 - store ptr %call, ptr %b, align 8 - %0 = load ptr, ptr %b, align 8 - %1 = load ptr, ptr %ptr_f, align 8 - %vtable = load ptr, ptr %0, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) - %3 = load ptr, ptr %b, align 8 - %4 = load ptr, ptr %ptr_g, align 8 - %vtable1 = load ptr, ptr %3, align 8 - %vfn2 = getelementptr inbounds ptr, ptr %vtable1, i64 1 - %5 = load ptr, ptr %vfn2, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4) - ret i32 0 -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1n1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN1n1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #7 - store ptr getelementptr inbounds ({ [4 x ptr] }, ptr @_ZTVN1n1BE, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1n1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [4 x ptr] }, ptr @_ZTVN1n1AE, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1n1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_f, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_ptr_g, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1n1B1gEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_f, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_ptr_g, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -declare void @__cxa_pure_virtual() unnamed_addr - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { builtin allocsize(0) } -attributes #7 = { nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/pwc.cpp.bc b/test_cases_bc/basic_cpp_tests/pwc.cpp.bc deleted file mode 100644 index 33b12c1d..00000000 --- a/test_cases_bc/basic_cpp_tests/pwc.cpp.bc +++ /dev/null @@ -1,292 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/pwc.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/pwc.cpp" -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-unknown-linux-gnu" - -%class.A = type { ptr, ptr, ptr, ptr } - -$_ZN1AC2Ev = comdat any - -$_ZN1A1fEPi = comdat any - -$_ZN1A1gEPi = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj_f = dso_local global i32 0, align 4 -@global_ptr_f = dso_local global ptr @global_obj_f, align 8 -@global_obj_g = dso_local global i32 0, align 4 -@global_ptr_g = dso_local global ptr @global_obj_g, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [4 x ptr] } { [4 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1A1fEPi, ptr @_ZN1A1gEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr_f = alloca ptr, align 8 - %ptr_g = alloca ptr, align 8 - %a_array = alloca [100 x %class.A], align 16 - %pa = alloca ptr, align 8 - %i = alloca i32, align 4 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj_f, ptr %ptr_f, align 8 - store ptr @global_obj_g, ptr %ptr_g, align 8 - %array.begin = getelementptr inbounds [100 x %class.A], ptr %a_array, i32 0, i32 0 - %arrayctor.end = getelementptr inbounds %class.A, ptr %array.begin, i64 100 - br label %arrayctor.loop - -arrayctor.loop: ; preds = %arrayctor.loop, %entry - %arrayctor.cur = phi ptr [ %array.begin, %entry ], [ %arrayctor.next, %arrayctor.loop ] - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %arrayctor.cur) #5 - %arrayctor.next = getelementptr inbounds %class.A, ptr %arrayctor.cur, i64 1 - %arrayctor.done = icmp eq ptr %arrayctor.next, %arrayctor.end - br i1 %arrayctor.done, label %arrayctor.cont, label %arrayctor.loop - -arrayctor.cont: ; preds = %arrayctor.loop - %arraydecay = getelementptr inbounds [100 x %class.A], ptr %a_array, i64 0, i64 0 - store ptr %arraydecay, ptr %pa, align 8 - store i32 0, ptr %i, align 4 - br label %for.cond - -for.cond: ; preds = %for.inc, %arrayctor.cont - %0 = load i32, ptr %i, align 4 - %cmp = icmp slt i32 %0, 50 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %1 = load ptr, ptr %pa, align 8 - %add.ptr = getelementptr inbounds %class.A, ptr %1, i64 1 - store ptr %add.ptr, ptr %pa, align 8 - br label %for.inc - -for.inc: ; preds = %for.body - %2 = load i32, ptr %i, align 4 - %inc = add nsw i32 %2, 1 - store i32 %inc, ptr %i, align 4 - br label %for.cond, !llvm.loop !6 - -for.end: ; preds = %for.cond - %3 = load ptr, ptr %pa, align 8 - %4 = load ptr, ptr %ptr_f, align 8 - %vtable = load ptr, ptr %3, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %5 = load ptr, ptr %vfn, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef %4) - %6 = load ptr, ptr %pa, align 8 - %7 = load ptr, ptr %ptr_g, align 8 - %vtable1 = load ptr, ptr %6, align 8 - %vfn2 = getelementptr inbounds ptr, ptr %vtable1, i64 1 - %8 = load ptr, ptr %vfn2, align 8 - call void %8(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef %7) - ret i32 0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [4 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_f, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_ptr_g, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1gEPi(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_f, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_ptr_g, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/basic_cpp_tests/queue-1.cpp.bc b/test_cases_bc/basic_cpp_tests/queue-1.cpp.bc deleted file mode 100644 index ed68e626..00000000 --- a/test_cases_bc/basic_cpp_tests/queue-1.cpp.bc +++ /dev/null @@ -1,2436 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/queue-1.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/queue-1.cpp" -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-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%"class.std::queue" = type { %"class.std::deque" } -%"class.std::deque" = type { %"class.std::_Deque_base" } -%"class.std::_Deque_base" = type { %"struct.std::_Deque_base>::_Deque_impl" } -%"struct.std::_Deque_base>::_Deque_impl" = type { %"struct.std::_Deque_base>::_Deque_impl_data" } -%"struct.std::_Deque_base>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" } -%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr } -%class.A = type { ptr } -%"class.std::allocator.0" = type { i8 } - -$_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEEC2IS3_vEEv = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE4pushERKS0_ = comdat any - -$_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE5frontEv = comdat any - -$_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE3popEv = comdat any - -$_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEED2Ev = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt5dequeI1ASaIS0_EED2Ev = comdat any - -$_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_ = comdat any - -$_ZNSt5dequeI1ASaIS0_EE5beginEv = comdat any - -$_ZNSt5dequeI1ASaIS0_EE3endEv = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EED2Ev = comdat any - -$_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2ERKS3_ = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_ = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_ = comdat any - -$_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m = comdat any - -$_ZSt16__deque_buf_sizem = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE10deallocateEPS1_m = comdat any - -$_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv = comdat any - -$_ZNSt16allocator_traitsISaIP1AEE10deallocateERS2_PS1_m = comdat any - -$_ZNSaIP1AED2Ev = comdat any - -$_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv = comdat any - -$_ZNSaIP1AEC2IS_EERKSaIT_E = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AEC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AED2Ev = comdat any - -$_ZNSaI1AED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AED2Ev = comdat any - -$_ZNSt5dequeI1ASaIS0_EEC2Ev = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implC2Ev = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm = comdat any - -$_ZNSaI1AEC2Ev = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE16_Deque_impl_dataC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AEC2Ev = comdat any - -$_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev = comdat any - -$_ZSt3maxImERKT_S2_S2_ = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_ = comdat any - -$_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_ = comdat any - -$_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIP1AE11_M_max_sizeEv = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv = comdat any - -$_ZNSt16allocator_traitsISaI1AEE8allocateERS1_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv = comdat any - -$_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv = comdat any - -$_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_ = comdat any - -$_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_ = comdat any - -$_ZNSt5dequeI1ASaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JRKS1_EEEvPT_DpOT0_ = comdat any - -$_ZN1AC2ERKS_ = comdat any - -$_ZNKSt5dequeI1ASaIS0_EE4sizeEv = comdat any - -$_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv = comdat any - -$_ZNSt5dequeI1ASaIS0_EE22_M_reserve_map_at_backEm = comdat any - -$_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_ = comdat any - -$_ZNSt5dequeI1ASaIS0_EE11_S_max_sizeERKS1_ = comdat any - -$_ZNSt16allocator_traitsISaI1AEE8max_sizeERKS1_ = comdat any - -$_ZSt3minImERKT_S2_S2_ = comdat any - -$_ZNK9__gnu_cxx13new_allocatorI1AE8max_sizeEv = comdat any - -$_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb = comdat any - -$_ZSt4copyIPP1AS2_ET0_T_S4_S3_ = comdat any - -$_ZSt13copy_backwardIPP1AS2_ET0_T_S4_S3_ = comdat any - -$_ZSt13__copy_move_aILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZSt12__miter_baseIPP1AET_S3_ = comdat any - -$_ZSt12__niter_wrapIPP1AET_RKS3_S3_ = comdat any - -$_ZSt14__copy_move_a1ILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZSt12__niter_baseIPP1AET_S3_ = comdat any - -$_ZSt14__copy_move_a2ILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AEEPT_PKS5_S8_S6_ = comdat any - -$_ZSt22__copy_move_backward_aILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZSt23__copy_move_backward_a1ILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZSt23__copy_move_backward_a2ILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AEEPT_PKS5_S8_S6_ = comdat any - -$_ZNSt5dequeI1ASaIS0_EE5frontEv = comdat any - -$_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv = comdat any - -$_ZNSt5dequeI1ASaIS0_EE9pop_frontEv = comdat any - -$_ZNSt16allocator_traitsISaI1AEE7destroyIS0_EEvRS1_PT_ = comdat any - -$_ZNSt5dequeI1ASaIS0_EE16_M_pop_front_auxEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE7destroyIS1_EEvPT_ = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 -@__dso_handle = external hidden global i8 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@.str.3 = private unnamed_addr constant [48 x i8] c"cannot create std::deque larger than max_size()\00", align 1 -@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_queue_1.cpp, ptr null }] - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init() #3 section ".text.startup" { -entry: - call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = call i32 @__cxa_atexit(ptr @_ZNSt8ios_base4InitD1Ev, ptr @_ZStL8__ioinit, ptr @__dso_handle) #5 - ret void -} - -declare void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 - -; Function Attrs: nounwind -declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 - -; Function Attrs: nounwind -declare i32 @__cxa_atexit(ptr, ptr, ptr) #5 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #6 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %aqueue = alloca %"class.std::queue", align 8 - %a = alloca %class.A, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 - invoke void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE4pushERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %aqueue, ptr noundef nonnull align 8 dereferenceable(8) %a) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %call = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) - to label %invoke.cont1 unwind label %lpad - -invoke.cont1: ; preds = %invoke.cont - store ptr %call, ptr %aptr, align 8 - invoke void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) - to label %invoke.cont2 unwind label %lpad - -invoke.cont2: ; preds = %invoke.cont1 - %0 = load ptr, ptr %aptr, align 8 - %1 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %0, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %2 = load ptr, ptr %vfn, align 8 - invoke void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) - to label %invoke.cont3 unwind label %lpad - -invoke.cont3: ; preds = %invoke.cont2 - store i32 0, ptr %retval, align 4 - call void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) #5 - %3 = load i32, ptr %retval, align 4 - ret i32 %3 - -lpad: ; preds = %invoke.cont2, %invoke.cont1, %invoke.cont, %entry - %4 = landingpad { ptr, i32 } - cleanup - %5 = extractvalue { ptr, i32 } %4, 0 - store ptr %5, ptr %exn.slot, align 8 - %6 = extractvalue { ptr, i32 } %4, 1 - store i32 %6, ptr %ehselector.slot, align 4 - call void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val4 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val4 -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::queue", ptr %this1, i32 0, i32 0 - call void @llvm.memset.p0.i64(ptr align 8 %c, i8 0, i64 80, i1 false) - call void @_ZNSt5dequeI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %c) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE4pushERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::queue", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %c, ptr noundef nonnull align 8 dereferenceable(8) %0) - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::queue", ptr %this1, i32 0, i32 0 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeI1ASaIS0_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %c) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::queue", ptr %this1, i32 0, i32 0 - call void @_ZNSt5dequeI1ASaIS0_EE9pop_frontEv(ptr noundef nonnull align 8 dereferenceable(80) %c) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5queueI1ASt5dequeIS0_SaIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::queue", ptr %this1, i32 0, i32 0 - call void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %c) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #8 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_Deque_iterator", align 8 - %agg.tmp2 = alloca %"struct.std::_Deque_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - call void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - invoke void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %agg.tmp, ptr noundef %agg.tmp2, ptr noundef nonnull align 1 dereferenceable(1) %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt11_Deque_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #15 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__first, ptr noundef %__last, ptr noundef nonnull align 1 dereferenceable(1) %0) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr noalias sret(%"struct.std::_Deque_iterator") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr noalias sret(%"struct.std::_Deque_iterator") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #9 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #5 - call void @_ZSt9terminatev() #15 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_map, align 8 - %tobool = icmp ne ptr %0, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 - %_M_node4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node4, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %2, i64 1 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %1, ptr noundef %add.ptr) #5 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 0 - %3 = load ptr, ptr %_M_map6, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #5 - br label %if.end - -if.end: ; preds = %if.then, %entry - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl8) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef nonnull align 8 dereferenceable(32) %__x) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_cur2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur2, align 8 - store ptr %1, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %__x.addr, align 8 - %_M_first3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %_M_first3, align 8 - store ptr %3, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - %4 = load ptr, ptr %__x.addr, align 8 - %_M_last4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 2 - %5 = load ptr, ptr %_M_last4, align 8 - store ptr %5, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - %6 = load ptr, ptr %__x.addr, align 8 - %_M_node5 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 3 - %7 = load ptr, ptr %_M_node5, align 8 - store ptr %7, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nstart.addr = alloca ptr, align 8 - %__nfinish.addr = alloca ptr, align 8 - %__n = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__nstart, ptr %__nstart.addr, align 8 - store ptr %__nfinish, ptr %__nfinish.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__nstart.addr, align 8 - store ptr %0, ptr %__n, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %1 = load ptr, ptr %__n, align 8 - %2 = load ptr, ptr %__nfinish.addr, align 8 - %cmp = icmp ult ptr %1, %2 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %3 = load ptr, ptr %__n, align 8 - %4 = load ptr, ptr %3, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %4) #5 - br label %for.inc - -for.inc: ; preds = %for.body - %5 = load ptr, ptr %__n, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %5, i32 1 - store ptr %incdec.ptr, ptr %__n, align 8 - br label %for.cond, !llvm.loop !6 - -for.end: ; preds = %for.cond - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %__map_alloc = alloca %"class.std::allocator.0", align 1 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - invoke void @_ZNSt16allocator_traitsISaIP1AEE10deallocateERS2_PS1_m(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc, ptr noundef %0, i64 noundef %1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #5 - ret void - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #15 - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__p) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__p.addr, align 8 - %call = invoke noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - invoke void @_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef %0, i64 noundef %call) - to label %invoke.cont2 unwind label %terminate.lpad - -invoke.cont2: ; preds = %invoke.cont - ret void - -terminate.lpad: ; preds = %invoke.cont, %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #15 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef %__size) #2 comdat { -entry: - %__size.addr = alloca i64, align 8 - store i64 %__size, ptr %__size.addr, align 8 - %0 = load i64, ptr %__size.addr, align 8 - %cmp = icmp ult i64 %0, 512 - br i1 %cmp, label %cond.true, label %cond.false - -cond.true: ; preds = %entry - %1 = load i64, ptr %__size.addr, align 8 - %div = udiv i64 512, %1 - br label %cond.end - -cond.false: ; preds = %entry - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %div, %cond.true ], [ 1, %cond.false ] - ret i64 %cond -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #10 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr noalias sret(%"class.std::allocator.0") align 1 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - call void @_ZNSaIP1AEC2IS_EERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %agg.result, ptr noundef nonnull align 1 dereferenceable(1) %call) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIP1AEE10deallocateERS2_PS1_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIP1AEC2IS_EERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 1 dereferenceable(1) %0) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #11 - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) - ret void -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #5 - invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - ret void - -lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - cleanup - %1 = extractvalue { ptr, i32 } %0, 0 - store ptr %1, ptr %exn.slot, align 8 - %2 = extractvalue { ptr, i32 } %0, 1 - store i32 %2, ptr %ehselector.slot, align 4 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__num_elements.addr = alloca i64, align 8 - %__num_nodes = alloca i64, align 8 - %ref.tmp = alloca i64, align 8 - %ref.tmp2 = alloca i64, align 8 - %__nstart = alloca ptr, align 8 - %__nfinish = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i64 %__num_elements, ptr %__num_elements.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__num_elements.addr, align 8 - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %div = udiv i64 %0, %call - %add = add i64 %div, 1 - store i64 %add, ptr %__num_nodes, align 8 - store i64 8, ptr %ref.tmp, align 8 - %1 = load i64, ptr %__num_nodes, align 8 - %add3 = add i64 %1, 2 - store i64 %add3, ptr %ref.tmp2, align 8 - %call4 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp2) - %2 = load i64, ptr %call4, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 1 - store i64 %2, ptr %_M_map_size, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %3 = load i64, ptr %_M_map_size6, align 8 - %call7 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %3) - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 0 - store ptr %call7, ptr %_M_map, align 8 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 0 - %4 = load ptr, ptr %_M_map10, align 8 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 1 - %5 = load i64, ptr %_M_map_size12, align 8 - %6 = load i64, ptr %__num_nodes, align 8 - %sub = sub i64 %5, %6 - %div13 = udiv i64 %sub, 2 - %add.ptr = getelementptr inbounds ptr, ptr %4, i64 %div13 - store ptr %add.ptr, ptr %__nstart, align 8 - %7 = load ptr, ptr %__nstart, align 8 - %8 = load i64, ptr %__num_nodes, align 8 - %add.ptr14 = getelementptr inbounds ptr, ptr %7, i64 %8 - store ptr %add.ptr14, ptr %__nfinish, align 8 - %9 = load ptr, ptr %__nstart, align 8 - %10 = load ptr, ptr %__nfinish, align 8 - invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - br label %try.cont - -lpad: ; preds = %entry - %11 = landingpad { ptr, i32 } - catch ptr null - %12 = extractvalue { ptr, i32 } %11, 0 - store ptr %12, ptr %exn.slot, align 8 - %13 = extractvalue { ptr, i32 } %11, 1 - store i32 %13, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %14 = call ptr @__cxa_begin_catch(ptr %exn) #5 - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 0 - %15 = load ptr, ptr %_M_map16, align 8 - %_M_impl17 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size18 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl17, i32 0, i32 1 - %16 = load i64, ptr %_M_map_size18, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #5 - %_M_impl19 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map20 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl19, i32 0, i32 0 - store ptr null, ptr %_M_map20, align 8 - %_M_impl21 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size22 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl21, i32 0, i32 1 - store i64 0, ptr %_M_map_size22, align 8 - invoke void @__cxa_rethrow() #16 - to label %unreachable unwind label %lpad23 - -lpad23: ; preds = %catch - %17 = landingpad { ptr, i32 } - cleanup - %18 = extractvalue { ptr, i32 } %17, 0 - store ptr %18, ptr %exn.slot, align 8 - %19 = extractvalue { ptr, i32 } %17, 1 - store i32 %19, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont24 unwind label %terminate.lpad - -invoke.cont24: ; preds = %lpad23 - br label %eh.resume - -try.cont: ; preds = %invoke.cont - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 2 - %20 = load ptr, ptr %__nstart, align 8 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start, ptr noundef %20) #5 - %_M_impl26 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl26, i32 0, i32 3 - %21 = load ptr, ptr %__nfinish, align 8 - %add.ptr27 = getelementptr inbounds ptr, ptr %21, i64 -1 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef %add.ptr27) #5 - %_M_impl28 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start29 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl28, i32 0, i32 2 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start29, i32 0, i32 1 - %22 = load ptr, ptr %_M_first, align 8 - %_M_impl30 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start31 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start31, i32 0, i32 0 - store ptr %22, ptr %_M_cur, align 8 - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 - %_M_first34 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish33, i32 0, i32 1 - %23 = load ptr, ptr %_M_first34, align 8 - %24 = load i64, ptr %__num_elements.addr, align 8 - %call35 = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %rem = urem i64 %24, %call35 - %add.ptr36 = getelementptr inbounds %class.A, ptr %23, i64 %rem - %_M_impl37 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish38 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 - %_M_cur39 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 - store ptr %add.ptr36, ptr %_M_cur39, align 8 - ret void - -eh.resume: ; preds = %invoke.cont24 - %exn40 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn40, 0 - %lpad.val41 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val41 - -terminate.lpad: ; preds = %lpad23 - %25 = landingpad { ptr, i32 } - catch ptr null - %26 = extractvalue { ptr, i32 } %25, 0 - call void @__clang_call_terminate(ptr %26) #15 - unreachable - -unreachable: ; preds = %catch - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_map, align 8 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_map_size, align 8 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #5 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr null, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__b.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__n) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %__map_alloc = alloca %"class.std::allocator.0", align 1 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %0 = load i64, ptr %__n.addr, align 8 - %call = invoke noundef ptr @_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc, i64 noundef %0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - call void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #5 - ret ptr %call - -lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - cleanup - %2 = extractvalue { ptr, i32 } %1, 0 - store ptr %2, ptr %exn.slot, align 8 - %3 = extractvalue { ptr, i32 } %1, 1 - store i32 %3, ptr %ehselector.slot, align 4 - call void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__nstart.addr = alloca ptr, align 8 - %__nfinish.addr = alloca ptr, align 8 - %__cur = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store ptr %__nstart, ptr %__nstart.addr, align 8 - store ptr %__nfinish, ptr %__nfinish.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__nstart.addr, align 8 - store ptr %0, ptr %__cur, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %1 = load ptr, ptr %__cur, align 8 - %2 = load ptr, ptr %__nfinish.addr, align 8 - %cmp = icmp ult ptr %1, %2 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %call = invoke noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %for.body - %3 = load ptr, ptr %__cur, align 8 - store ptr %call, ptr %3, align 8 - br label %for.inc - -for.inc: ; preds = %invoke.cont - %4 = load ptr, ptr %__cur, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %__cur, align 8 - br label %for.cond, !llvm.loop !8 - -lpad: ; preds = %for.body - %5 = landingpad { ptr, i32 } - catch ptr null - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %8 = call ptr @__cxa_begin_catch(ptr %exn) #5 - %9 = load ptr, ptr %__nstart.addr, align 8 - %10 = load ptr, ptr %__cur, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) #5 - invoke void @__cxa_rethrow() #16 - to label %unreachable unwind label %lpad2 - -for.end: ; preds = %for.cond - br label %try.cont - -lpad2: ; preds = %catch - %11 = landingpad { ptr, i32 } - cleanup - %12 = extractvalue { ptr, i32 } %11, 0 - store ptr %12, ptr %exn.slot, align 8 - %13 = extractvalue { ptr, i32 } %11, 1 - store i32 %13, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont3 unwind label %terminate.lpad - -invoke.cont3: ; preds = %lpad2 - br label %eh.resume - -try.cont: ; preds = %for.end - ret void - -eh.resume: ; preds = %invoke.cont3 - %exn4 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn4, 0 - %lpad.val5 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val5 - -terminate.lpad: ; preds = %lpad2 - %14 = landingpad { ptr, i32 } - catch ptr null - %15 = extractvalue { ptr, i32 } %14, 0 - call void @__clang_call_terminate(ptr %15) #15 - unreachable - -unreachable: ; preds = %catch - unreachable -} - -declare void @__cxa_rethrow() - -declare void @__cxa_end_catch() - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__new_node.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__new_node, ptr %__new_node.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__new_node.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr %0, ptr %_M_node, align 8 - %1 = load ptr, ptr %__new_node.addr, align 8 - %2 = load ptr, ptr %1, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr %2, ptr %_M_first, align 8 - %_M_first2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %3 = load ptr, ptr %_M_first2, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #5 - %add.ptr = getelementptr inbounds %class.A, ptr %3, i64 %call - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr %add.ptr, ptr %_M_last, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIP1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #17 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIP1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #12 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #13 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %call2 = call noundef ptr @_ZNSt16allocator_traitsISaI1AEE8allocateERS1_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, i64 noundef %call) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaI1AEE8allocateERS1_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #17 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #2 comdat align 2 { -entry: - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - ret i64 %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 - %1 = load ptr, ptr %_M_last, align 8 - %add.ptr = getelementptr inbounds %class.A, ptr %1, i64 -1 - %cmp = icmp ne ptr %0, %add.ptr - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur7 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur7, align 8 - %3 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #5 - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish9 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 - %_M_cur10 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur10, align 8 - %incdec.ptr = getelementptr inbounds %class.A, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_cur10, align 8 - br label %if.end - -if.else: ; preds = %entry - %5 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef nonnull align 8 dereferenceable(8) %5) - br label %if.end - -if.end: ; preds = %if.else, %if.then - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JRKS1_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNKSt5dequeI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call2 = call noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %cmp = icmp eq i64 %call, %call2 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt20__throw_length_errorPKc(ptr noundef @.str.3) #16 - unreachable - -if.end: ; preds = %entry - call void @_ZNSt5dequeI1ASaIS0_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 1) - %call3 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %0 = load ptr, ptr %_M_node, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %0, i64 1 - store ptr %call3, ptr %add.ptr, align 8 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 - %_M_node11 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish10, i32 0, i32 3 - %3 = load ptr, ptr %_M_node11, align 8 - %add.ptr12 = getelementptr inbounds ptr, ptr %3, i64 1 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish8, ptr noundef %add.ptr12) #5 - %_M_impl13 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish14 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl13, i32 0, i32 3 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish14, i32 0, i32 1 - %4 = load ptr, ptr %_M_first, align 8 - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 3 - %_M_cur17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish16, i32 0, i32 0 - store ptr %4, ptr %_M_cur17, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JRKS1_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %call = call noundef i64 @_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call2 = call noundef i64 @_ZNSt5dequeI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %call) #5 - ret i64 %call2 -} - -; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #12 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__nodes_to_add) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nodes_to_add.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__nodes_to_add, ptr %__nodes_to_add.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__nodes_to_add.addr, align 8 - %add = add i64 %0, 1 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 1 - %1 = load i64, ptr %_M_map_size, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 0 - %3 = load ptr, ptr %_M_map, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %2 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %sub = sub i64 %1, %sub.ptr.div - %cmp = icmp ugt i64 %add, %sub - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load i64, ptr %__nodes_to_add.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) - br label %if.end - -if.end: ; preds = %if.then, %entry - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_(ptr noundef nonnull align 8 dereferenceable(32) %__x, ptr noundef nonnull align 8 dereferenceable(32) %__y) #2 comdat { -entry: - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #5 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %2 = load ptr, ptr %__y.addr, align 8 - %_M_node1 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 - %3 = load ptr, ptr %_M_node1, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %sub = sub nsw i64 %sub.ptr.div, 1 - %mul = mul nsw i64 %call, %sub - %4 = load ptr, ptr %__x.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 0 - %5 = load ptr, ptr %_M_cur, align 8 - %6 = load ptr, ptr %__x.addr, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 1 - %7 = load ptr, ptr %_M_first, align 8 - %sub.ptr.lhs.cast2 = ptrtoint ptr %5 to i64 - %sub.ptr.rhs.cast3 = ptrtoint ptr %7 to i64 - %sub.ptr.sub4 = sub i64 %sub.ptr.lhs.cast2, %sub.ptr.rhs.cast3 - %sub.ptr.div5 = sdiv exact i64 %sub.ptr.sub4, 8 - %add = add nsw i64 %mul, %sub.ptr.div5 - %8 = load ptr, ptr %__y.addr, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %8, i32 0, i32 2 - %9 = load ptr, ptr %_M_last, align 8 - %10 = load ptr, ptr %__y.addr, align 8 - %_M_cur6 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %10, i32 0, i32 0 - %11 = load ptr, ptr %_M_cur6, align 8 - %sub.ptr.lhs.cast7 = ptrtoint ptr %9 to i64 - %sub.ptr.rhs.cast8 = ptrtoint ptr %11 to i64 - %sub.ptr.sub9 = sub i64 %sub.ptr.lhs.cast7, %sub.ptr.rhs.cast8 - %sub.ptr.div10 = sdiv exact i64 %sub.ptr.sub9, 8 - %add11 = add nsw i64 %add, %sub.ptr.div10 - ret i64 %add11 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt5dequeI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %__a.addr = alloca ptr, align 8 - %__diffmax = alloca i64, align 8 - %__allocmax = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 9223372036854775807, ptr %__diffmax, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNSt16allocator_traitsISaI1AEE8max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %0) #5 - store i64 %call, ptr %__allocmax, align 8 - %call1 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__diffmax, ptr noundef nonnull align 8 dereferenceable(8) %__allocmax) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %1 = load i64, ptr %call1, align 8 - ret i64 %1 - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #15 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt16allocator_traitsISaI1AEE8max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %0) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__b.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__a.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__nodes_to_add, i1 noundef zeroext %__add_at_front) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nodes_to_add.addr = alloca i64, align 8 - %__add_at_front.addr = alloca i8, align 1 - %__old_num_nodes = alloca i64, align 8 - %__new_num_nodes = alloca i64, align 8 - %__new_nstart = alloca ptr, align 8 - %__new_map_size = alloca i64, align 8 - %__new_map = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__nodes_to_add, ptr %__nodes_to_add.addr, align 8 - %frombool = zext i1 %__add_at_front to i8 - store i8 %frombool, ptr %__add_at_front.addr, align 1 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %0 = load ptr, ptr %_M_node, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node3, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %add = add nsw i64 %sub.ptr.div, 1 - store i64 %add, ptr %__old_num_nodes, align 8 - %2 = load i64, ptr %__old_num_nodes, align 8 - %3 = load i64, ptr %__nodes_to_add.addr, align 8 - %add4 = add i64 %2, %3 - store i64 %add4, ptr %__new_num_nodes, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - %5 = load i64, ptr %__new_num_nodes, align 8 - %mul = mul i64 2, %5 - %cmp = icmp ugt i64 %4, %mul - br i1 %cmp, label %if.then, label %if.else31 - -if.then: ; preds = %entry - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 0 - %6 = load ptr, ptr %_M_map, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %7 = load i64, ptr %_M_map_size8, align 8 - %8 = load i64, ptr %__new_num_nodes, align 8 - %sub = sub i64 %7, %8 - %div = udiv i64 %sub, 2 - %add.ptr = getelementptr inbounds ptr, ptr %6, i64 %div - %9 = load i8, ptr %__add_at_front.addr, align 1 - %tobool = trunc i8 %9 to i1 - br i1 %tobool, label %cond.true, label %cond.false - -cond.true: ; preds = %if.then - %10 = load i64, ptr %__nodes_to_add.addr, align 8 - br label %cond.end - -cond.false: ; preds = %if.then - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %10, %cond.true ], [ 0, %cond.false ] - %add.ptr9 = getelementptr inbounds ptr, ptr %add.ptr, i64 %cond - store ptr %add.ptr9, ptr %__new_nstart, align 8 - %11 = load ptr, ptr %__new_nstart, align 8 - %_M_impl10 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start11 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl10, i32 0, i32 2 - %_M_node12 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start11, i32 0, i32 3 - %12 = load ptr, ptr %_M_node12, align 8 - %cmp13 = icmp ult ptr %11, %12 - br i1 %cmp13, label %if.then14, label %if.else - -if.then14: ; preds = %cond.end - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 - %_M_node17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start16, i32 0, i32 3 - %13 = load ptr, ptr %_M_node17, align 8 - %_M_impl18 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish19 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 - %_M_node20 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish19, i32 0, i32 3 - %14 = load ptr, ptr %_M_node20, align 8 - %add.ptr21 = getelementptr inbounds ptr, ptr %14, i64 1 - %15 = load ptr, ptr %__new_nstart, align 8 - %call = call noundef ptr @_ZSt4copyIPP1AS2_ET0_T_S4_S3_(ptr noundef %13, ptr noundef %add.ptr21, ptr noundef %15) - br label %if.end - -if.else: ; preds = %cond.end - %_M_impl22 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start23 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 - %_M_node24 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start23, i32 0, i32 3 - %16 = load ptr, ptr %_M_node24, align 8 - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish26 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 - %_M_node27 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish26, i32 0, i32 3 - %17 = load ptr, ptr %_M_node27, align 8 - %add.ptr28 = getelementptr inbounds ptr, ptr %17, i64 1 - %18 = load ptr, ptr %__new_nstart, align 8 - %19 = load i64, ptr %__old_num_nodes, align 8 - %add.ptr29 = getelementptr inbounds ptr, ptr %18, i64 %19 - %call30 = call noundef ptr @_ZSt13copy_backwardIPP1AS2_ET0_T_S4_S3_(ptr noundef %16, ptr noundef %add.ptr28, ptr noundef %add.ptr29) - br label %if.end - -if.end: ; preds = %if.else, %if.then14 - br label %if.end65 - -if.else31: ; preds = %entry - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 1 - %20 = load i64, ptr %_M_map_size33, align 8 - %_M_impl34 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size35 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl34, i32 0, i32 1 - %call36 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %_M_map_size35, ptr noundef nonnull align 8 dereferenceable(8) %__nodes_to_add.addr) - %21 = load i64, ptr %call36, align 8 - %add37 = add i64 %20, %21 - %add38 = add i64 %add37, 2 - store i64 %add38, ptr %__new_map_size, align 8 - %22 = load i64, ptr %__new_map_size, align 8 - %call39 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %22) - store ptr %call39, ptr %__new_map, align 8 - %23 = load ptr, ptr %__new_map, align 8 - %24 = load i64, ptr %__new_map_size, align 8 - %25 = load i64, ptr %__new_num_nodes, align 8 - %sub40 = sub i64 %24, %25 - %div41 = udiv i64 %sub40, 2 - %add.ptr42 = getelementptr inbounds ptr, ptr %23, i64 %div41 - %26 = load i8, ptr %__add_at_front.addr, align 1 - %tobool43 = trunc i8 %26 to i1 - br i1 %tobool43, label %cond.true44, label %cond.false45 - -cond.true44: ; preds = %if.else31 - %27 = load i64, ptr %__nodes_to_add.addr, align 8 - br label %cond.end46 - -cond.false45: ; preds = %if.else31 - br label %cond.end46 - -cond.end46: ; preds = %cond.false45, %cond.true44 - %cond47 = phi i64 [ %27, %cond.true44 ], [ 0, %cond.false45 ] - %add.ptr48 = getelementptr inbounds ptr, ptr %add.ptr42, i64 %cond47 - store ptr %add.ptr48, ptr %__new_nstart, align 8 - %_M_impl49 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start50 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl49, i32 0, i32 2 - %_M_node51 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start50, i32 0, i32 3 - %28 = load ptr, ptr %_M_node51, align 8 - %_M_impl52 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish53 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 - %_M_node54 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish53, i32 0, i32 3 - %29 = load ptr, ptr %_M_node54, align 8 - %add.ptr55 = getelementptr inbounds ptr, ptr %29, i64 1 - %30 = load ptr, ptr %__new_nstart, align 8 - %call56 = call noundef ptr @_ZSt4copyIPP1AS2_ET0_T_S4_S3_(ptr noundef %28, ptr noundef %add.ptr55, ptr noundef %30) - %_M_impl57 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map58 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl57, i32 0, i32 0 - %31 = load ptr, ptr %_M_map58, align 8 - %_M_impl59 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size60 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl59, i32 0, i32 1 - %32 = load i64, ptr %_M_map_size60, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #5 - %33 = load ptr, ptr %__new_map, align 8 - %_M_impl61 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map62 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl61, i32 0, i32 0 - store ptr %33, ptr %_M_map62, align 8 - %34 = load i64, ptr %__new_map_size, align 8 - %_M_impl63 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size64 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl63, i32 0, i32 1 - store i64 %34, ptr %_M_map_size64, align 8 - br label %if.end65 - -if.end65: ; preds = %cond.end46, %if.end - %_M_impl66 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start67 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl66, i32 0, i32 2 - %35 = load ptr, ptr %__new_nstart, align 8 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start67, ptr noundef %35) #5 - %_M_impl68 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish69 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl68, i32 0, i32 3 - %36 = load ptr, ptr %__new_nstart, align 8 - %37 = load i64, ptr %__old_num_nodes, align 8 - %add.ptr70 = getelementptr inbounds ptr, ptr %36, i64 %37 - %add.ptr71 = getelementptr inbounds ptr, ptr %add.ptr70, i64 -1 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish69, ptr noundef %add.ptr71) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt4copyIPP1AS2_ET0_T_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__miter_baseIPP1AET_S3_(ptr noundef %0) - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__miter_baseIPP1AET_S3_(ptr noundef %1) - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt13__copy_move_aILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %call, ptr noundef %call1, ptr noundef %2) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt13copy_backwardIPP1AS2_ET0_T_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__miter_baseIPP1AET_S3_(ptr noundef %0) - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__miter_baseIPP1AET_S3_(ptr noundef %1) - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt22__copy_move_backward_aILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %call, ptr noundef %call1, ptr noundef %2) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt13__copy_move_aILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %0) #5 - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #5 - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #5 - %call3 = call noundef ptr @_ZSt14__copy_move_a1ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %call, ptr noundef %call1, ptr noundef %call2) - %call4 = call noundef ptr @_ZSt12__niter_wrapIPP1AET_RKS3_S3_(ptr noundef nonnull align 8 dereferenceable(8) %__result.addr, ptr noundef %call3) - ret ptr %call4 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__miter_baseIPP1AET_S3_(ptr noundef %__it) #2 comdat { -entry: - %__it.addr = alloca ptr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %0 = load ptr, ptr %__it.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__niter_wrapIPP1AET_RKS3_S3_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %__res) #2 comdat { -entry: - %.addr = alloca ptr, align 8 - %__res.addr = alloca ptr, align 8 - store ptr %0, ptr %.addr, align 8 - store ptr %__res, ptr %__res.addr, align 8 - %1 = load ptr, ptr %__res.addr, align 8 - ret ptr %1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt14__copy_move_a1ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZSt14__copy_move_a2ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %__it) #2 comdat { -entry: - %__it.addr = alloca ptr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %0 = load ptr, ptr %__it.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt14__copy_move_a2ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AEEPT_PKS5_S8_S6_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AEEPT_PKS5_S8_S6_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #2 comdat align 2 { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %_Num = alloca i64, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__last.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - store i64 %sub.ptr.div, ptr %_Num, align 8 - %2 = load i64, ptr %_Num, align 8 - %tobool = icmp ne i64 %2, 0 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %3 = load ptr, ptr %__result.addr, align 8 - %4 = load ptr, ptr %__first.addr, align 8 - %5 = load i64, ptr %_Num, align 8 - %mul = mul i64 8, %5 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %3, ptr align 8 %4, i64 %mul, i1 false) - br label %if.end - -if.end: ; preds = %if.then, %entry - %6 = load ptr, ptr %__result.addr, align 8 - %7 = load i64, ptr %_Num, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %6, i64 %7 - ret ptr %add.ptr -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #14 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt22__copy_move_backward_aILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %0) #5 - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #5 - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #5 - %call3 = call noundef ptr @_ZSt23__copy_move_backward_a1ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %call, ptr noundef %call1, ptr noundef %call2) - %call4 = call noundef ptr @_ZSt12__niter_wrapIPP1AET_RKS3_S3_(ptr noundef nonnull align 8 dereferenceable(8) %__result.addr, ptr noundef %call3) - ret ptr %call4 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt23__copy_move_backward_a1ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZSt23__copy_move_backward_a2ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt23__copy_move_backward_a2ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AEEPT_PKS5_S8_S6_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AEEPT_PKS5_S8_S6_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #2 comdat align 2 { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %_Num = alloca i64, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__last.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - store i64 %sub.ptr.div, ptr %_Num, align 8 - %2 = load i64, ptr %_Num, align 8 - %tobool = icmp ne i64 %2, 0 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %3 = load ptr, ptr %__result.addr, align 8 - %4 = load i64, ptr %_Num, align 8 - %idx.neg = sub i64 0, %4 - %add.ptr = getelementptr inbounds ptr, ptr %3, i64 %idx.neg - %5 = load ptr, ptr %__first.addr, align 8 - %6 = load i64, ptr %_Num, align 8 - %mul = mul i64 8, %6 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr, ptr align 8 %5, i64 %mul, i1 false) - br label %if.end - -if.end: ; preds = %if.then, %entry - %7 = load ptr, ptr %__result.addr, align 8 - %8 = load i64, ptr %_Num, align 8 - %idx.neg1 = sub i64 0, %8 - %add.ptr2 = getelementptr inbounds ptr, ptr %7, i64 %idx.neg1 - ret ptr %add.ptr2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeI1ASaIS0_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %ref.tmp = alloca %"struct.std::_Deque_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %ref.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE9pop_frontEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 2 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start3, i32 0, i32 2 - %1 = load ptr, ptr %_M_last, align 8 - %add.ptr = getelementptr inbounds %class.A, ptr %1, i64 -1 - %cmp = icmp ne ptr %0, %add.ptr - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start5 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 2 - %_M_cur6 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start5, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur6, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE7destroyIS0_EEvRS1_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %2) #5 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 2 - %_M_cur9 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start8, i32 0, i32 0 - %3 = load ptr, ptr %_M_cur9, align 8 - %incdec.ptr = getelementptr inbounds %class.A, ptr %3, i32 1 - store ptr %incdec.ptr, ptr %_M_cur9, align 8 - br label %if.end - -if.else: ; preds = %entry - invoke void @_ZNSt5dequeI1ASaIS0_EE16_M_pop_front_auxEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %if.else - br label %if.end - -if.end: ; preds = %invoke.cont, %if.then - ret void - -terminate.lpad: ; preds = %if.else - %4 = landingpad { ptr, i32 } - catch ptr null - %5 = extractvalue { ptr, i32 } %4, 0 - call void @__clang_call_terminate(ptr %5) #15 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaI1AEE7destroyIS0_EEvRS1_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AE7destroyIS1_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE16_M_pop_front_auxEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 2 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE7destroyIS0_EEvRS1_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %0) #5 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start3, i32 0, i32 1 - %1 = load ptr, ptr %_M_first, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %1) #5 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start5 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 2 - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start7 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 2 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start7, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %2, i64 1 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start5, ptr noundef %add.ptr) #5 - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start9 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 2 - %_M_first10 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start9, i32 0, i32 1 - %3 = load ptr, ptr %_M_first10, align 8 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 2 - %_M_cur13 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start12, i32 0, i32 0 - store ptr %3, ptr %_M_cur13, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AE7destroyIS1_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_queue_1.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noinline uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #12 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #13 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #14 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #15 = { noreturn nounwind } -attributes #16 = { noreturn } -attributes #17 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} diff --git a/test_cases_bc/basic_cpp_tests/queue-2.cpp.bc b/test_cases_bc/basic_cpp_tests/queue-2.cpp.bc deleted file mode 100644 index 1f5219b5..00000000 --- a/test_cases_bc/basic_cpp_tests/queue-2.cpp.bc +++ /dev/null @@ -1,2429 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/queue-2.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/queue-2.cpp" -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-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%"class.std::queue" = type { %"class.std::deque" } -%"class.std::deque" = type { %"class.std::_Deque_base" } -%"class.std::_Deque_base" = type { %"struct.std::_Deque_base>::_Deque_impl" } -%"struct.std::_Deque_base>::_Deque_impl" = type { %"struct.std::_Deque_base>::_Deque_impl_data" } -%"struct.std::_Deque_base>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" } -%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr } -%"class.std::allocator.0" = type { i8 } - -$_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEEC2IS4_vEEv = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEE4pushERKS1_ = comdat any - -$_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEE5frontEv = comdat any - -$_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEE3popEv = comdat any - -$_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEED2Ev = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt5dequeIP1ASaIS1_EED2Ev = comdat any - -$_ZNSt5dequeIP1ASaIS1_EE15_M_destroy_dataESt15_Deque_iteratorIS1_RS1_PS1_ES7_RKS2_ = comdat any - -$_ZNSt5dequeIP1ASaIS1_EE5beginEv = comdat any - -$_ZNSt5dequeIP1ASaIS1_EE3endEv = comdat any - -$_ZNSt11_Deque_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt11_Deque_baseIP1ASaIS1_EED2Ev = comdat any - -$_ZNSt15_Deque_iteratorIP1ARS1_PS1_EC2ERKS4_ = comdat any - -$_ZNSt11_Deque_baseIP1ASaIS1_EE16_M_destroy_nodesEPPS1_S5_ = comdat any - -$_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_deallocate_mapEPPS1_m = comdat any - -$_ZNSt11_Deque_baseIP1ASaIS1_EE11_Deque_implD2Ev = comdat any - -$_ZNSt11_Deque_baseIP1ASaIS1_EE18_M_deallocate_nodeEPS1_ = comdat any - -$_ZNSt16allocator_traitsISaIP1AEE10deallocateERS2_PS1_m = comdat any - -$_ZSt16__deque_buf_sizem = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m = comdat any - -$_ZNKSt11_Deque_baseIP1ASaIS1_EE20_M_get_map_allocatorEv = comdat any - -$_ZNSt16allocator_traitsISaIPP1AEE10deallocateERS3_PS2_m = comdat any - -$_ZNSaIPP1AED2Ev = comdat any - -$_ZNKSt11_Deque_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv = comdat any - -$_ZNSaIPP1AEC2IS0_EERKSaIT_E = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPP1AEC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPP1AE10deallocateEPS3_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPP1AED2Ev = comdat any - -$_ZNSaIP1AED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AED2Ev = comdat any - -$_ZNSt5dequeIP1ASaIS1_EEC2Ev = comdat any - -$_ZNSt11_Deque_baseIP1ASaIS1_EEC2Ev = comdat any - -$_ZNSt11_Deque_baseIP1ASaIS1_EE11_Deque_implC2Ev = comdat any - -$_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_initialize_mapEm = comdat any - -$_ZNSaIP1AEC2Ev = comdat any - -$_ZNSt11_Deque_baseIP1ASaIS1_EE16_Deque_impl_dataC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AEC2Ev = comdat any - -$_ZNSt15_Deque_iteratorIP1ARS1_PS1_EC2Ev = comdat any - -$_ZSt3maxImERKT_S2_S2_ = comdat any - -$_ZNSt11_Deque_baseIP1ASaIS1_EE15_M_allocate_mapEm = comdat any - -$_ZNSt11_Deque_baseIP1ASaIS1_EE15_M_create_nodesEPPS1_S5_ = comdat any - -$_ZNSt15_Deque_iteratorIP1ARS1_PS1_E11_M_set_nodeEPS3_ = comdat any - -$_ZNSt16allocator_traitsISaIPP1AEE8allocateERS3_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPP1AE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIPP1AE11_M_max_sizeEv = comdat any - -$_ZNSt11_Deque_baseIP1ASaIS1_EE16_M_allocate_nodeEv = comdat any - -$_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIP1AE11_M_max_sizeEv = comdat any - -$_ZNSt15_Deque_iteratorIP1ARS1_PS1_E14_S_buffer_sizeEv = comdat any - -$_ZNSt5dequeIP1ASaIS1_EE9push_backERKS1_ = comdat any - -$_ZNSt16allocator_traitsISaIP1AEE9constructIS1_JRKS1_EEEvRS2_PT_DpOT0_ = comdat any - -$_ZNSt5dequeIP1ASaIS1_EE16_M_push_back_auxIJRKS1_EEEvDpOT_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AE9constructIS2_JRKS2_EEEvPT_DpOT0_ = comdat any - -$_ZNKSt5dequeIP1ASaIS1_EE4sizeEv = comdat any - -$_ZNKSt5dequeIP1ASaIS1_EE8max_sizeEv = comdat any - -$_ZNSt5dequeIP1ASaIS1_EE22_M_reserve_map_at_backEm = comdat any - -$_ZStmiRKSt15_Deque_iteratorIP1ARS1_PS1_ES6_ = comdat any - -$_ZNSt5dequeIP1ASaIS1_EE11_S_max_sizeERKS2_ = comdat any - -$_ZNSt16allocator_traitsISaIP1AEE8max_sizeERKS2_ = comdat any - -$_ZSt3minImERKT_S2_S2_ = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIP1AE8max_sizeEv = comdat any - -$_ZNSt5dequeIP1ASaIS1_EE17_M_reallocate_mapEmb = comdat any - -$_ZSt4copyIPPP1AS3_ET0_T_S5_S4_ = comdat any - -$_ZSt13copy_backwardIPPP1AS3_ET0_T_S5_S4_ = comdat any - -$_ZSt13__copy_move_aILb0EPPP1AS3_ET1_T0_S5_S4_ = comdat any - -$_ZSt12__miter_baseIPPP1AET_S4_ = comdat any - -$_ZSt12__niter_wrapIPPP1AET_RKS4_S4_ = comdat any - -$_ZSt14__copy_move_a1ILb0EPPP1AS3_ET1_T0_S5_S4_ = comdat any - -$_ZSt12__niter_baseIPPP1AET_S4_ = comdat any - -$_ZSt14__copy_move_a2ILb0EPPP1AS3_ET1_T0_S5_S4_ = comdat any - -$_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPP1AEEPT_PKS6_S9_S7_ = comdat any - -$_ZSt22__copy_move_backward_aILb0EPPP1AS3_ET1_T0_S5_S4_ = comdat any - -$_ZSt23__copy_move_backward_a1ILb0EPPP1AS3_ET1_T0_S5_S4_ = comdat any - -$_ZSt23__copy_move_backward_a2ILb0EPPP1AS3_ET1_T0_S5_S4_ = comdat any - -$_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPP1AEEPT_PKS6_S9_S7_ = comdat any - -$_ZNSt5dequeIP1ASaIS1_EE5frontEv = comdat any - -$_ZNKSt15_Deque_iteratorIP1ARS1_PS1_EdeEv = comdat any - -$_ZNSt5dequeIP1ASaIS1_EE9pop_frontEv = comdat any - -$_ZNSt16allocator_traitsISaIP1AEE7destroyIS1_EEvRS2_PT_ = comdat any - -$_ZNSt5dequeIP1ASaIS1_EE16_M_pop_front_auxEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AE7destroyIS2_EEvPT_ = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 -@__dso_handle = external hidden global i8 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@.str.3 = private unnamed_addr constant [48 x i8] c"cannot create std::deque larger than max_size()\00", align 1 -@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_queue_2.cpp, ptr null }] - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init() #3 section ".text.startup" { -entry: - call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = call i32 @__cxa_atexit(ptr @_ZNSt8ios_base4InitD1Ev, ptr @_ZStL8__ioinit, ptr @__dso_handle) #5 - ret void -} - -declare void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 - -; Function Attrs: nounwind -declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 - -; Function Attrs: nounwind -declare i32 @__cxa_atexit(ptr, ptr, ptr) #5 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #6 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %aqueue = alloca %"class.std::queue", align 8 - %a = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEEC2IS4_vEEv(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) - %call = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #15 - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #5 - store ptr %call, ptr %a, align 8 - invoke void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEE4pushERKS1_(ptr noundef nonnull align 8 dereferenceable(80) %aqueue, ptr noundef nonnull align 8 dereferenceable(8) %a) - to label %invoke.cont1 unwind label %lpad - -invoke.cont1: ; preds = %invoke.cont - %call3 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) - to label %invoke.cont2 unwind label %lpad - -invoke.cont2: ; preds = %invoke.cont1 - %0 = load ptr, ptr %call3, align 8 - store ptr %0, ptr %aptr, align 8 - invoke void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) - to label %invoke.cont4 unwind label %lpad - -invoke.cont4: ; preds = %invoke.cont2 - %1 = load ptr, ptr %aptr, align 8 - %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) - to label %invoke.cont5 unwind label %lpad - -invoke.cont5: ; preds = %invoke.cont4 - store i32 0, ptr %retval, align 4 - call void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) #5 - %4 = load i32, ptr %retval, align 4 - ret i32 %4 - -lpad: ; preds = %invoke.cont4, %invoke.cont2, %invoke.cont1, %invoke.cont, %entry - %5 = landingpad { ptr, i32 } - cleanup - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - call void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %aqueue) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val6 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val6 -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEEC2IS4_vEEv(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::queue", ptr %this1, i32 0, i32 0 - call void @llvm.memset.p0.i64(ptr align 8 %c, i8 0, i64 80, i1 false) - call void @_ZNSt5dequeIP1ASaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %c) - ret void -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #8 - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #9 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEE4pushERKS1_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::queue", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt5dequeIP1ASaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(80) %c, ptr noundef nonnull align 8 dereferenceable(8) %0) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::queue", ptr %this1, i32 0, i32 0 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIP1ASaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %c) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::queue", ptr %this1, i32 0, i32 0 - call void @_ZNSt5dequeIP1ASaIS1_EE9pop_frontEv(ptr noundef nonnull align 8 dereferenceable(80) %c) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5queueIP1ASt5dequeIS1_SaIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #9 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::queue", ptr %this1, i32 0, i32 0 - call void @_ZNSt5dequeIP1ASaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %c) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #9 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_Deque_iterator", align 8 - %agg.tmp2 = alloca %"struct.std::_Deque_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeIP1ASaIS1_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - call void @_ZNSt5dequeIP1ASaIS1_EE3endEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - invoke void @_ZNSt5dequeIP1ASaIS1_EE15_M_destroy_dataESt15_Deque_iteratorIS1_RS1_PS1_ES7_RKS2_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %agg.tmp, ptr noundef %agg.tmp2, ptr noundef nonnull align 1 dereferenceable(1) %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt11_Deque_baseIP1ASaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #16 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EE15_M_destroy_dataESt15_Deque_iteratorIS1_RS1_PS1_ES7_RKS2_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__first, ptr noundef %__last, ptr noundef nonnull align 1 dereferenceable(1) %0) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EE5beginEv(ptr noalias sret(%"struct.std::_Deque_iterator") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_EC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EE3endEv(ptr noalias sret(%"struct.std::_Deque_iterator") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_EC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #10 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #5 - call void @_ZSt9terminatev() #16 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #9 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_map, align 8 - %tobool = icmp ne ptr %0, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 - %_M_node4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node4, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %2, i64 1 - call void @_ZNSt11_Deque_baseIP1ASaIS1_EE16_M_destroy_nodesEPPS1_S5_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %1, ptr noundef %add.ptr) #5 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 0 - %3 = load ptr, ptr %_M_map6, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - call void @_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_deallocate_mapEPPS1_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #5 - br label %if.end - -if.end: ; preds = %if.then, %entry - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt11_Deque_baseIP1ASaIS1_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl8) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_EC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef nonnull align 8 dereferenceable(32) %__x) unnamed_addr #9 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_cur2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur2, align 8 - store ptr %1, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %__x.addr, align 8 - %_M_first3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %_M_first3, align 8 - store ptr %3, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - %4 = load ptr, ptr %__x.addr, align 8 - %_M_last4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 2 - %5 = load ptr, ptr %_M_last4, align 8 - store ptr %5, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - %6 = load ptr, ptr %__x.addr, align 8 - %_M_node5 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 3 - %7 = load ptr, ptr %_M_node5, align 8 - store ptr %7, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EE16_M_destroy_nodesEPPS1_S5_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nstart.addr = alloca ptr, align 8 - %__nfinish.addr = alloca ptr, align 8 - %__n = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__nstart, ptr %__nstart.addr, align 8 - store ptr %__nfinish, ptr %__nfinish.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__nstart.addr, align 8 - store ptr %0, ptr %__n, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %1 = load ptr, ptr %__n, align 8 - %2 = load ptr, ptr %__nfinish.addr, align 8 - %cmp = icmp ult ptr %1, %2 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %3 = load ptr, ptr %__n, align 8 - %4 = load ptr, ptr %3, align 8 - call void @_ZNSt11_Deque_baseIP1ASaIS1_EE18_M_deallocate_nodeEPS1_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %4) #5 - br label %for.inc - -for.inc: ; preds = %for.body - %5 = load ptr, ptr %__n, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %5, i32 1 - store ptr %incdec.ptr, ptr %__n, align 8 - br label %for.cond, !llvm.loop !6 - -for.end: ; preds = %for.cond - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_deallocate_mapEPPS1_m(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %__map_alloc = alloca %"class.std::allocator.0", align 1 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNKSt11_Deque_baseIP1ASaIS1_EE20_M_get_map_allocatorEv(ptr sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - invoke void @_ZNSt16allocator_traitsISaIPP1AEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc, ptr noundef %0, i64 noundef %1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSaIPP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #5 - ret void - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #16 - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #9 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EE18_M_deallocate_nodeEPS1_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__p) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__p.addr, align 8 - %call = invoke noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - invoke void @_ZNSt16allocator_traitsISaIP1AEE10deallocateERS2_PS1_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef %0, i64 noundef %call) - to label %invoke.cont2 unwind label %terminate.lpad - -invoke.cont2: ; preds = %invoke.cont - ret void - -terminate.lpad: ; preds = %invoke.cont, %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #16 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIP1AEE10deallocateERS2_PS1_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef %__size) #2 comdat { -entry: - %__size.addr = alloca i64, align 8 - store i64 %__size, ptr %__size.addr, align 8 - %0 = load i64, ptr %__size.addr, align 8 - %cmp = icmp ult i64 %0, 512 - br i1 %cmp, label %cond.true, label %cond.false - -cond.true: ; preds = %entry - %1 = load i64, ptr %__size.addr, align 8 - %div = udiv i64 512, %1 - br label %cond.end - -cond.false: ; preds = %entry - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %div, %cond.true ], [ 1, %cond.false ] - ret i64 %cond -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #11 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNKSt11_Deque_baseIP1ASaIS1_EE20_M_get_map_allocatorEv(ptr noalias sret(%"class.std::allocator.0") align 1 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - call void @_ZNSaIPP1AEC2IS0_EERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %agg.result, ptr noundef nonnull align 1 dereferenceable(1) %call) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIPP1AEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPP1AE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #9 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPP1AEC2IS0_EERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 1 dereferenceable(1) %0) unnamed_addr #9 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #9 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPP1AE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #9 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #9 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #9 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #12 - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt11_Deque_baseIP1ASaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) - ret void -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt11_Deque_baseIP1ASaIS1_EE11_Deque_implC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #5 - invoke void @_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - ret void - -lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - cleanup - %1 = extractvalue { ptr, i32 } %0, 0 - store ptr %1, ptr %exn.slot, align 8 - %2 = extractvalue { ptr, i32 } %0, 1 - store i32 %2, ptr %ehselector.slot, align 4 - call void @_ZNSt11_Deque_baseIP1ASaIS1_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EE11_Deque_implC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #9 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt11_Deque_baseIP1ASaIS1_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__num_elements.addr = alloca i64, align 8 - %__num_nodes = alloca i64, align 8 - %ref.tmp = alloca i64, align 8 - %ref.tmp2 = alloca i64, align 8 - %__nstart = alloca ptr, align 8 - %__nfinish = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i64 %__num_elements, ptr %__num_elements.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__num_elements.addr, align 8 - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %div = udiv i64 %0, %call - %add = add i64 %div, 1 - store i64 %add, ptr %__num_nodes, align 8 - store i64 8, ptr %ref.tmp, align 8 - %1 = load i64, ptr %__num_nodes, align 8 - %add3 = add i64 %1, 2 - store i64 %add3, ptr %ref.tmp2, align 8 - %call4 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp2) - %2 = load i64, ptr %call4, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 1 - store i64 %2, ptr %_M_map_size, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %3 = load i64, ptr %_M_map_size6, align 8 - %call7 = call noundef ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %3) - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 0 - store ptr %call7, ptr %_M_map, align 8 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 0 - %4 = load ptr, ptr %_M_map10, align 8 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 1 - %5 = load i64, ptr %_M_map_size12, align 8 - %6 = load i64, ptr %__num_nodes, align 8 - %sub = sub i64 %5, %6 - %div13 = udiv i64 %sub, 2 - %add.ptr = getelementptr inbounds ptr, ptr %4, i64 %div13 - store ptr %add.ptr, ptr %__nstart, align 8 - %7 = load ptr, ptr %__nstart, align 8 - %8 = load i64, ptr %__num_nodes, align 8 - %add.ptr14 = getelementptr inbounds ptr, ptr %7, i64 %8 - store ptr %add.ptr14, ptr %__nfinish, align 8 - %9 = load ptr, ptr %__nstart, align 8 - %10 = load ptr, ptr %__nfinish, align 8 - invoke void @_ZNSt11_Deque_baseIP1ASaIS1_EE15_M_create_nodesEPPS1_S5_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - br label %try.cont - -lpad: ; preds = %entry - %11 = landingpad { ptr, i32 } - catch ptr null - %12 = extractvalue { ptr, i32 } %11, 0 - store ptr %12, ptr %exn.slot, align 8 - %13 = extractvalue { ptr, i32 } %11, 1 - store i32 %13, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %14 = call ptr @__cxa_begin_catch(ptr %exn) #5 - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 0 - %15 = load ptr, ptr %_M_map16, align 8 - %_M_impl17 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size18 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl17, i32 0, i32 1 - %16 = load i64, ptr %_M_map_size18, align 8 - call void @_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_deallocate_mapEPPS1_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #5 - %_M_impl19 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map20 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl19, i32 0, i32 0 - store ptr null, ptr %_M_map20, align 8 - %_M_impl21 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size22 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl21, i32 0, i32 1 - store i64 0, ptr %_M_map_size22, align 8 - invoke void @__cxa_rethrow() #17 - to label %unreachable unwind label %lpad23 - -lpad23: ; preds = %catch - %17 = landingpad { ptr, i32 } - cleanup - %18 = extractvalue { ptr, i32 } %17, 0 - store ptr %18, ptr %exn.slot, align 8 - %19 = extractvalue { ptr, i32 } %17, 1 - store i32 %19, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont24 unwind label %terminate.lpad - -invoke.cont24: ; preds = %lpad23 - br label %eh.resume - -try.cont: ; preds = %invoke.cont - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 2 - %20 = load ptr, ptr %__nstart, align 8 - call void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E11_M_set_nodeEPS3_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start, ptr noundef %20) #5 - %_M_impl26 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl26, i32 0, i32 3 - %21 = load ptr, ptr %__nfinish, align 8 - %add.ptr27 = getelementptr inbounds ptr, ptr %21, i64 -1 - call void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E11_M_set_nodeEPS3_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef %add.ptr27) #5 - %_M_impl28 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start29 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl28, i32 0, i32 2 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start29, i32 0, i32 1 - %22 = load ptr, ptr %_M_first, align 8 - %_M_impl30 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start31 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start31, i32 0, i32 0 - store ptr %22, ptr %_M_cur, align 8 - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 - %_M_first34 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish33, i32 0, i32 1 - %23 = load ptr, ptr %_M_first34, align 8 - %24 = load i64, ptr %__num_elements.addr, align 8 - %call35 = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %rem = urem i64 %24, %call35 - %add.ptr36 = getelementptr inbounds ptr, ptr %23, i64 %rem - %_M_impl37 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish38 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 - %_M_cur39 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 - store ptr %add.ptr36, ptr %_M_cur39, align 8 - ret void - -eh.resume: ; preds = %invoke.cont24 - %exn40 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn40, 0 - %lpad.val41 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val41 - -terminate.lpad: ; preds = %lpad23 - %25 = landingpad { ptr, i32 } - catch ptr null - %26 = extractvalue { ptr, i32 } %25, 0 - call void @__clang_call_terminate(ptr %26) #16 - unreachable - -unreachable: ; preds = %catch - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #9 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #9 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_map, align 8 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_map_size, align 8 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #5 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #9 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %this) unnamed_addr #9 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr null, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__b.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__n) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %__map_alloc = alloca %"class.std::allocator.0", align 1 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNKSt11_Deque_baseIP1ASaIS1_EE20_M_get_map_allocatorEv(ptr sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %0 = load i64, ptr %__n.addr, align 8 - %call = invoke noundef ptr @_ZNSt16allocator_traitsISaIPP1AEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc, i64 noundef %0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - call void @_ZNSaIPP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #5 - ret ptr %call - -lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - cleanup - %2 = extractvalue { ptr, i32 } %1, 0 - store ptr %2, ptr %exn.slot, align 8 - %3 = extractvalue { ptr, i32 } %1, 1 - store i32 %3, ptr %ehselector.slot, align 4 - call void @_ZNSaIPP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIP1ASaIS1_EE15_M_create_nodesEPPS1_S5_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__nstart.addr = alloca ptr, align 8 - %__nfinish.addr = alloca ptr, align 8 - %__cur = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store ptr %__nstart, ptr %__nstart.addr, align 8 - store ptr %__nfinish, ptr %__nfinish.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__nstart.addr, align 8 - store ptr %0, ptr %__cur, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %1 = load ptr, ptr %__cur, align 8 - %2 = load ptr, ptr %__nfinish.addr, align 8 - %cmp = icmp ult ptr %1, %2 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %call = invoke noundef ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %for.body - %3 = load ptr, ptr %__cur, align 8 - store ptr %call, ptr %3, align 8 - br label %for.inc - -for.inc: ; preds = %invoke.cont - %4 = load ptr, ptr %__cur, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %__cur, align 8 - br label %for.cond, !llvm.loop !8 - -lpad: ; preds = %for.body - %5 = landingpad { ptr, i32 } - catch ptr null - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %8 = call ptr @__cxa_begin_catch(ptr %exn) #5 - %9 = load ptr, ptr %__nstart.addr, align 8 - %10 = load ptr, ptr %__cur, align 8 - call void @_ZNSt11_Deque_baseIP1ASaIS1_EE16_M_destroy_nodesEPPS1_S5_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) #5 - invoke void @__cxa_rethrow() #17 - to label %unreachable unwind label %lpad2 - -for.end: ; preds = %for.cond - br label %try.cont - -lpad2: ; preds = %catch - %11 = landingpad { ptr, i32 } - cleanup - %12 = extractvalue { ptr, i32 } %11, 0 - store ptr %12, ptr %exn.slot, align 8 - %13 = extractvalue { ptr, i32 } %11, 1 - store i32 %13, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont3 unwind label %terminate.lpad - -invoke.cont3: ; preds = %lpad2 - br label %eh.resume - -try.cont: ; preds = %for.end - ret void - -eh.resume: ; preds = %invoke.cont3 - %exn4 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn4, 0 - %lpad.val5 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val5 - -terminate.lpad: ; preds = %lpad2 - %14 = landingpad { ptr, i32 } - catch ptr null - %15 = extractvalue { ptr, i32 } %14, 0 - call void @__clang_call_terminate(ptr %15) #16 - unreachable - -unreachable: ; preds = %catch - unreachable -} - -declare void @__cxa_rethrow() - -declare void @__cxa_end_catch() - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E11_M_set_nodeEPS3_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__new_node.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__new_node, ptr %__new_node.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__new_node.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr %0, ptr %_M_node, align 8 - %1 = load ptr, ptr %__new_node.addr, align 8 - %2 = load ptr, ptr %1, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr %2, ptr %_M_first, align 8 - %_M_first2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %3 = load ptr, ptr %_M_first2, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E14_S_buffer_sizeEv() #5 - %add.ptr = getelementptr inbounds ptr, ptr %3, i64 %call - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr %add.ptr, ptr %_M_last, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaIPP1AEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorIPP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorIPP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPP1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #17 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #18 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPP1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #13 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %call2 = call noundef ptr @_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, i64 noundef %call) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIP1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #17 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #18 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIP1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E14_S_buffer_sizeEv() #2 comdat align 2 { -entry: - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - ret i64 %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 - %1 = load ptr, ptr %_M_last, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %1, i64 -1 - %cmp = icmp ne ptr %0, %add.ptr - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur7 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur7, align 8 - %3 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt16allocator_traitsISaIP1AEE9constructIS1_JRKS1_EEEvRS2_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #5 - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish9 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 - %_M_cur10 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur10, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_cur10, align 8 - br label %if.end - -if.else: ; preds = %entry - %5 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt5dequeIP1ASaIS1_EE16_M_push_back_auxIJRKS1_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef nonnull align 8 dereferenceable(8) %5) - br label %if.end - -if.end: ; preds = %if.else, %if.then - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIP1AEE9constructIS1_JRKS1_EEEvRS2_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AE9constructIS2_JRKS2_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EE16_M_push_back_auxIJRKS1_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNKSt5dequeIP1ASaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call2 = call noundef i64 @_ZNKSt5dequeIP1ASaIS1_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %cmp = icmp eq i64 %call, %call2 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt20__throw_length_errorPKc(ptr noundef @.str.3) #17 - unreachable - -if.end: ; preds = %entry - call void @_ZNSt5dequeIP1ASaIS1_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 1) - %call3 = call noundef ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %0 = load ptr, ptr %_M_node, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %0, i64 1 - store ptr %call3, ptr %add.ptr, align 8 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaIP1AEE9constructIS1_JRKS1_EEEvRS2_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 - %_M_node11 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish10, i32 0, i32 3 - %3 = load ptr, ptr %_M_node11, align 8 - %add.ptr12 = getelementptr inbounds ptr, ptr %3, i64 1 - call void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E11_M_set_nodeEPS3_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish8, ptr noundef %add.ptr12) #5 - %_M_impl13 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish14 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl13, i32 0, i32 3 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish14, i32 0, i32 1 - %4 = load ptr, ptr %_M_first, align 8 - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 3 - %_M_cur17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish16, i32 0, i32 0 - store ptr %4, ptr %_M_cur17, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AE9constructIS2_JRKS2_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - %2 = load ptr, ptr %1, align 8 - store ptr %2, ptr %0, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIP1ASaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %call = call noundef i64 @_ZStmiRKSt15_Deque_iteratorIP1ARS1_PS1_ES6_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIP1ASaIS1_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call2 = call noundef i64 @_ZNSt5dequeIP1ASaIS1_EE11_S_max_sizeERKS2_(ptr noundef nonnull align 1 dereferenceable(1) %call) #5 - ret i64 %call2 -} - -; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #13 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__nodes_to_add) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nodes_to_add.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__nodes_to_add, ptr %__nodes_to_add.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__nodes_to_add.addr, align 8 - %add = add i64 %0, 1 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 1 - %1 = load i64, ptr %_M_map_size, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 0 - %3 = load ptr, ptr %_M_map, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %2 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %sub = sub i64 %1, %sub.ptr.div - %cmp = icmp ugt i64 %add, %sub - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load i64, ptr %__nodes_to_add.addr, align 8 - call void @_ZNSt5dequeIP1ASaIS1_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) - br label %if.end - -if.end: ; preds = %if.then, %entry - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorIP1ARS1_PS1_ES6_(ptr noundef nonnull align 8 dereferenceable(32) %__x, ptr noundef nonnull align 8 dereferenceable(32) %__y) #2 comdat { -entry: - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E14_S_buffer_sizeEv() #5 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %2 = load ptr, ptr %__y.addr, align 8 - %_M_node1 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 - %3 = load ptr, ptr %_M_node1, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %sub = sub nsw i64 %sub.ptr.div, 1 - %mul = mul nsw i64 %call, %sub - %4 = load ptr, ptr %__x.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 0 - %5 = load ptr, ptr %_M_cur, align 8 - %6 = load ptr, ptr %__x.addr, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 1 - %7 = load ptr, ptr %_M_first, align 8 - %sub.ptr.lhs.cast2 = ptrtoint ptr %5 to i64 - %sub.ptr.rhs.cast3 = ptrtoint ptr %7 to i64 - %sub.ptr.sub4 = sub i64 %sub.ptr.lhs.cast2, %sub.ptr.rhs.cast3 - %sub.ptr.div5 = sdiv exact i64 %sub.ptr.sub4, 8 - %add = add nsw i64 %mul, %sub.ptr.div5 - %8 = load ptr, ptr %__y.addr, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %8, i32 0, i32 2 - %9 = load ptr, ptr %_M_last, align 8 - %10 = load ptr, ptr %__y.addr, align 8 - %_M_cur6 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %10, i32 0, i32 0 - %11 = load ptr, ptr %_M_cur6, align 8 - %sub.ptr.lhs.cast7 = ptrtoint ptr %9 to i64 - %sub.ptr.rhs.cast8 = ptrtoint ptr %11 to i64 - %sub.ptr.sub9 = sub i64 %sub.ptr.lhs.cast7, %sub.ptr.rhs.cast8 - %sub.ptr.div10 = sdiv exact i64 %sub.ptr.sub9, 8 - %add11 = add nsw i64 %add, %sub.ptr.div10 - ret i64 %add11 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt5dequeIP1ASaIS1_EE11_S_max_sizeERKS2_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %__a.addr = alloca ptr, align 8 - %__diffmax = alloca i64, align 8 - %__allocmax = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 9223372036854775807, ptr %__diffmax, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNSt16allocator_traitsISaIP1AEE8max_sizeERKS2_(ptr noundef nonnull align 1 dereferenceable(1) %0) #5 - store i64 %call, ptr %__allocmax, align 8 - %call1 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__diffmax, ptr noundef nonnull align 8 dereferenceable(8) %__allocmax) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %1 = load i64, ptr %call1, align 8 - ret i64 %1 - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #16 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt16allocator_traitsISaIP1AEE8max_sizeERKS2_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIP1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %0) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__b.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__a.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIP1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIP1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__nodes_to_add, i1 noundef zeroext %__add_at_front) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nodes_to_add.addr = alloca i64, align 8 - %__add_at_front.addr = alloca i8, align 1 - %__old_num_nodes = alloca i64, align 8 - %__new_num_nodes = alloca i64, align 8 - %__new_nstart = alloca ptr, align 8 - %__new_map_size = alloca i64, align 8 - %__new_map = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__nodes_to_add, ptr %__nodes_to_add.addr, align 8 - %frombool = zext i1 %__add_at_front to i8 - store i8 %frombool, ptr %__add_at_front.addr, align 1 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %0 = load ptr, ptr %_M_node, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node3, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %add = add nsw i64 %sub.ptr.div, 1 - store i64 %add, ptr %__old_num_nodes, align 8 - %2 = load i64, ptr %__old_num_nodes, align 8 - %3 = load i64, ptr %__nodes_to_add.addr, align 8 - %add4 = add i64 %2, %3 - store i64 %add4, ptr %__new_num_nodes, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - %5 = load i64, ptr %__new_num_nodes, align 8 - %mul = mul i64 2, %5 - %cmp = icmp ugt i64 %4, %mul - br i1 %cmp, label %if.then, label %if.else31 - -if.then: ; preds = %entry - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 0 - %6 = load ptr, ptr %_M_map, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %7 = load i64, ptr %_M_map_size8, align 8 - %8 = load i64, ptr %__new_num_nodes, align 8 - %sub = sub i64 %7, %8 - %div = udiv i64 %sub, 2 - %add.ptr = getelementptr inbounds ptr, ptr %6, i64 %div - %9 = load i8, ptr %__add_at_front.addr, align 1 - %tobool = trunc i8 %9 to i1 - br i1 %tobool, label %cond.true, label %cond.false - -cond.true: ; preds = %if.then - %10 = load i64, ptr %__nodes_to_add.addr, align 8 - br label %cond.end - -cond.false: ; preds = %if.then - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %10, %cond.true ], [ 0, %cond.false ] - %add.ptr9 = getelementptr inbounds ptr, ptr %add.ptr, i64 %cond - store ptr %add.ptr9, ptr %__new_nstart, align 8 - %11 = load ptr, ptr %__new_nstart, align 8 - %_M_impl10 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start11 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl10, i32 0, i32 2 - %_M_node12 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start11, i32 0, i32 3 - %12 = load ptr, ptr %_M_node12, align 8 - %cmp13 = icmp ult ptr %11, %12 - br i1 %cmp13, label %if.then14, label %if.else - -if.then14: ; preds = %cond.end - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 - %_M_node17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start16, i32 0, i32 3 - %13 = load ptr, ptr %_M_node17, align 8 - %_M_impl18 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish19 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 - %_M_node20 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish19, i32 0, i32 3 - %14 = load ptr, ptr %_M_node20, align 8 - %add.ptr21 = getelementptr inbounds ptr, ptr %14, i64 1 - %15 = load ptr, ptr %__new_nstart, align 8 - %call = call noundef ptr @_ZSt4copyIPPP1AS3_ET0_T_S5_S4_(ptr noundef %13, ptr noundef %add.ptr21, ptr noundef %15) - br label %if.end - -if.else: ; preds = %cond.end - %_M_impl22 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start23 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 - %_M_node24 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start23, i32 0, i32 3 - %16 = load ptr, ptr %_M_node24, align 8 - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish26 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 - %_M_node27 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish26, i32 0, i32 3 - %17 = load ptr, ptr %_M_node27, align 8 - %add.ptr28 = getelementptr inbounds ptr, ptr %17, i64 1 - %18 = load ptr, ptr %__new_nstart, align 8 - %19 = load i64, ptr %__old_num_nodes, align 8 - %add.ptr29 = getelementptr inbounds ptr, ptr %18, i64 %19 - %call30 = call noundef ptr @_ZSt13copy_backwardIPPP1AS3_ET0_T_S5_S4_(ptr noundef %16, ptr noundef %add.ptr28, ptr noundef %add.ptr29) - br label %if.end - -if.end: ; preds = %if.else, %if.then14 - br label %if.end65 - -if.else31: ; preds = %entry - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 1 - %20 = load i64, ptr %_M_map_size33, align 8 - %_M_impl34 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size35 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl34, i32 0, i32 1 - %call36 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %_M_map_size35, ptr noundef nonnull align 8 dereferenceable(8) %__nodes_to_add.addr) - %21 = load i64, ptr %call36, align 8 - %add37 = add i64 %20, %21 - %add38 = add i64 %add37, 2 - store i64 %add38, ptr %__new_map_size, align 8 - %22 = load i64, ptr %__new_map_size, align 8 - %call39 = call noundef ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %22) - store ptr %call39, ptr %__new_map, align 8 - %23 = load ptr, ptr %__new_map, align 8 - %24 = load i64, ptr %__new_map_size, align 8 - %25 = load i64, ptr %__new_num_nodes, align 8 - %sub40 = sub i64 %24, %25 - %div41 = udiv i64 %sub40, 2 - %add.ptr42 = getelementptr inbounds ptr, ptr %23, i64 %div41 - %26 = load i8, ptr %__add_at_front.addr, align 1 - %tobool43 = trunc i8 %26 to i1 - br i1 %tobool43, label %cond.true44, label %cond.false45 - -cond.true44: ; preds = %if.else31 - %27 = load i64, ptr %__nodes_to_add.addr, align 8 - br label %cond.end46 - -cond.false45: ; preds = %if.else31 - br label %cond.end46 - -cond.end46: ; preds = %cond.false45, %cond.true44 - %cond47 = phi i64 [ %27, %cond.true44 ], [ 0, %cond.false45 ] - %add.ptr48 = getelementptr inbounds ptr, ptr %add.ptr42, i64 %cond47 - store ptr %add.ptr48, ptr %__new_nstart, align 8 - %_M_impl49 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start50 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl49, i32 0, i32 2 - %_M_node51 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start50, i32 0, i32 3 - %28 = load ptr, ptr %_M_node51, align 8 - %_M_impl52 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish53 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 - %_M_node54 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish53, i32 0, i32 3 - %29 = load ptr, ptr %_M_node54, align 8 - %add.ptr55 = getelementptr inbounds ptr, ptr %29, i64 1 - %30 = load ptr, ptr %__new_nstart, align 8 - %call56 = call noundef ptr @_ZSt4copyIPPP1AS3_ET0_T_S5_S4_(ptr noundef %28, ptr noundef %add.ptr55, ptr noundef %30) - %_M_impl57 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map58 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl57, i32 0, i32 0 - %31 = load ptr, ptr %_M_map58, align 8 - %_M_impl59 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size60 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl59, i32 0, i32 1 - %32 = load i64, ptr %_M_map_size60, align 8 - call void @_ZNSt11_Deque_baseIP1ASaIS1_EE17_M_deallocate_mapEPPS1_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #5 - %33 = load ptr, ptr %__new_map, align 8 - %_M_impl61 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map62 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl61, i32 0, i32 0 - store ptr %33, ptr %_M_map62, align 8 - %34 = load i64, ptr %__new_map_size, align 8 - %_M_impl63 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size64 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl63, i32 0, i32 1 - store i64 %34, ptr %_M_map_size64, align 8 - br label %if.end65 - -if.end65: ; preds = %cond.end46, %if.end - %_M_impl66 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start67 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl66, i32 0, i32 2 - %35 = load ptr, ptr %__new_nstart, align 8 - call void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E11_M_set_nodeEPS3_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start67, ptr noundef %35) #5 - %_M_impl68 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish69 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl68, i32 0, i32 3 - %36 = load ptr, ptr %__new_nstart, align 8 - %37 = load i64, ptr %__old_num_nodes, align 8 - %add.ptr70 = getelementptr inbounds ptr, ptr %36, i64 %37 - %add.ptr71 = getelementptr inbounds ptr, ptr %add.ptr70, i64 -1 - call void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E11_M_set_nodeEPS3_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish69, ptr noundef %add.ptr71) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt4copyIPPP1AS3_ET0_T_S5_S4_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__miter_baseIPPP1AET_S4_(ptr noundef %0) - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__miter_baseIPPP1AET_S4_(ptr noundef %1) - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt13__copy_move_aILb0EPPP1AS3_ET1_T0_S5_S4_(ptr noundef %call, ptr noundef %call1, ptr noundef %2) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt13copy_backwardIPPP1AS3_ET0_T_S5_S4_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__miter_baseIPPP1AET_S4_(ptr noundef %0) - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__miter_baseIPPP1AET_S4_(ptr noundef %1) - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt22__copy_move_backward_aILb0EPPP1AS3_ET1_T0_S5_S4_(ptr noundef %call, ptr noundef %call1, ptr noundef %2) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt13__copy_move_aILb0EPPP1AS3_ET1_T0_S5_S4_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__niter_baseIPPP1AET_S4_(ptr noundef %0) #5 - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPPP1AET_S4_(ptr noundef %1) #5 - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPPP1AET_S4_(ptr noundef %2) #5 - %call3 = call noundef ptr @_ZSt14__copy_move_a1ILb0EPPP1AS3_ET1_T0_S5_S4_(ptr noundef %call, ptr noundef %call1, ptr noundef %call2) - %call4 = call noundef ptr @_ZSt12__niter_wrapIPPP1AET_RKS4_S4_(ptr noundef nonnull align 8 dereferenceable(8) %__result.addr, ptr noundef %call3) - ret ptr %call4 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__miter_baseIPPP1AET_S4_(ptr noundef %__it) #2 comdat { -entry: - %__it.addr = alloca ptr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %0 = load ptr, ptr %__it.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__niter_wrapIPPP1AET_RKS4_S4_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %__res) #2 comdat { -entry: - %.addr = alloca ptr, align 8 - %__res.addr = alloca ptr, align 8 - store ptr %0, ptr %.addr, align 8 - store ptr %__res, ptr %__res.addr, align 8 - %1 = load ptr, ptr %__res.addr, align 8 - ret ptr %1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt14__copy_move_a1ILb0EPPP1AS3_ET1_T0_S5_S4_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZSt14__copy_move_a2ILb0EPPP1AS3_ET1_T0_S5_S4_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__niter_baseIPPP1AET_S4_(ptr noundef %__it) #2 comdat { -entry: - %__it.addr = alloca ptr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %0 = load ptr, ptr %__it.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt14__copy_move_a2ILb0EPPP1AS3_ET1_T0_S5_S4_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPP1AEEPT_PKS6_S9_S7_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPP1AEEPT_PKS6_S9_S7_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #2 comdat align 2 { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %_Num = alloca i64, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__last.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - store i64 %sub.ptr.div, ptr %_Num, align 8 - %2 = load i64, ptr %_Num, align 8 - %tobool = icmp ne i64 %2, 0 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %3 = load ptr, ptr %__result.addr, align 8 - %4 = load ptr, ptr %__first.addr, align 8 - %5 = load i64, ptr %_Num, align 8 - %mul = mul i64 8, %5 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %3, ptr align 8 %4, i64 %mul, i1 false) - br label %if.end - -if.end: ; preds = %if.then, %entry - %6 = load ptr, ptr %__result.addr, align 8 - %7 = load i64, ptr %_Num, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %6, i64 %7 - ret ptr %add.ptr -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #14 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt22__copy_move_backward_aILb0EPPP1AS3_ET1_T0_S5_S4_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__niter_baseIPPP1AET_S4_(ptr noundef %0) #5 - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPPP1AET_S4_(ptr noundef %1) #5 - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPPP1AET_S4_(ptr noundef %2) #5 - %call3 = call noundef ptr @_ZSt23__copy_move_backward_a1ILb0EPPP1AS3_ET1_T0_S5_S4_(ptr noundef %call, ptr noundef %call1, ptr noundef %call2) - %call4 = call noundef ptr @_ZSt12__niter_wrapIPPP1AET_RKS4_S4_(ptr noundef nonnull align 8 dereferenceable(8) %__result.addr, ptr noundef %call3) - ret ptr %call4 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt23__copy_move_backward_a1ILb0EPPP1AS3_ET1_T0_S5_S4_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZSt23__copy_move_backward_a2ILb0EPPP1AS3_ET1_T0_S5_S4_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt23__copy_move_backward_a2ILb0EPPP1AS3_ET1_T0_S5_S4_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPP1AEEPT_PKS6_S9_S7_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPP1AEEPT_PKS6_S9_S7_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #2 comdat align 2 { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %_Num = alloca i64, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__last.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - store i64 %sub.ptr.div, ptr %_Num, align 8 - %2 = load i64, ptr %_Num, align 8 - %tobool = icmp ne i64 %2, 0 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %3 = load ptr, ptr %__result.addr, align 8 - %4 = load i64, ptr %_Num, align 8 - %idx.neg = sub i64 0, %4 - %add.ptr = getelementptr inbounds ptr, ptr %3, i64 %idx.neg - %5 = load ptr, ptr %__first.addr, align 8 - %6 = load i64, ptr %_Num, align 8 - %mul = mul i64 8, %6 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr, ptr align 8 %5, i64 %mul, i1 false) - br label %if.end - -if.end: ; preds = %if.then, %entry - %7 = load ptr, ptr %__result.addr, align 8 - %8 = load i64, ptr %_Num, align 8 - %idx.neg1 = sub i64 0, %8 - %add.ptr2 = getelementptr inbounds ptr, ptr %7, i64 %idx.neg1 - ret ptr %add.ptr2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIP1ASaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %ref.tmp = alloca %"struct.std::_Deque_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeIP1ASaIS1_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %ref.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIP1ARS1_PS1_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIP1ARS1_PS1_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EE9pop_frontEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 2 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start3, i32 0, i32 2 - %1 = load ptr, ptr %_M_last, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %1, i64 -1 - %cmp = icmp ne ptr %0, %add.ptr - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start5 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 2 - %_M_cur6 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start5, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur6, align 8 - call void @_ZNSt16allocator_traitsISaIP1AEE7destroyIS1_EEvRS2_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %2) #5 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 2 - %_M_cur9 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start8, i32 0, i32 0 - %3 = load ptr, ptr %_M_cur9, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %3, i32 1 - store ptr %incdec.ptr, ptr %_M_cur9, align 8 - br label %if.end - -if.else: ; preds = %entry - invoke void @_ZNSt5dequeIP1ASaIS1_EE16_M_pop_front_auxEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %if.else - br label %if.end - -if.end: ; preds = %invoke.cont, %if.then - ret void - -terminate.lpad: ; preds = %if.else - %4 = landingpad { ptr, i32 } - catch ptr null - %5 = extractvalue { ptr, i32 } %4, 0 - call void @__clang_call_terminate(ptr %5) #16 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIP1AEE7destroyIS1_EEvRS2_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AE7destroyIS2_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIP1ASaIS1_EE16_M_pop_front_auxEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 2 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - call void @_ZNSt16allocator_traitsISaIP1AEE7destroyIS1_EEvRS2_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %0) #5 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start3, i32 0, i32 1 - %1 = load ptr, ptr %_M_first, align 8 - call void @_ZNSt11_Deque_baseIP1ASaIS1_EE18_M_deallocate_nodeEPS1_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %1) #5 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start5 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 2 - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start7 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 2 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start7, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %2, i64 1 - call void @_ZNSt15_Deque_iteratorIP1ARS1_PS1_E11_M_set_nodeEPS3_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start5, ptr noundef %add.ptr) #5 - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start9 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 2 - %_M_first10 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start9, i32 0, i32 1 - %3 = load ptr, ptr %_M_first10, align 8 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 2 - %_M_cur13 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start12, i32 0, i32 0 - store ptr %3, ptr %_M_cur13, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AE7destroyIS2_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_queue_2.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noinline uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #13 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #14 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #15 = { builtin allocsize(0) } -attributes #16 = { noreturn nounwind } -attributes #17 = { noreturn } -attributes #18 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} diff --git a/test_cases_bc/basic_cpp_tests/set-1.cpp.bc b/test_cases_bc/basic_cpp_tests/set-1.cpp.bc deleted file mode 100644 index cbb14e9a..00000000 --- a/test_cases_bc/basic_cpp_tests/set-1.cpp.bc +++ /dev/null @@ -1,1678 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/set-1.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/set-1.cpp" -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-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%"class.std::set" = type { %"class.std::_Rb_tree" } -%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree, std::less>::_Rb_tree_impl" } -%"struct.std::_Rb_tree, std::less>::_Rb_tree_impl" = type { %"struct.std::_Rb_tree_key_compare", %"struct.std::_Rb_tree_header" } -%"struct.std::_Rb_tree_key_compare" = type { %"struct.std::less" } -%"struct.std::less" = type { i8 } -%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 } -%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr } -%class.A = type <{ ptr, i32, [4 x i8] }> -%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_const_iterator", i8, [7 x i8] }> -%"struct.std::_Rb_tree_const_iterator" = type { ptr } -%"struct.std::pair.0" = type <{ %"struct.std::_Rb_tree_iterator", i8, [7 x i8] }> -%"struct.std::_Rb_tree_iterator" = type { ptr } -%"struct.std::_Rb_tree_node" = type { %"struct.std::_Rb_tree_node_base", %"struct.__gnu_cxx::__aligned_membuf" } -%"struct.__gnu_cxx::__aligned_membuf" = type { [16 x i8] } -%"struct.std::pair.3" = type { ptr, ptr } -%"struct.std::_Identity" = type { i8 } -%"struct.std::_Rb_tree, std::less>::_Alloc_node" = type { ptr } - -$_ZNSt3setI1ASt4lessIS0_ESaIS0_EEC2Ev = comdat any - -$_ZN1AC2Ei = comdat any - -$_ZNSt3setI1ASt4lessIS0_ESaIS0_EE6insertERKS0_ = comdat any - -$_ZNKSt3setI1ASt4lessIS0_ESaIS0_EE5beginEv = comdat any - -$_ZNKSt23_Rb_tree_const_iteratorI1AEdeEv = comdat any - -$_ZNSt3setI1ASt4lessIS0_ESaIS0_EED2Ev = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EEC2Ev = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE13_Rb_tree_implIS4_Lb1EEC2Ev = comdat any - -$_ZNSaISt13_Rb_tree_nodeI1AEEC2Ev = comdat any - -$_ZNSt20_Rb_tree_key_compareISt4lessI1AEEC2Ev = comdat any - -$_ZNSt15_Rb_tree_headerC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEEC2Ev = comdat any - -$_ZNSt15_Rb_tree_header8_M_resetEv = comdat any - -$__clang_call_terminate = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EED2Ev = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_M_eraseEPSt13_Rb_tree_nodeIS0_E = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_M_beginEv = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE13_Rb_tree_implIS4_Lb1EED2Ev = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_S_rightEPSt18_Rb_tree_node_base = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE7_S_leftEPSt18_Rb_tree_node_base = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS0_E = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeIS0_E = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_M_put_nodeEPSt13_Rb_tree_nodeIS0_E = comdat any - -$_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeI1AEEE7destroyIS1_EEvRS3_PT_ = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE21_M_get_Node_allocatorEv = comdat any - -$_ZNSt13_Rb_tree_nodeI1AE9_M_valptrEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEE7destroyIS2_EEvPT_ = comdat any - -$_ZN9__gnu_cxx16__aligned_membufI1AE6_M_ptrEv = comdat any - -$_ZN9__gnu_cxx16__aligned_membufI1AE7_M_addrEv = comdat any - -$_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeI1AEEE10deallocateERS3_PS2_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEE10deallocateEPS3_m = comdat any - -$_ZNSaISt13_Rb_tree_nodeI1AEED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEED2Ev = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE16_M_insert_uniqueIRKS0_EESt4pairISt17_Rb_tree_iteratorIS0_EbEOT_ = comdat any - -$_ZNSt4pairISt23_Rb_tree_const_iteratorI1AEbEC2IRSt17_Rb_tree_iteratorIS1_ERbLb1EEEOT_OT0_ = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE24_M_get_insert_unique_posERKS0_ = comdat any - -$_ZNKSt9_IdentityI1AEclERKS0_ = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_Alloc_nodeC2ERS6_ = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE10_M_insert_IRKS0_NS6_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS0_EPSt18_Rb_tree_node_baseSE_OT_RT0_ = comdat any - -$_ZNSt4pairISt17_Rb_tree_iteratorI1AEbEC2IS2_bLb1EEEOT_OT0_ = comdat any - -$_ZNSt17_Rb_tree_iteratorI1AEC2EPSt18_Rb_tree_node_base = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_M_endEv = comdat any - -$_ZNKSt4lessI1AEclERKS0_S3_ = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_S_keyEPKSt13_Rb_tree_nodeIS0_E = comdat any - -$_ZSteqRKSt17_Rb_tree_iteratorI1AES3_ = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE5beginEv = comdat any - -$_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeI1AERS1_Lb1EEEOT_OT0_ = comdat any - -$_ZNSt17_Rb_tree_iteratorI1AEmmEv = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_S_keyEPKSt18_Rb_tree_node_base = comdat any - -$_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_Lb1EEEOT_RKS1_ = comdat any - -$_ZNK1AltERKS_ = comdat any - -$_ZNK1A7getDataEv = comdat any - -$_ZNKSt13_Rb_tree_nodeI1AE9_M_valptrEv = comdat any - -$_ZNK9__gnu_cxx16__aligned_membufI1AE6_M_ptrEv = comdat any - -$_ZNK9__gnu_cxx16__aligned_membufI1AE7_M_addrEv = comdat any - -$_ZNKSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_Alloc_nodeclIRKS0_EEPSt13_Rb_tree_nodeIS0_EOT_ = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE14_M_create_nodeIJRKS0_EEEPSt13_Rb_tree_nodeIS0_EDpOT_ = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_M_get_nodeEv = comdat any - -$_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE17_M_construct_nodeIJRKS0_EEEvPSt13_Rb_tree_nodeIS0_EDpOT_ = comdat any - -$_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeI1AEEE8allocateERS3_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEE11_M_max_sizeEv = comdat any - -$_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeI1AEEE9constructIS1_JRKS1_EEEvRS3_PT_DpOT0_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEE9constructIS2_JRKS2_EEEvPT_DpOT0_ = comdat any - -$_ZN1AC2ERKS_ = comdat any - -$_ZNSt23_Rb_tree_const_iteratorI1AEC2ERKSt17_Rb_tree_iteratorIS0_E = comdat any - -$_ZNKSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE5beginEv = comdat any - -$_ZNSt23_Rb_tree_const_iteratorI1AEC2EPKSt18_Rb_tree_node_base = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 -@__dso_handle = external hidden global i8 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_set_1.cpp, ptr null }] - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init() #3 section ".text.startup" { -entry: - call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = call i32 @__cxa_atexit(ptr @_ZNSt8ios_base4InitD1Ev, ptr @_ZStL8__ioinit, ptr @__dso_handle) #5 - ret void -} - -declare void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 - -; Function Attrs: nounwind -declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 - -; Function Attrs: nounwind -declare i32 @__cxa_atexit(ptr, ptr, ptr) #5 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #6 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %aset = alloca %"class.std::set", align 8 - %a = alloca %class.A, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %coerce = alloca %"struct.std::pair", align 8 - %it = alloca %"struct.std::_Rb_tree_const_iterator", align 8 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt3setI1ASt4lessIS0_ESaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %aset) #5 - invoke void @_ZN1AC2Ei(ptr noundef nonnull align 8 dereferenceable(12) %a, i32 noundef 0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %call = invoke { ptr, i8 } @_ZNSt3setI1ASt4lessIS0_ESaIS0_EE6insertERKS0_(ptr noundef nonnull align 8 dereferenceable(48) %aset, ptr noundef nonnull align 8 dereferenceable(12) %a) - to label %invoke.cont1 unwind label %lpad - -invoke.cont1: ; preds = %invoke.cont - %0 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 0 - %1 = extractvalue { ptr, i8 } %call, 0 - store ptr %1, ptr %0, align 8 - %2 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 1 - %3 = extractvalue { ptr, i8 } %call, 1 - store i8 %3, ptr %2, align 8 - %call2 = call ptr @_ZNKSt3setI1ASt4lessIS0_ESaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %aset) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %it, i32 0, i32 0 - store ptr %call2, ptr %coerce.dive, align 8 - %call3 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNKSt23_Rb_tree_const_iteratorI1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 - store ptr %call3, ptr %aptr, align 8 - %4 = load ptr, ptr %aptr, align 8 - %5 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %4, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %6 = load ptr, ptr %vfn, align 8 - invoke void %6(ptr noundef nonnull align 8 dereferenceable(12) %4, ptr noundef %5) - to label %invoke.cont4 unwind label %lpad - -invoke.cont4: ; preds = %invoke.cont1 - store i32 0, ptr %retval, align 4 - call void @_ZNSt3setI1ASt4lessIS0_ESaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %aset) #5 - %7 = load i32, ptr %retval, align 4 - ret i32 %7 - -lpad: ; preds = %invoke.cont1, %invoke.cont, %entry - %8 = landingpad { ptr, i32 } - cleanup - %9 = extractvalue { ptr, i32 } %8, 0 - store ptr %9, ptr %exn.slot, align 8 - %10 = extractvalue { ptr, i32 } %8, 1 - store i32 %10, ptr %ehselector.slot, align 4 - call void @_ZNSt3setI1ASt4lessIS0_ESaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %aset) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val5 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val5 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt3setI1ASt4lessIS0_ESaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::set", ptr %this1, i32 0, i32 0 - call void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ei(ptr noundef nonnull align 8 dereferenceable(12) %this, i32 noundef %i) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i32 %i, ptr %i.addr, align 4 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - %data = getelementptr inbounds %class.A, ptr %this1, i32 0, i32 1 - %0 = load i32, ptr %i.addr, align 4 - store i32 %0, ptr %data, align 8 - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, i8 } @_ZNSt3setI1ASt4lessIS0_ESaIS0_EE6insertERKS0_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(12) %__x) #0 comdat align 2 { -entry: - %retval = alloca %"struct.std::pair", align 8 - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__p = alloca %"struct.std::pair.0", align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::set", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call { ptr, i8 } @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE16_M_insert_uniqueIRKS0_EESt4pairISt17_Rb_tree_iteratorIS0_EbEOT_(ptr noundef nonnull align 8 dereferenceable(48) %_M_t, ptr noundef nonnull align 8 dereferenceable(12) %0) - %1 = getelementptr inbounds { ptr, i8 }, ptr %__p, i32 0, i32 0 - %2 = extractvalue { ptr, i8 } %call, 0 - store ptr %2, ptr %1, align 8 - %3 = getelementptr inbounds { ptr, i8 }, ptr %__p, i32 0, i32 1 - %4 = extractvalue { ptr, i8 } %call, 1 - store i8 %4, ptr %3, align 8 - %first = getelementptr inbounds %"struct.std::pair.0", ptr %__p, i32 0, i32 0 - %second = getelementptr inbounds %"struct.std::pair.0", ptr %__p, i32 0, i32 1 - call void @_ZNSt4pairISt23_Rb_tree_const_iteratorI1AEbEC2IRSt17_Rb_tree_iteratorIS1_ERbLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %first, ptr noundef nonnull align 1 dereferenceable(1) %second) - %5 = load { ptr, i8 }, ptr %retval, align 8 - ret { ptr, i8 } %5 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNKSt3setI1ASt4lessIS0_ESaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::_Rb_tree_const_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::set", ptr %this1, i32 0, i32 0 - %call = call ptr @_ZNKSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %retval, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %coerce.dive2 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive2, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNKSt23_Rb_tree_const_iteratorI1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %0) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt3setI1ASt4lessIS0_ESaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::set", ptr %this1, i32 0, i32 0 - call void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - call void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE13_Rb_tree_implIS4_Lb1EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_impl) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE13_Rb_tree_implIS4_Lb1EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaISt13_Rb_tree_nodeI1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt20_Rb_tree_key_compareISt4lessI1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %0 = getelementptr inbounds i8, ptr %this1, i64 8 - call void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %0) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt13_Rb_tree_nodeI1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt20_Rb_tree_key_compareISt4lessI1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_key_compare = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", ptr %this1, i32 0, i32 0 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_header2 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_color = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header2, i32 0, i32 0 - store i32 0, ptr %_M_color, align 8 - invoke void @_ZNSt15_Rb_tree_header8_M_resetEv(ptr noundef nonnull align 8 dereferenceable(40) %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #14 - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Rb_tree_header8_M_resetEv(ptr noundef nonnull align 8 dereferenceable(40) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_parent = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 1 - store ptr null, ptr %_M_parent, align 8 - %_M_header2 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_header3 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header3, i32 0, i32 2 - store ptr %_M_header2, ptr %_M_left, align 8 - %_M_header4 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_header5 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_right = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header5, i32 0, i32 3 - store ptr %_M_header4, ptr %_M_right, align 8 - %_M_node_count = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_node_count, align 8 - ret void -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #8 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #5 - call void @_ZSt9terminatev() #14 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(12) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - invoke void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_M_eraseEPSt13_Rb_tree_nodeIS0_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - call void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE13_Rb_tree_implIS4_Lb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_impl) #5 - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #14 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_M_eraseEPSt13_Rb_tree_nodeIS0_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - br label %while.cond - -while.cond: ; preds = %while.body, %entry - %0 = load ptr, ptr %__x.addr, align 8 - %cmp = icmp ne ptr %0, null - br i1 %cmp, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %1 = load ptr, ptr %__x.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %1) #5 - call void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_M_eraseEPSt13_Rb_tree_nodeIS0_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %call) - %2 = load ptr, ptr %__x.addr, align 8 - %call2 = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE7_S_leftEPSt18_Rb_tree_node_base(ptr noundef %2) #5 - store ptr %call2, ptr %__y, align 8 - %3 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS0_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %3) #5 - %4 = load ptr, ptr %__y, align 8 - store ptr %4, ptr %__x.addr, align 8 - br label %while.cond, !llvm.loop !6 - -while.end: ; preds = %while.cond - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - %_M_parent = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 1 - %0 = load ptr, ptr %_M_parent, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE13_Rb_tree_implIS4_Lb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaISt13_Rb_tree_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %__x) #2 comdat align 2 { -entry: - %__x.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_right = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 3 - %1 = load ptr, ptr %_M_right, align 8 - ret ptr %1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE7_S_leftEPSt18_Rb_tree_node_base(ptr noundef %__x) #2 comdat align 2 { -entry: - %__x.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 2 - %1 = load ptr, ptr %_M_left, align 8 - ret ptr %1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS0_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeIS0_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %0) #5 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_M_put_nodeEPSt13_Rb_tree_nodeIS0_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeIS0_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__p) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %0 = load ptr, ptr %__p.addr, align 8 - %call2 = invoke noundef ptr @_ZNSt13_Rb_tree_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %0) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeI1AEEE7destroyIS1_EEvRS3_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %call2) #5 - %1 = load ptr, ptr %__p.addr, align 8 - ret void - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #14 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_M_put_nodeEPSt13_Rb_tree_nodeIS0_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__p) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %0 = load ptr, ptr %__p.addr, align 8 - invoke void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeI1AEEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %0, i64 noundef 1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - ret void - -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #14 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeI1AEEE7destroyIS1_EEvRS3_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEE7destroyIS2_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt13_Rb_tree_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_Rb_tree_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufI1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %_M_storage) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEE7destroyIS2_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufI1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufI1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufI1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeI1AEEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #9 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt13_Rb_tree_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, i8 } @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE16_M_insert_uniqueIRKS0_EESt4pairISt17_Rb_tree_iteratorIS0_EbEOT_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(12) %__v) #0 comdat align 2 { -entry: - %retval = alloca %"struct.std::pair.0", align 8 - %this.addr = alloca ptr, align 8 - %__v.addr = alloca ptr, align 8 - %__res = alloca %"struct.std::pair.3", align 8 - %ref.tmp = alloca %"struct.std::_Identity", align 1 - %__an = alloca %"struct.std::_Rb_tree, std::less>::_Alloc_node", align 8 - %ref.tmp3 = alloca %"struct.std::_Rb_tree_iterator", align 8 - %ref.tmp6 = alloca i8, align 1 - %ref.tmp7 = alloca %"struct.std::_Rb_tree_iterator", align 8 - %ref.tmp9 = alloca i8, align 1 - store ptr %this, ptr %this.addr, align 8 - store ptr %__v, ptr %__v.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__v.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNKSt9_IdentityI1AEclERKS0_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(12) %0) - %call2 = call { ptr, ptr } @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE24_M_get_insert_unique_posERKS0_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef nonnull align 8 dereferenceable(12) %call) - %1 = getelementptr inbounds { ptr, ptr }, ptr %__res, i32 0, i32 0 - %2 = extractvalue { ptr, ptr } %call2, 0 - store ptr %2, ptr %1, align 8 - %3 = getelementptr inbounds { ptr, ptr }, ptr %__res, i32 0, i32 1 - %4 = extractvalue { ptr, ptr } %call2, 1 - store ptr %4, ptr %3, align 8 - %second = getelementptr inbounds %"struct.std::pair.3", ptr %__res, i32 0, i32 1 - %5 = load ptr, ptr %second, align 8 - %tobool = icmp ne ptr %5, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_Alloc_nodeC2ERS6_(ptr noundef nonnull align 8 dereferenceable(8) %__an, ptr noundef nonnull align 8 dereferenceable(48) %this1) - %first = getelementptr inbounds %"struct.std::pair.3", ptr %__res, i32 0, i32 0 - %6 = load ptr, ptr %first, align 8 - %second4 = getelementptr inbounds %"struct.std::pair.3", ptr %__res, i32 0, i32 1 - %7 = load ptr, ptr %second4, align 8 - %8 = load ptr, ptr %__v.addr, align 8 - %call5 = call ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE10_M_insert_IRKS0_NS6_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS0_EPSt18_Rb_tree_node_baseSE_OT_RT0_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %6, ptr noundef %7, ptr noundef nonnull align 8 dereferenceable(12) %8, ptr noundef nonnull align 8 dereferenceable(8) %__an) - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %ref.tmp3, i32 0, i32 0 - store ptr %call5, ptr %coerce.dive, align 8 - store i8 1, ptr %ref.tmp6, align 1 - call void @_ZNSt4pairISt17_Rb_tree_iteratorI1AEbEC2IS2_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp3, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp6) - br label %return - -if.end: ; preds = %entry - %first8 = getelementptr inbounds %"struct.std::pair.3", ptr %__res, i32 0, i32 0 - %9 = load ptr, ptr %first8, align 8 - call void @_ZNSt17_Rb_tree_iteratorI1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp7, ptr noundef %9) #5 - store i8 0, ptr %ref.tmp9, align 1 - call void @_ZNSt4pairISt17_Rb_tree_iteratorI1AEbEC2IS2_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp7, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp9) - br label %return - -return: ; preds = %if.end, %if.then - %10 = load { ptr, i8 }, ptr %retval, align 8 - ret { ptr, i8 } %10 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairISt23_Rb_tree_const_iteratorI1AEbEC2IRSt17_Rb_tree_iteratorIS1_ERbLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 1 dereferenceable(1) %__y) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt23_Rb_tree_const_iteratorI1AEC2ERKSt17_Rb_tree_iteratorIS0_E(ptr noundef nonnull align 8 dereferenceable(8) %first, ptr noundef nonnull align 8 dereferenceable(8) %0) #5 - %second = getelementptr inbounds %"struct.std::pair", ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %__y.addr, align 8 - %2 = load i8, ptr %1, align 1 - %tobool = trunc i8 %2 to i1 - %frombool = zext i1 %tobool to i8 - store i8 %frombool, ptr %second, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, ptr } @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE24_M_get_insert_unique_posERKS0_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(12) %__k) #0 comdat align 2 { -entry: - %retval = alloca %"struct.std::pair.3", align 8 - %this.addr = alloca ptr, align 8 - %__k.addr = alloca ptr, align 8 - %__x = alloca ptr, align 8 - %__y = alloca ptr, align 8 - %__comp = alloca i8, align 1 - %__j = alloca %"struct.std::_Rb_tree_iterator", align 8 - %ref.tmp = alloca %"struct.std::_Rb_tree_iterator", align 8 - %ref.tmp20 = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - store ptr %call, ptr %__x, align 8 - %call2 = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - store ptr %call2, ptr %__y, align 8 - store i8 1, ptr %__comp, align 1 - br label %while.cond - -while.cond: ; preds = %cond.end, %entry - %0 = load ptr, ptr %__x, align 8 - %cmp = icmp ne ptr %0, null - br i1 %cmp, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %1 = load ptr, ptr %__x, align 8 - store ptr %1, ptr %__y, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %_M_key_compare = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", ptr %_M_impl, i32 0, i32 0 - %2 = load ptr, ptr %__k.addr, align 8 - %3 = load ptr, ptr %__x, align 8 - %call3 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_S_keyEPKSt13_Rb_tree_nodeIS0_E(ptr noundef %3) - %call4 = call noundef zeroext i1 @_ZNKSt4lessI1AEclERKS0_S3_(ptr noundef nonnull align 1 dereferenceable(1) %_M_key_compare, ptr noundef nonnull align 8 dereferenceable(12) %2, ptr noundef nonnull align 8 dereferenceable(12) %call3) - %frombool = zext i1 %call4 to i8 - store i8 %frombool, ptr %__comp, align 1 - %4 = load i8, ptr %__comp, align 1 - %tobool = trunc i8 %4 to i1 - br i1 %tobool, label %cond.true, label %cond.false - -cond.true: ; preds = %while.body - %5 = load ptr, ptr %__x, align 8 - %call5 = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE7_S_leftEPSt18_Rb_tree_node_base(ptr noundef %5) #5 - br label %cond.end - -cond.false: ; preds = %while.body - %6 = load ptr, ptr %__x, align 8 - %call6 = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %6) #5 - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi ptr [ %call5, %cond.true ], [ %call6, %cond.false ] - store ptr %cond, ptr %__x, align 8 - br label %while.cond, !llvm.loop !8 - -while.end: ; preds = %while.cond - %7 = load ptr, ptr %__y, align 8 - call void @_ZNSt17_Rb_tree_iteratorI1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %__j, ptr noundef %7) #5 - %8 = load i8, ptr %__comp, align 1 - %tobool7 = trunc i8 %8 to i1 - br i1 %tobool7, label %if.then, label %if.end12 - -if.then: ; preds = %while.end - %call8 = call ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %ref.tmp, i32 0, i32 0 - store ptr %call8, ptr %coerce.dive, align 8 - %call9 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorI1AES3_(ptr noundef nonnull align 8 dereferenceable(8) %__j, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #5 - br i1 %call9, label %if.then10, label %if.else - -if.then10: ; preds = %if.then - call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeI1AERS1_Lb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) - br label %return - -if.else: ; preds = %if.then - %call11 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorI1AEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %__j) #5 - br label %if.end - -if.end: ; preds = %if.else - br label %if.end12 - -if.end12: ; preds = %if.end, %while.end - %_M_impl13 = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %_M_key_compare14 = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", ptr %_M_impl13, i32 0, i32 0 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %__j, i32 0, i32 0 - %9 = load ptr, ptr %_M_node, align 8 - %call15 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %9) - %10 = load ptr, ptr %__k.addr, align 8 - %call16 = call noundef zeroext i1 @_ZNKSt4lessI1AEclERKS0_S3_(ptr noundef nonnull align 1 dereferenceable(1) %_M_key_compare14, ptr noundef nonnull align 8 dereferenceable(12) %call15, ptr noundef nonnull align 8 dereferenceable(12) %10) - br i1 %call16, label %if.then17, label %if.end18 - -if.then17: ; preds = %if.end12 - call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeI1AERS1_Lb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) - br label %return - -if.end18: ; preds = %if.end12 - %_M_node19 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %__j, i32 0, i32 0 - store ptr null, ptr %ref.tmp20, align 8 - call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_Lb1EEEOT_RKS1_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_node19, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp20) - br label %return - -return: ; preds = %if.end18, %if.then17, %if.then10 - %11 = load { ptr, ptr }, ptr %retval, align 8 - ret { ptr, ptr } %11 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNKSt9_IdentityI1AEclERKS0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(12) %__x) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_Alloc_nodeC2ERS6_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(48) %__t) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__t.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"struct.std::_Rb_tree, std::less>::_Alloc_node", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__t.addr, align 8 - store ptr %0, ptr %_M_t, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE10_M_insert_IRKS0_NS6_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS0_EPSt18_Rb_tree_node_baseSE_OT_RT0_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__x, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(12) %__v, ptr noundef nonnull align 8 dereferenceable(8) %__node_gen) #0 comdat align 2 { -entry: - %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__v.addr = alloca ptr, align 8 - %__node_gen.addr = alloca ptr, align 8 - %__insert_left = alloca i8, align 1 - %ref.tmp = alloca %"struct.std::_Identity", align 1 - %__z = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__v, ptr %__v.addr, align 8 - store ptr %__node_gen, ptr %__node_gen.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %cmp = icmp ne ptr %0, null - br i1 %cmp, label %lor.end, label %lor.lhs.false - -lor.lhs.false: ; preds = %entry - %1 = load ptr, ptr %__p.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %cmp2 = icmp eq ptr %1, %call - br i1 %cmp2, label %lor.end, label %lor.rhs - -lor.rhs: ; preds = %lor.lhs.false - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %_M_key_compare = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", ptr %_M_impl, i32 0, i32 0 - %2 = load ptr, ptr %__v.addr, align 8 - %call3 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNKSt9_IdentityI1AEclERKS0_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(12) %2) - %3 = load ptr, ptr %__p.addr, align 8 - %call4 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %3) - %call5 = call noundef zeroext i1 @_ZNKSt4lessI1AEclERKS0_S3_(ptr noundef nonnull align 1 dereferenceable(1) %_M_key_compare, ptr noundef nonnull align 8 dereferenceable(12) %call3, ptr noundef nonnull align 8 dereferenceable(12) %call4) - br label %lor.end - -lor.end: ; preds = %lor.rhs, %lor.lhs.false, %entry - %4 = phi i1 [ true, %lor.lhs.false ], [ true, %entry ], [ %call5, %lor.rhs ] - %frombool = zext i1 %4 to i8 - store i8 %frombool, ptr %__insert_left, align 1 - %5 = load ptr, ptr %__node_gen.addr, align 8 - %6 = load ptr, ptr %__v.addr, align 8 - %call6 = call noundef ptr @_ZNKSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_Alloc_nodeclIRKS0_EEPSt13_Rb_tree_nodeIS0_EOT_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(12) %6) - store ptr %call6, ptr %__z, align 8 - %7 = load i8, ptr %__insert_left, align 1 - %tobool = trunc i8 %7 to i1 - %8 = load ptr, ptr %__z, align 8 - %9 = load ptr, ptr %__p.addr, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl7, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %tobool, ptr noundef %8, ptr noundef %9, ptr noundef nonnull align 8 dereferenceable(32) %_M_header) #5 - %_M_impl8 = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr9 = getelementptr inbounds i8, ptr %_M_impl8, i64 8 - %_M_node_count = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr9, i32 0, i32 1 - %10 = load i64, ptr %_M_node_count, align 8 - %inc = add i64 %10, 1 - store i64 %inc, ptr %_M_node_count, align 8 - %11 = load ptr, ptr %__z, align 8 - call void @_ZNSt17_Rb_tree_iteratorI1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %11) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - %12 = load ptr, ptr %coerce.dive, align 8 - ret ptr %12 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairISt17_Rb_tree_iteratorI1AEbEC2IS2_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 1 dereferenceable(1) %__y) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair.0", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %first, ptr align 8 %0, i64 8, i1 false) - %second = getelementptr inbounds %"struct.std::pair.0", ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %__y.addr, align 8 - %2 = load i8, ptr %1, align 1 - %tobool = trunc i8 %2 to i1 - %frombool = zext i1 %tobool to i8 - store i8 %frombool, ptr %second, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt17_Rb_tree_iteratorI1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__x) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - store ptr %0, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - ret ptr %_M_header -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt4lessI1AEclERKS0_S3_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(12) %__x, ptr noundef nonnull align 8 dereferenceable(12) %__y) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %1 = load ptr, ptr %__y.addr, align 8 - %call = call noundef zeroext i1 @_ZNK1AltERKS_(ptr noundef nonnull align 8 dereferenceable(12) %0, ptr noundef nonnull align 8 dereferenceable(12) %1) - ret i1 %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_S_keyEPKSt13_Rb_tree_nodeIS0_E(ptr noundef %__x) #0 comdat align 2 { -entry: - %__x.addr = alloca ptr, align 8 - %ref.tmp = alloca %"struct.std::_Identity", align 1 - store ptr %__x, ptr %__x.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %0) - %call1 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNKSt9_IdentityI1AEclERKS0_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(12) %call) - ret ptr %call1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorI1AES3_(ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) #2 comdat { -entry: - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_node, align 8 - %2 = load ptr, ptr %__y.addr, align 8 - %_M_node1 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %2, i32 0, i32 0 - %3 = load ptr, ptr %_M_node1, align 8 - %cmp = icmp eq ptr %1, %3 - ret i1 %cmp -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 2 - %0 = load ptr, ptr %_M_left, align 8 - call void @_ZNSt17_Rb_tree_iteratorI1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive, align 8 - ret ptr %1 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeI1AERS1_Lb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair.3", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %first, align 8 - %second = getelementptr inbounds %"struct.std::pair.3", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %__y.addr, align 8 - %3 = load ptr, ptr %2, align 8 - store ptr %3, ptr %second, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorI1AEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef %0) #15 - %_M_node2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 - store ptr %call, ptr %_M_node2, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %__x) #0 comdat align 2 { -entry: - %__x.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE6_S_keyEPKSt13_Rb_tree_nodeIS0_E(ptr noundef %0) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_Lb1EEEOT_RKS1_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair.3", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %first, align 8 - %second = getelementptr inbounds %"struct.std::pair.3", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %__y.addr, align 8 - %3 = load ptr, ptr %2, align 8 - store ptr %3, ptr %second, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNK1AltERKS_(ptr noundef nonnull align 8 dereferenceable(12) %this, ptr noundef nonnull align 8 dereferenceable(12) %a) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %a.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %a, ptr %a.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %data = getelementptr inbounds %class.A, ptr %this1, i32 0, i32 1 - %0 = load i32, ptr %data, align 8 - %1 = load ptr, ptr %a.addr, align 8 - %call = call noundef i32 @_ZNK1A7getDataEv(ptr noundef nonnull align 8 dereferenceable(12) %1) - %cmp = icmp slt i32 %0, %call - ret i1 %cmp -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i32 @_ZNK1A7getDataEv(ptr noundef nonnull align 8 dereferenceable(12) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %data = getelementptr inbounds %class.A, ptr %this1, i32 0, i32 1 - %0 = load i32, ptr %data, align 8 - ret i32 %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt13_Rb_tree_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_Rb_tree_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufI1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %_M_storage) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufI1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufI1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufI1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -; Function Attrs: nounwind willreturn memory(read) -declare noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef) #10 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_Alloc_nodeclIRKS0_EEPSt13_Rb_tree_nodeIS0_EOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(12) %__arg) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__arg.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__arg, ptr %__arg.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"struct.std::_Rb_tree, std::less>::_Alloc_node", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_t, align 8 - %1 = load ptr, ptr %__arg.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE14_M_create_nodeIJRKS0_EEEPSt13_Rb_tree_nodeIS0_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(12) %1) - ret ptr %call -} - -; Function Attrs: nounwind -declare void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #4 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE14_M_create_nodeIJRKS0_EEEPSt13_Rb_tree_nodeIS0_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(12) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__tmp = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) - store ptr %call, ptr %__tmp, align 8 - %0 = load ptr, ptr %__tmp, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE17_M_construct_nodeIJRKS0_EEEvPSt13_Rb_tree_nodeIS0_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %0, ptr noundef nonnull align 8 dereferenceable(12) %1) - %2 = load ptr, ptr %__tmp, align 8 - ret ptr %2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %call2 = call noundef ptr @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeI1AEEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %call, i64 noundef 1) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE17_M_construct_nodeIJRKS0_EEEvPSt13_Rb_tree_nodeIS0_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__node, ptr noundef nonnull align 8 dereferenceable(12) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__node.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__node, ptr %__node.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__node.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %1 = load ptr, ptr %__node.addr, align 8 - %call2 = call noundef ptr @_ZNSt13_Rb_tree_nodeI1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(48) %1) - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeI1AEEE9constructIS1_JRKS1_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %call2, ptr noundef nonnull align 8 dereferenceable(12) %2) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeI1AEEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 48 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #17 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 192153584101141162 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #11 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #12 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeI1AEEE9constructIS1_JRKS1_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(12) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEE9constructIS2_JRKS2_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(12) %2) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeI1AEE9constructIS2_JRKS2_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(12) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(12) %0, ptr noundef nonnull align 8 dereferenceable(12) %1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(12) %this, ptr noundef nonnull align 8 dereferenceable(12) %0) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - %data = getelementptr inbounds %class.A, ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %.addr, align 8 - %data2 = getelementptr inbounds %class.A, ptr %1, i32 0, i32 1 - %2 = load i32, ptr %data2, align 8 - store i32 %2, ptr %data, align 8 - ret void -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #13 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt23_Rb_tree_const_iteratorI1AEC2ERKSt17_Rb_tree_iteratorIS0_E(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__it) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__it.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__it.addr, align 8 - %_M_node2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_node2, align 8 - store ptr %1, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNKSt8_Rb_treeI1AS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::_Rb_tree_const_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 2 - %0 = load ptr, ptr %_M_left, align 8 - call void @_ZNSt23_Rb_tree_const_iteratorI1AEC2EPKSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %retval, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive, align 8 - ret ptr %1 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt23_Rb_tree_const_iteratorI1AEC2EPKSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__x) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - store ptr %0, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_set_1.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noinline uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #13 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #14 = { noreturn nounwind } -attributes #15 = { nounwind willreturn memory(read) } -attributes #16 = { noreturn } -attributes #17 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} diff --git a/test_cases_bc/basic_cpp_tests/set-2.cpp.bc b/test_cases_bc/basic_cpp_tests/set-2.cpp.bc deleted file mode 100644 index 98e88f3f..00000000 --- a/test_cases_bc/basic_cpp_tests/set-2.cpp.bc +++ /dev/null @@ -1,1646 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/set-2.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/set-2.cpp" -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-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%"class.std::set" = type { %"class.std::_Rb_tree" } -%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree, std::less>::_Rb_tree_impl" } -%"struct.std::_Rb_tree, std::less>::_Rb_tree_impl" = type { %"struct.std::_Rb_tree_key_compare", %"struct.std::_Rb_tree_header" } -%"struct.std::_Rb_tree_key_compare" = type { %"struct.std::less" } -%"struct.std::less" = type { i8 } -%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 } -%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr } -%class.A = type { ptr } -%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_const_iterator", i8, [7 x i8] }> -%"struct.std::_Rb_tree_const_iterator" = type { ptr } -%"struct.std::pair.0" = type <{ %"struct.std::_Rb_tree_iterator", i8, [7 x i8] }> -%"struct.std::_Rb_tree_iterator" = type { ptr } -%"struct.std::_Rb_tree_node" = type { %"struct.std::_Rb_tree_node_base", %"struct.__gnu_cxx::__aligned_membuf" } -%"struct.__gnu_cxx::__aligned_membuf" = type { [8 x i8] } -%"struct.std::pair.3" = type { ptr, ptr } -%"struct.std::_Identity" = type { i8 } -%"struct.std::_Rb_tree, std::less>::_Alloc_node" = type { ptr } - -$_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EEC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EE6insertEOS2_ = comdat any - -$_ZNKSt3setIPK1ASt4lessIS2_ESaIS2_EE5beginEv = comdat any - -$_ZNKSt23_Rb_tree_const_iteratorIPK1AEdeEv = comdat any - -$_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EED2Ev = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EEC2Ev = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE13_Rb_tree_implIS6_Lb1EEC2Ev = comdat any - -$_ZNSaISt13_Rb_tree_nodeIPK1AEEC2Ev = comdat any - -$_ZNSt20_Rb_tree_key_compareISt4lessIPK1AEEC2Ev = comdat any - -$_ZNSt15_Rb_tree_headerC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEEC2Ev = comdat any - -$_ZNSt15_Rb_tree_header8_M_resetEv = comdat any - -$__clang_call_terminate = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EED2Ev = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_beginEv = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE13_Rb_tree_implIS6_Lb1EED2Ev = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_S_rightEPSt18_Rb_tree_node_base = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE7_S_leftEPSt18_Rb_tree_node_base = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS2_E = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeIS2_E = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_M_put_nodeEPSt13_Rb_tree_nodeIS2_E = comdat any - -$_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeIPK1AEEE7destroyIS3_EEvRS5_PT_ = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE21_M_get_Node_allocatorEv = comdat any - -$_ZNSt13_Rb_tree_nodeIPK1AE9_M_valptrEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEE7destroyIS4_EEvPT_ = comdat any - -$_ZN9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv = comdat any - -$_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv = comdat any - -$_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeIPK1AEEE10deallocateERS5_PS4_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEE10deallocateEPS5_m = comdat any - -$_ZNSaISt13_Rb_tree_nodeIPK1AEED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEED2Ev = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE16_M_insert_uniqueIS2_EESt4pairISt17_Rb_tree_iteratorIS2_EbEOT_ = comdat any - -$_ZNSt4pairISt23_Rb_tree_const_iteratorIPK1AEbEC2IRSt17_Rb_tree_iteratorIS3_ERbLb1EEEOT_OT0_ = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE24_M_get_insert_unique_posERKS2_ = comdat any - -$_ZNKSt9_IdentityIPK1AEclERS2_ = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_Alloc_nodeC2ERS8_ = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE10_M_insert_IS2_NS8_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS2_EPSt18_Rb_tree_node_baseSE_OT_RT0_ = comdat any - -$_ZNSt4pairISt17_Rb_tree_iteratorIPK1AEbEC2IS4_bLb1EEEOT_OT0_ = comdat any - -$_ZNSt17_Rb_tree_iteratorIPK1AEC2EPSt18_Rb_tree_node_base = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE6_M_endEv = comdat any - -$_ZNKSt4lessIPK1AEclES2_S2_ = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE6_S_keyEPKSt13_Rb_tree_nodeIS2_E = comdat any - -$_ZSteqRKSt17_Rb_tree_iteratorIPK1AES5_ = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE5beginEv = comdat any - -$_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIPK1AERS1_Lb1EEEOT_OT0_ = comdat any - -$_ZNSt17_Rb_tree_iteratorIPK1AEmmEv = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE6_S_keyEPKSt18_Rb_tree_node_base = comdat any - -$_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_Lb1EEEOT_RKS1_ = comdat any - -$_ZNKSt9_IdentityIPK1AEclERKS2_ = comdat any - -$_ZNKSt13_Rb_tree_nodeIPK1AE9_M_valptrEv = comdat any - -$_ZNK9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv = comdat any - -$_ZNK9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv = comdat any - -$_ZNKSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_Alloc_nodeclIS2_EEPSt13_Rb_tree_nodeIS2_EOT_ = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE14_M_create_nodeIJS2_EEEPSt13_Rb_tree_nodeIS2_EDpOT_ = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_M_get_nodeEv = comdat any - -$_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE17_M_construct_nodeIJS2_EEEvPSt13_Rb_tree_nodeIS2_EDpOT_ = comdat any - -$_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeIPK1AEEE8allocateERS5_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEE11_M_max_sizeEv = comdat any - -$_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeIPK1AEEE9constructIS3_JS3_EEEvRS5_PT_DpOT0_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEE9constructIS4_JS4_EEEvPT_DpOT0_ = comdat any - -$_ZNSt23_Rb_tree_const_iteratorIPK1AEC2ERKSt17_Rb_tree_iteratorIS2_E = comdat any - -$_ZNKSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE5beginEv = comdat any - -$_ZNSt23_Rb_tree_const_iteratorIPK1AEC2EPKSt18_Rb_tree_node_base = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 -@__dso_handle = external hidden global i8 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_set_2.cpp, ptr null }] - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init() #3 section ".text.startup" { -entry: - call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = call i32 @__cxa_atexit(ptr @_ZNSt8ios_base4InitD1Ev, ptr @_ZStL8__ioinit, ptr @__dso_handle) #5 - ret void -} - -declare void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 - -; Function Attrs: nounwind -declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 - -; Function Attrs: nounwind -declare i32 @__cxa_atexit(ptr, ptr, ptr) #5 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #6 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %aset = alloca %"class.std::set", align 8 - %a = alloca %class.A, align 8 - %ref.tmp = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %coerce = alloca %"struct.std::pair", align 8 - %it = alloca %"struct.std::_Rb_tree_const_iterator", align 8 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %aset) #5 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 - store ptr %a, ptr %ref.tmp, align 8 - %call = invoke { ptr, i8 } @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %aset, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %0 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 0 - %1 = extractvalue { ptr, i8 } %call, 0 - store ptr %1, ptr %0, align 8 - %2 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 1 - %3 = extractvalue { ptr, i8 } %call, 1 - store i8 %3, ptr %2, align 8 - %call1 = call ptr @_ZNKSt3setIPK1ASt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %aset) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %it, i32 0, i32 0 - store ptr %call1, ptr %coerce.dive, align 8 - %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPK1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 - %4 = load ptr, ptr %call2, align 8 - store ptr %4, ptr %aptr, align 8 - %5 = load ptr, ptr %aptr, align 8 - %6 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %5, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %7 = load ptr, ptr %vfn, align 8 - invoke void %7(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef %6) - to label %invoke.cont3 unwind label %lpad - -invoke.cont3: ; preds = %invoke.cont - store i32 0, ptr %retval, align 4 - call void @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %aset) #5 - %8 = load i32, ptr %retval, align 4 - ret i32 %8 - -lpad: ; preds = %invoke.cont, %entry - %9 = landingpad { ptr, i32 } - cleanup - %10 = extractvalue { ptr, i32 } %9, 0 - store ptr %10, ptr %exn.slot, align 8 - %11 = extractvalue { ptr, i32 } %9, 1 - store i32 %11, ptr %ehselector.slot, align 4 - call void @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %aset) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val4 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val4 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::set", ptr %this1, i32 0, i32 0 - call void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, i8 } @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { -entry: - %retval = alloca %"struct.std::pair", align 8 - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__p = alloca %"struct.std::pair.0", align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::set", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call { ptr, i8 } @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE16_M_insert_uniqueIS2_EESt4pairISt17_Rb_tree_iteratorIS2_EbEOT_(ptr noundef nonnull align 8 dereferenceable(48) %_M_t, ptr noundef nonnull align 8 dereferenceable(8) %0) - %1 = getelementptr inbounds { ptr, i8 }, ptr %__p, i32 0, i32 0 - %2 = extractvalue { ptr, i8 } %call, 0 - store ptr %2, ptr %1, align 8 - %3 = getelementptr inbounds { ptr, i8 }, ptr %__p, i32 0, i32 1 - %4 = extractvalue { ptr, i8 } %call, 1 - store i8 %4, ptr %3, align 8 - %first = getelementptr inbounds %"struct.std::pair.0", ptr %__p, i32 0, i32 0 - %second = getelementptr inbounds %"struct.std::pair.0", ptr %__p, i32 0, i32 1 - call void @_ZNSt4pairISt23_Rb_tree_const_iteratorIPK1AEbEC2IRSt17_Rb_tree_iteratorIS3_ERbLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %first, ptr noundef nonnull align 1 dereferenceable(1) %second) - %5 = load { ptr, i8 }, ptr %retval, align 8 - ret { ptr, i8 } %5 -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNKSt3setIPK1ASt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::_Rb_tree_const_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::set", ptr %this1, i32 0, i32 0 - %call = call ptr @_ZNKSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %retval, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %coerce.dive2 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive2, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPK1AEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(40) %0) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt3setIPK1ASt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"class.std::set", ptr %this1, i32 0, i32 0 - call void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_t) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - call void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE13_Rb_tree_implIS6_Lb1EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_impl) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE13_Rb_tree_implIS6_Lb1EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaISt13_Rb_tree_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt20_Rb_tree_key_compareISt4lessIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %0 = getelementptr inbounds i8, ptr %this1, i64 8 - call void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %0) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt13_Rb_tree_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt20_Rb_tree_key_compareISt4lessIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_key_compare = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", ptr %this1, i32 0, i32 0 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Rb_tree_headerC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_header2 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_color = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header2, i32 0, i32 0 - store i32 0, ptr %_M_color, align 8 - invoke void @_ZNSt15_Rb_tree_header8_M_resetEv(ptr noundef nonnull align 8 dereferenceable(40) %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #14 - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Rb_tree_header8_M_resetEv(ptr noundef nonnull align 8 dereferenceable(40) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_parent = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 1 - store ptr null, ptr %_M_parent, align 8 - %_M_header2 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_header3 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header3, i32 0, i32 2 - store ptr %_M_header2, ptr %_M_left, align 8 - %_M_header4 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_header5 = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 0 - %_M_right = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header5, i32 0, i32 3 - store ptr %_M_header4, ptr %_M_right, align 8 - %_M_node_count = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_node_count, align 8 - ret void -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #8 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #5 - call void @_ZSt9terminatev() #14 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - invoke void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - call void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE13_Rb_tree_implIS6_Lb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_impl) #5 - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #14 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - br label %while.cond - -while.cond: ; preds = %while.body, %entry - %0 = load ptr, ptr %__x.addr, align 8 - %cmp = icmp ne ptr %0, null - br i1 %cmp, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %1 = load ptr, ptr %__x.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %1) #5 - call void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %call) - %2 = load ptr, ptr %__x.addr, align 8 - %call2 = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE7_S_leftEPSt18_Rb_tree_node_base(ptr noundef %2) #5 - store ptr %call2, ptr %__y, align 8 - %3 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS2_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %3) #5 - %4 = load ptr, ptr %__y, align 8 - store ptr %4, ptr %__x.addr, align 8 - br label %while.cond, !llvm.loop !6 - -while.end: ; preds = %while.cond - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - %_M_parent = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 1 - %0 = load ptr, ptr %_M_parent, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE13_Rb_tree_implIS6_Lb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaISt13_Rb_tree_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %__x) #2 comdat align 2 { -entry: - %__x.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_right = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 3 - %1 = load ptr, ptr %_M_right, align 8 - ret ptr %1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE7_S_leftEPSt18_Rb_tree_node_base(ptr noundef %__x) #2 comdat align 2 { -entry: - %__x.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %0, i32 0, i32 2 - %1 = load ptr, ptr %_M_left, align 8 - ret ptr %1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE12_M_drop_nodeEPSt13_Rb_tree_nodeIS2_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeIS2_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %0) #5 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_M_put_nodeEPSt13_Rb_tree_nodeIS2_E(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeIS2_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__p) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %0 = load ptr, ptr %__p.addr, align 8 - %call2 = invoke noundef ptr @_ZNSt13_Rb_tree_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(40) %0) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeIPK1AEEE7destroyIS3_EEvRS5_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %call2) #5 - %1 = load ptr, ptr %__p.addr, align 8 - ret void - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #14 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_M_put_nodeEPSt13_Rb_tree_nodeIS2_E(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__p) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %0 = load ptr, ptr %__p.addr, align 8 - invoke void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeIPK1AEEE10deallocateERS5_PS4_m(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %0, i64 noundef 1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - ret void - -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #14 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeIPK1AEEE7destroyIS3_EEvRS5_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEE7destroyIS4_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt13_Rb_tree_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(40) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_Rb_tree_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %_M_storage) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEE7destroyIS4_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeIPK1AEEE10deallocateERS5_PS4_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEE10deallocateEPS5_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEE10deallocateEPS5_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #9 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaISt13_Rb_tree_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, i8 } @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE16_M_insert_uniqueIS2_EESt4pairISt17_Rb_tree_iteratorIS2_EbEOT_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(8) %__v) #0 comdat align 2 { -entry: - %retval = alloca %"struct.std::pair.0", align 8 - %this.addr = alloca ptr, align 8 - %__v.addr = alloca ptr, align 8 - %__res = alloca %"struct.std::pair.3", align 8 - %ref.tmp = alloca %"struct.std::_Identity", align 1 - %__an = alloca %"struct.std::_Rb_tree, std::less>::_Alloc_node", align 8 - %ref.tmp3 = alloca %"struct.std::_Rb_tree_iterator", align 8 - %ref.tmp6 = alloca i8, align 1 - %ref.tmp7 = alloca %"struct.std::_Rb_tree_iterator", align 8 - %ref.tmp9 = alloca i8, align 1 - store ptr %this, ptr %this.addr, align 8 - store ptr %__v, ptr %__v.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__v.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt9_IdentityIPK1AEclERS2_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %0) - %call2 = call { ptr, ptr } @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE24_M_get_insert_unique_posERKS2_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef nonnull align 8 dereferenceable(8) %call) - %1 = getelementptr inbounds { ptr, ptr }, ptr %__res, i32 0, i32 0 - %2 = extractvalue { ptr, ptr } %call2, 0 - store ptr %2, ptr %1, align 8 - %3 = getelementptr inbounds { ptr, ptr }, ptr %__res, i32 0, i32 1 - %4 = extractvalue { ptr, ptr } %call2, 1 - store ptr %4, ptr %3, align 8 - %second = getelementptr inbounds %"struct.std::pair.3", ptr %__res, i32 0, i32 1 - %5 = load ptr, ptr %second, align 8 - %tobool = icmp ne ptr %5, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_Alloc_nodeC2ERS8_(ptr noundef nonnull align 8 dereferenceable(8) %__an, ptr noundef nonnull align 8 dereferenceable(48) %this1) - %first = getelementptr inbounds %"struct.std::pair.3", ptr %__res, i32 0, i32 0 - %6 = load ptr, ptr %first, align 8 - %second4 = getelementptr inbounds %"struct.std::pair.3", ptr %__res, i32 0, i32 1 - %7 = load ptr, ptr %second4, align 8 - %8 = load ptr, ptr %__v.addr, align 8 - %call5 = call ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE10_M_insert_IS2_NS8_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS2_EPSt18_Rb_tree_node_baseSE_OT_RT0_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %6, ptr noundef %7, ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %__an) - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %ref.tmp3, i32 0, i32 0 - store ptr %call5, ptr %coerce.dive, align 8 - store i8 1, ptr %ref.tmp6, align 1 - call void @_ZNSt4pairISt17_Rb_tree_iteratorIPK1AEbEC2IS4_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp3, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp6) - br label %return - -if.end: ; preds = %entry - %first8 = getelementptr inbounds %"struct.std::pair.3", ptr %__res, i32 0, i32 0 - %9 = load ptr, ptr %first8, align 8 - call void @_ZNSt17_Rb_tree_iteratorIPK1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp7, ptr noundef %9) #5 - store i8 0, ptr %ref.tmp9, align 1 - call void @_ZNSt4pairISt17_Rb_tree_iteratorIPK1AEbEC2IS4_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp7, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp9) - br label %return - -return: ; preds = %if.end, %if.then - %10 = load { ptr, i8 }, ptr %retval, align 8 - ret { ptr, i8 } %10 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairISt23_Rb_tree_const_iteratorIPK1AEbEC2IRSt17_Rb_tree_iteratorIS3_ERbLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 1 dereferenceable(1) %__y) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt23_Rb_tree_const_iteratorIPK1AEC2ERKSt17_Rb_tree_iteratorIS2_E(ptr noundef nonnull align 8 dereferenceable(8) %first, ptr noundef nonnull align 8 dereferenceable(8) %0) #5 - %second = getelementptr inbounds %"struct.std::pair", ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %__y.addr, align 8 - %2 = load i8, ptr %1, align 1 - %tobool = trunc i8 %2 to i1 - %frombool = zext i1 %tobool to i8 - store i8 %frombool, ptr %second, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, ptr } @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE24_M_get_insert_unique_posERKS2_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(8) %__k) #0 comdat align 2 { -entry: - %retval = alloca %"struct.std::pair.3", align 8 - %this.addr = alloca ptr, align 8 - %__k.addr = alloca ptr, align 8 - %__x = alloca ptr, align 8 - %__y = alloca ptr, align 8 - %__comp = alloca i8, align 1 - %__j = alloca %"struct.std::_Rb_tree_iterator", align 8 - %ref.tmp = alloca %"struct.std::_Rb_tree_iterator", align 8 - %ref.tmp20 = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - store ptr %call, ptr %__x, align 8 - %call2 = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - store ptr %call2, ptr %__y, align 8 - store i8 1, ptr %__comp, align 1 - br label %while.cond - -while.cond: ; preds = %cond.end, %entry - %0 = load ptr, ptr %__x, align 8 - %cmp = icmp ne ptr %0, null - br i1 %cmp, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %1 = load ptr, ptr %__x, align 8 - store ptr %1, ptr %__y, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %_M_key_compare = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", ptr %_M_impl, i32 0, i32 0 - %2 = load ptr, ptr %__k.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %__x, align 8 - %call3 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE6_S_keyEPKSt13_Rb_tree_nodeIS2_E(ptr noundef %4) - %5 = load ptr, ptr %call3, align 8 - %call4 = call noundef zeroext i1 @_ZNKSt4lessIPK1AEclES2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_key_compare, ptr noundef %3, ptr noundef %5) #5 - %frombool = zext i1 %call4 to i8 - store i8 %frombool, ptr %__comp, align 1 - %6 = load i8, ptr %__comp, align 1 - %tobool = trunc i8 %6 to i1 - br i1 %tobool, label %cond.true, label %cond.false - -cond.true: ; preds = %while.body - %7 = load ptr, ptr %__x, align 8 - %call5 = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE7_S_leftEPSt18_Rb_tree_node_base(ptr noundef %7) #5 - br label %cond.end - -cond.false: ; preds = %while.body - %8 = load ptr, ptr %__x, align 8 - %call6 = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_S_rightEPSt18_Rb_tree_node_base(ptr noundef %8) #5 - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi ptr [ %call5, %cond.true ], [ %call6, %cond.false ] - store ptr %cond, ptr %__x, align 8 - br label %while.cond, !llvm.loop !8 - -while.end: ; preds = %while.cond - %9 = load ptr, ptr %__y, align 8 - call void @_ZNSt17_Rb_tree_iteratorIPK1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %__j, ptr noundef %9) #5 - %10 = load i8, ptr %__comp, align 1 - %tobool7 = trunc i8 %10 to i1 - br i1 %tobool7, label %if.then, label %if.end12 - -if.then: ; preds = %while.end - %call8 = call ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %ref.tmp, i32 0, i32 0 - store ptr %call8, ptr %coerce.dive, align 8 - %call9 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorIPK1AES5_(ptr noundef nonnull align 8 dereferenceable(8) %__j, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #5 - br i1 %call9, label %if.then10, label %if.else - -if.then10: ; preds = %if.then - call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIPK1AERS1_Lb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) - br label %return - -if.else: ; preds = %if.then - %call11 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorIPK1AEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %__j) #5 - br label %if.end - -if.end: ; preds = %if.else - br label %if.end12 - -if.end12: ; preds = %if.end, %while.end - %_M_impl13 = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %_M_key_compare14 = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", ptr %_M_impl13, i32 0, i32 0 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %__j, i32 0, i32 0 - %11 = load ptr, ptr %_M_node, align 8 - %call15 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %11) - %12 = load ptr, ptr %call15, align 8 - %13 = load ptr, ptr %__k.addr, align 8 - %14 = load ptr, ptr %13, align 8 - %call16 = call noundef zeroext i1 @_ZNKSt4lessIPK1AEclES2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_key_compare14, ptr noundef %12, ptr noundef %14) #5 - br i1 %call16, label %if.then17, label %if.end18 - -if.then17: ; preds = %if.end12 - call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIPK1AERS1_Lb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) - br label %return - -if.end18: ; preds = %if.end12 - %_M_node19 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %__j, i32 0, i32 0 - store ptr null, ptr %ref.tmp20, align 8 - call void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_Lb1EEEOT_RKS1_(ptr noundef nonnull align 8 dereferenceable(16) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_node19, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp20) - br label %return - -return: ; preds = %if.end18, %if.then17, %if.then10 - %15 = load { ptr, ptr }, ptr %retval, align 8 - ret { ptr, ptr } %15 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt9_IdentityIPK1AEclERS2_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_Alloc_nodeC2ERS8_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(48) %__t) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__t.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"struct.std::_Rb_tree, std::less>::_Alloc_node", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__t.addr, align 8 - store ptr %0, ptr %_M_t, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE10_M_insert_IS2_NS8_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS2_EPSt18_Rb_tree_node_baseSE_OT_RT0_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__x, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__v, ptr noundef nonnull align 8 dereferenceable(8) %__node_gen) #0 comdat align 2 { -entry: - %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__v.addr = alloca ptr, align 8 - %__node_gen.addr = alloca ptr, align 8 - %__insert_left = alloca i8, align 1 - %ref.tmp = alloca %"struct.std::_Identity", align 1 - %__z = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__v, ptr %__v.addr, align 8 - store ptr %__node_gen, ptr %__node_gen.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %cmp = icmp ne ptr %0, null - br i1 %cmp, label %lor.end, label %lor.lhs.false - -lor.lhs.false: ; preds = %entry - %1 = load ptr, ptr %__p.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %cmp2 = icmp eq ptr %1, %call - br i1 %cmp2, label %lor.end, label %lor.rhs - -lor.rhs: ; preds = %lor.lhs.false - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %_M_key_compare = getelementptr inbounds %"struct.std::_Rb_tree_key_compare", ptr %_M_impl, i32 0, i32 0 - %2 = load ptr, ptr %__v.addr, align 8 - %call3 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt9_IdentityIPK1AEclERS2_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %2) - %3 = load ptr, ptr %call3, align 8 - %4 = load ptr, ptr %__p.addr, align 8 - %call4 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %4) - %5 = load ptr, ptr %call4, align 8 - %call5 = call noundef zeroext i1 @_ZNKSt4lessIPK1AEclES2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %_M_key_compare, ptr noundef %3, ptr noundef %5) #5 - br label %lor.end - -lor.end: ; preds = %lor.rhs, %lor.lhs.false, %entry - %6 = phi i1 [ true, %lor.lhs.false ], [ true, %entry ], [ %call5, %lor.rhs ] - %frombool = zext i1 %6 to i8 - store i8 %frombool, ptr %__insert_left, align 1 - %7 = load ptr, ptr %__node_gen.addr, align 8 - %8 = load ptr, ptr %__v.addr, align 8 - %call6 = call noundef ptr @_ZNKSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_Alloc_nodeclIS2_EEPSt13_Rb_tree_nodeIS2_EOT_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) - store ptr %call6, ptr %__z, align 8 - %9 = load i8, ptr %__insert_left, align 1 - %tobool = trunc i8 %9 to i1 - %10 = load ptr, ptr %__z, align 8 - %11 = load ptr, ptr %__p.addr, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl7, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %tobool, ptr noundef %10, ptr noundef %11, ptr noundef nonnull align 8 dereferenceable(32) %_M_header) #5 - %_M_impl8 = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr9 = getelementptr inbounds i8, ptr %_M_impl8, i64 8 - %_M_node_count = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr9, i32 0, i32 1 - %12 = load i64, ptr %_M_node_count, align 8 - %inc = add i64 %12, 1 - store i64 %inc, ptr %_M_node_count, align 8 - %13 = load ptr, ptr %__z, align 8 - call void @_ZNSt17_Rb_tree_iteratorIPK1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %13) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - %14 = load ptr, ptr %coerce.dive, align 8 - ret ptr %14 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairISt17_Rb_tree_iteratorIPK1AEbEC2IS4_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 1 dereferenceable(1) %__y) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair.0", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %first, ptr align 8 %0, i64 8, i1 false) - %second = getelementptr inbounds %"struct.std::pair.0", ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %__y.addr, align 8 - %2 = load i8, ptr %1, align 1 - %tobool = trunc i8 %2 to i1 - %frombool = zext i1 %tobool to i8 - store i8 %frombool, ptr %second, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt17_Rb_tree_iteratorIPK1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__x) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - store ptr %0, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE6_M_endEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - ret ptr %_M_header -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt4lessIPK1AEclES2_S2_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__x, ptr noundef %__y) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %1 = ptrtoint ptr %0 to i64 - %2 = load ptr, ptr %__y.addr, align 8 - %3 = ptrtoint ptr %2 to i64 - %cmp = icmp ult i64 %1, %3 - ret i1 %cmp -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE6_S_keyEPKSt13_Rb_tree_nodeIS2_E(ptr noundef %__x) #0 comdat align 2 { -entry: - %__x.addr = alloca ptr, align 8 - %ref.tmp = alloca %"struct.std::_Identity", align 1 - store ptr %__x, ptr %__x.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef ptr @_ZNKSt13_Rb_tree_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(40) %0) - %call1 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt9_IdentityIPK1AEclERKS2_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %call) - ret ptr %call1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorIPK1AES5_(ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) #2 comdat { -entry: - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_node, align 8 - %2 = load ptr, ptr %__y.addr, align 8 - %_M_node1 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %2, i32 0, i32 0 - %3 = load ptr, ptr %_M_node1, align 8 - %cmp = icmp eq ptr %1, %3 - ret i1 %cmp -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::_Rb_tree_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 2 - %0 = load ptr, ptr %_M_left, align 8 - call void @_ZNSt17_Rb_tree_iteratorIPK1AEC2EPSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %retval, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive, align 8 - ret ptr %1 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeIPK1AERS1_Lb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair.3", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %first, align 8 - %second = getelementptr inbounds %"struct.std::pair.3", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %__y.addr, align 8 - %3 = load ptr, ptr %2, align 8 - store ptr %3, ptr %second, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorIPK1AEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_node, align 8 - %call = call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef %0) #15 - %_M_node2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %this1, i32 0, i32 0 - store ptr %call, ptr %_M_node2, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE6_S_keyEPKSt18_Rb_tree_node_base(ptr noundef %__x) #0 comdat align 2 { -entry: - %__x.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE6_S_keyEPKSt13_Rb_tree_nodeIS2_E(ptr noundef %0) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRS1_Lb1EEEOT_RKS1_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair.3", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %first, align 8 - %second = getelementptr inbounds %"struct.std::pair.3", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %__y.addr, align 8 - %3 = load ptr, ptr %2, align 8 - store ptr %3, ptr %second, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt9_IdentityIPK1AEclERKS2_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt13_Rb_tree_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(40) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::_Rb_tree_node", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %_M_storage) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_membufIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -; Function Attrs: nounwind willreturn memory(read) -declare noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef) #10 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_Alloc_nodeclIS2_EEPSt13_Rb_tree_nodeIS2_EOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__arg) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__arg.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__arg, ptr %__arg.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_t = getelementptr inbounds %"struct.std::_Rb_tree, std::less>::_Alloc_node", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_t, align 8 - %1 = load ptr, ptr %__arg.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE14_M_create_nodeIJS2_EEEPSt13_Rb_tree_nodeIS2_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) - ret ptr %call -} - -; Function Attrs: nounwind -declare void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #4 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE14_M_create_nodeIJS2_EEEPSt13_Rb_tree_nodeIS2_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__tmp = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) - store ptr %call, ptr %__tmp, align 8 - %0 = load ptr, ptr %__tmp, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE17_M_construct_nodeIJS2_EEEvPSt13_Rb_tree_nodeIS2_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this1, ptr noundef %0, ptr noundef nonnull align 8 dereferenceable(8) %1) - %2 = load ptr, ptr %__tmp, align 8 - ret ptr %2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE11_M_get_nodeEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %call2 = call noundef ptr @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeIPK1AEEE8allocateERS5_m(ptr noundef nonnull align 1 dereferenceable(1) %call, i64 noundef 1) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE17_M_construct_nodeIJS2_EEEvPSt13_Rb_tree_nodeIS2_EDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %this, ptr noundef %__node, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__node.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__node, ptr %__node.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__node.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE21_M_get_Node_allocatorEv(ptr noundef nonnull align 8 dereferenceable(48) %this1) #5 - %1 = load ptr, ptr %__node.addr, align 8 - %call2 = call noundef ptr @_ZNSt13_Rb_tree_nodeIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(40) %1) - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeIPK1AEEE9constructIS3_JS3_EEEvRS5_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %call2, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeIPK1AEEE8allocateERS5_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 40 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #17 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 230584300921369395 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #11 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #12 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt13_Rb_tree_nodeIPK1AEEE9constructIS3_JS3_EEEvRS5_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEE9constructIS4_JS4_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK1AEE9constructIS4_JS4_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - %2 = load ptr, ptr %1, align 8 - store ptr %2, ptr %0, align 8 - ret void -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #13 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt23_Rb_tree_const_iteratorIPK1AEC2ERKSt17_Rb_tree_iteratorIS2_E(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__it) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__it.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__it.addr, align 8 - %_M_node2 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_node2, align 8 - store ptr %1, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNKSt8_Rb_treeIPK1AS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::_Rb_tree_const_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Rb_tree", ptr %this1, i32 0, i32 0 - %add.ptr = getelementptr inbounds i8, ptr %_M_impl, i64 8 - %_M_header = getelementptr inbounds %"struct.std::_Rb_tree_header", ptr %add.ptr, i32 0, i32 0 - %_M_left = getelementptr inbounds %"struct.std::_Rb_tree_node_base", ptr %_M_header, i32 0, i32 2 - %0 = load ptr, ptr %_M_left, align 8 - call void @_ZNSt23_Rb_tree_const_iteratorIPK1AEC2EPKSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %0) #5 - %coerce.dive = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %retval, i32 0, i32 0 - %1 = load ptr, ptr %coerce.dive, align 8 - ret ptr %1 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt23_Rb_tree_const_iteratorIPK1AEC2EPKSt18_Rb_tree_node_base(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__x) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - store ptr %0, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_set_2.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noinline uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #13 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #14 = { noreturn nounwind } -attributes #15 = { nounwind willreturn memory(read) } -attributes #16 = { noreturn } -attributes #17 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} diff --git a/test_cases_bc/basic_cpp_tests/single-inheritance-1.cpp.bc b/test_cases_bc/basic_cpp_tests/single-inheritance-1.cpp.bc deleted file mode 100644 index e57ec95f..00000000 --- a/test_cases_bc/basic_cpp_tests/single-inheritance-1.cpp.bc +++ /dev/null @@ -1,263 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/single-inheritance-1.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/single-inheritance-1.cpp" -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-unknown-linux-gnu" - -$_ZN1BC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZN1B1fEPi = comdat any - -$_ZN1A1fEPi = comdat any - -$_ZTV1B = comdat any - -$_ZTS1B = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -$_ZTI1B = comdat any - -$_ZTV1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1B = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1B, ptr @_ZN1B1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv120__si_class_type_infoE = external global ptr -@_ZTS1B = linkonce_odr dso_local constant [3 x i8] c"1B\00", comdat, align 1 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@_ZTI1B = linkonce_odr dso_local constant { ptr, ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), ptr @_ZTS1B, ptr @_ZTI1A }, comdat, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1A1fEPi] }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %pb = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #6 - call void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #7 - store ptr %call, ptr %pb, align 8 - %0 = load ptr, ptr %pb, align 8 - %1 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %0, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) - ret i32 0 -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #7 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { builtin allocsize(0) } -attributes #7 = { nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/single-inheritance-2.cpp.bc b/test_cases_bc/basic_cpp_tests/single-inheritance-2.cpp.bc deleted file mode 100644 index c5a740c4..00000000 --- a/test_cases_bc/basic_cpp_tests/single-inheritance-2.cpp.bc +++ /dev/null @@ -1,286 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/single-inheritance-2.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/single-inheritance-2.cpp" -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-unknown-linux-gnu" - -$_ZN1AC2Ev = comdat any - -$_ZN1BC2Ev = comdat any - -$_ZN1A1fEPi = comdat any - -$_ZN1B1fEPi = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -$_ZTV1B = comdat any - -$_ZTS1B = comdat any - -$_ZTI1B = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj_a = dso_local global i32 0, align 4 -@global_ptr_a = dso_local global ptr @global_obj_a, align 8 -@global_obj_b = dso_local global i32 0, align 4 -@global_ptr_b = dso_local global ptr @global_obj_b, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@_ZTV1B = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1B, ptr @_ZN1B1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv120__si_class_type_infoE = external global ptr -@_ZTS1B = linkonce_odr dso_local constant [3 x i8] c"1B\00", comdat, align 1 -@_ZTI1B = linkonce_odr dso_local constant { ptr, ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), ptr @_ZTS1B, ptr @_ZTI1A }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %i = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %j = alloca ptr, align 8 - %pb = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj_a, ptr %i, align 8 - %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #6 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #7 - store ptr %call, ptr %pa, align 8 - %0 = load ptr, ptr %pa, align 8 - %1 = load ptr, ptr %i, align 8 - %vtable = load ptr, ptr %0, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) - store ptr @global_obj_b, ptr %j, align 8 - %call1 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #6 - call void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call1) #7 - store ptr %call1, ptr %pb, align 8 - %3 = load ptr, ptr %pb, align 8 - %4 = load ptr, ptr %j, align 8 - %vtable2 = load ptr, ptr %3, align 8 - %vfn3 = getelementptr inbounds ptr, ptr %vtable2, i64 0 - %5 = load ptr, ptr %vfn3, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4) - ret i32 0 -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #7 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_a, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_ptr_b, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_a, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_ptr_b, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { builtin allocsize(0) } -attributes #7 = { nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/single-inheritance-3.cpp.bc b/test_cases_bc/basic_cpp_tests/single-inheritance-3.cpp.bc deleted file mode 100644 index e4d3c664..00000000 --- a/test_cases_bc/basic_cpp_tests/single-inheritance-3.cpp.bc +++ /dev/null @@ -1,320 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/single-inheritance-3.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/single-inheritance-3.cpp" -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-unknown-linux-gnu" - -$_ZN1BC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZN1B1fEPi = comdat any - -$_ZN1B1gEPf = comdat any - -$_ZN1A1fEPi = comdat any - -$_ZN1A1gEPf = comdat any - -$_ZTV1B = comdat any - -$_ZTS1B = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -$_ZTI1B = comdat any - -$_ZTV1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_int_obj = dso_local global i32 0, align 4 -@global_int_ptr = dso_local global ptr @global_int_obj, align 8 -@global_float_obj = dso_local global float 0.000000e+00, align 4 -@global_float_ptr = dso_local global ptr @global_float_obj, align 8 -@_ZTV1B = linkonce_odr dso_local unnamed_addr constant { [4 x ptr] } { [4 x ptr] [ptr null, ptr @_ZTI1B, ptr @_ZN1B1fEPi, ptr @_ZN1B1gEPf] }, comdat, align 8 -@_ZTVN10__cxxabiv120__si_class_type_infoE = external global ptr -@_ZTS1B = linkonce_odr dso_local constant [3 x i8] c"1B\00", comdat, align 1 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@_ZTI1B = linkonce_odr dso_local constant { ptr, ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), ptr @_ZTS1B, ptr @_ZTI1A }, comdat, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [4 x ptr] } { [4 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1A1fEPi, ptr @_ZN1A1gEPf] }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %i = alloca ptr, align 8 - %j = alloca ptr, align 8 - %p = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_int_obj, ptr %i, align 8 - store ptr @global_float_obj, ptr %j, align 8 - %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #6 - call void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #7 - store ptr %call, ptr %p, align 8 - %0 = load ptr, ptr %p, align 8 - %1 = load ptr, ptr %i, align 8 - %vtable = load ptr, ptr %0, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) - %3 = load ptr, ptr %p, align 8 - %4 = load ptr, ptr %j, align 8 - %vtable1 = load ptr, ptr %3, align 8 - %vfn2 = getelementptr inbounds ptr, ptr %vtable1, i64 1 - %5 = load ptr, ptr %vfn2, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4) - ret i32 0 -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #7 - store ptr getelementptr inbounds ({ [4 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [4 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_int_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_float_ptr, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1gEPf(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %j) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %j.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %j, ptr %j.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_int_ptr, align 8 - %1 = load ptr, ptr %j.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_float_ptr, align 8 - %3 = load ptr, ptr %j.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_int_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_float_ptr, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1gEPf(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %j) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %j.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %j, ptr %j.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_int_ptr, align 8 - %1 = load ptr, ptr %j.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_float_ptr, align 8 - %3 = load ptr, ptr %j.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { builtin allocsize(0) } -attributes #7 = { nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/single-inheritance-4.cpp.bc b/test_cases_bc/basic_cpp_tests/single-inheritance-4.cpp.bc deleted file mode 100644 index 904c42d2..00000000 --- a/test_cases_bc/basic_cpp_tests/single-inheritance-4.cpp.bc +++ /dev/null @@ -1,266 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/single-inheritance-4.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/single-inheritance-4.cpp" -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-unknown-linux-gnu" - -$_ZN1BC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZN1B1fEPi = comdat any - -$_ZN1A1fEPi = comdat any - -$_ZTV1B = comdat any - -$_ZTS1B = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -$_ZTI1B = comdat any - -$_ZTV1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1B = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1B, ptr @_ZN1B1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv120__si_class_type_infoE = external global ptr -@_ZTS1B = linkonce_odr dso_local constant [3 x i8] c"1B\00", comdat, align 1 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@_ZTI1B = linkonce_odr dso_local constant { ptr, ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), ptr @_ZTS1B, ptr @_ZTI1A }, comdat, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1A1fEPi] }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %pb = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #6 - call void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #7 - store ptr %call, ptr %pb, align 8 - %0 = load ptr, ptr %pb, align 8 - %1 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %0, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) - ret i32 0 -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #7 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { builtin allocsize(0) } -attributes #7 = { nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/stack-1.cpp.bc b/test_cases_bc/basic_cpp_tests/stack-1.cpp.bc deleted file mode 100644 index a344a24c..00000000 --- a/test_cases_bc/basic_cpp_tests/stack-1.cpp.bc +++ /dev/null @@ -1,2471 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/stack-1.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/stack-1.cpp" -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-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%"class.std::stack" = type { %"class.std::deque" } -%"class.std::deque" = type { %"class.std::_Deque_base" } -%"class.std::_Deque_base" = type { %"struct.std::_Deque_base>::_Deque_impl" } -%"struct.std::_Deque_base>::_Deque_impl" = type { %"struct.std::_Deque_base>::_Deque_impl_data" } -%"struct.std::_Deque_base>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" } -%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr } -%class.A = type { ptr } -%"class.std::allocator.0" = type { i8 } - -$_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEEC2IS3_vEEv = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE4pushERKS0_ = comdat any - -$_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE3topEv = comdat any - -$_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE3popEv = comdat any - -$_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEED2Ev = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt5dequeI1ASaIS0_EED2Ev = comdat any - -$_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_ = comdat any - -$_ZNSt5dequeI1ASaIS0_EE5beginEv = comdat any - -$_ZNSt5dequeI1ASaIS0_EE3endEv = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EED2Ev = comdat any - -$_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2ERKS3_ = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_ = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_ = comdat any - -$_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m = comdat any - -$_ZSt16__deque_buf_sizem = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE10deallocateEPS1_m = comdat any - -$_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv = comdat any - -$_ZNSt16allocator_traitsISaIP1AEE10deallocateERS2_PS1_m = comdat any - -$_ZNSaIP1AED2Ev = comdat any - -$_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv = comdat any - -$_ZNSaIP1AEC2IS_EERKSaIT_E = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AEC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AED2Ev = comdat any - -$_ZNSaI1AED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AED2Ev = comdat any - -$_ZNSt5dequeI1ASaIS0_EEC2Ev = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implC2Ev = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm = comdat any - -$_ZNSaI1AEC2Ev = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE16_Deque_impl_dataC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AEC2Ev = comdat any - -$_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev = comdat any - -$_ZSt3maxImERKT_S2_S2_ = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_ = comdat any - -$_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_ = comdat any - -$_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIP1AE11_M_max_sizeEv = comdat any - -$_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv = comdat any - -$_ZNSt16allocator_traitsISaI1AEE8allocateERS1_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv = comdat any - -$_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv = comdat any - -$_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_ = comdat any - -$_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_ = comdat any - -$_ZNSt5dequeI1ASaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JRKS1_EEEvPT_DpOT0_ = comdat any - -$_ZN1AC2ERKS_ = comdat any - -$_ZNKSt5dequeI1ASaIS0_EE4sizeEv = comdat any - -$_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv = comdat any - -$_ZNSt5dequeI1ASaIS0_EE22_M_reserve_map_at_backEm = comdat any - -$_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_ = comdat any - -$_ZNSt5dequeI1ASaIS0_EE11_S_max_sizeERKS1_ = comdat any - -$_ZNSt16allocator_traitsISaI1AEE8max_sizeERKS1_ = comdat any - -$_ZSt3minImERKT_S2_S2_ = comdat any - -$_ZNK9__gnu_cxx13new_allocatorI1AE8max_sizeEv = comdat any - -$_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb = comdat any - -$_ZSt4copyIPP1AS2_ET0_T_S4_S3_ = comdat any - -$_ZSt13copy_backwardIPP1AS2_ET0_T_S4_S3_ = comdat any - -$_ZSt13__copy_move_aILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZSt12__miter_baseIPP1AET_S3_ = comdat any - -$_ZSt12__niter_wrapIPP1AET_RKS3_S3_ = comdat any - -$_ZSt14__copy_move_a1ILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZSt12__niter_baseIPP1AET_S3_ = comdat any - -$_ZSt14__copy_move_a2ILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AEEPT_PKS5_S8_S6_ = comdat any - -$_ZSt22__copy_move_backward_aILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZSt23__copy_move_backward_a1ILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZSt23__copy_move_backward_a2ILb0EPP1AS2_ET1_T0_S4_S3_ = comdat any - -$_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AEEPT_PKS5_S8_S6_ = comdat any - -$_ZNSt5dequeI1ASaIS0_EE4backEv = comdat any - -$_ZNSt15_Deque_iteratorI1ARS0_PS0_EmmEv = comdat any - -$_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv = comdat any - -$_ZNSt5dequeI1ASaIS0_EE8pop_backEv = comdat any - -$_ZNSt16allocator_traitsISaI1AEE7destroyIS0_EEvRS1_PT_ = comdat any - -$_ZNSt5dequeI1ASaIS0_EE15_M_pop_back_auxEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE7destroyIS1_EEvPT_ = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 -@__dso_handle = external hidden global i8 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@.str.3 = private unnamed_addr constant [48 x i8] c"cannot create std::deque larger than max_size()\00", align 1 -@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_stack_1.cpp, ptr null }] - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init() #3 section ".text.startup" { -entry: - call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = call i32 @__cxa_atexit(ptr @_ZNSt8ios_base4InitD1Ev, ptr @_ZStL8__ioinit, ptr @__dso_handle) #5 - ret void -} - -declare void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 - -; Function Attrs: nounwind -declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 - -; Function Attrs: nounwind -declare i32 @__cxa_atexit(ptr, ptr, ptr) #5 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #6 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %astack = alloca %"class.std::stack", align 8 - %a = alloca %class.A, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(80) %astack) - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 - invoke void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE4pushERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %astack, ptr noundef nonnull align 8 dereferenceable(8) %a) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %call = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE3topEv(ptr noundef nonnull align 8 dereferenceable(80) %astack) - to label %invoke.cont1 unwind label %lpad - -invoke.cont1: ; preds = %invoke.cont - store ptr %call, ptr %aptr, align 8 - invoke void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %astack) - to label %invoke.cont2 unwind label %lpad - -invoke.cont2: ; preds = %invoke.cont1 - %0 = load ptr, ptr %aptr, align 8 - %1 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %0, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %2 = load ptr, ptr %vfn, align 8 - invoke void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) - to label %invoke.cont3 unwind label %lpad - -invoke.cont3: ; preds = %invoke.cont2 - store i32 0, ptr %retval, align 4 - call void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %astack) #5 - %3 = load i32, ptr %retval, align 4 - ret i32 %3 - -lpad: ; preds = %invoke.cont2, %invoke.cont1, %invoke.cont, %entry - %4 = landingpad { ptr, i32 } - cleanup - %5 = extractvalue { ptr, i32 } %4, 0 - store ptr %5, ptr %exn.slot, align 8 - %6 = extractvalue { ptr, i32 } %4, 1 - store i32 %6, ptr %ehselector.slot, align 4 - call void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %astack) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val4 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val4 -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::stack", ptr %this1, i32 0, i32 0 - call void @llvm.memset.p0.i64(ptr align 8 %c, i8 0, i64 80, i1 false) - call void @_ZNSt5dequeI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %c) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE4pushERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::stack", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %c, ptr noundef nonnull align 8 dereferenceable(8) %0) - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE3topEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::stack", ptr %this1, i32 0, i32 0 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeI1ASaIS0_EE4backEv(ptr noundef nonnull align 8 dereferenceable(80) %c) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::stack", ptr %this1, i32 0, i32 0 - call void @_ZNSt5dequeI1ASaIS0_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(80) %c) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5stackI1ASt5dequeIS0_SaIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::stack", ptr %this1, i32 0, i32 0 - call void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %c) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #8 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_Deque_iterator", align 8 - %agg.tmp2 = alloca %"struct.std::_Deque_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - call void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - invoke void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %agg.tmp, ptr noundef %agg.tmp2, ptr noundef nonnull align 1 dereferenceable(1) %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt11_Deque_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #15 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE15_M_destroy_dataESt15_Deque_iteratorIS0_RS0_PS0_ES6_RKS1_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__first, ptr noundef %__last, ptr noundef nonnull align 1 dereferenceable(1) %0) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE5beginEv(ptr noalias sret(%"struct.std::_Deque_iterator") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr noalias sret(%"struct.std::_Deque_iterator") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #9 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #5 - call void @_ZSt9terminatev() #15 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_map, align 8 - %tobool = icmp ne ptr %0, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 - %_M_node4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node4, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %2, i64 1 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %1, ptr noundef %add.ptr) #5 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 0 - %3 = load ptr, ptr %_M_map6, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #5 - br label %if.end - -if.end: ; preds = %if.then, %entry - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl8) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef nonnull align 8 dereferenceable(32) %__x) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_cur2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur2, align 8 - store ptr %1, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %__x.addr, align 8 - %_M_first3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %_M_first3, align 8 - store ptr %3, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - %4 = load ptr, ptr %__x.addr, align 8 - %_M_last4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 2 - %5 = load ptr, ptr %_M_last4, align 8 - store ptr %5, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - %6 = load ptr, ptr %__x.addr, align 8 - %_M_node5 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 3 - %7 = load ptr, ptr %_M_node5, align 8 - store ptr %7, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nstart.addr = alloca ptr, align 8 - %__nfinish.addr = alloca ptr, align 8 - %__n = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__nstart, ptr %__nstart.addr, align 8 - store ptr %__nfinish, ptr %__nfinish.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__nstart.addr, align 8 - store ptr %0, ptr %__n, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %1 = load ptr, ptr %__n, align 8 - %2 = load ptr, ptr %__nfinish.addr, align 8 - %cmp = icmp ult ptr %1, %2 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %3 = load ptr, ptr %__n, align 8 - %4 = load ptr, ptr %3, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %4) #5 - br label %for.inc - -for.inc: ; preds = %for.body - %5 = load ptr, ptr %__n, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %5, i32 1 - store ptr %incdec.ptr, ptr %__n, align 8 - br label %for.cond, !llvm.loop !6 - -for.end: ; preds = %for.cond - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %__map_alloc = alloca %"class.std::allocator.0", align 1 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - invoke void @_ZNSt16allocator_traitsISaIP1AEE10deallocateERS2_PS1_m(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc, ptr noundef %0, i64 noundef %1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #5 - ret void - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #15 - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__p) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__p.addr, align 8 - %call = invoke noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - invoke void @_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef %0, i64 noundef %call) - to label %invoke.cont2 unwind label %terminate.lpad - -invoke.cont2: ; preds = %invoke.cont - ret void - -terminate.lpad: ; preds = %invoke.cont, %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #15 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef %__size) #2 comdat { -entry: - %__size.addr = alloca i64, align 8 - store i64 %__size, ptr %__size.addr, align 8 - %0 = load i64, ptr %__size.addr, align 8 - %cmp = icmp ult i64 %0, 512 - br i1 %cmp, label %cond.true, label %cond.false - -cond.true: ; preds = %entry - %1 = load i64, ptr %__size.addr, align 8 - %div = udiv i64 512, %1 - br label %cond.end - -cond.false: ; preds = %entry - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %div, %cond.true ], [ 1, %cond.false ] - ret i64 %cond -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #10 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr noalias sret(%"class.std::allocator.0") align 1 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - call void @_ZNSaIP1AEC2IS_EERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %agg.result, ptr noundef nonnull align 1 dereferenceable(1) %call) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIP1AEE10deallocateERS2_PS1_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIP1AEC2IS_EERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 1 dereferenceable(1) %0) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #11 - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) - ret void -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #5 - invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - ret void - -lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - cleanup - %1 = extractvalue { ptr, i32 } %0, 0 - store ptr %1, ptr %exn.slot, align 8 - %2 = extractvalue { ptr, i32 } %0, 1 - store i32 %2, ptr %ehselector.slot, align 4 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE11_Deque_implC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__num_elements.addr = alloca i64, align 8 - %__num_nodes = alloca i64, align 8 - %ref.tmp = alloca i64, align 8 - %ref.tmp2 = alloca i64, align 8 - %__nstart = alloca ptr, align 8 - %__nfinish = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i64 %__num_elements, ptr %__num_elements.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__num_elements.addr, align 8 - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %div = udiv i64 %0, %call - %add = add i64 %div, 1 - store i64 %add, ptr %__num_nodes, align 8 - store i64 8, ptr %ref.tmp, align 8 - %1 = load i64, ptr %__num_nodes, align 8 - %add3 = add i64 %1, 2 - store i64 %add3, ptr %ref.tmp2, align 8 - %call4 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp2) - %2 = load i64, ptr %call4, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 1 - store i64 %2, ptr %_M_map_size, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %3 = load i64, ptr %_M_map_size6, align 8 - %call7 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %3) - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 0 - store ptr %call7, ptr %_M_map, align 8 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 0 - %4 = load ptr, ptr %_M_map10, align 8 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 1 - %5 = load i64, ptr %_M_map_size12, align 8 - %6 = load i64, ptr %__num_nodes, align 8 - %sub = sub i64 %5, %6 - %div13 = udiv i64 %sub, 2 - %add.ptr = getelementptr inbounds ptr, ptr %4, i64 %div13 - store ptr %add.ptr, ptr %__nstart, align 8 - %7 = load ptr, ptr %__nstart, align 8 - %8 = load i64, ptr %__num_nodes, align 8 - %add.ptr14 = getelementptr inbounds ptr, ptr %7, i64 %8 - store ptr %add.ptr14, ptr %__nfinish, align 8 - %9 = load ptr, ptr %__nstart, align 8 - %10 = load ptr, ptr %__nfinish, align 8 - invoke void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - br label %try.cont - -lpad: ; preds = %entry - %11 = landingpad { ptr, i32 } - catch ptr null - %12 = extractvalue { ptr, i32 } %11, 0 - store ptr %12, ptr %exn.slot, align 8 - %13 = extractvalue { ptr, i32 } %11, 1 - store i32 %13, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %14 = call ptr @__cxa_begin_catch(ptr %exn) #5 - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 0 - %15 = load ptr, ptr %_M_map16, align 8 - %_M_impl17 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size18 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl17, i32 0, i32 1 - %16 = load i64, ptr %_M_map_size18, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #5 - %_M_impl19 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map20 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl19, i32 0, i32 0 - store ptr null, ptr %_M_map20, align 8 - %_M_impl21 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size22 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl21, i32 0, i32 1 - store i64 0, ptr %_M_map_size22, align 8 - invoke void @__cxa_rethrow() #16 - to label %unreachable unwind label %lpad23 - -lpad23: ; preds = %catch - %17 = landingpad { ptr, i32 } - cleanup - %18 = extractvalue { ptr, i32 } %17, 0 - store ptr %18, ptr %exn.slot, align 8 - %19 = extractvalue { ptr, i32 } %17, 1 - store i32 %19, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont24 unwind label %terminate.lpad - -invoke.cont24: ; preds = %lpad23 - br label %eh.resume - -try.cont: ; preds = %invoke.cont - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 2 - %20 = load ptr, ptr %__nstart, align 8 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start, ptr noundef %20) #5 - %_M_impl26 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl26, i32 0, i32 3 - %21 = load ptr, ptr %__nfinish, align 8 - %add.ptr27 = getelementptr inbounds ptr, ptr %21, i64 -1 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef %add.ptr27) #5 - %_M_impl28 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start29 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl28, i32 0, i32 2 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start29, i32 0, i32 1 - %22 = load ptr, ptr %_M_first, align 8 - %_M_impl30 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start31 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start31, i32 0, i32 0 - store ptr %22, ptr %_M_cur, align 8 - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 - %_M_first34 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish33, i32 0, i32 1 - %23 = load ptr, ptr %_M_first34, align 8 - %24 = load i64, ptr %__num_elements.addr, align 8 - %call35 = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %rem = urem i64 %24, %call35 - %add.ptr36 = getelementptr inbounds %class.A, ptr %23, i64 %rem - %_M_impl37 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish38 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 - %_M_cur39 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 - store ptr %add.ptr36, ptr %_M_cur39, align 8 - ret void - -eh.resume: ; preds = %invoke.cont24 - %exn40 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn40, 0 - %lpad.val41 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val41 - -terminate.lpad: ; preds = %lpad23 - %25 = landingpad { ptr, i32 } - catch ptr null - %26 = extractvalue { ptr, i32 } %25, 0 - call void @__clang_call_terminate(ptr %26) #15 - unreachable - -unreachable: ; preds = %catch - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_map, align 8 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_map_size, align 8 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #5 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorI1ARS0_PS0_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr null, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__b.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__n) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %__map_alloc = alloca %"class.std::allocator.0", align 1 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNKSt11_Deque_baseI1ASaIS0_EE20_M_get_map_allocatorEv(ptr sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %0 = load i64, ptr %__n.addr, align 8 - %call = invoke noundef ptr @_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc, i64 noundef %0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - call void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #5 - ret ptr %call - -lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - cleanup - %2 = extractvalue { ptr, i32 } %1, 0 - store ptr %2, ptr %exn.slot, align 8 - %3 = extractvalue { ptr, i32 } %1, 1 - store i32 %3, ptr %ehselector.slot, align 4 - call void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_create_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__nstart.addr = alloca ptr, align 8 - %__nfinish.addr = alloca ptr, align 8 - %__cur = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store ptr %__nstart, ptr %__nstart.addr, align 8 - store ptr %__nfinish, ptr %__nfinish.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__nstart.addr, align 8 - store ptr %0, ptr %__cur, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %1 = load ptr, ptr %__cur, align 8 - %2 = load ptr, ptr %__nfinish.addr, align 8 - %cmp = icmp ult ptr %1, %2 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %call = invoke noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %for.body - %3 = load ptr, ptr %__cur, align 8 - store ptr %call, ptr %3, align 8 - br label %for.inc - -for.inc: ; preds = %invoke.cont - %4 = load ptr, ptr %__cur, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %__cur, align 8 - br label %for.cond, !llvm.loop !8 - -lpad: ; preds = %for.body - %5 = landingpad { ptr, i32 } - catch ptr null - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %8 = call ptr @__cxa_begin_catch(ptr %exn) #5 - %9 = load ptr, ptr %__nstart.addr, align 8 - %10 = load ptr, ptr %__cur, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_destroy_nodesEPPS0_S4_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) #5 - invoke void @__cxa_rethrow() #16 - to label %unreachable unwind label %lpad2 - -for.end: ; preds = %for.cond - br label %try.cont - -lpad2: ; preds = %catch - %11 = landingpad { ptr, i32 } - cleanup - %12 = extractvalue { ptr, i32 } %11, 0 - store ptr %12, ptr %exn.slot, align 8 - %13 = extractvalue { ptr, i32 } %11, 1 - store i32 %13, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont3 unwind label %terminate.lpad - -invoke.cont3: ; preds = %lpad2 - br label %eh.resume - -try.cont: ; preds = %for.end - ret void - -eh.resume: ; preds = %invoke.cont3 - %exn4 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn4, 0 - %lpad.val5 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val5 - -terminate.lpad: ; preds = %lpad2 - %14 = landingpad { ptr, i32 } - catch ptr null - %15 = extractvalue { ptr, i32 } %14, 0 - call void @__clang_call_terminate(ptr %15) #15 - unreachable - -unreachable: ; preds = %catch - unreachable -} - -declare void @__cxa_rethrow() - -declare void @__cxa_end_catch() - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__new_node.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__new_node, ptr %__new_node.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__new_node.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr %0, ptr %_M_node, align 8 - %1 = load ptr, ptr %__new_node.addr, align 8 - %2 = load ptr, ptr %1, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr %2, ptr %_M_first, align 8 - %_M_first2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %3 = load ptr, ptr %_M_first2, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #5 - %add.ptr = getelementptr inbounds %class.A, ptr %3, i64 %call - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr %add.ptr, ptr %_M_last, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIP1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #17 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIP1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #12 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #13 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %call2 = call noundef ptr @_ZNSt16allocator_traitsISaI1AEE8allocateERS1_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, i64 noundef %call) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaI1AEE8allocateERS1_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #17 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #2 comdat align 2 { -entry: - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - ret i64 %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 - %1 = load ptr, ptr %_M_last, align 8 - %add.ptr = getelementptr inbounds %class.A, ptr %1, i64 -1 - %cmp = icmp ne ptr %0, %add.ptr - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur7 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur7, align 8 - %3 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #5 - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish9 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 - %_M_cur10 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur10, align 8 - %incdec.ptr = getelementptr inbounds %class.A, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_cur10, align 8 - br label %if.end - -if.else: ; preds = %entry - %5 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef nonnull align 8 dereferenceable(8) %5) - br label %if.end - -if.end: ; preds = %if.else, %if.then - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JRKS1_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNKSt5dequeI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call2 = call noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %cmp = icmp eq i64 %call, %call2 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt20__throw_length_errorPKc(ptr noundef @.str.3) #16 - unreachable - -if.end: ; preds = %entry - call void @_ZNSt5dequeI1ASaIS0_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 1) - %call3 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %0 = load ptr, ptr %_M_node, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %0, i64 1 - store ptr %call3, ptr %add.ptr, align 8 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 - %_M_node11 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish10, i32 0, i32 3 - %3 = load ptr, ptr %_M_node11, align 8 - %add.ptr12 = getelementptr inbounds ptr, ptr %3, i64 1 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish8, ptr noundef %add.ptr12) #5 - %_M_impl13 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish14 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl13, i32 0, i32 3 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish14, i32 0, i32 1 - %4 = load ptr, ptr %_M_first, align 8 - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 3 - %_M_cur17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish16, i32 0, i32 0 - store ptr %4, ptr %_M_cur17, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JRKS1_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %call = call noundef i64 @_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call2 = call noundef i64 @_ZNSt5dequeI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %call) #5 - ret i64 %call2 -} - -; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #12 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__nodes_to_add) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nodes_to_add.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__nodes_to_add, ptr %__nodes_to_add.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__nodes_to_add.addr, align 8 - %add = add i64 %0, 1 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 1 - %1 = load i64, ptr %_M_map_size, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 0 - %3 = load ptr, ptr %_M_map, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %2 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %sub = sub i64 %1, %sub.ptr.div - %cmp = icmp ugt i64 %add, %sub - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load i64, ptr %__nodes_to_add.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) - br label %if.end - -if.end: ; preds = %if.then, %entry - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorI1ARS0_PS0_ES5_(ptr noundef nonnull align 8 dereferenceable(32) %__x, ptr noundef nonnull align 8 dereferenceable(32) %__y) #2 comdat { -entry: - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorI1ARS0_PS0_E14_S_buffer_sizeEv() #5 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %2 = load ptr, ptr %__y.addr, align 8 - %_M_node1 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 - %3 = load ptr, ptr %_M_node1, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %sub = sub nsw i64 %sub.ptr.div, 1 - %mul = mul nsw i64 %call, %sub - %4 = load ptr, ptr %__x.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 0 - %5 = load ptr, ptr %_M_cur, align 8 - %6 = load ptr, ptr %__x.addr, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 1 - %7 = load ptr, ptr %_M_first, align 8 - %sub.ptr.lhs.cast2 = ptrtoint ptr %5 to i64 - %sub.ptr.rhs.cast3 = ptrtoint ptr %7 to i64 - %sub.ptr.sub4 = sub i64 %sub.ptr.lhs.cast2, %sub.ptr.rhs.cast3 - %sub.ptr.div5 = sdiv exact i64 %sub.ptr.sub4, 8 - %add = add nsw i64 %mul, %sub.ptr.div5 - %8 = load ptr, ptr %__y.addr, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %8, i32 0, i32 2 - %9 = load ptr, ptr %_M_last, align 8 - %10 = load ptr, ptr %__y.addr, align 8 - %_M_cur6 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %10, i32 0, i32 0 - %11 = load ptr, ptr %_M_cur6, align 8 - %sub.ptr.lhs.cast7 = ptrtoint ptr %9 to i64 - %sub.ptr.rhs.cast8 = ptrtoint ptr %11 to i64 - %sub.ptr.sub9 = sub i64 %sub.ptr.lhs.cast7, %sub.ptr.rhs.cast8 - %sub.ptr.div10 = sdiv exact i64 %sub.ptr.sub9, 8 - %add11 = add nsw i64 %add, %sub.ptr.div10 - ret i64 %add11 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt5dequeI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %__a.addr = alloca ptr, align 8 - %__diffmax = alloca i64, align 8 - %__allocmax = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 9223372036854775807, ptr %__diffmax, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNSt16allocator_traitsISaI1AEE8max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %0) #5 - store i64 %call, ptr %__allocmax, align 8 - %call1 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__diffmax, ptr noundef nonnull align 8 dereferenceable(8) %__allocmax) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %1 = load i64, ptr %call1, align 8 - ret i64 %1 - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #15 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt16allocator_traitsISaI1AEE8max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %0) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__b.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__a.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__nodes_to_add, i1 noundef zeroext %__add_at_front) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nodes_to_add.addr = alloca i64, align 8 - %__add_at_front.addr = alloca i8, align 1 - %__old_num_nodes = alloca i64, align 8 - %__new_num_nodes = alloca i64, align 8 - %__new_nstart = alloca ptr, align 8 - %__new_map_size = alloca i64, align 8 - %__new_map = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__nodes_to_add, ptr %__nodes_to_add.addr, align 8 - %frombool = zext i1 %__add_at_front to i8 - store i8 %frombool, ptr %__add_at_front.addr, align 1 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %0 = load ptr, ptr %_M_node, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node3, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %add = add nsw i64 %sub.ptr.div, 1 - store i64 %add, ptr %__old_num_nodes, align 8 - %2 = load i64, ptr %__old_num_nodes, align 8 - %3 = load i64, ptr %__nodes_to_add.addr, align 8 - %add4 = add i64 %2, %3 - store i64 %add4, ptr %__new_num_nodes, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - %5 = load i64, ptr %__new_num_nodes, align 8 - %mul = mul i64 2, %5 - %cmp = icmp ugt i64 %4, %mul - br i1 %cmp, label %if.then, label %if.else31 - -if.then: ; preds = %entry - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 0 - %6 = load ptr, ptr %_M_map, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %7 = load i64, ptr %_M_map_size8, align 8 - %8 = load i64, ptr %__new_num_nodes, align 8 - %sub = sub i64 %7, %8 - %div = udiv i64 %sub, 2 - %add.ptr = getelementptr inbounds ptr, ptr %6, i64 %div - %9 = load i8, ptr %__add_at_front.addr, align 1 - %tobool = trunc i8 %9 to i1 - br i1 %tobool, label %cond.true, label %cond.false - -cond.true: ; preds = %if.then - %10 = load i64, ptr %__nodes_to_add.addr, align 8 - br label %cond.end - -cond.false: ; preds = %if.then - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %10, %cond.true ], [ 0, %cond.false ] - %add.ptr9 = getelementptr inbounds ptr, ptr %add.ptr, i64 %cond - store ptr %add.ptr9, ptr %__new_nstart, align 8 - %11 = load ptr, ptr %__new_nstart, align 8 - %_M_impl10 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start11 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl10, i32 0, i32 2 - %_M_node12 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start11, i32 0, i32 3 - %12 = load ptr, ptr %_M_node12, align 8 - %cmp13 = icmp ult ptr %11, %12 - br i1 %cmp13, label %if.then14, label %if.else - -if.then14: ; preds = %cond.end - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 - %_M_node17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start16, i32 0, i32 3 - %13 = load ptr, ptr %_M_node17, align 8 - %_M_impl18 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish19 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 - %_M_node20 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish19, i32 0, i32 3 - %14 = load ptr, ptr %_M_node20, align 8 - %add.ptr21 = getelementptr inbounds ptr, ptr %14, i64 1 - %15 = load ptr, ptr %__new_nstart, align 8 - %call = call noundef ptr @_ZSt4copyIPP1AS2_ET0_T_S4_S3_(ptr noundef %13, ptr noundef %add.ptr21, ptr noundef %15) - br label %if.end - -if.else: ; preds = %cond.end - %_M_impl22 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start23 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 - %_M_node24 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start23, i32 0, i32 3 - %16 = load ptr, ptr %_M_node24, align 8 - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish26 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 - %_M_node27 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish26, i32 0, i32 3 - %17 = load ptr, ptr %_M_node27, align 8 - %add.ptr28 = getelementptr inbounds ptr, ptr %17, i64 1 - %18 = load ptr, ptr %__new_nstart, align 8 - %19 = load i64, ptr %__old_num_nodes, align 8 - %add.ptr29 = getelementptr inbounds ptr, ptr %18, i64 %19 - %call30 = call noundef ptr @_ZSt13copy_backwardIPP1AS2_ET0_T_S4_S3_(ptr noundef %16, ptr noundef %add.ptr28, ptr noundef %add.ptr29) - br label %if.end - -if.end: ; preds = %if.else, %if.then14 - br label %if.end65 - -if.else31: ; preds = %entry - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 1 - %20 = load i64, ptr %_M_map_size33, align 8 - %_M_impl34 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size35 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl34, i32 0, i32 1 - %call36 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %_M_map_size35, ptr noundef nonnull align 8 dereferenceable(8) %__nodes_to_add.addr) - %21 = load i64, ptr %call36, align 8 - %add37 = add i64 %20, %21 - %add38 = add i64 %add37, 2 - store i64 %add38, ptr %__new_map_size, align 8 - %22 = load i64, ptr %__new_map_size, align 8 - %call39 = call noundef ptr @_ZNSt11_Deque_baseI1ASaIS0_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %22) - store ptr %call39, ptr %__new_map, align 8 - %23 = load ptr, ptr %__new_map, align 8 - %24 = load i64, ptr %__new_map_size, align 8 - %25 = load i64, ptr %__new_num_nodes, align 8 - %sub40 = sub i64 %24, %25 - %div41 = udiv i64 %sub40, 2 - %add.ptr42 = getelementptr inbounds ptr, ptr %23, i64 %div41 - %26 = load i8, ptr %__add_at_front.addr, align 1 - %tobool43 = trunc i8 %26 to i1 - br i1 %tobool43, label %cond.true44, label %cond.false45 - -cond.true44: ; preds = %if.else31 - %27 = load i64, ptr %__nodes_to_add.addr, align 8 - br label %cond.end46 - -cond.false45: ; preds = %if.else31 - br label %cond.end46 - -cond.end46: ; preds = %cond.false45, %cond.true44 - %cond47 = phi i64 [ %27, %cond.true44 ], [ 0, %cond.false45 ] - %add.ptr48 = getelementptr inbounds ptr, ptr %add.ptr42, i64 %cond47 - store ptr %add.ptr48, ptr %__new_nstart, align 8 - %_M_impl49 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start50 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl49, i32 0, i32 2 - %_M_node51 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start50, i32 0, i32 3 - %28 = load ptr, ptr %_M_node51, align 8 - %_M_impl52 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish53 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 - %_M_node54 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish53, i32 0, i32 3 - %29 = load ptr, ptr %_M_node54, align 8 - %add.ptr55 = getelementptr inbounds ptr, ptr %29, i64 1 - %30 = load ptr, ptr %__new_nstart, align 8 - %call56 = call noundef ptr @_ZSt4copyIPP1AS2_ET0_T_S4_S3_(ptr noundef %28, ptr noundef %add.ptr55, ptr noundef %30) - %_M_impl57 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map58 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl57, i32 0, i32 0 - %31 = load ptr, ptr %_M_map58, align 8 - %_M_impl59 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size60 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl59, i32 0, i32 1 - %32 = load i64, ptr %_M_map_size60, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE17_M_deallocate_mapEPPS0_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #5 - %33 = load ptr, ptr %__new_map, align 8 - %_M_impl61 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map62 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl61, i32 0, i32 0 - store ptr %33, ptr %_M_map62, align 8 - %34 = load i64, ptr %__new_map_size, align 8 - %_M_impl63 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size64 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl63, i32 0, i32 1 - store i64 %34, ptr %_M_map_size64, align 8 - br label %if.end65 - -if.end65: ; preds = %cond.end46, %if.end - %_M_impl66 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start67 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl66, i32 0, i32 2 - %35 = load ptr, ptr %__new_nstart, align 8 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start67, ptr noundef %35) #5 - %_M_impl68 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish69 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl68, i32 0, i32 3 - %36 = load ptr, ptr %__new_nstart, align 8 - %37 = load i64, ptr %__old_num_nodes, align 8 - %add.ptr70 = getelementptr inbounds ptr, ptr %36, i64 %37 - %add.ptr71 = getelementptr inbounds ptr, ptr %add.ptr70, i64 -1 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish69, ptr noundef %add.ptr71) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt4copyIPP1AS2_ET0_T_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__miter_baseIPP1AET_S3_(ptr noundef %0) - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__miter_baseIPP1AET_S3_(ptr noundef %1) - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt13__copy_move_aILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %call, ptr noundef %call1, ptr noundef %2) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt13copy_backwardIPP1AS2_ET0_T_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__miter_baseIPP1AET_S3_(ptr noundef %0) - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__miter_baseIPP1AET_S3_(ptr noundef %1) - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt22__copy_move_backward_aILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %call, ptr noundef %call1, ptr noundef %2) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt13__copy_move_aILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %0) #5 - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #5 - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #5 - %call3 = call noundef ptr @_ZSt14__copy_move_a1ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %call, ptr noundef %call1, ptr noundef %call2) - %call4 = call noundef ptr @_ZSt12__niter_wrapIPP1AET_RKS3_S3_(ptr noundef nonnull align 8 dereferenceable(8) %__result.addr, ptr noundef %call3) - ret ptr %call4 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__miter_baseIPP1AET_S3_(ptr noundef %__it) #2 comdat { -entry: - %__it.addr = alloca ptr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %0 = load ptr, ptr %__it.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__niter_wrapIPP1AET_RKS3_S3_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %__res) #2 comdat { -entry: - %.addr = alloca ptr, align 8 - %__res.addr = alloca ptr, align 8 - store ptr %0, ptr %.addr, align 8 - store ptr %__res, ptr %__res.addr, align 8 - %1 = load ptr, ptr %__res.addr, align 8 - ret ptr %1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt14__copy_move_a1ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZSt14__copy_move_a2ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %__it) #2 comdat { -entry: - %__it.addr = alloca ptr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %0 = load ptr, ptr %__it.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt14__copy_move_a2ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AEEPT_PKS5_S8_S6_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIP1AEEPT_PKS5_S8_S6_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #2 comdat align 2 { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %_Num = alloca i64, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__last.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - store i64 %sub.ptr.div, ptr %_Num, align 8 - %2 = load i64, ptr %_Num, align 8 - %tobool = icmp ne i64 %2, 0 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %3 = load ptr, ptr %__result.addr, align 8 - %4 = load ptr, ptr %__first.addr, align 8 - %5 = load i64, ptr %_Num, align 8 - %mul = mul i64 8, %5 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %3, ptr align 8 %4, i64 %mul, i1 false) - br label %if.end - -if.end: ; preds = %if.then, %entry - %6 = load ptr, ptr %__result.addr, align 8 - %7 = load i64, ptr %_Num, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %6, i64 %7 - ret ptr %add.ptr -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #14 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt22__copy_move_backward_aILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %0) #5 - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #5 - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #5 - %call3 = call noundef ptr @_ZSt23__copy_move_backward_a1ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %call, ptr noundef %call1, ptr noundef %call2) - %call4 = call noundef ptr @_ZSt12__niter_wrapIPP1AET_RKS3_S3_(ptr noundef nonnull align 8 dereferenceable(8) %__result.addr, ptr noundef %call3) - ret ptr %call4 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt23__copy_move_backward_a1ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZSt23__copy_move_backward_a2ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt23__copy_move_backward_a2ILb0EPP1AS2_ET1_T0_S4_S3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AEEPT_PKS5_S8_S6_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIP1AEEPT_PKS5_S8_S6_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #2 comdat align 2 { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %_Num = alloca i64, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__last.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - store i64 %sub.ptr.div, ptr %_Num, align 8 - %2 = load i64, ptr %_Num, align 8 - %tobool = icmp ne i64 %2, 0 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %3 = load ptr, ptr %__result.addr, align 8 - %4 = load i64, ptr %_Num, align 8 - %idx.neg = sub i64 0, %4 - %add.ptr = getelementptr inbounds ptr, ptr %3, i64 %idx.neg - %5 = load ptr, ptr %__first.addr, align 8 - %6 = load i64, ptr %_Num, align 8 - %mul = mul i64 8, %6 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr, ptr align 8 %5, i64 %mul, i1 false) - br label %if.end - -if.end: ; preds = %if.then, %entry - %7 = load ptr, ptr %__result.addr, align 8 - %8 = load i64, ptr %_Num, align 8 - %idx.neg1 = sub i64 0, %8 - %add.ptr2 = getelementptr inbounds ptr, ptr %7, i64 %idx.neg1 - ret ptr %add.ptr2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeI1ASaIS0_EE4backEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__tmp = alloca %"struct.std::_Deque_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeI1ASaIS0_EE3endEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %__tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorI1ARS0_PS0_EmmEv(ptr noundef nonnull align 8 dereferenceable(32) %__tmp) #5 - %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %__tmp) #5 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorI1ARS0_PS0_EmmEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %_M_first, align 8 - %cmp = icmp eq ptr %0, %1 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %2, i64 -1 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %this1, ptr noundef %add.ptr) #5 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - %3 = load ptr, ptr %_M_last, align 8 - %_M_cur2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - store ptr %3, ptr %_M_cur2, align 8 - br label %if.end - -if.end: ; preds = %if.then, %entry - %_M_cur3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur3, align 8 - %incdec.ptr = getelementptr inbounds %class.A, ptr %4, i32 -1 - store ptr %incdec.ptr, ptr %_M_cur3, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorI1ARS0_PS0_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 1 - %1 = load ptr, ptr %_M_first, align 8 - %cmp = icmp ne ptr %0, %1 - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish5 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 3 - %_M_cur6 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish5, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur6, align 8 - %incdec.ptr = getelementptr inbounds %class.A, ptr %2, i32 -1 - store ptr %incdec.ptr, ptr %_M_cur6, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 - %_M_cur9 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish8, i32 0, i32 0 - %3 = load ptr, ptr %_M_cur9, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE7destroyIS0_EEvRS1_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %3) #5 - br label %if.end - -if.else: ; preds = %entry - invoke void @_ZNSt5dequeI1ASaIS0_EE15_M_pop_back_auxEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %if.else - br label %if.end - -if.end: ; preds = %invoke.cont, %if.then - ret void - -terminate.lpad: ; preds = %if.else - %4 = landingpad { ptr, i32 } - catch ptr null - %5 = extractvalue { ptr, i32 } %4, 0 - call void @__clang_call_terminate(ptr %5) #15 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaI1AEE7destroyIS0_EEvRS1_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AE7destroyIS1_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeI1ASaIS0_EE15_M_pop_back_auxEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 1 - %0 = load ptr, ptr %_M_first, align 8 - call void @_ZNSt11_Deque_baseI1ASaIS0_EE18_M_deallocate_nodeEPS0_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %0) #5 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish5 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish5, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %1, i64 -1 - call void @_ZNSt15_Deque_iteratorI1ARS0_PS0_E11_M_set_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish3, ptr noundef %add.ptr) #5 - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish7 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 3 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish7, i32 0, i32 2 - %2 = load ptr, ptr %_M_last, align 8 - %add.ptr8 = getelementptr inbounds %class.A, ptr %2, i64 -1 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish10, i32 0, i32 0 - store ptr %add.ptr8, ptr %_M_cur, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 3 - %_M_cur13 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish12, i32 0, i32 0 - %3 = load ptr, ptr %_M_cur13, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE7destroyIS0_EEvRS1_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %3) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AE7destroyIS1_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_stack_1.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noinline uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #12 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #13 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #14 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #15 = { noreturn nounwind } -attributes #16 = { noreturn } -attributes #17 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} diff --git a/test_cases_bc/basic_cpp_tests/stack-2.cpp.bc b/test_cases_bc/basic_cpp_tests/stack-2.cpp.bc deleted file mode 100644 index f87961b2..00000000 --- a/test_cases_bc/basic_cpp_tests/stack-2.cpp.bc +++ /dev/null @@ -1,2477 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/stack-2.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/stack-2.cpp" -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-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%"class.std::stack" = type { %"class.std::deque" } -%"class.std::deque" = type { %"class.std::_Deque_base" } -%"class.std::_Deque_base" = type { %"struct.std::_Deque_base>::_Deque_impl" } -%"struct.std::_Deque_base>::_Deque_impl" = type { %"struct.std::_Deque_base>::_Deque_impl_data" } -%"struct.std::_Deque_base>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" } -%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr } -%class.A = type { ptr } -%"class.std::allocator.0" = type { i8 } - -$_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEEC2IS5_vEEv = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEE4pushEOS2_ = comdat any - -$_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEE3topEv = comdat any - -$_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEE3popEv = comdat any - -$_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEED2Ev = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EED2Ev = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_ = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE5beginEv = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE3endEv = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EED2Ev = comdat any - -$_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2ERKS5_ = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_ = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implD2Ev = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_ = comdat any - -$_ZNSt16allocator_traitsISaIPK1AEE10deallocateERS3_PS2_m = comdat any - -$_ZSt16__deque_buf_sizem = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AE10deallocateEPS3_m = comdat any - -$_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv = comdat any - -$_ZNSt16allocator_traitsISaIPPK1AEE10deallocateERS4_PS3_m = comdat any - -$_ZNSaIPPK1AED2Ev = comdat any - -$_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv = comdat any - -$_ZNSaIPPK1AEC2IS1_EERKSaIT_E = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPPK1AEC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPPK1AE10deallocateEPS4_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPPK1AED2Ev = comdat any - -$_ZNSaIPK1AED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AED2Ev = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EEC2Ev = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EEC2Ev = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implC2Ev = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm = comdat any - -$_ZNSaIPK1AEC2Ev = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE16_Deque_impl_dataC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AEC2Ev = comdat any - -$_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2Ev = comdat any - -$_ZSt3maxImERKT_S2_S2_ = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_ = comdat any - -$_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_ = comdat any - -$_ZNSt16allocator_traitsISaIPPK1AEE8allocateERS4_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPPK1AE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIPPK1AE11_M_max_sizeEv = comdat any - -$_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv = comdat any - -$_ZNSt16allocator_traitsISaIPK1AEE8allocateERS3_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIPK1AE11_M_max_sizeEv = comdat any - -$_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE9push_backEOS2_ = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_ = comdat any - -$_ZNSt16allocator_traitsISaIPK1AEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_ = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE16_M_push_back_auxIJS2_EEEvDpOT_ = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE4backEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AE9constructIS3_JS3_EEEvPT_DpOT0_ = comdat any - -$_ZNKSt5dequeIPK1ASaIS2_EE4sizeEv = comdat any - -$_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE22_M_reserve_map_at_backEm = comdat any - -$_ZStmiRKSt15_Deque_iteratorIPK1ARS2_PS2_ES7_ = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE11_S_max_sizeERKS3_ = comdat any - -$_ZNSt16allocator_traitsISaIPK1AEE8max_sizeERKS3_ = comdat any - -$_ZSt3minImERKT_S2_S2_ = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIPK1AE8max_sizeEv = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE17_M_reallocate_mapEmb = comdat any - -$_ZSt4copyIPPPK1AS4_ET0_T_S6_S5_ = comdat any - -$_ZSt13copy_backwardIPPPK1AS4_ET0_T_S6_S5_ = comdat any - -$_ZSt13__copy_move_aILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any - -$_ZSt12__miter_baseIPPPK1AET_S5_ = comdat any - -$_ZSt12__niter_wrapIPPPK1AET_RKS5_S5_ = comdat any - -$_ZSt14__copy_move_a1ILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any - -$_ZSt12__niter_baseIPPPK1AET_S5_ = comdat any - -$_ZSt14__copy_move_a2ILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any - -$_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPPK1AEEPT_PKS7_SA_S8_ = comdat any - -$_ZSt22__copy_move_backward_aILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any - -$_ZSt23__copy_move_backward_a1ILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any - -$_ZSt23__copy_move_backward_a2ILb0EPPPK1AS4_ET1_T0_S6_S5_ = comdat any - -$_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPPK1AEEPT_PKS7_SA_S8_ = comdat any - -$_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv = comdat any - -$_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE8pop_backEv = comdat any - -$_ZNSt16allocator_traitsISaIPK1AEE7destroyIS2_EEvRS3_PT_ = comdat any - -$_ZNSt5dequeIPK1ASaIS2_EE15_M_pop_back_auxEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AE7destroyIS3_EEvPT_ = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 -@__dso_handle = external hidden global i8 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@.str.3 = private unnamed_addr constant [48 x i8] c"cannot create std::deque larger than max_size()\00", align 1 -@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_stack_2.cpp, ptr null }] - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init() #3 section ".text.startup" { -entry: - call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = call i32 @__cxa_atexit(ptr @_ZNSt8ios_base4InitD1Ev, ptr @_ZStL8__ioinit, ptr @__dso_handle) #5 - ret void -} - -declare void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 - -; Function Attrs: nounwind -declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 - -; Function Attrs: nounwind -declare i32 @__cxa_atexit(ptr, ptr, ptr) #5 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #6 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %astack = alloca %"class.std::stack", align 8 - %a = alloca %class.A, align 8 - %ref.tmp = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEEC2IS5_vEEv(ptr noundef nonnull align 8 dereferenceable(80) %astack) - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 - store ptr %a, ptr %ref.tmp, align 8 - invoke void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEE4pushEOS2_(ptr noundef nonnull align 8 dereferenceable(80) %astack, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %call = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEE3topEv(ptr noundef nonnull align 8 dereferenceable(80) %astack) - to label %invoke.cont1 unwind label %lpad - -invoke.cont1: ; preds = %invoke.cont - %0 = load ptr, ptr %call, align 8 - store ptr %0, ptr %aptr, align 8 - invoke void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %astack) - to label %invoke.cont2 unwind label %lpad - -invoke.cont2: ; preds = %invoke.cont1 - %1 = load ptr, ptr %aptr, align 8 - %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) - to label %invoke.cont3 unwind label %lpad - -invoke.cont3: ; preds = %invoke.cont2 - store i32 0, ptr %retval, align 4 - call void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %astack) #5 - %4 = load i32, ptr %retval, align 4 - ret i32 %4 - -lpad: ; preds = %invoke.cont2, %invoke.cont1, %invoke.cont, %entry - %5 = landingpad { ptr, i32 } - cleanup - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - call void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %astack) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val4 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val4 -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEEC2IS5_vEEv(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::stack", ptr %this1, i32 0, i32 0 - call void @llvm.memset.p0.i64(ptr align 8 %c, i8 0, i64 80, i1 false) - call void @_ZNSt5dequeIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %c) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEE4pushEOS2_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::stack", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(80) %c, ptr noundef nonnull align 8 dereferenceable(8) %0) - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEE3topEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::stack", ptr %this1, i32 0, i32 0 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(80) %c) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::stack", ptr %this1, i32 0, i32 0 - call void @_ZNSt5dequeIPK1ASaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(80) %c) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5stackIPK1ASt5dequeIS2_SaIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %c = getelementptr inbounds %"class.std::stack", ptr %this1, i32 0, i32 0 - call void @_ZNSt5dequeIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %c) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #8 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_Deque_iterator", align 8 - %agg.tmp2 = alloca %"struct.std::_Deque_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - call void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %agg.tmp2, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - invoke void @_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %agg.tmp, ptr noundef %agg.tmp2, ptr noundef nonnull align 1 dereferenceable(1) %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #15 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE15_M_destroy_dataESt15_Deque_iteratorIS2_RS2_PS2_ES8_RKS3_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__first, ptr noundef %__last, ptr noundef nonnull align 1 dereferenceable(1) %0) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE5beginEv(ptr noalias sret(%"struct.std::_Deque_iterator") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr noalias sret(%"struct.std::_Deque_iterator") align 8 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #9 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #5 - call void @_ZSt9terminatev() #15 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_map, align 8 - %tobool = icmp ne ptr %0, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 3 - %_M_node4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node4, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %2, i64 1 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %1, ptr noundef %add.ptr) #5 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 0 - %3 = load ptr, ptr %_M_map6, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %3, i64 noundef %4) #5 - br label %if.end - -if.end: ; preds = %if.then, %entry - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl8) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef nonnull align 8 dereferenceable(32) %__x) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_cur2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur2, align 8 - store ptr %1, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %__x.addr, align 8 - %_M_first3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %_M_first3, align 8 - store ptr %3, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - %4 = load ptr, ptr %__x.addr, align 8 - %_M_last4 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 2 - %5 = load ptr, ptr %_M_last4, align 8 - store ptr %5, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - %6 = load ptr, ptr %__x.addr, align 8 - %_M_node5 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 3 - %7 = load ptr, ptr %_M_node5, align 8 - store ptr %7, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nstart.addr = alloca ptr, align 8 - %__nfinish.addr = alloca ptr, align 8 - %__n = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__nstart, ptr %__nstart.addr, align 8 - store ptr %__nfinish, ptr %__nfinish.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__nstart.addr, align 8 - store ptr %0, ptr %__n, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %1 = load ptr, ptr %__n, align 8 - %2 = load ptr, ptr %__nfinish.addr, align 8 - %cmp = icmp ult ptr %1, %2 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %3 = load ptr, ptr %__n, align 8 - %4 = load ptr, ptr %3, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %4) #5 - br label %for.inc - -for.inc: ; preds = %for.body - %5 = load ptr, ptr %__n, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %5, i32 1 - store ptr %incdec.ptr, ptr %__n, align 8 - br label %for.cond, !llvm.loop !6 - -for.end: ; preds = %for.cond - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__p, i64 noundef %__n) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %__map_alloc = alloca %"class.std::allocator.0", align 1 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv(ptr sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - invoke void @_ZNSt16allocator_traitsISaIPPK1AEE10deallocateERS4_PS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc, ptr noundef %0, i64 noundef %1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSaIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #5 - ret void - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #15 - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__p) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__p.addr, align 8 - %call = invoke noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - invoke void @_ZNSt16allocator_traitsISaIPK1AEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef %0, i64 noundef %call) - to label %invoke.cont2 unwind label %terminate.lpad - -invoke.cont2: ; preds = %invoke.cont - ret void - -terminate.lpad: ; preds = %invoke.cont, %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #15 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIPK1AEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPK1AE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef %__size) #2 comdat { -entry: - %__size.addr = alloca i64, align 8 - store i64 %__size, ptr %__size.addr, align 8 - %0 = load i64, ptr %__size.addr, align 8 - %cmp = icmp ult i64 %0, 512 - br i1 %cmp, label %cond.true, label %cond.false - -cond.true: ; preds = %entry - %1 = load i64, ptr %__size.addr, align 8 - %div = udiv i64 512, %1 - br label %cond.end - -cond.false: ; preds = %entry - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %div, %cond.true ], [ 1, %cond.false ] - ret i64 %cond -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPK1AE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #10 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv(ptr noalias sret(%"class.std::allocator.0") align 1 %agg.result, ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %result.ptr = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - call void @_ZNSaIPPK1AEC2IS1_EERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %agg.result, ptr noundef nonnull align 1 dereferenceable(1) %call) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIPPK1AEE10deallocateERS4_PS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPPK1AE10deallocateEPS4_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPPK1AEC2IS1_EERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 1 dereferenceable(1) %0) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPPK1AE10deallocateEPS4_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #11 - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) - ret void -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #5 - invoke void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - ret void - -lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - cleanup - %1 = extractvalue { ptr, i32 } %0, 0 - store ptr %1, ptr %exn.slot, align 8 - %2 = extractvalue { ptr, i32 } %0, 1 - store i32 %2, ptr %ehselector.slot, align 4 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %_M_impl) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE11_Deque_implC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_initialize_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__num_elements) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__num_elements.addr = alloca i64, align 8 - %__num_nodes = alloca i64, align 8 - %ref.tmp = alloca i64, align 8 - %ref.tmp2 = alloca i64, align 8 - %__nstart = alloca ptr, align 8 - %__nfinish = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i64 %__num_elements, ptr %__num_elements.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__num_elements.addr, align 8 - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %div = udiv i64 %0, %call - %add = add i64 %div, 1 - store i64 %add, ptr %__num_nodes, align 8 - store i64 8, ptr %ref.tmp, align 8 - %1 = load i64, ptr %__num_nodes, align 8 - %add3 = add i64 %1, 2 - store i64 %add3, ptr %ref.tmp2, align 8 - %call4 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp2) - %2 = load i64, ptr %call4, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 1 - store i64 %2, ptr %_M_map_size, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %3 = load i64, ptr %_M_map_size6, align 8 - %call7 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %3) - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 0 - store ptr %call7, ptr %_M_map, align 8 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 0 - %4 = load ptr, ptr %_M_map10, align 8 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 1 - %5 = load i64, ptr %_M_map_size12, align 8 - %6 = load i64, ptr %__num_nodes, align 8 - %sub = sub i64 %5, %6 - %div13 = udiv i64 %sub, 2 - %add.ptr = getelementptr inbounds ptr, ptr %4, i64 %div13 - store ptr %add.ptr, ptr %__nstart, align 8 - %7 = load ptr, ptr %__nstart, align 8 - %8 = load i64, ptr %__num_nodes, align 8 - %add.ptr14 = getelementptr inbounds ptr, ptr %7, i64 %8 - store ptr %add.ptr14, ptr %__nfinish, align 8 - %9 = load ptr, ptr %__nstart, align 8 - %10 = load ptr, ptr %__nfinish, align 8 - invoke void @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - br label %try.cont - -lpad: ; preds = %entry - %11 = landingpad { ptr, i32 } - catch ptr null - %12 = extractvalue { ptr, i32 } %11, 0 - store ptr %12, ptr %exn.slot, align 8 - %13 = extractvalue { ptr, i32 } %11, 1 - store i32 %13, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %14 = call ptr @__cxa_begin_catch(ptr %exn) #5 - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 0 - %15 = load ptr, ptr %_M_map16, align 8 - %_M_impl17 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size18 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl17, i32 0, i32 1 - %16 = load i64, ptr %_M_map_size18, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %15, i64 noundef %16) #5 - %_M_impl19 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map20 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl19, i32 0, i32 0 - store ptr null, ptr %_M_map20, align 8 - %_M_impl21 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size22 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl21, i32 0, i32 1 - store i64 0, ptr %_M_map_size22, align 8 - invoke void @__cxa_rethrow() #16 - to label %unreachable unwind label %lpad23 - -lpad23: ; preds = %catch - %17 = landingpad { ptr, i32 } - cleanup - %18 = extractvalue { ptr, i32 } %17, 0 - store ptr %18, ptr %exn.slot, align 8 - %19 = extractvalue { ptr, i32 } %17, 1 - store i32 %19, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont24 unwind label %terminate.lpad - -invoke.cont24: ; preds = %lpad23 - br label %eh.resume - -try.cont: ; preds = %invoke.cont - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 2 - %20 = load ptr, ptr %__nstart, align 8 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start, ptr noundef %20) #5 - %_M_impl26 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl26, i32 0, i32 3 - %21 = load ptr, ptr %__nfinish, align 8 - %add.ptr27 = getelementptr inbounds ptr, ptr %21, i64 -1 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef %add.ptr27) #5 - %_M_impl28 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start29 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl28, i32 0, i32 2 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start29, i32 0, i32 1 - %22 = load ptr, ptr %_M_first, align 8 - %_M_impl30 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start31 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl30, i32 0, i32 2 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start31, i32 0, i32 0 - store ptr %22, ptr %_M_cur, align 8 - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 3 - %_M_first34 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish33, i32 0, i32 1 - %23 = load ptr, ptr %_M_first34, align 8 - %24 = load i64, ptr %__num_elements.addr, align 8 - %call35 = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %rem = urem i64 %24, %call35 - %add.ptr36 = getelementptr inbounds ptr, ptr %23, i64 %rem - %_M_impl37 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish38 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl37, i32 0, i32 3 - %_M_cur39 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish38, i32 0, i32 0 - store ptr %add.ptr36, ptr %_M_cur39, align 8 - ret void - -eh.resume: ; preds = %invoke.cont24 - %exn40 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn40, 0 - %lpad.val41 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val41 - -terminate.lpad: ; preds = %lpad23 - %25 = landingpad { ptr, i32 } - catch ptr null - %26 = extractvalue { ptr, i32 } %25, 0 - call void @__clang_call_terminate(ptr %26) #15 - unreachable - -unreachable: ; preds = %catch - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_Deque_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(80) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_map, align 8 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_map_size, align 8 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 2 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #5 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %this1, i32 0, i32 3 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %this) unnamed_addr #8 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_first, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_last, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr null, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__b.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__n) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %__map_alloc = alloca %"class.std::allocator.0", align 1 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNKSt11_Deque_baseIPK1ASaIS2_EE20_M_get_map_allocatorEv(ptr sret(%"class.std::allocator.0") align 1 %__map_alloc, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %0 = load i64, ptr %__n.addr, align 8 - %call = invoke noundef ptr @_ZNSt16allocator_traitsISaIPPK1AEE8allocateERS4_m(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc, i64 noundef %0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - call void @_ZNSaIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #5 - ret ptr %call - -lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - cleanup - %2 = extractvalue { ptr, i32 } %1, 0 - store ptr %2, ptr %exn.slot, align 8 - %3 = extractvalue { ptr, i32 } %1, 1 - store i32 %3, ptr %ehselector.slot, align 4 - call void @_ZNSaIPPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__map_alloc) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_create_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef %__nstart, ptr noundef %__nfinish) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__nstart.addr = alloca ptr, align 8 - %__nfinish.addr = alloca ptr, align 8 - %__cur = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store ptr %__nstart, ptr %__nstart.addr, align 8 - store ptr %__nfinish, ptr %__nfinish.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__nstart.addr, align 8 - store ptr %0, ptr %__cur, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %1 = load ptr, ptr %__cur, align 8 - %2 = load ptr, ptr %__nfinish.addr, align 8 - %cmp = icmp ult ptr %1, %2 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %call = invoke noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %for.body - %3 = load ptr, ptr %__cur, align 8 - store ptr %call, ptr %3, align 8 - br label %for.inc - -for.inc: ; preds = %invoke.cont - %4 = load ptr, ptr %__cur, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %__cur, align 8 - br label %for.cond, !llvm.loop !8 - -lpad: ; preds = %for.body - %5 = landingpad { ptr, i32 } - catch ptr null - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %8 = call ptr @__cxa_begin_catch(ptr %exn) #5 - %9 = load ptr, ptr %__nstart.addr, align 8 - %10 = load ptr, ptr %__cur, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_destroy_nodesEPPS2_S6_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %9, ptr noundef %10) #5 - invoke void @__cxa_rethrow() #16 - to label %unreachable unwind label %lpad2 - -for.end: ; preds = %for.cond - br label %try.cont - -lpad2: ; preds = %catch - %11 = landingpad { ptr, i32 } - cleanup - %12 = extractvalue { ptr, i32 } %11, 0 - store ptr %12, ptr %exn.slot, align 8 - %13 = extractvalue { ptr, i32 } %11, 1 - store i32 %13, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont3 unwind label %terminate.lpad - -invoke.cont3: ; preds = %lpad2 - br label %eh.resume - -try.cont: ; preds = %for.end - ret void - -eh.resume: ; preds = %invoke.cont3 - %exn4 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn4, 0 - %lpad.val5 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val5 - -terminate.lpad: ; preds = %lpad2 - %14 = landingpad { ptr, i32 } - catch ptr null - %15 = extractvalue { ptr, i32 } %14, 0 - call void @__clang_call_terminate(ptr %15) #15 - unreachable - -unreachable: ; preds = %catch - unreachable -} - -declare void @__cxa_rethrow() - -declare void @__cxa_end_catch() - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %__new_node) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__new_node.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__new_node, ptr %__new_node.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__new_node.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - store ptr %0, ptr %_M_node, align 8 - %1 = load ptr, ptr %__new_node.addr, align 8 - %2 = load ptr, ptr %1, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - store ptr %2, ptr %_M_first, align 8 - %_M_first2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %3 = load ptr, ptr %_M_first2, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #5 - %add.ptr = getelementptr inbounds ptr, ptr %3, i64 %call - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - store ptr %add.ptr, ptr %_M_last, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaIPPK1AEE8allocateERS4_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorIPPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorIPPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPPK1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #17 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPPK1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #12 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #13 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - %call2 = call noundef ptr @_ZNSt16allocator_traitsISaIPK1AEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, i64 noundef %call) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaIPK1AEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorIPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorIPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPK1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #17 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPK1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #2 comdat align 2 { -entry: - %call = call noundef i64 @_ZSt16__deque_buf_sizem(i64 noundef 8) - ret i64 %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef nonnull align 8 dereferenceable(8) %0) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 2 - %1 = load ptr, ptr %_M_last, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %1, i64 -1 - %cmp = icmp ne ptr %0, %add.ptr - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur7 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur7, align 8 - %3 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaIPK1AEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #5 - %_M_impl8 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish9 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl8, i32 0, i32 3 - %_M_cur10 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish9, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur10, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_cur10, align 8 - br label %if.end - -if.else: ; preds = %entry - %5 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EE16_M_push_back_auxIJS2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef nonnull align 8 dereferenceable(8) %5) - br label %if.end - -if.end: ; preds = %if.else, %if.then - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIPK1AEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPK1AE9constructIS3_JS3_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE16_M_push_back_auxIJS2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call2 = call noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %cmp = icmp eq i64 %call, %call2 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt20__throw_length_errorPKc(ptr noundef @.str.3) #16 - unreachable - -if.end: ; preds = %entry - call void @_ZNSt5dequeIPK1ASaIS2_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef 1) - %call3 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE16_M_allocate_nodeEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %0 = load ptr, ptr %_M_node, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %0, i64 1 - store ptr %call3, ptr %add.ptr, align 8 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish6 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish6, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaIPK1AEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl4, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 - %_M_node11 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish10, i32 0, i32 3 - %3 = load ptr, ptr %_M_node11, align 8 - %add.ptr12 = getelementptr inbounds ptr, ptr %3, i64 1 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish8, ptr noundef %add.ptr12) #5 - %_M_impl13 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish14 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl13, i32 0, i32 3 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish14, i32 0, i32 1 - %4 = load ptr, ptr %_M_first, align 8 - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 3 - %_M_cur17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish16, i32 0, i32 0 - store ptr %4, ptr %_M_cur17, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5dequeIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__tmp = alloca %"struct.std::_Deque_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EE3endEv(ptr sret(%"struct.std::_Deque_iterator") align 8 %__tmp, ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv(ptr noundef nonnull align 8 dereferenceable(32) %__tmp) #5 - %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %__tmp) #5 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPK1AE9constructIS3_JS3_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - %2 = load ptr, ptr %1, align 8 - store ptr %2, ptr %0, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %call = call noundef i64 @_ZStmiRKSt15_Deque_iteratorIPK1ARS2_PS2_ES7_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish, ptr noundef nonnull align 8 dereferenceable(32) %_M_start) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt5dequeIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %call2 = call noundef i64 @_ZNSt5dequeIPK1ASaIS2_EE11_S_max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %call) #5 - ret i64 %call2 -} - -; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #12 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE22_M_reserve_map_at_backEm(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__nodes_to_add) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nodes_to_add.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__nodes_to_add, ptr %__nodes_to_add.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__nodes_to_add.addr, align 8 - %add = add i64 %0, 1 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 1 - %1 = load i64, ptr %_M_map_size, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %_M_impl3 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl3, i32 0, i32 0 - %3 = load ptr, ptr %_M_map, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %2 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %sub = sub i64 %1, %sub.ptr.div - %cmp = icmp ugt i64 %add, %sub - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load i64, ptr %__nodes_to_add.addr, align 8 - call void @_ZNSt5dequeIPK1ASaIS2_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %4, i1 noundef zeroext false) - br label %if.end - -if.end: ; preds = %if.then, %entry - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZStmiRKSt15_Deque_iteratorIPK1ARS2_PS2_ES7_(ptr noundef nonnull align 8 dereferenceable(32) %__x, ptr noundef nonnull align 8 dereferenceable(32) %__y) #2 comdat { -entry: - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %call = call noundef i64 @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E14_S_buffer_sizeEv() #5 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %0, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %2 = load ptr, ptr %__y.addr, align 8 - %_M_node1 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %2, i32 0, i32 3 - %3 = load ptr, ptr %_M_node1, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %sub = sub nsw i64 %sub.ptr.div, 1 - %mul = mul nsw i64 %call, %sub - %4 = load ptr, ptr %__x.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %4, i32 0, i32 0 - %5 = load ptr, ptr %_M_cur, align 8 - %6 = load ptr, ptr %__x.addr, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %6, i32 0, i32 1 - %7 = load ptr, ptr %_M_first, align 8 - %sub.ptr.lhs.cast2 = ptrtoint ptr %5 to i64 - %sub.ptr.rhs.cast3 = ptrtoint ptr %7 to i64 - %sub.ptr.sub4 = sub i64 %sub.ptr.lhs.cast2, %sub.ptr.rhs.cast3 - %sub.ptr.div5 = sdiv exact i64 %sub.ptr.sub4, 8 - %add = add nsw i64 %mul, %sub.ptr.div5 - %8 = load ptr, ptr %__y.addr, align 8 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %8, i32 0, i32 2 - %9 = load ptr, ptr %_M_last, align 8 - %10 = load ptr, ptr %__y.addr, align 8 - %_M_cur6 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %10, i32 0, i32 0 - %11 = load ptr, ptr %_M_cur6, align 8 - %sub.ptr.lhs.cast7 = ptrtoint ptr %9 to i64 - %sub.ptr.rhs.cast8 = ptrtoint ptr %11 to i64 - %sub.ptr.sub9 = sub i64 %sub.ptr.lhs.cast7, %sub.ptr.rhs.cast8 - %sub.ptr.div10 = sdiv exact i64 %sub.ptr.sub9, 8 - %add11 = add nsw i64 %add, %sub.ptr.div10 - ret i64 %add11 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt5dequeIPK1ASaIS2_EE11_S_max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %__a.addr = alloca ptr, align 8 - %__diffmax = alloca i64, align 8 - %__allocmax = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 9223372036854775807, ptr %__diffmax, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNSt16allocator_traitsISaIPK1AEE8max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %0) #5 - store i64 %call, ptr %__allocmax, align 8 - %call1 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__diffmax, ptr noundef nonnull align 8 dereferenceable(8) %__allocmax) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %1 = load i64, ptr %call1, align 8 - ret i64 %1 - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #15 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt16allocator_traitsISaIPK1AEE8max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPK1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %0) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__b.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__a.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPK1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPK1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE17_M_reallocate_mapEmb(ptr noundef nonnull align 8 dereferenceable(80) %this, i64 noundef %__nodes_to_add, i1 noundef zeroext %__add_at_front) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__nodes_to_add.addr = alloca i64, align 8 - %__add_at_front.addr = alloca i8, align 1 - %__old_num_nodes = alloca i64, align 8 - %__new_num_nodes = alloca i64, align 8 - %__new_nstart = alloca ptr, align 8 - %__new_map_size = alloca i64, align 8 - %__new_map = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__nodes_to_add, ptr %__nodes_to_add.addr, align 8 - %frombool = zext i1 %__add_at_front to i8 - store i8 %frombool, ptr %__add_at_front.addr, align 1 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 3 - %0 = load ptr, ptr %_M_node, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 2 - %_M_node3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start, i32 0, i32 3 - %1 = load ptr, ptr %_M_node3, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - %add = add nsw i64 %sub.ptr.div, 1 - store i64 %add, ptr %__old_num_nodes, align 8 - %2 = load i64, ptr %__old_num_nodes, align 8 - %3 = load i64, ptr %__nodes_to_add.addr, align 8 - %add4 = add i64 %2, %3 - store i64 %add4, ptr %__new_num_nodes, align 8 - %_M_impl5 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl5, i32 0, i32 1 - %4 = load i64, ptr %_M_map_size, align 8 - %5 = load i64, ptr %__new_num_nodes, align 8 - %mul = mul i64 2, %5 - %cmp = icmp ugt i64 %4, %mul - br i1 %cmp, label %if.then, label %if.else31 - -if.then: ; preds = %entry - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 0 - %6 = load ptr, ptr %_M_map, align 8 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 1 - %7 = load i64, ptr %_M_map_size8, align 8 - %8 = load i64, ptr %__new_num_nodes, align 8 - %sub = sub i64 %7, %8 - %div = udiv i64 %sub, 2 - %add.ptr = getelementptr inbounds ptr, ptr %6, i64 %div - %9 = load i8, ptr %__add_at_front.addr, align 1 - %tobool = trunc i8 %9 to i1 - br i1 %tobool, label %cond.true, label %cond.false - -cond.true: ; preds = %if.then - %10 = load i64, ptr %__nodes_to_add.addr, align 8 - br label %cond.end - -cond.false: ; preds = %if.then - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %10, %cond.true ], [ 0, %cond.false ] - %add.ptr9 = getelementptr inbounds ptr, ptr %add.ptr, i64 %cond - store ptr %add.ptr9, ptr %__new_nstart, align 8 - %11 = load ptr, ptr %__new_nstart, align 8 - %_M_impl10 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start11 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl10, i32 0, i32 2 - %_M_node12 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start11, i32 0, i32 3 - %12 = load ptr, ptr %_M_node12, align 8 - %cmp13 = icmp ult ptr %11, %12 - br i1 %cmp13, label %if.then14, label %if.else - -if.then14: ; preds = %cond.end - %_M_impl15 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start16 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl15, i32 0, i32 2 - %_M_node17 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start16, i32 0, i32 3 - %13 = load ptr, ptr %_M_node17, align 8 - %_M_impl18 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish19 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl18, i32 0, i32 3 - %_M_node20 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish19, i32 0, i32 3 - %14 = load ptr, ptr %_M_node20, align 8 - %add.ptr21 = getelementptr inbounds ptr, ptr %14, i64 1 - %15 = load ptr, ptr %__new_nstart, align 8 - %call = call noundef ptr @_ZSt4copyIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %13, ptr noundef %add.ptr21, ptr noundef %15) - br label %if.end - -if.else: ; preds = %cond.end - %_M_impl22 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start23 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl22, i32 0, i32 2 - %_M_node24 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start23, i32 0, i32 3 - %16 = load ptr, ptr %_M_node24, align 8 - %_M_impl25 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish26 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl25, i32 0, i32 3 - %_M_node27 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish26, i32 0, i32 3 - %17 = load ptr, ptr %_M_node27, align 8 - %add.ptr28 = getelementptr inbounds ptr, ptr %17, i64 1 - %18 = load ptr, ptr %__new_nstart, align 8 - %19 = load i64, ptr %__old_num_nodes, align 8 - %add.ptr29 = getelementptr inbounds ptr, ptr %18, i64 %19 - %call30 = call noundef ptr @_ZSt13copy_backwardIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %16, ptr noundef %add.ptr28, ptr noundef %add.ptr29) - br label %if.end - -if.end: ; preds = %if.else, %if.then14 - br label %if.end65 - -if.else31: ; preds = %entry - %_M_impl32 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size33 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl32, i32 0, i32 1 - %20 = load i64, ptr %_M_map_size33, align 8 - %_M_impl34 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size35 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl34, i32 0, i32 1 - %call36 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %_M_map_size35, ptr noundef nonnull align 8 dereferenceable(8) %__nodes_to_add.addr) - %21 = load i64, ptr %call36, align 8 - %add37 = add i64 %20, %21 - %add38 = add i64 %add37, 2 - store i64 %add38, ptr %__new_map_size, align 8 - %22 = load i64, ptr %__new_map_size, align 8 - %call39 = call noundef ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE15_M_allocate_mapEm(ptr noundef nonnull align 8 dereferenceable(80) %this1, i64 noundef %22) - store ptr %call39, ptr %__new_map, align 8 - %23 = load ptr, ptr %__new_map, align 8 - %24 = load i64, ptr %__new_map_size, align 8 - %25 = load i64, ptr %__new_num_nodes, align 8 - %sub40 = sub i64 %24, %25 - %div41 = udiv i64 %sub40, 2 - %add.ptr42 = getelementptr inbounds ptr, ptr %23, i64 %div41 - %26 = load i8, ptr %__add_at_front.addr, align 1 - %tobool43 = trunc i8 %26 to i1 - br i1 %tobool43, label %cond.true44, label %cond.false45 - -cond.true44: ; preds = %if.else31 - %27 = load i64, ptr %__nodes_to_add.addr, align 8 - br label %cond.end46 - -cond.false45: ; preds = %if.else31 - br label %cond.end46 - -cond.end46: ; preds = %cond.false45, %cond.true44 - %cond47 = phi i64 [ %27, %cond.true44 ], [ 0, %cond.false45 ] - %add.ptr48 = getelementptr inbounds ptr, ptr %add.ptr42, i64 %cond47 - store ptr %add.ptr48, ptr %__new_nstart, align 8 - %_M_impl49 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start50 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl49, i32 0, i32 2 - %_M_node51 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_start50, i32 0, i32 3 - %28 = load ptr, ptr %_M_node51, align 8 - %_M_impl52 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish53 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl52, i32 0, i32 3 - %_M_node54 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish53, i32 0, i32 3 - %29 = load ptr, ptr %_M_node54, align 8 - %add.ptr55 = getelementptr inbounds ptr, ptr %29, i64 1 - %30 = load ptr, ptr %__new_nstart, align 8 - %call56 = call noundef ptr @_ZSt4copyIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %28, ptr noundef %add.ptr55, ptr noundef %30) - %_M_impl57 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map58 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl57, i32 0, i32 0 - %31 = load ptr, ptr %_M_map58, align 8 - %_M_impl59 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size60 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl59, i32 0, i32 1 - %32 = load i64, ptr %_M_map_size60, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE17_M_deallocate_mapEPPS2_m(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %31, i64 noundef %32) #5 - %33 = load ptr, ptr %__new_map, align 8 - %_M_impl61 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map62 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl61, i32 0, i32 0 - store ptr %33, ptr %_M_map62, align 8 - %34 = load i64, ptr %__new_map_size, align 8 - %_M_impl63 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_map_size64 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl63, i32 0, i32 1 - store i64 %34, ptr %_M_map_size64, align 8 - br label %if.end65 - -if.end65: ; preds = %cond.end46, %if.end - %_M_impl66 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_start67 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl66, i32 0, i32 2 - %35 = load ptr, ptr %__new_nstart, align 8 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_start67, ptr noundef %35) #5 - %_M_impl68 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish69 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl68, i32 0, i32 3 - %36 = load ptr, ptr %__new_nstart, align 8 - %37 = load i64, ptr %__old_num_nodes, align 8 - %add.ptr70 = getelementptr inbounds ptr, ptr %36, i64 %37 - %add.ptr71 = getelementptr inbounds ptr, ptr %add.ptr70, i64 -1 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish69, ptr noundef %add.ptr71) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt4copyIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__miter_baseIPPPK1AET_S5_(ptr noundef %0) - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__miter_baseIPPPK1AET_S5_(ptr noundef %1) - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt13__copy_move_aILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %call, ptr noundef %call1, ptr noundef %2) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt13copy_backwardIPPPK1AS4_ET0_T_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__miter_baseIPPPK1AET_S5_(ptr noundef %0) - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__miter_baseIPPPK1AET_S5_(ptr noundef %1) - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt22__copy_move_backward_aILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %call, ptr noundef %call1, ptr noundef %2) - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt13__copy_move_aILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %0) #5 - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %1) #5 - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %2) #5 - %call3 = call noundef ptr @_ZSt14__copy_move_a1ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %call, ptr noundef %call1, ptr noundef %call2) - %call4 = call noundef ptr @_ZSt12__niter_wrapIPPPK1AET_RKS5_S5_(ptr noundef nonnull align 8 dereferenceable(8) %__result.addr, ptr noundef %call3) - ret ptr %call4 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__miter_baseIPPPK1AET_S5_(ptr noundef %__it) #2 comdat { -entry: - %__it.addr = alloca ptr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %0 = load ptr, ptr %__it.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__niter_wrapIPPPK1AET_RKS5_S5_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %__res) #2 comdat { -entry: - %.addr = alloca ptr, align 8 - %__res.addr = alloca ptr, align 8 - store ptr %0, ptr %.addr, align 8 - store ptr %__res, ptr %__res.addr, align 8 - %1 = load ptr, ptr %__res.addr, align 8 - ret ptr %1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt14__copy_move_a1ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZSt14__copy_move_a2ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %__it) #2 comdat { -entry: - %__it.addr = alloca ptr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %0 = load ptr, ptr %__it.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt14__copy_move_a2ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPPK1AEEPT_PKS7_SA_S8_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIPPK1AEEPT_PKS7_SA_S8_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #2 comdat align 2 { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %_Num = alloca i64, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__last.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - store i64 %sub.ptr.div, ptr %_Num, align 8 - %2 = load i64, ptr %_Num, align 8 - %tobool = icmp ne i64 %2, 0 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %3 = load ptr, ptr %__result.addr, align 8 - %4 = load ptr, ptr %__first.addr, align 8 - %5 = load i64, ptr %_Num, align 8 - %mul = mul i64 8, %5 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %3, ptr align 8 %4, i64 %mul, i1 false) - br label %if.end - -if.end: ; preds = %if.then, %entry - %6 = load ptr, ptr %__result.addr, align 8 - %7 = load i64, ptr %_Num, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %6, i64 %7 - ret ptr %add.ptr -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #14 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt22__copy_move_backward_aILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %0) #5 - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %1) #5 - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPPPK1AET_S5_(ptr noundef %2) #5 - %call3 = call noundef ptr @_ZSt23__copy_move_backward_a1ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %call, ptr noundef %call1, ptr noundef %call2) - %call4 = call noundef ptr @_ZSt12__niter_wrapIPPPK1AET_RKS5_S5_(ptr noundef nonnull align 8 dereferenceable(8) %__result.addr, ptr noundef %call3) - ret ptr %call4 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt23__copy_move_backward_a1ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZSt23__copy_move_backward_a2ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt23__copy_move_backward_a2ILb0EPPPK1AS4_ET1_T0_S6_S5_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %call = call noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPPK1AEEPT_PKS7_SA_S8_(ptr noundef %0, ptr noundef %1, ptr noundef %2) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt20__copy_move_backwardILb0ELb1ESt26random_access_iterator_tagE13__copy_move_bIPPK1AEEPT_PKS7_SA_S8_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result) #2 comdat align 2 { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %_Num = alloca i64, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - %0 = load ptr, ptr %__last.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - store i64 %sub.ptr.div, ptr %_Num, align 8 - %2 = load i64, ptr %_Num, align 8 - %tobool = icmp ne i64 %2, 0 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %3 = load ptr, ptr %__result.addr, align 8 - %4 = load i64, ptr %_Num, align 8 - %idx.neg = sub i64 0, %4 - %add.ptr = getelementptr inbounds ptr, ptr %3, i64 %idx.neg - %5 = load ptr, ptr %__first.addr, align 8 - %6 = load i64, ptr %_Num, align 8 - %mul = mul i64 8, %6 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr, ptr align 8 %5, i64 %mul, i1 false) - br label %if.end - -if.end: ; preds = %if.then, %entry - %7 = load ptr, ptr %__result.addr, align 8 - %8 = load i64, ptr %_Num, align 8 - %idx.neg1 = sub i64 0, %8 - %add.ptr2 = getelementptr inbounds ptr, ptr %7, i64 %idx.neg1 - ret ptr %add.ptr2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_EmmEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %_M_first, align 8 - %cmp = icmp eq ptr %0, %1 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 3 - %2 = load ptr, ptr %_M_node, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %2, i64 -1 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %this1, ptr noundef %add.ptr) #5 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 2 - %3 = load ptr, ptr %_M_last, align 8 - %_M_cur2 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - store ptr %3, ptr %_M_cur2, align 8 - br label %if.end - -if.end: ; preds = %if.then, %entry - %_M_cur3 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %4 = load ptr, ptr %_M_cur3, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 -1 - store ptr %incdec.ptr, ptr %_M_cur3, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt15_Deque_iteratorIPK1ARS2_PS2_EdeEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish3, i32 0, i32 1 - %1 = load ptr, ptr %_M_first, align 8 - %cmp = icmp ne ptr %0, %1 - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish5 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 3 - %_M_cur6 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish5, i32 0, i32 0 - %2 = load ptr, ptr %_M_cur6, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %2, i32 -1 - store ptr %incdec.ptr, ptr %_M_cur6, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %_M_impl7 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish8 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl7, i32 0, i32 3 - %_M_cur9 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish8, i32 0, i32 0 - %3 = load ptr, ptr %_M_cur9, align 8 - call void @_ZNSt16allocator_traitsISaIPK1AEE7destroyIS2_EEvRS3_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %3) #5 - br label %if.end - -if.else: ; preds = %entry - invoke void @_ZNSt5dequeIPK1ASaIS2_EE15_M_pop_back_auxEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %if.else - br label %if.end - -if.end: ; preds = %invoke.cont, %if.then - ret void - -terminate.lpad: ; preds = %if.else - %4 = landingpad { ptr, i32 } - catch ptr null - %5 = extractvalue { ptr, i32 } %4, 0 - call void @__clang_call_terminate(ptr %5) #15 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIPK1AEE7destroyIS2_EEvRS3_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPK1AE7destroyIS3_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5dequeIPK1ASaIS2_EE15_M_pop_back_auxEv(ptr noundef nonnull align 8 dereferenceable(80) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl, i32 0, i32 3 - %_M_first = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish, i32 0, i32 1 - %0 = load ptr, ptr %_M_first, align 8 - call void @_ZNSt11_Deque_baseIPK1ASaIS2_EE18_M_deallocate_nodeEPS2_(ptr noundef nonnull align 8 dereferenceable(80) %this1, ptr noundef %0) #5 - %_M_impl2 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish3 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl2, i32 0, i32 3 - %_M_impl4 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish5 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl4, i32 0, i32 3 - %_M_node = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish5, i32 0, i32 3 - %1 = load ptr, ptr %_M_node, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %1, i64 -1 - call void @_ZNSt15_Deque_iteratorIPK1ARS2_PS2_E11_M_set_nodeEPS4_(ptr noundef nonnull align 8 dereferenceable(32) %_M_finish3, ptr noundef %add.ptr) #5 - %_M_impl6 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish7 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl6, i32 0, i32 3 - %_M_last = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish7, i32 0, i32 2 - %2 = load ptr, ptr %_M_last, align 8 - %add.ptr8 = getelementptr inbounds ptr, ptr %2, i64 -1 - %_M_impl9 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish10 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl9, i32 0, i32 3 - %_M_cur = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish10, i32 0, i32 0 - store ptr %add.ptr8, ptr %_M_cur, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt11_Deque_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(80) %this1) #5 - %_M_impl11 = getelementptr inbounds %"class.std::_Deque_base", ptr %this1, i32 0, i32 0 - %_M_finish12 = getelementptr inbounds %"struct.std::_Deque_base>::_Deque_impl_data", ptr %_M_impl11, i32 0, i32 3 - %_M_cur13 = getelementptr inbounds %"struct.std::_Deque_iterator", ptr %_M_finish12, i32 0, i32 0 - %3 = load ptr, ptr %_M_cur13, align 8 - call void @_ZNSt16allocator_traitsISaIPK1AEE7destroyIS2_EEvRS3_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %3) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPK1AE7destroyIS3_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_stack_2.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noinline uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #12 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #13 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #14 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #15 = { noreturn nounwind } -attributes #16 = { noreturn } -attributes #17 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} diff --git a/test_cases_bc/basic_cpp_tests/unordered_map-1.cpp.bc b/test_cases_bc/basic_cpp_tests/unordered_map-1.cpp.bc deleted file mode 100644 index b6df0a89..00000000 --- a/test_cases_bc/basic_cpp_tests/unordered_map-1.cpp.bc +++ /dev/null @@ -1,2976 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/unordered_map-1.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/unordered_map-1.cpp" -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-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%"struct.std::piecewise_construct_t" = type { i8 } -%"class.std::unordered_map" = type { %"class.std::_Hashtable" } -%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr } -%"struct.std::__detail::_Hash_node_base" = type { ptr } -%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 } -%class.A = type { ptr } -%"struct.std::__detail::_Node_const_iterator" = type { %"struct.std::__detail::_Node_iterator_base" } -%"struct.std::__detail::_Node_iterator_base" = type { ptr } -%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" } -%"struct.std::pair" = type { i32, %class.A } -%"struct.std::__detail::_Hash_node_value_base" = type { %"struct.std::__detail::_Hash_node_base", %"struct.__gnu_cxx::__aligned_buffer" } -%"struct.__gnu_cxx::__aligned_buffer" = type { %"union.std::aligned_storage<16, 8>::type" } -%"union.std::aligned_storage<16, 8>::type" = type { [16 x i8] } -%"class.std::allocator.4" = type { i8 } -%"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node" = type { ptr, ptr } -%"class.std::tuple" = type { %"struct.std::_Tuple_impl" } -%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base" } -%"struct.std::_Head_base" = type { ptr } -%"class.std::tuple.7" = type { i8 } -%"struct.std::pair.9" = type { i8, i64 } -%"struct.std::_Index_tuple" = type { i8 } -%"struct.std::_Index_tuple.8" = type { i8 } -%"struct.std::integral_constant" = type { i8 } - -$_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEEC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEEixEOi = comdat any - -$_ZN1AaSERKS_ = comdat any - -$_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEE5beginEv = comdat any - -$_ZNSt8__detail20_Node_const_iteratorISt4pairIKi1AELb0ELb0EEC2ERKNS_14_Node_iteratorIS4_Lb0ELb0EEE = comdat any - -$_ZNKSt8__detail20_Node_const_iteratorISt4pairIKi1AELb0ELb0EEptEv = comdat any - -$_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEED2Ev = comdat any - -$_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEEC2Ev = comdat any - -$_ZNSt8__detail15_Hashtable_baseIiSt4pairIKi1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEEC2Ev = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEEC2Ev = comdat any - -$_ZNSt8__detail15_Hash_node_baseC2Ev = comdat any - -$_ZNSt8__detail20_Prime_rehash_policyC2Ef = comdat any - -$_ZNSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EEC2Ev = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIiELb1EEC2Ev = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EEC2Ev = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi1ESt4hashIiELb1EEC2Ev = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EEC2Ev = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKi1AELb0EEEELb1EEC2Ev = comdat any - -$_ZNSaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEC2Ev = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEED2Ev = comdat any - -$_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE5clearEv = comdat any - -$_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEED2Ev = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE19_M_deallocate_nodesEPS6_ = comdat any - -$_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv = comdat any - -$_ZNKSt8__detail10_Hash_nodeISt4pairIKi1AELb0EE7_M_nextEv = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE18_M_deallocate_nodeEPS6_ = comdat any - -$_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEE7destroyIS5_EEvRS7_PT_ = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE17_M_node_allocatorEv = comdat any - -$_ZNSt8__detail21_Hash_node_value_baseISt4pairIKi1AEE9_M_valptrEv = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE22_M_deallocate_node_ptrEPS6_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE7destroyIS6_EEvPT_ = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKi1AELb0EEEELb1EE6_M_getEv = comdat any - -$_ZN9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE6_M_ptrEv = comdat any - -$_ZN9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE7_M_addrEv = comdat any - -$_ZNSt14pointer_traitsIPNSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE10pointer_toERS6_ = comdat any - -$_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEE10deallocateERS7_PS6_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE10deallocateEPS7_m = comdat any - -$_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEPPNS5_15_Hash_node_baseEm = comdat any - -$_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_uses_single_bucketEPPNS5_15_Hash_node_baseE = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE21_M_deallocate_bucketsEPPNS_15_Hash_node_baseEm = comdat any - -$_ZNSt14pointer_traitsIPPNSt8__detail15_Hash_node_baseEE10pointer_toERS2_ = comdat any - -$_ZNSaIPNSt8__detail15_Hash_node_baseEEC2INS_10_Hash_nodeISt4pairIKi1AELb0EEEEERKSaIT_E = comdat any - -$_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE10deallocateERS3_PS2_m = comdat any - -$_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEEC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS3_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKi1AELb0EEEELb1EED2Ev = comdat any - -$_ZNSaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEED2Ev = comdat any - -$_ZNSt8__detail9_Map_baseIiSt4pairIKi1AESaIS4_ENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb0ELb1EEELb1EEixEOi = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE12_M_hash_codeERS2_ = comdat any - -$_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE15_M_bucket_indexERS1_m = comdat any - -$_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE12_M_find_nodeEmRS1_m = comdat any - -$_ZNSt8__detail21_Hash_node_value_baseISt4pairIKi1AEE4_M_vEv = comdat any - -$_ZSt16forward_as_tupleIJiEESt5tupleIJDpOT_EES3_ = comdat any - -$_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE12_Scoped_nodeC2IJRKSt21piecewise_construct_tSt5tupleIJOiEESM_IJEEEEEPNS5_16_Hashtable_allocISaINS5_10_Hash_nodeIS3_Lb0EEEEEEDpOT_ = comdat any - -$_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeERS1_mmPNS5_10_Hash_nodeIS3_Lb0EEEm = comdat any - -$_ZNKSt8__detail14_Node_iteratorISt4pairIKi1AELb0ELb0EEptEv = comdat any - -$_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE12_Scoped_nodeD2Ev = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h1Ev = comdat any - -$_ZNKSt4hashIiEclEi = comdat any - -$_ZNKSt8__detail21_Hashtable_ebo_helperILi1ESt4hashIiELb1EE7_M_cgetEv = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexERS2_mm = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h2Ev = comdat any - -$_ZNKSt8__detail18_Mod_range_hashingclEmm = comdat any - -$_ZNKSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EE7_M_cgetEv = comdat any - -$_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_find_before_nodeEmRS1_m = comdat any - -$_ZNKSt8__detail15_Hashtable_baseIiSt4pairIKi1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_equalsERS2_mPNS_10_Hash_nodeIS4_Lb0EEE = comdat any - -$_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE15_M_bucket_indexEPNS5_10_Hash_nodeIS3_Lb0EEE = comdat any - -$_ZNSt8__detail15_Hashtable_baseIiSt4pairIKi1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE16_Equal_hash_codeINS_10_Hash_nodeIS4_Lb0EEEE9_S_equalsEmRKSH_ = comdat any - -$_ZNKSt8__detail15_Hashtable_baseIiSt4pairIKi1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE5_M_eqEv = comdat any - -$_ZNKSt8equal_toIiEclERKiS2_ = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE10_M_extractEv = comdat any - -$_ZNKSt8__detail10_Select1stclIRSt4pairIKi1AEEEDTclsr3stdE3getILi0EEclsr3stdE7forwardIT_Efp_EEEOS7_ = comdat any - -$_ZNKSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIiELb1EE7_M_cgetEv = comdat any - -$_ZNKSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EE7_M_cgetEv = comdat any - -$_ZSt3getILm0EKi1AERNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERS6_ = comdat any - -$_ZNSt10__pair_getILm0EE5__getIKi1AEERT_RSt4pairIS4_T0_E = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexEPKNS_10_Hash_nodeIS4_Lb0EEEm = comdat any - -$_ZNKSt8__detail10_Select1stclIRKSt4pairIKi1AEEEDTclsr3stdE3getILi0EEclsr3stdE7forwardIT_Efp_EEEOS8_ = comdat any - -$_ZNKSt8__detail21_Hash_node_value_baseISt4pairIKi1AEE4_M_vEv = comdat any - -$_ZSt3getILm0EKi1AERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKS6_ = comdat any - -$_ZNSt10__pair_getILm0EE11__const_getIKi1AEERKT_RKSt4pairIS4_T0_E = comdat any - -$_ZNKSt8__detail21_Hash_node_value_baseISt4pairIKi1AEE9_M_valptrEv = comdat any - -$_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE6_M_ptrEv = comdat any - -$_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE7_M_addrEv = comdat any - -$_ZNSt5tupleIJOiEEC2IJiELb1ELb1EEEDpOT_ = comdat any - -$_ZNSt11_Tuple_implILm0EJOiEEC2IiEEOT_ = comdat any - -$_ZNSt10_Head_baseILm0EOiLb0EEC2IiEEOT_ = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE16_M_allocate_nodeIJRKSt21piecewise_construct_tSt5tupleIJOiEESD_IJEEEEEPS6_DpOT_ = comdat any - -$_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEE8allocateERS7_m = comdat any - -$_ZSt12__to_addressINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEPT_S8_ = comdat any - -$_ZNSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEC2Ev = comdat any - -$_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEE9constructIS5_JRKSt21piecewise_construct_tSt5tupleIJOiEESD_IJEEEEEvRS7_PT_DpOT0_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE11_M_max_sizeEv = comdat any - -$_ZNSt8__detail21_Hash_node_value_baseISt4pairIKi1AEEC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE9constructIS6_JRKSt21piecewise_construct_tSt5tupleIJOiEESD_IJEEEEEvPT_DpOT0_ = comdat any - -$_ZNSt5tupleIJOiEEC2EOS1_ = comdat any - -$_ZNSt4pairIKi1AEC2IJOiEJEEESt21piecewise_construct_tSt5tupleIJDpT_EES6_IJDpT0_EE = comdat any - -$_ZNSt11_Tuple_implILm0EJOiEEC2EOS1_ = comdat any - -$_ZNSt11_Tuple_implILm0EJOiEE7_M_headERS1_ = comdat any - -$_ZNSt10_Head_baseILm0EOiLb0EE7_M_headERS1_ = comdat any - -$_ZNSt4pairIKi1AEC2IJOiEJLm0EEJEJEEERSt5tupleIJDpT_EERS5_IJDpT1_EESt12_Index_tupleIJXspT0_EEESE_IJXspT2_EEE = comdat any - -$_ZSt3getILm0EJOiEERNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERS5_ = comdat any - -$_ZSt12__get_helperILm0EOiJEERT0_RSt11_Tuple_implIXT_EJS1_DpT1_EE = comdat any - -$_ZNKSt8__detail20_Prime_rehash_policy8_M_stateEv = comdat any - -$_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_rehashEmRKm = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE13_M_store_codeEPNS_10_Hash_nodeIS4_Lb0EEEm = comdat any - -$_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE22_M_insert_bucket_beginEmPNS5_10_Hash_nodeIS3_Lb0EEE = comdat any - -$_ZNSt8__detail14_Node_iteratorISt4pairIKi1AELb0ELb0EEC2EPNS_10_Hash_nodeIS4_Lb0EEE = comdat any - -$_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE = comdat any - -$_ZNSt8__detail20_Prime_rehash_policy8_M_resetEm = comdat any - -$_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_allocate_bucketsEm = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE19_M_allocate_bucketsEm = comdat any - -$_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE8allocateERS3_m = comdat any - -$_ZSt12__to_addressIPNSt8__detail15_Hash_node_baseEEPT_S4_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE11_M_max_sizeEv = comdat any - -$_ZNSt8__detail19_Node_iterator_baseISt4pairIKi1AELb0EEC2EPNS_10_Hash_nodeIS4_Lb0EEE = comdat any - -$_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE5beginEv = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -$_ZSt19piecewise_construct = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 -@__dso_handle = external hidden global i8 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@_ZSt19piecewise_construct = linkonce_odr dso_local constant %"struct.std::piecewise_construct_t" undef, comdat, align 1 -@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_unordered_map_1.cpp, ptr null }] - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init() #3 section ".text.startup" { -entry: - call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = call i32 @__cxa_atexit(ptr @_ZNSt8ios_base4InitD1Ev, ptr @_ZStL8__ioinit, ptr @__dso_handle) #5 - ret void -} - -declare void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 - -; Function Attrs: nounwind -declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 - -; Function Attrs: nounwind -declare i32 @__cxa_atexit(ptr, ptr, ptr) #5 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #6 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %amap = alloca %"class.std::unordered_map", align 8 - %a = alloca %class.A, align 8 - %ref.tmp = alloca i32, align 4 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %it = alloca %"struct.std::__detail::_Node_const_iterator", align 8 - %ref.tmp2 = alloca %"struct.std::__detail::_Node_iterator", align 8 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %amap) #5 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 - store i32 0, ptr %ref.tmp, align 4 - %call = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEEixEOi(ptr noundef nonnull align 8 dereferenceable(56) %amap, ptr noundef nonnull align 4 dereferenceable(4) %ref.tmp) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %call1 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN1AaSERKS_(ptr noundef nonnull align 8 dereferenceable(8) %call, ptr noundef nonnull align 8 dereferenceable(8) %a) #5 - %call3 = call ptr @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %amap) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %ref.tmp2, i32 0, i32 0 - %coerce.dive4 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - store ptr %call3, ptr %coerce.dive4, align 8 - call void @_ZNSt8__detail20_Node_const_iteratorISt4pairIKi1AELb0ELb0EEC2ERKNS_14_Node_iteratorIS4_Lb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %it, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp2) #5 - %call5 = call noundef ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIKi1AELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 - %second = getelementptr inbounds %"struct.std::pair", ptr %call5, i32 0, i32 1 - store ptr %second, ptr %aptr, align 8 - %0 = load ptr, ptr %aptr, align 8 - %1 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %0, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %2 = load ptr, ptr %vfn, align 8 - invoke void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) - to label %invoke.cont6 unwind label %lpad - -invoke.cont6: ; preds = %invoke.cont - store i32 0, ptr %retval, align 4 - call void @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %amap) #5 - %3 = load i32, ptr %retval, align 4 - ret i32 %3 - -lpad: ; preds = %invoke.cont, %entry - %4 = landingpad { ptr, i32 } - cleanup - %5 = extractvalue { ptr, i32 } %4, 0 - store ptr %5, ptr %exn.slot, align 8 - %6 = extractvalue { ptr, i32 } %4, 1 - store i32 %6, ptr %ehselector.slot, align 4 - call void @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %amap) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val7 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val7 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"class.std::unordered_map", ptr %this1, i32 0, i32 0 - call void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %_M_h) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEEixEOi(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__k.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"class.std::unordered_map", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__k.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail9_Map_baseIiSt4pairIKi1AESaIS4_ENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb0ELb1EEELb1EEixEOi(ptr noundef nonnull align 1 dereferenceable(1) %_M_h, ptr noundef nonnull align 4 dereferenceable(4) %0) - ret ptr %call -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN1AaSERKS_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %0) #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::__detail::_Node_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"class.std::unordered_map", ptr %this1, i32 0, i32 0 - %call = call ptr @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %_M_h) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive2 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - store ptr %call, ptr %coerce.dive2, align 8 - %coerce.dive3 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive4 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive3, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive4, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail20_Node_const_iteratorISt4pairIKi1AELb0ELb0EEC2ERKNS_14_Node_iteratorIS4_Lb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur, align 8 - call void @_ZNSt8__detail19_Node_iterator_baseISt4pairIKi1AELb0EEC2EPNS_10_Hash_nodeIS4_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIKi1AELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %call = call noundef ptr @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #5 - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt13unordered_mapIi1ASt4hashIiESt8equal_toIiESaISt4pairIKiS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"class.std::unordered_map", ptr %this1, i32 0, i32 0 - call void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %_M_h) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail15_Hashtable_baseIiSt4pairIKi1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %_M_single_bucket = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 - store ptr %_M_single_bucket, ptr %_M_buckets, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - store i64 1, ptr %_M_bucket_count, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - call void @_ZNSt8__detail15_Hash_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_before_begin) #5 - %_M_element_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - store i64 0, ptr %_M_element_count, align 8 - %_M_rehash_policy = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - call void @_ZNSt8__detail20_Prime_rehash_policyC2Ef(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy, float noundef 1.000000e+00) #5 - %_M_single_bucket2 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 - store ptr null, ptr %_M_single_bucket2, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail15_Hashtable_baseIiSt4pairIKi1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIiELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKi1AELb0EEEELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail15_Hash_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_nxt, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail20_Prime_rehash_policyC2Ef(ptr noundef nonnull align 8 dereferenceable(16) %this, float noundef %__z) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__z.addr = alloca float, align 4 - store ptr %this, ptr %this.addr, align 8 - store float %__z, ptr %__z.addr, align 4 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_max_load_factor = getelementptr inbounds %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 0 - %0 = load float, ptr %__z.addr, align 4 - store float %0, ptr %_M_max_load_factor, align 8 - %_M_next_resize = getelementptr inbounds %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_next_resize, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt8__detail21_Hashtable_ebo_helperILi1ESt4hashIiELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIiELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hashtable_ebo_helperILi1ESt4hashIiELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKi1AELb0EEEELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) #5 - invoke void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #15 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = invoke noundef ptr @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - invoke void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE19_M_deallocate_nodesEPS6_(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %call) - to label %invoke.cont2 unwind label %terminate.lpad - -invoke.cont2: ; preds = %invoke.cont - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_buckets, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %1 = load i64, ptr %_M_bucket_count, align 8 - %mul = mul i64 %1, 8 - call void @llvm.memset.p0.i64(ptr align 8 %0, i8 0, i64 %mul, i1 false) - %_M_element_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - store i64 0, ptr %_M_element_count, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - store ptr null, ptr %_M_nxt, align 8 - ret void - -terminate.lpad: ; preds = %invoke.cont, %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #15 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_buckets, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %1 = load i64, ptr %_M_bucket_count, align 8 - call void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEPPNS5_15_Hash_node_baseEm(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef %0, i64 noundef %1) - ret void -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #8 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #5 - call void @_ZSt9terminatev() #15 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKi1AELb0EEEELb1EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE19_M_deallocate_nodesEPS6_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__n) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca ptr, align 8 - %__tmp = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - br label %while.cond - -while.cond: ; preds = %while.body, %entry - %0 = load ptr, ptr %__n.addr, align 8 - %tobool = icmp ne ptr %0, null - br i1 %tobool, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %1 = load ptr, ptr %__n.addr, align 8 - store ptr %1, ptr %__tmp, align 8 - %2 = load ptr, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKi1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #5 - store ptr %call, ptr %__n.addr, align 8 - %3 = load ptr, ptr %__tmp, align 8 - call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE18_M_deallocate_nodeEPS6_(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %3) - br label %while.cond, !llvm.loop !6 - -while.end: ; preds = %while.cond - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - %0 = load ptr, ptr %_M_nxt, align 8 - ret ptr %0 -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #9 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKi1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_nxt, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE18_M_deallocate_nodeEPS6_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__n) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - %0 = load ptr, ptr %__n.addr, align 8 - %call2 = call noundef ptr @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #5 - call void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEE7destroyIS5_EEvRS7_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %call2) #5 - %1 = load ptr, ptr %__n.addr, align 8 - call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE22_M_deallocate_node_ptrEPS6_(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEE7destroyIS5_EEvRS7_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE7destroyIS6_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKi1AELb0EEEELb1EE6_M_getEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::__detail::_Hash_node_value_base", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %_M_storage) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE22_M_deallocate_node_ptrEPS6_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__n) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca ptr, align 8 - %__ptr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZNSt14pointer_traitsIPNSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE10pointer_toERS6_(ptr noundef nonnull align 8 dereferenceable(24) %0) #5 - store ptr %call, ptr %__ptr, align 8 - %1 = load ptr, ptr %__n.addr, align 8 - %call2 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - %2 = load ptr, ptr %__ptr, align 8 - call void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEE10deallocateERS7_PS6_m(ptr noundef nonnull align 1 dereferenceable(1) %call2, ptr noundef %2, i64 noundef 1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE7destroyIS6_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKi1AELb0EEEELb1EE6_M_getEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_buffer", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14pointer_traitsIPNSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE10pointer_toERS6_(ptr noundef nonnull align 8 dereferenceable(24) %__r) #2 comdat align 2 { -entry: - %__r.addr = alloca ptr, align 8 - store ptr %__r, ptr %__r.addr, align 8 - %0 = load ptr, ptr %__r.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEE10deallocateERS7_PS6_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE10deallocateEPS7_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE10deallocateEPS7_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #10 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEPPNS5_15_Hash_node_baseEm(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef %__bkts, i64 noundef %__bkt_count) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__bkts.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__bkts, ptr %__bkts.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__bkts.addr, align 8 - %call = call noundef zeroext i1 @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_uses_single_bucketEPPNS5_15_Hash_node_baseE(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef %0) - br i1 %call, label %if.then, label %if.end - -if.then: ; preds = %entry - br label %return - -if.end: ; preds = %entry - %1 = load ptr, ptr %__bkts.addr, align 8 - %2 = load i64, ptr %__bkt_count.addr, align 8 - call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE21_M_deallocate_bucketsEPPNS_15_Hash_node_baseEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %1, i64 noundef %2) - br label %return - -return: ; preds = %if.end, %if.then - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_uses_single_bucketEPPNS5_15_Hash_node_baseE(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef %__bkts) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__bkts.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__bkts, ptr %__bkts.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__bkts.addr, align 8 - %_M_single_bucket = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 - %cmp = icmp eq ptr %0, %_M_single_bucket - ret i1 %cmp -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE21_M_deallocate_bucketsEPPNS_15_Hash_node_baseEm(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__bkts, i64 noundef %__bkt_count) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__bkts.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - %__ptr = alloca ptr, align 8 - %__alloc = alloca %"class.std::allocator.4", align 1 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store ptr %__bkts, ptr %__bkts.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__bkts.addr, align 8 - %call = call noundef ptr @_ZNSt14pointer_traitsIPPNSt8__detail15_Hash_node_baseEE10pointer_toERS2_(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 - store ptr %call, ptr %__ptr, align 8 - %call2 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEEC2INS_10_Hash_nodeISt4pairIKi1AELb0EEEEERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %__alloc, ptr noundef nonnull align 1 dereferenceable(1) %call2) #5 - %1 = load ptr, ptr %__ptr, align 8 - %2 = load i64, ptr %__bkt_count.addr, align 8 - invoke void @_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__alloc, ptr noundef %1, i64 noundef %2) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #5 - ret void - -lpad: ; preds = %entry - %3 = landingpad { ptr, i32 } - cleanup - %4 = extractvalue { ptr, i32 } %3, 0 - store ptr %4, ptr %exn.slot, align 8 - %5 = extractvalue { ptr, i32 } %3, 1 - store i32 %5, ptr %ehselector.slot, align 4 - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val3 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val3 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14pointer_traitsIPPNSt8__detail15_Hash_node_baseEE10pointer_toERS2_(ptr noundef nonnull align 8 dereferenceable(8) %__r) #2 comdat align 2 { -entry: - %__r.addr = alloca ptr, align 8 - store ptr %__r, ptr %__r.addr, align 8 - %0 = load ptr, ptr %__r.addr, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPNSt8__detail15_Hash_node_baseEEC2INS_10_Hash_nodeISt4pairIKi1AELb0EEEEERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 1 dereferenceable(1) %0) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKi1AELb0EEEELb1EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail9_Map_baseIiSt4pairIKi1AESaIS4_ENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb0ELb1EEELb1EEixEOi(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - %__k.addr = alloca ptr, align 8 - %__h = alloca ptr, align 8 - %__code = alloca i64, align 8 - %__bkt = alloca i64, align 8 - %__node = alloca ptr, align 8 - %__node5 = alloca %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", align 8 - %ref.tmp = alloca %"class.std::tuple", align 8 - %ref.tmp6 = alloca %"class.std::tuple.7", align 1 - %__pos = alloca %"struct.std::__detail::_Node_iterator", align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr %this1, ptr %__h, align 8 - %0 = load ptr, ptr %__h, align 8 - %1 = load ptr, ptr %__k.addr, align 8 - %call = call noundef i64 @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE12_M_hash_codeERS2_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 4 dereferenceable(4) %1) - store i64 %call, ptr %__code, align 8 - %2 = load ptr, ptr %__h, align 8 - %3 = load ptr, ptr %__k.addr, align 8 - %4 = load i64, ptr %__code, align 8 - %call2 = call noundef i64 @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE15_M_bucket_indexERS1_m(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef nonnull align 4 dereferenceable(4) %3, i64 noundef %4) - store i64 %call2, ptr %__bkt, align 8 - %5 = load ptr, ptr %__h, align 8 - %6 = load i64, ptr %__bkt, align 8 - %7 = load ptr, ptr %__k.addr, align 8 - %8 = load i64, ptr %__code, align 8 - %call3 = call noundef ptr @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE12_M_find_nodeEmRS1_m(ptr noundef nonnull align 8 dereferenceable(56) %5, i64 noundef %6, ptr noundef nonnull align 4 dereferenceable(4) %7, i64 noundef %8) - store ptr %call3, ptr %__node, align 8 - %9 = load ptr, ptr %__node, align 8 - %tobool = icmp ne ptr %9, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %10 = load ptr, ptr %__node, align 8 - %call4 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKi1AEE4_M_vEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #5 - %second = getelementptr inbounds %"struct.std::pair", ptr %call4, i32 0, i32 1 - store ptr %second, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %11 = load ptr, ptr %__h, align 8 - %12 = load ptr, ptr %__k.addr, align 8 - call void @_ZSt16forward_as_tupleIJiEESt5tupleIJDpOT_EES3_(ptr sret(%"class.std::tuple") align 8 %ref.tmp, ptr noundef nonnull align 4 dereferenceable(4) %12) #5 - call void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE12_Scoped_nodeC2IJRKSt21piecewise_construct_tSt5tupleIJOiEESM_IJEEEEEPNS5_16_Hashtable_allocISaINS5_10_Hash_nodeIS3_Lb0EEEEEEDpOT_(ptr noundef nonnull align 8 dereferenceable(16) %__node5, ptr noundef %11, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt19piecewise_construct, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp6) - %13 = load ptr, ptr %__h, align 8 - %14 = load ptr, ptr %__k.addr, align 8 - %15 = load i64, ptr %__bkt, align 8 - %16 = load i64, ptr %__code, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %__node5, i32 0, i32 1 - %17 = load ptr, ptr %_M_node, align 8 - %call7 = invoke ptr @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeERS1_mmPNS5_10_Hash_nodeIS3_Lb0EEEm(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 4 dereferenceable(4) %14, i64 noundef %15, i64 noundef %16, ptr noundef %17, i64 noundef 1) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %if.end - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %__pos, i32 0, i32 0 - %coerce.dive8 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - store ptr %call7, ptr %coerce.dive8, align 8 - %_M_node9 = getelementptr inbounds %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %__node5, i32 0, i32 1 - store ptr null, ptr %_M_node9, align 8 - %call10 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKi1AELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %__pos) #5 - %second11 = getelementptr inbounds %"struct.std::pair", ptr %call10, i32 0, i32 1 - store ptr %second11, ptr %retval, align 8 - call void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE12_Scoped_nodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %__node5) #5 - br label %return - -lpad: ; preds = %if.end - %18 = landingpad { ptr, i32 } - cleanup - %19 = extractvalue { ptr, i32 } %18, 0 - store ptr %19, ptr %exn.slot, align 8 - %20 = extractvalue { ptr, i32 } %18, 1 - store i32 %20, ptr %ehselector.slot, align 4 - call void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE12_Scoped_nodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %__node5) #5 - br label %eh.resume - -return: ; preds = %invoke.cont, %if.then - %21 = load ptr, ptr %retval, align 8 - ret ptr %21 - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val12 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val12 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE12_M_hash_codeERS2_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__k.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h1Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) - %0 = load ptr, ptr %__k.addr, align 8 - %1 = load i32, ptr %0, align 4 - %call2 = call noundef i64 @_ZNKSt4hashIiEclEi(ptr noundef nonnull align 1 dereferenceable(1) %call, i32 noundef %1) #5 - ret i64 %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE15_M_bucket_indexERS1_m(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k, i64 noundef %__c) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__k.addr = alloca ptr, align 8 - %__c.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - store i64 %__c, ptr %__c.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__k.addr, align 8 - %1 = load i64, ptr %__c.addr, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %2 = load i64, ptr %_M_bucket_count, align 8 - %call = call noundef i64 @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexERS2_mm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 4 dereferenceable(4) %0, i64 noundef %1, i64 noundef %2) - ret i64 %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE12_M_find_nodeEmRS1_m(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt, ptr noundef nonnull align 4 dereferenceable(4) %__key, i64 noundef %__c) #0 comdat align 2 { -entry: - %retval = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - %__bkt.addr = alloca i64, align 8 - %__key.addr = alloca ptr, align 8 - %__c.addr = alloca i64, align 8 - %__before_n = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt, ptr %__bkt.addr, align 8 - store ptr %__key, ptr %__key.addr, align 8 - store i64 %__c, ptr %__c.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__bkt.addr, align 8 - %1 = load ptr, ptr %__key.addr, align 8 - %2 = load i64, ptr %__c.addr, align 8 - %call = call noundef ptr @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_find_before_nodeEmRS1_m(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %0, ptr noundef nonnull align 4 dereferenceable(4) %1, i64 noundef %2) - store ptr %call, ptr %__before_n, align 8 - %3 = load ptr, ptr %__before_n, align 8 - %tobool = icmp ne ptr %3, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__before_n, align 8 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %4, i32 0, i32 0 - %5 = load ptr, ptr %_M_nxt, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - store ptr null, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKi1AEE4_M_vEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZSt16forward_as_tupleIJiEESt5tupleIJDpOT_EES3_(ptr noalias sret(%"class.std::tuple") align 8 %agg.result, ptr noundef nonnull align 4 dereferenceable(4) %__args) #2 comdat { -entry: - %result.ptr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt5tupleIJOiEEC2IJiELb1ELb1EEEDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %agg.result, ptr noundef nonnull align 4 dereferenceable(4) %0) #5 - ret void -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE12_Scoped_nodeC2IJRKSt21piecewise_construct_tSt5tupleIJOiEESM_IJEEEEEPNS5_16_Hashtable_allocISaINS5_10_Hash_nodeIS3_Lb0EEEEEEDpOT_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef %__h, ptr noundef nonnull align 1 dereferenceable(1) %__args, ptr noundef nonnull align 8 dereferenceable(8) %__args1, ptr noundef nonnull align 1 dereferenceable(1) %__args3) unnamed_addr #11 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__h.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__args.addr2 = alloca ptr, align 8 - %__args.addr4 = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__h, ptr %__h.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - store ptr %__args1, ptr %__args.addr2, align 8 - store ptr %__args3, ptr %__args.addr4, align 8 - %this5 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this5, i32 0, i32 0 - %0 = load ptr, ptr %__h.addr, align 8 - store ptr %0, ptr %_M_h, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this5, i32 0, i32 1 - %1 = load ptr, ptr %__h.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - %3 = load ptr, ptr %__args.addr2, align 8 - %4 = load ptr, ptr %__args.addr4, align 8 - %call = call noundef ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE16_M_allocate_nodeIJRKSt21piecewise_construct_tSt5tupleIJOiEESD_IJEEEEEPS6_DpOT_(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 1 dereferenceable(1) %4) - store ptr %call, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeERS1_mmPNS5_10_Hash_nodeIS3_Lb0EEEm(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k, i64 noundef %__bkt, i64 noundef %__code, ptr noundef %__node, i64 noundef %__n_elt) #0 comdat align 2 { -entry: - %retval = alloca %"struct.std::__detail::_Node_iterator", align 8 - %this.addr = alloca ptr, align 8 - %__k.addr = alloca ptr, align 8 - %__bkt.addr = alloca i64, align 8 - %__code.addr = alloca i64, align 8 - %__node.addr = alloca ptr, align 8 - %__n_elt.addr = alloca i64, align 8 - %__saved_state = alloca ptr, align 8 - %ref.tmp = alloca i64, align 8 - %__do_rehash = alloca %"struct.std::pair.9", align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - store i64 %__bkt, ptr %__bkt.addr, align 8 - store i64 %__code, ptr %__code.addr, align 8 - store ptr %__node, ptr %__node.addr, align 8 - store i64 %__n_elt, ptr %__n_elt.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_rehash_policy = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - %call = call noundef i64 @_ZNKSt8__detail20_Prime_rehash_policy8_M_stateEv(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy) - store i64 %call, ptr %ref.tmp, align 8 - store ptr %ref.tmp, ptr %__saved_state, align 8 - %_M_rehash_policy2 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %0 = load i64, ptr %_M_bucket_count, align 8 - %_M_element_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - %1 = load i64, ptr %_M_element_count, align 8 - %2 = load i64, ptr %__n_elt.addr, align 8 - %call3 = call { i8, i64 } @_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy2, i64 noundef %0, i64 noundef %1, i64 noundef %2) - %3 = getelementptr inbounds { i8, i64 }, ptr %__do_rehash, i32 0, i32 0 - %4 = extractvalue { i8, i64 } %call3, 0 - store i8 %4, ptr %3, align 8 - %5 = getelementptr inbounds { i8, i64 }, ptr %__do_rehash, i32 0, i32 1 - %6 = extractvalue { i8, i64 } %call3, 1 - store i64 %6, ptr %5, align 8 - %first = getelementptr inbounds %"struct.std::pair.9", ptr %__do_rehash, i32 0, i32 0 - %7 = load i8, ptr %first, align 8 - %tobool = trunc i8 %7 to i1 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %second = getelementptr inbounds %"struct.std::pair.9", ptr %__do_rehash, i32 0, i32 1 - %8 = load i64, ptr %second, align 8 - %9 = load ptr, ptr %__saved_state, align 8 - call void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_rehashEmRKm(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %8, ptr noundef nonnull align 8 dereferenceable(8) %9) - %10 = load ptr, ptr %__k.addr, align 8 - %11 = load i64, ptr %__code.addr, align 8 - %call4 = call noundef i64 @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE15_M_bucket_indexERS1_m(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef nonnull align 4 dereferenceable(4) %10, i64 noundef %11) - store i64 %call4, ptr %__bkt.addr, align 8 - br label %if.end - -if.end: ; preds = %if.then, %entry - %12 = load ptr, ptr %__node.addr, align 8 - %13 = load i64, ptr %__code.addr, align 8 - call void @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE13_M_store_codeEPNS_10_Hash_nodeIS4_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %12, i64 noundef %13) - %14 = load i64, ptr %__bkt.addr, align 8 - %15 = load ptr, ptr %__node.addr, align 8 - call void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE22_M_insert_bucket_beginEmPNS5_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %14, ptr noundef %15) - %_M_element_count5 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - %16 = load i64, ptr %_M_element_count5, align 8 - %inc = add i64 %16, 1 - store i64 %inc, ptr %_M_element_count5, align 8 - %17 = load ptr, ptr %__node.addr, align 8 - call void @_ZNSt8__detail14_Node_iteratorISt4pairIKi1AELb0ELb0EEC2EPNS_10_Hash_nodeIS4_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %17) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive6 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - %18 = load ptr, ptr %coerce.dive6, align 8 - ret ptr %18 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKi1AELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %call = call noundef ptr @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #5 - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE12_Scoped_nodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this1, i32 0, i32 1 - %0 = load ptr, ptr %_M_node, align 8 - %tobool = icmp ne ptr %0, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_h = getelementptr inbounds %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this1, i32 0, i32 0 - %1 = load ptr, ptr %_M_h, align 8 - %_M_node2 = getelementptr inbounds %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %_M_node2, align 8 - invoke void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE18_M_deallocate_nodeEPS6_(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %if.then - br label %if.end - -if.end: ; preds = %invoke.cont, %entry - ret void - -terminate.lpad: ; preds = %if.then - %3 = landingpad { ptr, i32 } - catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #15 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h1Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi1ESt4hashIiELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt4hashIiEclEi(ptr noundef nonnull align 1 dereferenceable(1) %this, i32 noundef %__val) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__val.addr = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i32 %__val, ptr %__val.addr, align 4 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i32, ptr %__val.addr, align 4 - %conv = sext i32 %0 to i64 - ret i64 %conv -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi1ESt4hashIiELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexERS2_mm(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 4 dereferenceable(4) %0, i64 noundef %__c, i64 noundef %__bkt_count) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - %__c.addr = alloca i64, align 8 - %__bkt_count.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - store i64 %__c, ptr %__c.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) - %1 = load i64, ptr %__c.addr, align 8 - %2 = load i64, ptr %__bkt_count.addr, align 8 - %call2 = call noundef i64 @_ZNKSt8__detail18_Mod_range_hashingclEmm(ptr noundef nonnull align 1 dereferenceable(1) %call, i64 noundef %1, i64 noundef %2) #5 - ret i64 %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt8__detail18_Mod_range_hashingclEmm(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__num, i64 noundef %__den) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__num.addr = alloca i64, align 8 - %__den.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__num, ptr %__num.addr, align 8 - store i64 %__den, ptr %__den.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__num.addr, align 8 - %1 = load i64, ptr %__den.addr, align 8 - %rem = urem i64 %0, %1 - ret i64 %rem -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_find_before_nodeEmRS1_m(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt, ptr noundef nonnull align 4 dereferenceable(4) %__k, i64 noundef %__code) #0 comdat align 2 { -entry: - %retval = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - %__bkt.addr = alloca i64, align 8 - %__k.addr = alloca ptr, align 8 - %__code.addr = alloca i64, align 8 - %__prev_p = alloca ptr, align 8 - %__p = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt, ptr %__bkt.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - store i64 %__code, ptr %__code.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_buckets, align 8 - %1 = load i64, ptr %__bkt.addr, align 8 - %arrayidx = getelementptr inbounds ptr, ptr %0, i64 %1 - %2 = load ptr, ptr %arrayidx, align 8 - store ptr %2, ptr %__prev_p, align 8 - %3 = load ptr, ptr %__prev_p, align 8 - %tobool = icmp ne ptr %3, null - br i1 %tobool, label %if.end, label %if.then - -if.then: ; preds = %entry - store ptr null, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %4 = load ptr, ptr %__prev_p, align 8 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %4, i32 0, i32 0 - %5 = load ptr, ptr %_M_nxt, align 8 - store ptr %5, ptr %__p, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %if.end - %6 = load ptr, ptr %__k.addr, align 8 - %7 = load i64, ptr %__code.addr, align 8 - %8 = load ptr, ptr %__p, align 8 - %call = call noundef zeroext i1 @_ZNKSt8__detail15_Hashtable_baseIiSt4pairIKi1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_equalsERS2_mPNS_10_Hash_nodeIS4_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 4 dereferenceable(4) %6, i64 noundef %7, ptr noundef %8) - br i1 %call, label %if.then2, label %if.end3 - -if.then2: ; preds = %for.cond - %9 = load ptr, ptr %__prev_p, align 8 - store ptr %9, ptr %retval, align 8 - br label %return - -if.end3: ; preds = %for.cond - %10 = load ptr, ptr %__p, align 8 - %_M_nxt4 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %10, i32 0, i32 0 - %11 = load ptr, ptr %_M_nxt4, align 8 - %tobool5 = icmp ne ptr %11, null - br i1 %tobool5, label %lor.lhs.false, label %if.then8 - -lor.lhs.false: ; preds = %if.end3 - %12 = load ptr, ptr %__p, align 8 - %call6 = call noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKi1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #5 - %call7 = call noundef i64 @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE15_M_bucket_indexEPNS5_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef %call6) #5 - %13 = load i64, ptr %__bkt.addr, align 8 - %cmp = icmp ne i64 %call7, %13 - br i1 %cmp, label %if.then8, label %if.end9 - -if.then8: ; preds = %lor.lhs.false, %if.end3 - br label %for.end - -if.end9: ; preds = %lor.lhs.false - %14 = load ptr, ptr %__p, align 8 - store ptr %14, ptr %__prev_p, align 8 - br label %for.inc - -for.inc: ; preds = %if.end9 - %15 = load ptr, ptr %__p, align 8 - %call10 = call noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKi1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #5 - store ptr %call10, ptr %__p, align 8 - br label %for.cond, !llvm.loop !8 - -for.end: ; preds = %if.then8 - store ptr null, ptr %retval, align 8 - br label %return - -return: ; preds = %for.end, %if.then2, %if.then - %16 = load ptr, ptr %retval, align 8 - ret ptr %16 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt8__detail15_Hashtable_baseIiSt4pairIKi1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_equalsERS2_mPNS_10_Hash_nodeIS4_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k, i64 noundef %__c, ptr noundef %__n) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__k.addr = alloca ptr, align 8 - %__c.addr = alloca i64, align 8 - %__n.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - store i64 %__c, ptr %__c.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__c.addr, align 8 - %1 = load ptr, ptr %__n.addr, align 8 - %call = call noundef zeroext i1 @_ZNSt8__detail15_Hashtable_baseIiSt4pairIKi1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE16_Equal_hash_codeINS_10_Hash_nodeIS4_Lb0EEEE9_S_equalsEmRKSH_(i64 noundef %0, ptr noundef nonnull align 8 dereferenceable(24) %1) - br i1 %call, label %land.rhs, label %land.end - -land.rhs: ; preds = %entry - %call2 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hashtable_baseIiSt4pairIKi1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE5_M_eqEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - %2 = load ptr, ptr %__k.addr, align 8 - %call3 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE10_M_extractEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - %3 = load ptr, ptr %__n.addr, align 8 - %call4 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKi1AEE4_M_vEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #5 - %call5 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt8__detail10_Select1stclIRSt4pairIKi1AEEEDTclsr3stdE3getILi0EEclsr3stdE7forwardIT_Efp_EEEOS7_(ptr noundef nonnull align 1 dereferenceable(1) %call3, ptr noundef nonnull align 8 dereferenceable(16) %call4) - %call6 = call noundef zeroext i1 @_ZNKSt8equal_toIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %call2, ptr noundef nonnull align 4 dereferenceable(4) %2, ptr noundef nonnull align 4 dereferenceable(4) %call5) - br label %land.end - -land.end: ; preds = %land.rhs, %entry - %4 = phi i1 [ false, %entry ], [ %call6, %land.rhs ] - ret i1 %4 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE15_M_bucket_indexEPNS5_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef %__n) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__n.addr, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %1 = load i64, ptr %_M_bucket_count, align 8 - %call = call noundef i64 @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexEPKNS_10_Hash_nodeIS4_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %0, i64 noundef %1) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNSt8__detail15_Hashtable_baseIiSt4pairIKi1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE16_Equal_hash_codeINS_10_Hash_nodeIS4_Lb0EEEE9_S_equalsEmRKSH_(i64 noundef %0, ptr noundef nonnull align 8 dereferenceable(24) %1) #2 comdat align 2 { -entry: - %.addr = alloca i64, align 8 - %.addr1 = alloca ptr, align 8 - store i64 %0, ptr %.addr, align 8 - store ptr %1, ptr %.addr1, align 8 - ret i1 true -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hashtable_baseIiSt4pairIKi1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE5_M_eqEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIiELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt8equal_toIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 4 dereferenceable(4) %__x, ptr noundef nonnull align 4 dereferenceable(4) %__y) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %1 = load i32, ptr %0, align 4 - %2 = load ptr, ptr %__y.addr, align 8 - %3 = load i32, ptr %2, align 4 - %cmp = icmp eq i32 %1, %3 - ret i1 %cmp -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE10_M_extractEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt8__detail10_Select1stclIRSt4pairIKi1AEEEDTclsr3stdE3getILi0EEclsr3stdE7forwardIT_Efp_EEEOS7_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(16) %__x) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm0EKi1AERNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERS6_(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIiELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm0EKi1AERNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERS6_(ptr noundef nonnull align 8 dereferenceable(16) %__in) #2 comdat { -entry: - %__in.addr = alloca ptr, align 8 - store ptr %__in, ptr %__in.addr, align 8 - %0 = load ptr, ptr %__in.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt10__pair_getILm0EE5__getIKi1AEERT_RSt4pairIS4_T0_E(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt10__pair_getILm0EE5__getIKi1AEERT_RSt4pairIS4_T0_E(ptr noundef nonnull align 8 dereferenceable(16) %__pair) #2 comdat align 2 { -entry: - %__pair.addr = alloca ptr, align 8 - store ptr %__pair, ptr %__pair.addr, align 8 - %0 = load ptr, ptr %__pair.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair", ptr %0, i32 0, i32 0 - ret ptr %first -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexEPKNS_10_Hash_nodeIS4_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__bkt_count) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %call3 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h1Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) - to label %invoke.cont2 unwind label %terminate.lpad - -invoke.cont2: ; preds = %invoke.cont - %call5 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE10_M_extractEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - to label %invoke.cont4 unwind label %terminate.lpad - -invoke.cont4: ; preds = %invoke.cont2 - %0 = load ptr, ptr %__p.addr, align 8 - %call6 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt8__detail21_Hash_node_value_baseISt4pairIKi1AEE4_M_vEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #5 - %call8 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt8__detail10_Select1stclIRKSt4pairIKi1AEEEDTclsr3stdE3getILi0EEclsr3stdE7forwardIT_Efp_EEEOS8_(ptr noundef nonnull align 1 dereferenceable(1) %call5, ptr noundef nonnull align 8 dereferenceable(16) %call6) - to label %invoke.cont7 unwind label %terminate.lpad - -invoke.cont7: ; preds = %invoke.cont4 - %1 = load i32, ptr %call8, align 4 - %call9 = call noundef i64 @_ZNKSt4hashIiEclEi(ptr noundef nonnull align 1 dereferenceable(1) %call3, i32 noundef %1) #5 - %2 = load i64, ptr %__bkt_count.addr, align 8 - %call10 = call noundef i64 @_ZNKSt8__detail18_Mod_range_hashingclEmm(ptr noundef nonnull align 1 dereferenceable(1) %call, i64 noundef %call9, i64 noundef %2) #5 - ret i64 %call10 - -terminate.lpad: ; preds = %invoke.cont4, %invoke.cont2, %invoke.cont, %entry - %3 = landingpad { ptr, i32 } - catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #15 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt8__detail10_Select1stclIRKSt4pairIKi1AEEEDTclsr3stdE3getILi0EEclsr3stdE7forwardIT_Efp_EEEOS8_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(16) %__x) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm0EKi1AERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt8__detail21_Hash_node_value_baseISt4pairIKi1AEE4_M_vEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNKSt8__detail21_Hash_node_value_baseISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm0EKi1AERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKS6_(ptr noundef nonnull align 8 dereferenceable(16) %__in) #2 comdat { -entry: - %__in.addr = alloca ptr, align 8 - store ptr %__in, ptr %__in.addr, align 8 - %0 = load ptr, ptr %__in.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt10__pair_getILm0EE11__const_getIKi1AEERKT_RKSt4pairIS4_T0_E(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt10__pair_getILm0EE11__const_getIKi1AEERKT_RKSt4pairIS4_T0_E(ptr noundef nonnull align 8 dereferenceable(16) %__pair) #2 comdat align 2 { -entry: - %__pair.addr = alloca ptr, align 8 - store ptr %__pair, ptr %__pair.addr, align 8 - %0 = load ptr, ptr %__pair.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair", ptr %0, i32 0, i32 0 - ret ptr %first -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt8__detail21_Hash_node_value_baseISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::__detail::_Hash_node_value_base", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %_M_storage) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKi1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_buffer", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5tupleIJOiEEC2IJiELb1ELb1EEEDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 4 dereferenceable(4) %__elements) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__elements.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__elements, ptr %__elements.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__elements.addr, align 8 - invoke void @_ZNSt11_Tuple_implILm0EJOiEEC2IiEEOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef nonnull align 4 dereferenceable(4) %0) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - ret void - -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #15 - unreachable -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Tuple_implILm0EJOiEEC2IiEEOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 4 dereferenceable(4) %__head) unnamed_addr #11 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__head.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__head, ptr %__head.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__head.addr, align 8 - call void @_ZNSt10_Head_baseILm0EOiLb0EEC2IiEEOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef nonnull align 4 dereferenceable(4) %0) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_Head_baseILm0EOiLb0EEC2IiEEOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 4 dereferenceable(4) %__h) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__h.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__h, ptr %__h.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_head_impl = getelementptr inbounds %"struct.std::_Head_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__h.addr, align 8 - store ptr %0, ptr %_M_head_impl, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE16_M_allocate_nodeIJRKSt21piecewise_construct_tSt5tupleIJOiEESD_IJEEEEEPS6_DpOT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 1 dereferenceable(1) %__args, ptr noundef nonnull align 8 dereferenceable(8) %__args1, ptr noundef nonnull align 1 dereferenceable(1) %__args3) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__args.addr2 = alloca ptr, align 8 - %__args.addr4 = alloca ptr, align 8 - %__nptr = alloca ptr, align 8 - %__n = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - store ptr %__args1, ptr %__args.addr2, align 8 - store ptr %__args3, ptr %__args.addr4, align 8 - %this5 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this5) - %call6 = call noundef ptr @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEE8allocateERS7_m(ptr noundef nonnull align 1 dereferenceable(1) %call, i64 noundef 1) - store ptr %call6, ptr %__nptr, align 8 - %0 = load ptr, ptr %__nptr, align 8 - %call7 = call noundef ptr @_ZSt12__to_addressINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEPT_S8_(ptr noundef %0) #5 - store ptr %call7, ptr %__n, align 8 - %1 = load ptr, ptr %__n, align 8 - call void @_ZNSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1) #5 - %call8 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this5) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %2 = load ptr, ptr %__n, align 8 - %call9 = call noundef ptr @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKi1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #5 - %3 = load ptr, ptr %__args.addr, align 8 - %4 = load ptr, ptr %__args.addr2, align 8 - %5 = load ptr, ptr %__args.addr4, align 8 - invoke void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEE9constructIS5_JRKSt21piecewise_construct_tSt5tupleIJOiEESD_IJEEEEEvRS7_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %call8, ptr noundef %call9, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 1 dereferenceable(1) %5) - to label %invoke.cont10 unwind label %lpad - -invoke.cont10: ; preds = %invoke.cont - %6 = load ptr, ptr %__n, align 8 - ret ptr %6 - -lpad: ; preds = %invoke.cont, %entry - %7 = landingpad { ptr, i32 } - catch ptr null - %8 = extractvalue { ptr, i32 } %7, 0 - store ptr %8, ptr %exn.slot, align 8 - %9 = extractvalue { ptr, i32 } %7, 1 - store i32 %9, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %10 = call ptr @__cxa_begin_catch(ptr %exn) #5 - %call13 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this5) - to label %invoke.cont12 unwind label %lpad11 - -invoke.cont12: ; preds = %catch - %11 = load ptr, ptr %__nptr, align 8 - invoke void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEE10deallocateERS7_PS6_m(ptr noundef nonnull align 1 dereferenceable(1) %call13, ptr noundef %11, i64 noundef 1) - to label %invoke.cont14 unwind label %lpad11 - -invoke.cont14: ; preds = %invoke.cont12 - invoke void @__cxa_rethrow() #16 - to label %unreachable unwind label %lpad11 - -lpad11: ; preds = %invoke.cont14, %invoke.cont12, %catch - %12 = landingpad { ptr, i32 } - cleanup - %13 = extractvalue { ptr, i32 } %12, 0 - store ptr %13, ptr %exn.slot, align 8 - %14 = extractvalue { ptr, i32 } %12, 1 - store i32 %14, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont15 unwind label %terminate.lpad - -invoke.cont15: ; preds = %lpad11 - br label %eh.resume - -try.cont: ; No predecessors! - call void @llvm.trap() - unreachable - -eh.resume: ; preds = %invoke.cont15 - %exn16 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn16, 0 - %lpad.val17 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val17 - -terminate.lpad: ; preds = %lpad11 - %15 = landingpad { ptr, i32 } - catch ptr null - %16 = extractvalue { ptr, i32 } %15, 0 - call void @__clang_call_terminate(ptr %16) #15 - unreachable - -unreachable: ; preds = %invoke.cont14 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEE8allocateERS7_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__to_addressINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEPT_S8_(ptr noundef %__ptr) #2 comdat { -entry: - %__ptr.addr = alloca ptr, align 8 - store ptr %__ptr, ptr %__ptr.addr, align 8 - %0 = load ptr, ptr %__ptr.addr, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKi1AEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEEE9constructIS5_JRKSt21piecewise_construct_tSt5tupleIJOiEESD_IJEEEEEvRS7_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 1 dereferenceable(1) %__args, ptr noundef nonnull align 8 dereferenceable(8) %__args1, ptr noundef nonnull align 1 dereferenceable(1) %__args3) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__args.addr2 = alloca ptr, align 8 - %__args.addr4 = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - store ptr %__args1, ptr %__args.addr2, align 8 - store ptr %__args3, ptr %__args.addr4, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - %3 = load ptr, ptr %__args.addr2, align 8 - %4 = load ptr, ptr %__args.addr4, align 8 - call void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE9constructIS6_JRKSt21piecewise_construct_tSt5tupleIJOiEESD_IJEEEEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 1 dereferenceable(1) %4) - ret void -} - -declare void @__cxa_rethrow() - -declare void @__cxa_end_catch() - -; Function Attrs: cold noreturn nounwind -declare void @llvm.trap() #12 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 24 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #17 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 384307168202282325 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #13 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #14 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKi1AEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail15_Hash_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %_M_storage = getelementptr inbounds %"struct.std::__detail::_Hash_node_value_base", ptr %this1, i32 0, i32 1 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKi1AELb0EEEE9constructIS6_JRKSt21piecewise_construct_tSt5tupleIJOiEESD_IJEEEEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 1 dereferenceable(1) %__args, ptr noundef nonnull align 8 dereferenceable(8) %__args1, ptr noundef nonnull align 1 dereferenceable(1) %__args3) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__args.addr2 = alloca ptr, align 8 - %__args.addr4 = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::piecewise_construct_t", align 1 - %agg.tmp6 = alloca %"class.std::tuple", align 8 - %agg.tmp7 = alloca %"class.std::tuple.7", align 1 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - store ptr %__args1, ptr %__args.addr2, align 8 - store ptr %__args3, ptr %__args.addr4, align 8 - %this5 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - %2 = load ptr, ptr %__args.addr2, align 8 - call void @_ZNSt5tupleIJOiEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(8) %agg.tmp6, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - %3 = load ptr, ptr %__args.addr4, align 8 - call void @_ZNSt4pairIKi1AEC2IJOiEJEEESt21piecewise_construct_tSt5tupleIJDpT_EES6_IJDpT0_EE(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef %agg.tmp6) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5tupleIJOiEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load ptr, ptr %.addr, align 8 - call void @_ZNSt11_Tuple_implILm0EJOiEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef nonnull align 8 dereferenceable(8) %1) #5 - ret void -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairIKi1AEC2IJOiEJEEESt21piecewise_construct_tSt5tupleIJDpT_EES6_IJDpT0_EE(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef %__first) unnamed_addr #11 comdat align 2 { -entry: - %0 = alloca %"struct.std::piecewise_construct_t", align 1 - %__second = alloca %"class.std::tuple.7", align 1 - %this.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_Index_tuple", align 1 - %agg.tmp3 = alloca %"struct.std::_Index_tuple.8", align 1 - store ptr %this, ptr %this.addr, align 8 - %this2 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt4pairIKi1AEC2IJOiEJLm0EEJEJEEERSt5tupleIJDpT_EERS5_IJDpT1_EESt12_Index_tupleIJXspT0_EEESE_IJXspT2_EEE(ptr noundef nonnull align 8 dereferenceable(16) %this2, ptr noundef nonnull align 8 dereferenceable(8) %__first, ptr noundef nonnull align 1 dereferenceable(1) %__second) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Tuple_implILm0EJOiEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__in) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__in.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__in, ptr %__in.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__in.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt11_Tuple_implILm0EJOiEE7_M_headERS1_(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 - call void @_ZNSt10_Head_baseILm0EOiLb0EEC2IiEEOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef nonnull align 4 dereferenceable(4) %call) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt11_Tuple_implILm0EJOiEE7_M_headERS1_(ptr noundef nonnull align 8 dereferenceable(8) %__t) #2 comdat align 2 { -entry: - %__t.addr = alloca ptr, align 8 - store ptr %__t, ptr %__t.addr, align 8 - %0 = load ptr, ptr %__t.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt10_Head_baseILm0EOiLb0EE7_M_headERS1_(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt10_Head_baseILm0EOiLb0EE7_M_headERS1_(ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat align 2 { -entry: - %__b.addr = alloca ptr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__b.addr, align 8 - %_M_head_impl = getelementptr inbounds %"struct.std::_Head_base", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_head_impl, align 8 - ret ptr %1 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairIKi1AEC2IJOiEJLm0EEJEJEEERSt5tupleIJDpT_EERS5_IJDpT1_EESt12_Index_tupleIJXspT0_EEESE_IJXspT2_EEE(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(8) %__tuple1, ptr noundef nonnull align 1 dereferenceable(1) %__tuple2) unnamed_addr #7 comdat align 2 { -entry: - %0 = alloca %"struct.std::_Index_tuple", align 1 - %1 = alloca %"struct.std::_Index_tuple.8", align 1 - %this.addr = alloca ptr, align 8 - %__tuple1.addr = alloca ptr, align 8 - %__tuple2.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__tuple1, ptr %__tuple1.addr, align 8 - store ptr %__tuple2, ptr %__tuple2.addr, align 8 - %this2 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair", ptr %this2, i32 0, i32 0 - %2 = load ptr, ptr %__tuple1.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm0EJOiEERNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERS5_(ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - %3 = load i32, ptr %call, align 4 - store i32 %3, ptr %first, align 8 - %second = getelementptr inbounds %"struct.std::pair", ptr %this2, i32 0, i32 1 - call void @llvm.memset.p0.i64(ptr align 8 %second, i8 0, i64 8, i1 false) - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %second) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm0EJOiEERNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERS5_(ptr noundef nonnull align 8 dereferenceable(8) %__t) #2 comdat { -entry: - %__t.addr = alloca ptr, align 8 - store ptr %__t, ptr %__t.addr, align 8 - %0 = load ptr, ptr %__t.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt12__get_helperILm0EOiJEERT0_RSt11_Tuple_implIXT_EJS1_DpT1_EE(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt12__get_helperILm0EOiJEERT0_RSt11_Tuple_implIXT_EJS1_DpT1_EE(ptr noundef nonnull align 8 dereferenceable(8) %__t) #2 comdat { -entry: - %__t.addr = alloca ptr, align 8 - store ptr %__t, ptr %__t.addr, align 8 - %0 = load ptr, ptr %__t.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt11_Tuple_implILm0EJOiEE7_M_headERS1_(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt8__detail20_Prime_rehash_policy8_M_stateEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_next_resize = getelementptr inbounds %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 1 - %0 = load i64, ptr %_M_next_resize, align 8 - ret i64 %0 -} - -declare { i8, i64 } @_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i64 noundef, i64 noundef) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_rehashEmRKm(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt_count, ptr noundef nonnull align 8 dereferenceable(8) %__state) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - %__state.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::integral_constant", align 1 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - store ptr %__state, ptr %__state.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__bkt_count.addr, align 8 - invoke void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - br label %try.cont - -lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - store ptr %2, ptr %exn.slot, align 8 - %3 = extractvalue { ptr, i32 } %1, 1 - store i32 %3, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %4 = call ptr @__cxa_begin_catch(ptr %exn) #5 - %_M_rehash_policy = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - %5 = load ptr, ptr %__state.addr, align 8 - %6 = load i64, ptr %5, align 8 - invoke void @_ZNSt8__detail20_Prime_rehash_policy8_M_resetEm(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy, i64 noundef %6) - to label %invoke.cont3 unwind label %lpad2 - -invoke.cont3: ; preds = %catch - invoke void @__cxa_rethrow() #16 - to label %unreachable unwind label %lpad2 - -lpad2: ; preds = %invoke.cont3, %catch - %7 = landingpad { ptr, i32 } - cleanup - %8 = extractvalue { ptr, i32 } %7, 0 - store ptr %8, ptr %exn.slot, align 8 - %9 = extractvalue { ptr, i32 } %7, 1 - store i32 %9, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont4 unwind label %terminate.lpad - -invoke.cont4: ; preds = %lpad2 - br label %eh.resume - -try.cont: ; preds = %invoke.cont - ret void - -eh.resume: ; preds = %invoke.cont4 - %exn5 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn5, 0 - %lpad.val6 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val6 - -terminate.lpad: ; preds = %lpad2 - %10 = landingpad { ptr, i32 } - catch ptr null - %11 = extractvalue { ptr, i32 } %10, 0 - call void @__clang_call_terminate(ptr %11) #15 - unreachable - -unreachable: ; preds = %invoke.cont3 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE13_M_store_codeEPNS_10_Hash_nodeIS4_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %0, i64 noundef %1) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - %.addr1 = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - store i64 %1, ptr %.addr1, align 8 - %this2 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE22_M_insert_bucket_beginEmPNS5_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt, ptr noundef %__node) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__bkt.addr = alloca i64, align 8 - %__node.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt, ptr %__bkt.addr, align 8 - store ptr %__node, ptr %__node.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_buckets, align 8 - %1 = load i64, ptr %__bkt.addr, align 8 - %arrayidx = getelementptr inbounds ptr, ptr %0, i64 %1 - %2 = load ptr, ptr %arrayidx, align 8 - %tobool = icmp ne ptr %2, null - br i1 %tobool, label %if.then, label %if.else - -if.then: ; preds = %entry - %_M_buckets2 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %3 = load ptr, ptr %_M_buckets2, align 8 - %4 = load i64, ptr %__bkt.addr, align 8 - %arrayidx3 = getelementptr inbounds ptr, ptr %3, i64 %4 - %5 = load ptr, ptr %arrayidx3, align 8 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %5, i32 0, i32 0 - %6 = load ptr, ptr %_M_nxt, align 8 - %7 = load ptr, ptr %__node.addr, align 8 - %_M_nxt4 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %7, i32 0, i32 0 - store ptr %6, ptr %_M_nxt4, align 8 - %8 = load ptr, ptr %__node.addr, align 8 - %_M_buckets5 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %9 = load ptr, ptr %_M_buckets5, align 8 - %10 = load i64, ptr %__bkt.addr, align 8 - %arrayidx6 = getelementptr inbounds ptr, ptr %9, i64 %10 - %11 = load ptr, ptr %arrayidx6, align 8 - %_M_nxt7 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %11, i32 0, i32 0 - store ptr %8, ptr %_M_nxt7, align 8 - br label %if.end21 - -if.else: ; preds = %entry - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt8 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - %12 = load ptr, ptr %_M_nxt8, align 8 - %13 = load ptr, ptr %__node.addr, align 8 - %_M_nxt9 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %13, i32 0, i32 0 - store ptr %12, ptr %_M_nxt9, align 8 - %14 = load ptr, ptr %__node.addr, align 8 - %_M_before_begin10 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt11 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin10, i32 0, i32 0 - store ptr %14, ptr %_M_nxt11, align 8 - %15 = load ptr, ptr %__node.addr, align 8 - %_M_nxt12 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %15, i32 0, i32 0 - %16 = load ptr, ptr %_M_nxt12, align 8 - %tobool13 = icmp ne ptr %16, null - br i1 %tobool13, label %if.then14, label %if.end - -if.then14: ; preds = %if.else - %17 = load ptr, ptr %__node.addr, align 8 - %_M_buckets15 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %18 = load ptr, ptr %_M_buckets15, align 8 - %19 = load ptr, ptr %__node.addr, align 8 - %call = call noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKi1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #5 - %call16 = call noundef i64 @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE15_M_bucket_indexEPNS5_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef %call) #5 - %arrayidx17 = getelementptr inbounds ptr, ptr %18, i64 %call16 - store ptr %17, ptr %arrayidx17, align 8 - br label %if.end - -if.end: ; preds = %if.then14, %if.else - %_M_before_begin18 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_buckets19 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %20 = load ptr, ptr %_M_buckets19, align 8 - %21 = load i64, ptr %__bkt.addr, align 8 - %arrayidx20 = getelementptr inbounds ptr, ptr %20, i64 %21 - store ptr %_M_before_begin18, ptr %arrayidx20, align 8 - br label %if.end21 - -if.end21: ; preds = %if.end, %if.then - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail14_Node_iteratorISt4pairIKi1AELb0ELb0EEC2EPNS_10_Hash_nodeIS4_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__p) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZNSt8__detail19_Node_iterator_baseISt4pairIKi1AELb0EEC2EPNS_10_Hash_nodeIS4_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %0) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt_count) #0 comdat align 2 { -entry: - %0 = alloca %"struct.std::integral_constant", align 1 - %this.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - %__new_buckets = alloca ptr, align 8 - %__p = alloca ptr, align 8 - %__bbegin_bkt = alloca i64, align 8 - %__next = alloca ptr, align 8 - %__bkt = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__bkt_count.addr, align 8 - %call = call noundef ptr @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %1) - store ptr %call, ptr %__new_buckets, align 8 - %call2 = call noundef ptr @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) - store ptr %call2, ptr %__p, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - store ptr null, ptr %_M_nxt, align 8 - store i64 0, ptr %__bbegin_bkt, align 8 - br label %while.cond - -while.cond: ; preds = %if.end22, %entry - %2 = load ptr, ptr %__p, align 8 - %tobool = icmp ne ptr %2, null - br i1 %tobool, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %3 = load ptr, ptr %__p, align 8 - %call3 = call noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKi1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #5 - store ptr %call3, ptr %__next, align 8 - %4 = load ptr, ptr %__p, align 8 - %5 = load i64, ptr %__bkt_count.addr, align 8 - %call4 = call noundef i64 @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKi1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexEPKNS_10_Hash_nodeIS4_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %4, i64 noundef %5) #5 - store i64 %call4, ptr %__bkt, align 8 - %6 = load ptr, ptr %__new_buckets, align 8 - %7 = load i64, ptr %__bkt, align 8 - %arrayidx = getelementptr inbounds ptr, ptr %6, i64 %7 - %8 = load ptr, ptr %arrayidx, align 8 - %tobool5 = icmp ne ptr %8, null - br i1 %tobool5, label %if.else, label %if.then - -if.then: ; preds = %while.body - %_M_before_begin6 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt7 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin6, i32 0, i32 0 - %9 = load ptr, ptr %_M_nxt7, align 8 - %10 = load ptr, ptr %__p, align 8 - %_M_nxt8 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %10, i32 0, i32 0 - store ptr %9, ptr %_M_nxt8, align 8 - %11 = load ptr, ptr %__p, align 8 - %_M_before_begin9 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt10 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin9, i32 0, i32 0 - store ptr %11, ptr %_M_nxt10, align 8 - %_M_before_begin11 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %12 = load ptr, ptr %__new_buckets, align 8 - %13 = load i64, ptr %__bkt, align 8 - %arrayidx12 = getelementptr inbounds ptr, ptr %12, i64 %13 - store ptr %_M_before_begin11, ptr %arrayidx12, align 8 - %14 = load ptr, ptr %__p, align 8 - %_M_nxt13 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %14, i32 0, i32 0 - %15 = load ptr, ptr %_M_nxt13, align 8 - %tobool14 = icmp ne ptr %15, null - br i1 %tobool14, label %if.then15, label %if.end - -if.then15: ; preds = %if.then - %16 = load ptr, ptr %__p, align 8 - %17 = load ptr, ptr %__new_buckets, align 8 - %18 = load i64, ptr %__bbegin_bkt, align 8 - %arrayidx16 = getelementptr inbounds ptr, ptr %17, i64 %18 - store ptr %16, ptr %arrayidx16, align 8 - br label %if.end - -if.end: ; preds = %if.then15, %if.then - %19 = load i64, ptr %__bkt, align 8 - store i64 %19, ptr %__bbegin_bkt, align 8 - br label %if.end22 - -if.else: ; preds = %while.body - %20 = load ptr, ptr %__new_buckets, align 8 - %21 = load i64, ptr %__bkt, align 8 - %arrayidx17 = getelementptr inbounds ptr, ptr %20, i64 %21 - %22 = load ptr, ptr %arrayidx17, align 8 - %_M_nxt18 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %22, i32 0, i32 0 - %23 = load ptr, ptr %_M_nxt18, align 8 - %24 = load ptr, ptr %__p, align 8 - %_M_nxt19 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %24, i32 0, i32 0 - store ptr %23, ptr %_M_nxt19, align 8 - %25 = load ptr, ptr %__p, align 8 - %26 = load ptr, ptr %__new_buckets, align 8 - %27 = load i64, ptr %__bkt, align 8 - %arrayidx20 = getelementptr inbounds ptr, ptr %26, i64 %27 - %28 = load ptr, ptr %arrayidx20, align 8 - %_M_nxt21 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %28, i32 0, i32 0 - store ptr %25, ptr %_M_nxt21, align 8 - br label %if.end22 - -if.end22: ; preds = %if.else, %if.end - %29 = load ptr, ptr %__next, align 8 - store ptr %29, ptr %__p, align 8 - br label %while.cond, !llvm.loop !9 - -while.end: ; preds = %while.cond - call void @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) - %30 = load i64, ptr %__bkt_count.addr, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - store i64 %30, ptr %_M_bucket_count, align 8 - %31 = load ptr, ptr %__new_buckets, align 8 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - store ptr %31, ptr %_M_buckets, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail20_Prime_rehash_policy8_M_resetEm(ptr noundef nonnull align 8 dereferenceable(16) %this, i64 noundef %__state) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__state.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__state, ptr %__state.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__state.addr, align 8 - %_M_next_resize = getelementptr inbounds %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 1 - store i64 %0, ptr %_M_next_resize, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt_count) #0 comdat align 2 { -entry: - %retval = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__bkt_count.addr, align 8 - %cmp = icmp eq i64 %0, 1 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_single_bucket = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 - store ptr null, ptr %_M_single_bucket, align 8 - %_M_single_bucket2 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 - store ptr %_M_single_bucket2, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %1 = load i64, ptr %__bkt_count.addr, align 8 - %call = call noundef ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, i64 noundef %1) - store ptr %call, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %2 = load ptr, ptr %retval, align 8 - ret ptr %2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__bkt_count) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - %__alloc = alloca %"class.std::allocator.4", align 1 - %__ptr = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %__p = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKi1AELb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEEC2INS_10_Hash_nodeISt4pairIKi1AELb0EEEEERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %__alloc, ptr noundef nonnull align 1 dereferenceable(1) %call) #5 - %0 = load i64, ptr %__bkt_count.addr, align 8 - %call2 = invoke noundef ptr @_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__alloc, i64 noundef %0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - store ptr %call2, ptr %__ptr, align 8 - %1 = load ptr, ptr %__ptr, align 8 - %call3 = call noundef ptr @_ZSt12__to_addressIPNSt8__detail15_Hash_node_baseEEPT_S4_(ptr noundef %1) #5 - store ptr %call3, ptr %__p, align 8 - %2 = load ptr, ptr %__p, align 8 - %3 = load i64, ptr %__bkt_count.addr, align 8 - %mul = mul i64 %3, 8 - call void @llvm.memset.p0.i64(ptr align 8 %2, i8 0, i64 %mul, i1 false) - %4 = load ptr, ptr %__p, align 8 - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #5 - ret ptr %4 - -lpad: ; preds = %entry - %5 = landingpad { ptr, i32 } - cleanup - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val4 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val4 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__to_addressIPNSt8__detail15_Hash_node_baseEEPT_S4_(ptr noundef %__ptr) #2 comdat { -entry: - %__ptr.addr = alloca ptr, align 8 - store ptr %__ptr, ptr %__ptr.addr, align 8 - %0 = load ptr, ptr %__ptr.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #17 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail19_Node_iterator_baseISt4pairIKi1AELb0EEC2EPNS_10_Hash_nodeIS4_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__p) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__p.addr, align 8 - store ptr %0, ptr %_M_cur, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::__detail::_Node_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNKSt10_HashtableIiSt4pairIKi1AESaIS3_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) - call void @_ZNSt8__detail14_Node_iteratorISt4pairIKi1AELb0ELb0EEC2EPNS_10_Hash_nodeIS4_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %call) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive2 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive2, align 8 - ret ptr %0 -} - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_unordered_map_1.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noinline uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #10 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { cold noreturn nounwind } -attributes #13 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #14 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #15 = { noreturn nounwind } -attributes #16 = { noreturn } -attributes #17 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} -!9 = distinct !{!9, !7} diff --git a/test_cases_bc/basic_cpp_tests/unordered_map-2.cpp.bc b/test_cases_bc/basic_cpp_tests/unordered_map-2.cpp.bc deleted file mode 100644 index a1ad3f2d..00000000 --- a/test_cases_bc/basic_cpp_tests/unordered_map-2.cpp.bc +++ /dev/null @@ -1,2963 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/unordered_map-2.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/unordered_map-2.cpp" -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-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%"struct.std::piecewise_construct_t" = type { i8 } -%"class.std::unordered_map" = type { %"class.std::_Hashtable" } -%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr } -%"struct.std::__detail::_Hash_node_base" = type { ptr } -%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 } -%class.A = type { ptr } -%"struct.std::__detail::_Node_const_iterator" = type { %"struct.std::__detail::_Node_iterator_base" } -%"struct.std::__detail::_Node_iterator_base" = type { ptr } -%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" } -%"struct.std::pair" = type { i32, ptr } -%"struct.std::__detail::_Hash_node_value_base" = type { %"struct.std::__detail::_Hash_node_base", %"struct.__gnu_cxx::__aligned_buffer" } -%"struct.__gnu_cxx::__aligned_buffer" = type { %"union.std::aligned_storage<16, 8>::type" } -%"union.std::aligned_storage<16, 8>::type" = type { [16 x i8] } -%"class.std::allocator.4" = type { i8 } -%"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node" = type { ptr, ptr } -%"class.std::tuple" = type { %"struct.std::_Tuple_impl" } -%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base" } -%"struct.std::_Head_base" = type { ptr } -%"class.std::tuple.7" = type { i8 } -%"struct.std::pair.9" = type { i8, i64 } -%"struct.std::_Index_tuple" = type { i8 } -%"struct.std::_Index_tuple.8" = type { i8 } -%"struct.std::integral_constant" = type { i8 } - -$_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEEC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEEixEOi = comdat any - -$_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEE5beginEv = comdat any - -$_ZNSt8__detail20_Node_const_iteratorISt4pairIKiPK1AELb0ELb0EEC2ERKNS_14_Node_iteratorIS6_Lb0ELb0EEE = comdat any - -$_ZNKSt8__detail20_Node_const_iteratorISt4pairIKiPK1AELb0ELb0EEptEv = comdat any - -$_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEED2Ev = comdat any - -$_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEEC2Ev = comdat any - -$_ZNSt8__detail15_Hashtable_baseIiSt4pairIKiPK1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEEC2Ev = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEEC2Ev = comdat any - -$_ZNSt8__detail15_Hash_node_baseC2Ev = comdat any - -$_ZNSt8__detail20_Prime_rehash_policyC2Ef = comdat any - -$_ZNSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EEC2Ev = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIiELb1EEC2Ev = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EEC2Ev = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi1ESt4hashIiELb1EEC2Ev = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EEC2Ev = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEELb1EEC2Ev = comdat any - -$_ZNSaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEC2Ev = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEED2Ev = comdat any - -$_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE5clearEv = comdat any - -$_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEED2Ev = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE19_M_deallocate_nodesEPS8_ = comdat any - -$_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv = comdat any - -$_ZNKSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EE7_M_nextEv = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE18_M_deallocate_nodeEPS8_ = comdat any - -$_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEE7destroyIS7_EEvRS9_PT_ = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE17_M_node_allocatorEv = comdat any - -$_ZNSt8__detail21_Hash_node_value_baseISt4pairIKiPK1AEE9_M_valptrEv = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE22_M_deallocate_node_ptrEPS8_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE7destroyIS8_EEvPT_ = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEELb1EE6_M_getEv = comdat any - -$_ZN9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE6_M_ptrEv = comdat any - -$_ZN9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE7_M_addrEv = comdat any - -$_ZNSt14pointer_traitsIPNSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE10pointer_toERS8_ = comdat any - -$_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEE10deallocateERS9_PS8_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE10deallocateEPS9_m = comdat any - -$_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEPPNS7_15_Hash_node_baseEm = comdat any - -$_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_uses_single_bucketEPPNS7_15_Hash_node_baseE = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE21_M_deallocate_bucketsEPPNS_15_Hash_node_baseEm = comdat any - -$_ZNSt14pointer_traitsIPPNSt8__detail15_Hash_node_baseEE10pointer_toERS2_ = comdat any - -$_ZNSaIPNSt8__detail15_Hash_node_baseEEC2INS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEERKSaIT_E = comdat any - -$_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE10deallocateERS3_PS2_m = comdat any - -$_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEEC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS3_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEELb1EED2Ev = comdat any - -$_ZNSaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEED2Ev = comdat any - -$_ZNSt8__detail9_Map_baseIiSt4pairIKiPK1AESaIS6_ENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb0ELb1EEELb1EEixEOi = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE12_M_hash_codeERS2_ = comdat any - -$_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE15_M_bucket_indexERS1_m = comdat any - -$_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE12_M_find_nodeEmRS1_m = comdat any - -$_ZNSt8__detail21_Hash_node_value_baseISt4pairIKiPK1AEE4_M_vEv = comdat any - -$_ZSt16forward_as_tupleIJiEESt5tupleIJDpOT_EES3_ = comdat any - -$_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE12_Scoped_nodeC2IJRKSt21piecewise_construct_tSt5tupleIJOiEESO_IJEEEEEPNS7_16_Hashtable_allocISaINS7_10_Hash_nodeIS5_Lb0EEEEEEDpOT_ = comdat any - -$_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeERS1_mmPNS7_10_Hash_nodeIS5_Lb0EEEm = comdat any - -$_ZNKSt8__detail14_Node_iteratorISt4pairIKiPK1AELb0ELb0EEptEv = comdat any - -$_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE12_Scoped_nodeD2Ev = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h1Ev = comdat any - -$_ZNKSt4hashIiEclEi = comdat any - -$_ZNKSt8__detail21_Hashtable_ebo_helperILi1ESt4hashIiELb1EE7_M_cgetEv = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexERS2_mm = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h2Ev = comdat any - -$_ZNKSt8__detail18_Mod_range_hashingclEmm = comdat any - -$_ZNKSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EE7_M_cgetEv = comdat any - -$_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_find_before_nodeEmRS1_m = comdat any - -$_ZNKSt8__detail15_Hashtable_baseIiSt4pairIKiPK1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_equalsERS2_mPNS_10_Hash_nodeIS6_Lb0EEE = comdat any - -$_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE15_M_bucket_indexEPNS7_10_Hash_nodeIS5_Lb0EEE = comdat any - -$_ZNSt8__detail15_Hashtable_baseIiSt4pairIKiPK1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE16_Equal_hash_codeINS_10_Hash_nodeIS6_Lb0EEEE9_S_equalsEmRKSJ_ = comdat any - -$_ZNKSt8__detail15_Hashtable_baseIiSt4pairIKiPK1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE5_M_eqEv = comdat any - -$_ZNKSt8equal_toIiEclERKiS2_ = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE10_M_extractEv = comdat any - -$_ZNKSt8__detail10_Select1stclIRSt4pairIKiPK1AEEEDTclsr3stdE3getILi0EEclsr3stdE7forwardIT_Efp_EEEOS9_ = comdat any - -$_ZNKSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIiELb1EE7_M_cgetEv = comdat any - -$_ZNKSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EE7_M_cgetEv = comdat any - -$_ZSt3getILm0EKiPK1AERNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERS8_ = comdat any - -$_ZNSt10__pair_getILm0EE5__getIKiPK1AEERT_RSt4pairIS6_T0_E = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexEPKNS_10_Hash_nodeIS6_Lb0EEEm = comdat any - -$_ZNKSt8__detail10_Select1stclIRKSt4pairIKiPK1AEEEDTclsr3stdE3getILi0EEclsr3stdE7forwardIT_Efp_EEEOSA_ = comdat any - -$_ZNKSt8__detail21_Hash_node_value_baseISt4pairIKiPK1AEE4_M_vEv = comdat any - -$_ZSt3getILm0EKiPK1AERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKS8_ = comdat any - -$_ZNSt10__pair_getILm0EE11__const_getIKiPK1AEERKT_RKSt4pairIS6_T0_E = comdat any - -$_ZNKSt8__detail21_Hash_node_value_baseISt4pairIKiPK1AEE9_M_valptrEv = comdat any - -$_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE6_M_ptrEv = comdat any - -$_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE7_M_addrEv = comdat any - -$_ZNSt5tupleIJOiEEC2IJiELb1ELb1EEEDpOT_ = comdat any - -$_ZNSt11_Tuple_implILm0EJOiEEC2IiEEOT_ = comdat any - -$_ZNSt10_Head_baseILm0EOiLb0EEC2IiEEOT_ = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE16_M_allocate_nodeIJRKSt21piecewise_construct_tSt5tupleIJOiEESF_IJEEEEEPS8_DpOT_ = comdat any - -$_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEE8allocateERS9_m = comdat any - -$_ZSt12__to_addressINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEPT_SA_ = comdat any - -$_ZNSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEC2Ev = comdat any - -$_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEE9constructIS7_JRKSt21piecewise_construct_tSt5tupleIJOiEESF_IJEEEEEvRS9_PT_DpOT0_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE11_M_max_sizeEv = comdat any - -$_ZNSt8__detail21_Hash_node_value_baseISt4pairIKiPK1AEEC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE9constructIS8_JRKSt21piecewise_construct_tSt5tupleIJOiEESF_IJEEEEEvPT_DpOT0_ = comdat any - -$_ZNSt5tupleIJOiEEC2EOS1_ = comdat any - -$_ZNSt4pairIKiPK1AEC2IJOiEJEEESt21piecewise_construct_tSt5tupleIJDpT_EES8_IJDpT0_EE = comdat any - -$_ZNSt11_Tuple_implILm0EJOiEEC2EOS1_ = comdat any - -$_ZNSt11_Tuple_implILm0EJOiEE7_M_headERS1_ = comdat any - -$_ZNSt10_Head_baseILm0EOiLb0EE7_M_headERS1_ = comdat any - -$_ZNSt4pairIKiPK1AEC2IJOiEJLm0EEJEJEEERSt5tupleIJDpT_EERS7_IJDpT1_EESt12_Index_tupleIJXspT0_EEESG_IJXspT2_EEE = comdat any - -$_ZSt3getILm0EJOiEERNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERS5_ = comdat any - -$_ZSt12__get_helperILm0EOiJEERT0_RSt11_Tuple_implIXT_EJS1_DpT1_EE = comdat any - -$_ZNKSt8__detail20_Prime_rehash_policy8_M_stateEv = comdat any - -$_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_rehashEmRKm = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE13_M_store_codeEPNS_10_Hash_nodeIS6_Lb0EEEm = comdat any - -$_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE22_M_insert_bucket_beginEmPNS7_10_Hash_nodeIS5_Lb0EEE = comdat any - -$_ZNSt8__detail14_Node_iteratorISt4pairIKiPK1AELb0ELb0EEC2EPNS_10_Hash_nodeIS6_Lb0EEE = comdat any - -$_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE = comdat any - -$_ZNSt8__detail20_Prime_rehash_policy8_M_resetEm = comdat any - -$_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_allocate_bucketsEm = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE19_M_allocate_bucketsEm = comdat any - -$_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE8allocateERS3_m = comdat any - -$_ZSt12__to_addressIPNSt8__detail15_Hash_node_baseEEPT_S4_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE11_M_max_sizeEv = comdat any - -$_ZNSt8__detail19_Node_iterator_baseISt4pairIKiPK1AELb0EEC2EPNS_10_Hash_nodeIS6_Lb0EEE = comdat any - -$_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE5beginEv = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -$_ZSt19piecewise_construct = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 -@__dso_handle = external hidden global i8 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@_ZSt19piecewise_construct = linkonce_odr dso_local constant %"struct.std::piecewise_construct_t" undef, comdat, align 1 -@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_unordered_map_2.cpp, ptr null }] - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init() #3 section ".text.startup" { -entry: - call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = call i32 @__cxa_atexit(ptr @_ZNSt8ios_base4InitD1Ev, ptr @_ZStL8__ioinit, ptr @__dso_handle) #5 - ret void -} - -declare void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 - -; Function Attrs: nounwind -declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 - -; Function Attrs: nounwind -declare i32 @__cxa_atexit(ptr, ptr, ptr) #5 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #6 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %amap = alloca %"class.std::unordered_map", align 8 - %a = alloca %class.A, align 8 - %ref.tmp = alloca i32, align 4 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %it = alloca %"struct.std::__detail::_Node_const_iterator", align 8 - %ref.tmp1 = alloca %"struct.std::__detail::_Node_iterator", align 8 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %amap) #5 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 - store i32 0, ptr %ref.tmp, align 4 - %call = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEEixEOi(ptr noundef nonnull align 8 dereferenceable(56) %amap, ptr noundef nonnull align 4 dereferenceable(4) %ref.tmp) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - store ptr %a, ptr %call, align 8 - %call2 = call ptr @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %amap) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %ref.tmp1, i32 0, i32 0 - %coerce.dive3 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - store ptr %call2, ptr %coerce.dive3, align 8 - call void @_ZNSt8__detail20_Node_const_iteratorISt4pairIKiPK1AELb0ELb0EEC2ERKNS_14_Node_iteratorIS6_Lb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %it, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp1) #5 - %call4 = call noundef ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIKiPK1AELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 - %second = getelementptr inbounds %"struct.std::pair", ptr %call4, i32 0, i32 1 - %0 = load ptr, ptr %second, align 8 - store ptr %0, ptr %aptr, align 8 - %1 = load ptr, ptr %aptr, align 8 - %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) - to label %invoke.cont5 unwind label %lpad - -invoke.cont5: ; preds = %invoke.cont - store i32 0, ptr %retval, align 4 - call void @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %amap) #5 - %4 = load i32, ptr %retval, align 4 - ret i32 %4 - -lpad: ; preds = %invoke.cont, %entry - %5 = landingpad { ptr, i32 } - cleanup - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - call void @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %amap) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val6 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val6 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"class.std::unordered_map", ptr %this1, i32 0, i32 0 - call void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %_M_h) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEEixEOi(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__k.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"class.std::unordered_map", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__k.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail9_Map_baseIiSt4pairIKiPK1AESaIS6_ENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb0ELb1EEELb1EEixEOi(ptr noundef nonnull align 1 dereferenceable(1) %_M_h, ptr noundef nonnull align 4 dereferenceable(4) %0) - ret ptr %call -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::__detail::_Node_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"class.std::unordered_map", ptr %this1, i32 0, i32 0 - %call = call ptr @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %_M_h) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive2 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - store ptr %call, ptr %coerce.dive2, align 8 - %coerce.dive3 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive4 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive3, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive4, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail20_Node_const_iteratorISt4pairIKiPK1AELb0ELb0EEC2ERKNS_14_Node_iteratorIS6_Lb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_cur, align 8 - call void @_ZNSt8__detail19_Node_iterator_baseISt4pairIKiPK1AELb0EEC2EPNS_10_Hash_nodeIS6_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIKiPK1AELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %call = call noundef ptr @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #5 - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt13unordered_mapIiPK1ASt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"class.std::unordered_map", ptr %this1, i32 0, i32 0 - call void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %_M_h) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail15_Hashtable_baseIiSt4pairIKiPK1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %_M_single_bucket = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 - store ptr %_M_single_bucket, ptr %_M_buckets, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - store i64 1, ptr %_M_bucket_count, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - call void @_ZNSt8__detail15_Hash_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_before_begin) #5 - %_M_element_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - store i64 0, ptr %_M_element_count, align 8 - %_M_rehash_policy = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - call void @_ZNSt8__detail20_Prime_rehash_policyC2Ef(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy, float noundef 1.000000e+00) #5 - %_M_single_bucket2 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 - store ptr null, ptr %_M_single_bucket2, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail15_Hashtable_baseIiSt4pairIKiPK1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIiELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail15_Hash_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_nxt, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail20_Prime_rehash_policyC2Ef(ptr noundef nonnull align 8 dereferenceable(16) %this, float noundef %__z) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__z.addr = alloca float, align 4 - store ptr %this, ptr %this.addr, align 8 - store float %__z, ptr %__z.addr, align 4 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_max_load_factor = getelementptr inbounds %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 0 - %0 = load float, ptr %__z.addr, align 4 - store float %0, ptr %_M_max_load_factor, align 8 - %_M_next_resize = getelementptr inbounds %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_next_resize, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt8__detail21_Hashtable_ebo_helperILi1ESt4hashIiELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIiELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hashtable_ebo_helperILi1ESt4hashIiELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) #5 - invoke void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #15 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = invoke noundef ptr @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - invoke void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE19_M_deallocate_nodesEPS8_(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %call) - to label %invoke.cont2 unwind label %terminate.lpad - -invoke.cont2: ; preds = %invoke.cont - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_buckets, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %1 = load i64, ptr %_M_bucket_count, align 8 - %mul = mul i64 %1, 8 - call void @llvm.memset.p0.i64(ptr align 8 %0, i8 0, i64 %mul, i1 false) - %_M_element_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - store i64 0, ptr %_M_element_count, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - store ptr null, ptr %_M_nxt, align 8 - ret void - -terminate.lpad: ; preds = %invoke.cont, %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #15 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_buckets, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %1 = load i64, ptr %_M_bucket_count, align 8 - call void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEPPNS7_15_Hash_node_baseEm(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef %0, i64 noundef %1) - ret void -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #8 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #5 - call void @_ZSt9terminatev() #15 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEELb1EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE19_M_deallocate_nodesEPS8_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__n) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca ptr, align 8 - %__tmp = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - br label %while.cond - -while.cond: ; preds = %while.body, %entry - %0 = load ptr, ptr %__n.addr, align 8 - %tobool = icmp ne ptr %0, null - br i1 %tobool, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %1 = load ptr, ptr %__n.addr, align 8 - store ptr %1, ptr %__tmp, align 8 - %2 = load ptr, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #5 - store ptr %call, ptr %__n.addr, align 8 - %3 = load ptr, ptr %__tmp, align 8 - call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE18_M_deallocate_nodeEPS8_(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %3) - br label %while.cond, !llvm.loop !6 - -while.end: ; preds = %while.cond - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - %0 = load ptr, ptr %_M_nxt, align 8 - ret ptr %0 -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #9 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_nxt, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE18_M_deallocate_nodeEPS8_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__n) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - %0 = load ptr, ptr %__n.addr, align 8 - %call2 = call noundef ptr @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #5 - call void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEE7destroyIS7_EEvRS9_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %call2) #5 - %1 = load ptr, ptr %__n.addr, align 8 - call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE22_M_deallocate_node_ptrEPS8_(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEE7destroyIS7_EEvRS9_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE7destroyIS8_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEELb1EE6_M_getEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::__detail::_Hash_node_value_base", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %_M_storage) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE22_M_deallocate_node_ptrEPS8_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__n) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca ptr, align 8 - %__ptr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZNSt14pointer_traitsIPNSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE10pointer_toERS8_(ptr noundef nonnull align 8 dereferenceable(24) %0) #5 - store ptr %call, ptr %__ptr, align 8 - %1 = load ptr, ptr %__n.addr, align 8 - %call2 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - %2 = load ptr, ptr %__ptr, align 8 - call void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEE10deallocateERS9_PS8_m(ptr noundef nonnull align 1 dereferenceable(1) %call2, ptr noundef %2, i64 noundef 1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE7destroyIS8_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEELb1EE6_M_getEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_buffer", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14pointer_traitsIPNSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE10pointer_toERS8_(ptr noundef nonnull align 8 dereferenceable(24) %__r) #2 comdat align 2 { -entry: - %__r.addr = alloca ptr, align 8 - store ptr %__r, ptr %__r.addr, align 8 - %0 = load ptr, ptr %__r.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEE10deallocateERS9_PS8_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE10deallocateEPS9_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE10deallocateEPS9_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #10 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEPPNS7_15_Hash_node_baseEm(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef %__bkts, i64 noundef %__bkt_count) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__bkts.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__bkts, ptr %__bkts.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__bkts.addr, align 8 - %call = call noundef zeroext i1 @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_uses_single_bucketEPPNS7_15_Hash_node_baseE(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef %0) - br i1 %call, label %if.then, label %if.end - -if.then: ; preds = %entry - br label %return - -if.end: ; preds = %entry - %1 = load ptr, ptr %__bkts.addr, align 8 - %2 = load i64, ptr %__bkt_count.addr, align 8 - call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE21_M_deallocate_bucketsEPPNS_15_Hash_node_baseEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %1, i64 noundef %2) - br label %return - -return: ; preds = %if.end, %if.then - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_uses_single_bucketEPPNS7_15_Hash_node_baseE(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef %__bkts) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__bkts.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__bkts, ptr %__bkts.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__bkts.addr, align 8 - %_M_single_bucket = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 - %cmp = icmp eq ptr %0, %_M_single_bucket - ret i1 %cmp -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE21_M_deallocate_bucketsEPPNS_15_Hash_node_baseEm(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__bkts, i64 noundef %__bkt_count) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__bkts.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - %__ptr = alloca ptr, align 8 - %__alloc = alloca %"class.std::allocator.4", align 1 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store ptr %__bkts, ptr %__bkts.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__bkts.addr, align 8 - %call = call noundef ptr @_ZNSt14pointer_traitsIPPNSt8__detail15_Hash_node_baseEE10pointer_toERS2_(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 - store ptr %call, ptr %__ptr, align 8 - %call2 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEEC2INS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %__alloc, ptr noundef nonnull align 1 dereferenceable(1) %call2) #5 - %1 = load ptr, ptr %__ptr, align 8 - %2 = load i64, ptr %__bkt_count.addr, align 8 - invoke void @_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__alloc, ptr noundef %1, i64 noundef %2) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #5 - ret void - -lpad: ; preds = %entry - %3 = landingpad { ptr, i32 } - cleanup - %4 = extractvalue { ptr, i32 } %3, 0 - store ptr %4, ptr %exn.slot, align 8 - %5 = extractvalue { ptr, i32 } %3, 1 - store i32 %5, ptr %ehselector.slot, align 4 - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val3 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val3 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14pointer_traitsIPPNSt8__detail15_Hash_node_baseEE10pointer_toERS2_(ptr noundef nonnull align 8 dereferenceable(8) %__r) #2 comdat align 2 { -entry: - %__r.addr = alloca ptr, align 8 - store ptr %__r, ptr %__r.addr, align 8 - %0 = load ptr, ptr %__r.addr, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPNSt8__detail15_Hash_node_baseEEC2INS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 1 dereferenceable(1) %0) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEELb1EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail9_Map_baseIiSt4pairIKiPK1AESaIS6_ENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb0ELb1EEELb1EEixEOi(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - %__k.addr = alloca ptr, align 8 - %__h = alloca ptr, align 8 - %__code = alloca i64, align 8 - %__bkt = alloca i64, align 8 - %__node = alloca ptr, align 8 - %__node5 = alloca %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", align 8 - %ref.tmp = alloca %"class.std::tuple", align 8 - %ref.tmp6 = alloca %"class.std::tuple.7", align 1 - %__pos = alloca %"struct.std::__detail::_Node_iterator", align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr %this1, ptr %__h, align 8 - %0 = load ptr, ptr %__h, align 8 - %1 = load ptr, ptr %__k.addr, align 8 - %call = call noundef i64 @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE12_M_hash_codeERS2_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 4 dereferenceable(4) %1) - store i64 %call, ptr %__code, align 8 - %2 = load ptr, ptr %__h, align 8 - %3 = load ptr, ptr %__k.addr, align 8 - %4 = load i64, ptr %__code, align 8 - %call2 = call noundef i64 @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE15_M_bucket_indexERS1_m(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef nonnull align 4 dereferenceable(4) %3, i64 noundef %4) - store i64 %call2, ptr %__bkt, align 8 - %5 = load ptr, ptr %__h, align 8 - %6 = load i64, ptr %__bkt, align 8 - %7 = load ptr, ptr %__k.addr, align 8 - %8 = load i64, ptr %__code, align 8 - %call3 = call noundef ptr @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE12_M_find_nodeEmRS1_m(ptr noundef nonnull align 8 dereferenceable(56) %5, i64 noundef %6, ptr noundef nonnull align 4 dereferenceable(4) %7, i64 noundef %8) - store ptr %call3, ptr %__node, align 8 - %9 = load ptr, ptr %__node, align 8 - %tobool = icmp ne ptr %9, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %10 = load ptr, ptr %__node, align 8 - %call4 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKiPK1AEE4_M_vEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #5 - %second = getelementptr inbounds %"struct.std::pair", ptr %call4, i32 0, i32 1 - store ptr %second, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %11 = load ptr, ptr %__h, align 8 - %12 = load ptr, ptr %__k.addr, align 8 - call void @_ZSt16forward_as_tupleIJiEESt5tupleIJDpOT_EES3_(ptr sret(%"class.std::tuple") align 8 %ref.tmp, ptr noundef nonnull align 4 dereferenceable(4) %12) #5 - call void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE12_Scoped_nodeC2IJRKSt21piecewise_construct_tSt5tupleIJOiEESO_IJEEEEEPNS7_16_Hashtable_allocISaINS7_10_Hash_nodeIS5_Lb0EEEEEEDpOT_(ptr noundef nonnull align 8 dereferenceable(16) %__node5, ptr noundef %11, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt19piecewise_construct, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp6) - %13 = load ptr, ptr %__h, align 8 - %14 = load ptr, ptr %__k.addr, align 8 - %15 = load i64, ptr %__bkt, align 8 - %16 = load i64, ptr %__code, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %__node5, i32 0, i32 1 - %17 = load ptr, ptr %_M_node, align 8 - %call7 = invoke ptr @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeERS1_mmPNS7_10_Hash_nodeIS5_Lb0EEEm(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 4 dereferenceable(4) %14, i64 noundef %15, i64 noundef %16, ptr noundef %17, i64 noundef 1) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %if.end - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %__pos, i32 0, i32 0 - %coerce.dive8 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - store ptr %call7, ptr %coerce.dive8, align 8 - %_M_node9 = getelementptr inbounds %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %__node5, i32 0, i32 1 - store ptr null, ptr %_M_node9, align 8 - %call10 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKiPK1AELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %__pos) #5 - %second11 = getelementptr inbounds %"struct.std::pair", ptr %call10, i32 0, i32 1 - store ptr %second11, ptr %retval, align 8 - call void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE12_Scoped_nodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %__node5) #5 - br label %return - -lpad: ; preds = %if.end - %18 = landingpad { ptr, i32 } - cleanup - %19 = extractvalue { ptr, i32 } %18, 0 - store ptr %19, ptr %exn.slot, align 8 - %20 = extractvalue { ptr, i32 } %18, 1 - store i32 %20, ptr %ehselector.slot, align 4 - call void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE12_Scoped_nodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %__node5) #5 - br label %eh.resume - -return: ; preds = %invoke.cont, %if.then - %21 = load ptr, ptr %retval, align 8 - ret ptr %21 - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val12 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val12 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE12_M_hash_codeERS2_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__k.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h1Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) - %0 = load ptr, ptr %__k.addr, align 8 - %1 = load i32, ptr %0, align 4 - %call2 = call noundef i64 @_ZNKSt4hashIiEclEi(ptr noundef nonnull align 1 dereferenceable(1) %call, i32 noundef %1) #5 - ret i64 %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE15_M_bucket_indexERS1_m(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k, i64 noundef %__c) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__k.addr = alloca ptr, align 8 - %__c.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - store i64 %__c, ptr %__c.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__k.addr, align 8 - %1 = load i64, ptr %__c.addr, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %2 = load i64, ptr %_M_bucket_count, align 8 - %call = call noundef i64 @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexERS2_mm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 4 dereferenceable(4) %0, i64 noundef %1, i64 noundef %2) - ret i64 %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE12_M_find_nodeEmRS1_m(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt, ptr noundef nonnull align 4 dereferenceable(4) %__key, i64 noundef %__c) #0 comdat align 2 { -entry: - %retval = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - %__bkt.addr = alloca i64, align 8 - %__key.addr = alloca ptr, align 8 - %__c.addr = alloca i64, align 8 - %__before_n = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt, ptr %__bkt.addr, align 8 - store ptr %__key, ptr %__key.addr, align 8 - store i64 %__c, ptr %__c.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__bkt.addr, align 8 - %1 = load ptr, ptr %__key.addr, align 8 - %2 = load i64, ptr %__c.addr, align 8 - %call = call noundef ptr @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_find_before_nodeEmRS1_m(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %0, ptr noundef nonnull align 4 dereferenceable(4) %1, i64 noundef %2) - store ptr %call, ptr %__before_n, align 8 - %3 = load ptr, ptr %__before_n, align 8 - %tobool = icmp ne ptr %3, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__before_n, align 8 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %4, i32 0, i32 0 - %5 = load ptr, ptr %_M_nxt, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - store ptr null, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKiPK1AEE4_M_vEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZSt16forward_as_tupleIJiEESt5tupleIJDpOT_EES3_(ptr noalias sret(%"class.std::tuple") align 8 %agg.result, ptr noundef nonnull align 4 dereferenceable(4) %__args) #2 comdat { -entry: - %result.ptr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %agg.result, ptr %result.ptr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt5tupleIJOiEEC2IJiELb1ELb1EEEDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %agg.result, ptr noundef nonnull align 4 dereferenceable(4) %0) #5 - ret void -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE12_Scoped_nodeC2IJRKSt21piecewise_construct_tSt5tupleIJOiEESO_IJEEEEEPNS7_16_Hashtable_allocISaINS7_10_Hash_nodeIS5_Lb0EEEEEEDpOT_(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef %__h, ptr noundef nonnull align 1 dereferenceable(1) %__args, ptr noundef nonnull align 8 dereferenceable(8) %__args1, ptr noundef nonnull align 1 dereferenceable(1) %__args3) unnamed_addr #11 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__h.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__args.addr2 = alloca ptr, align 8 - %__args.addr4 = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__h, ptr %__h.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - store ptr %__args1, ptr %__args.addr2, align 8 - store ptr %__args3, ptr %__args.addr4, align 8 - %this5 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this5, i32 0, i32 0 - %0 = load ptr, ptr %__h.addr, align 8 - store ptr %0, ptr %_M_h, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this5, i32 0, i32 1 - %1 = load ptr, ptr %__h.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - %3 = load ptr, ptr %__args.addr2, align 8 - %4 = load ptr, ptr %__args.addr4, align 8 - %call = call noundef ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE16_M_allocate_nodeIJRKSt21piecewise_construct_tSt5tupleIJOiEESF_IJEEEEEPS8_DpOT_(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 1 dereferenceable(1) %4) - store ptr %call, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeERS1_mmPNS7_10_Hash_nodeIS5_Lb0EEEm(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k, i64 noundef %__bkt, i64 noundef %__code, ptr noundef %__node, i64 noundef %__n_elt) #0 comdat align 2 { -entry: - %retval = alloca %"struct.std::__detail::_Node_iterator", align 8 - %this.addr = alloca ptr, align 8 - %__k.addr = alloca ptr, align 8 - %__bkt.addr = alloca i64, align 8 - %__code.addr = alloca i64, align 8 - %__node.addr = alloca ptr, align 8 - %__n_elt.addr = alloca i64, align 8 - %__saved_state = alloca ptr, align 8 - %ref.tmp = alloca i64, align 8 - %__do_rehash = alloca %"struct.std::pair.9", align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - store i64 %__bkt, ptr %__bkt.addr, align 8 - store i64 %__code, ptr %__code.addr, align 8 - store ptr %__node, ptr %__node.addr, align 8 - store i64 %__n_elt, ptr %__n_elt.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_rehash_policy = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - %call = call noundef i64 @_ZNKSt8__detail20_Prime_rehash_policy8_M_stateEv(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy) - store i64 %call, ptr %ref.tmp, align 8 - store ptr %ref.tmp, ptr %__saved_state, align 8 - %_M_rehash_policy2 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %0 = load i64, ptr %_M_bucket_count, align 8 - %_M_element_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - %1 = load i64, ptr %_M_element_count, align 8 - %2 = load i64, ptr %__n_elt.addr, align 8 - %call3 = call { i8, i64 } @_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy2, i64 noundef %0, i64 noundef %1, i64 noundef %2) - %3 = getelementptr inbounds { i8, i64 }, ptr %__do_rehash, i32 0, i32 0 - %4 = extractvalue { i8, i64 } %call3, 0 - store i8 %4, ptr %3, align 8 - %5 = getelementptr inbounds { i8, i64 }, ptr %__do_rehash, i32 0, i32 1 - %6 = extractvalue { i8, i64 } %call3, 1 - store i64 %6, ptr %5, align 8 - %first = getelementptr inbounds %"struct.std::pair.9", ptr %__do_rehash, i32 0, i32 0 - %7 = load i8, ptr %first, align 8 - %tobool = trunc i8 %7 to i1 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %second = getelementptr inbounds %"struct.std::pair.9", ptr %__do_rehash, i32 0, i32 1 - %8 = load i64, ptr %second, align 8 - %9 = load ptr, ptr %__saved_state, align 8 - call void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_rehashEmRKm(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %8, ptr noundef nonnull align 8 dereferenceable(8) %9) - %10 = load ptr, ptr %__k.addr, align 8 - %11 = load i64, ptr %__code.addr, align 8 - %call4 = call noundef i64 @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE15_M_bucket_indexERS1_m(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef nonnull align 4 dereferenceable(4) %10, i64 noundef %11) - store i64 %call4, ptr %__bkt.addr, align 8 - br label %if.end - -if.end: ; preds = %if.then, %entry - %12 = load ptr, ptr %__node.addr, align 8 - %13 = load i64, ptr %__code.addr, align 8 - call void @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE13_M_store_codeEPNS_10_Hash_nodeIS6_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %12, i64 noundef %13) - %14 = load i64, ptr %__bkt.addr, align 8 - %15 = load ptr, ptr %__node.addr, align 8 - call void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE22_M_insert_bucket_beginEmPNS7_10_Hash_nodeIS5_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %14, ptr noundef %15) - %_M_element_count5 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - %16 = load i64, ptr %_M_element_count5, align 8 - %inc = add i64 %16, 1 - store i64 %inc, ptr %_M_element_count5, align 8 - %17 = load ptr, ptr %__node.addr, align 8 - call void @_ZNSt8__detail14_Node_iteratorISt4pairIKiPK1AELb0ELb0EEC2EPNS_10_Hash_nodeIS6_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %17) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive6 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - %18 = load ptr, ptr %coerce.dive6, align 8 - ret ptr %18 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKiPK1AELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %call = call noundef ptr @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #5 - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE12_Scoped_nodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this1, i32 0, i32 1 - %0 = load ptr, ptr %_M_node, align 8 - %tobool = icmp ne ptr %0, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_h = getelementptr inbounds %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this1, i32 0, i32 0 - %1 = load ptr, ptr %_M_h, align 8 - %_M_node2 = getelementptr inbounds %"struct.std::_Hashtable, std::allocator>, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %_M_node2, align 8 - invoke void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE18_M_deallocate_nodeEPS8_(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %if.then - br label %if.end - -if.end: ; preds = %invoke.cont, %entry - ret void - -terminate.lpad: ; preds = %if.then - %3 = landingpad { ptr, i32 } - catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #15 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h1Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi1ESt4hashIiELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt4hashIiEclEi(ptr noundef nonnull align 1 dereferenceable(1) %this, i32 noundef %__val) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__val.addr = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i32 %__val, ptr %__val.addr, align 4 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i32, ptr %__val.addr, align 4 - %conv = sext i32 %0 to i64 - ret i64 %conv -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi1ESt4hashIiELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexERS2_mm(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 4 dereferenceable(4) %0, i64 noundef %__c, i64 noundef %__bkt_count) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - %__c.addr = alloca i64, align 8 - %__bkt_count.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - store i64 %__c, ptr %__c.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) - %1 = load i64, ptr %__c.addr, align 8 - %2 = load i64, ptr %__bkt_count.addr, align 8 - %call2 = call noundef i64 @_ZNKSt8__detail18_Mod_range_hashingclEmm(ptr noundef nonnull align 1 dereferenceable(1) %call, i64 noundef %1, i64 noundef %2) #5 - ret i64 %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt8__detail18_Mod_range_hashingclEmm(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__num, i64 noundef %__den) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__num.addr = alloca i64, align 8 - %__den.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__num, ptr %__num.addr, align 8 - store i64 %__den, ptr %__den.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__num.addr, align 8 - %1 = load i64, ptr %__den.addr, align 8 - %rem = urem i64 %0, %1 - ret i64 %rem -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_find_before_nodeEmRS1_m(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt, ptr noundef nonnull align 4 dereferenceable(4) %__k, i64 noundef %__code) #0 comdat align 2 { -entry: - %retval = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - %__bkt.addr = alloca i64, align 8 - %__k.addr = alloca ptr, align 8 - %__code.addr = alloca i64, align 8 - %__prev_p = alloca ptr, align 8 - %__p = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt, ptr %__bkt.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - store i64 %__code, ptr %__code.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_buckets, align 8 - %1 = load i64, ptr %__bkt.addr, align 8 - %arrayidx = getelementptr inbounds ptr, ptr %0, i64 %1 - %2 = load ptr, ptr %arrayidx, align 8 - store ptr %2, ptr %__prev_p, align 8 - %3 = load ptr, ptr %__prev_p, align 8 - %tobool = icmp ne ptr %3, null - br i1 %tobool, label %if.end, label %if.then - -if.then: ; preds = %entry - store ptr null, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %4 = load ptr, ptr %__prev_p, align 8 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %4, i32 0, i32 0 - %5 = load ptr, ptr %_M_nxt, align 8 - store ptr %5, ptr %__p, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %if.end - %6 = load ptr, ptr %__k.addr, align 8 - %7 = load i64, ptr %__code.addr, align 8 - %8 = load ptr, ptr %__p, align 8 - %call = call noundef zeroext i1 @_ZNKSt8__detail15_Hashtable_baseIiSt4pairIKiPK1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_equalsERS2_mPNS_10_Hash_nodeIS6_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 4 dereferenceable(4) %6, i64 noundef %7, ptr noundef %8) - br i1 %call, label %if.then2, label %if.end3 - -if.then2: ; preds = %for.cond - %9 = load ptr, ptr %__prev_p, align 8 - store ptr %9, ptr %retval, align 8 - br label %return - -if.end3: ; preds = %for.cond - %10 = load ptr, ptr %__p, align 8 - %_M_nxt4 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %10, i32 0, i32 0 - %11 = load ptr, ptr %_M_nxt4, align 8 - %tobool5 = icmp ne ptr %11, null - br i1 %tobool5, label %lor.lhs.false, label %if.then8 - -lor.lhs.false: ; preds = %if.end3 - %12 = load ptr, ptr %__p, align 8 - %call6 = call noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #5 - %call7 = call noundef i64 @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE15_M_bucket_indexEPNS7_10_Hash_nodeIS5_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef %call6) #5 - %13 = load i64, ptr %__bkt.addr, align 8 - %cmp = icmp ne i64 %call7, %13 - br i1 %cmp, label %if.then8, label %if.end9 - -if.then8: ; preds = %lor.lhs.false, %if.end3 - br label %for.end - -if.end9: ; preds = %lor.lhs.false - %14 = load ptr, ptr %__p, align 8 - store ptr %14, ptr %__prev_p, align 8 - br label %for.inc - -for.inc: ; preds = %if.end9 - %15 = load ptr, ptr %__p, align 8 - %call10 = call noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #5 - store ptr %call10, ptr %__p, align 8 - br label %for.cond, !llvm.loop !8 - -for.end: ; preds = %if.then8 - store ptr null, ptr %retval, align 8 - br label %return - -return: ; preds = %for.end, %if.then2, %if.then - %16 = load ptr, ptr %retval, align 8 - ret ptr %16 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt8__detail15_Hashtable_baseIiSt4pairIKiPK1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_equalsERS2_mPNS_10_Hash_nodeIS6_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 4 dereferenceable(4) %__k, i64 noundef %__c, ptr noundef %__n) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__k.addr = alloca ptr, align 8 - %__c.addr = alloca i64, align 8 - %__n.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - store i64 %__c, ptr %__c.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__c.addr, align 8 - %1 = load ptr, ptr %__n.addr, align 8 - %call = call noundef zeroext i1 @_ZNSt8__detail15_Hashtable_baseIiSt4pairIKiPK1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE16_Equal_hash_codeINS_10_Hash_nodeIS6_Lb0EEEE9_S_equalsEmRKSJ_(i64 noundef %0, ptr noundef nonnull align 8 dereferenceable(24) %1) - br i1 %call, label %land.rhs, label %land.end - -land.rhs: ; preds = %entry - %call2 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hashtable_baseIiSt4pairIKiPK1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE5_M_eqEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - %2 = load ptr, ptr %__k.addr, align 8 - %call3 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE10_M_extractEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - %3 = load ptr, ptr %__n.addr, align 8 - %call4 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKiPK1AEE4_M_vEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #5 - %call5 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt8__detail10_Select1stclIRSt4pairIKiPK1AEEEDTclsr3stdE3getILi0EEclsr3stdE7forwardIT_Efp_EEEOS9_(ptr noundef nonnull align 1 dereferenceable(1) %call3, ptr noundef nonnull align 8 dereferenceable(16) %call4) - %call6 = call noundef zeroext i1 @_ZNKSt8equal_toIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %call2, ptr noundef nonnull align 4 dereferenceable(4) %2, ptr noundef nonnull align 4 dereferenceable(4) %call5) - br label %land.end - -land.end: ; preds = %land.rhs, %entry - %4 = phi i1 [ false, %entry ], [ %call6, %land.rhs ] - ret i1 %4 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE15_M_bucket_indexEPNS7_10_Hash_nodeIS5_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef %__n) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__n.addr, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %1 = load i64, ptr %_M_bucket_count, align 8 - %call = call noundef i64 @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexEPKNS_10_Hash_nodeIS6_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %0, i64 noundef %1) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNSt8__detail15_Hashtable_baseIiSt4pairIKiPK1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE16_Equal_hash_codeINS_10_Hash_nodeIS6_Lb0EEEE9_S_equalsEmRKSJ_(i64 noundef %0, ptr noundef nonnull align 8 dereferenceable(24) %1) #2 comdat align 2 { -entry: - %.addr = alloca i64, align 8 - %.addr1 = alloca ptr, align 8 - store i64 %0, ptr %.addr, align 8 - store ptr %1, ptr %.addr1, align 8 - ret i1 true -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hashtable_baseIiSt4pairIKiPK1AENS_10_Select1stESt8equal_toIiESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb0ELb1EEEE5_M_eqEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIiELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt8equal_toIiEclERKiS2_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 4 dereferenceable(4) %__x, ptr noundef nonnull align 4 dereferenceable(4) %__y) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %1 = load i32, ptr %0, align 4 - %2 = load ptr, ptr %__y.addr, align 8 - %3 = load i32, ptr %2, align 4 - %cmp = icmp eq i32 %1, %3 - ret i1 %cmp -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE10_M_extractEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt8__detail10_Select1stclIRSt4pairIKiPK1AEEEDTclsr3stdE3getILi0EEclsr3stdE7forwardIT_Efp_EEEOS9_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(16) %__x) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm0EKiPK1AERNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERS8_(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIiELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi0ENS_10_Select1stELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm0EKiPK1AERNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERS8_(ptr noundef nonnull align 8 dereferenceable(16) %__in) #2 comdat { -entry: - %__in.addr = alloca ptr, align 8 - store ptr %__in, ptr %__in.addr, align 8 - %0 = load ptr, ptr %__in.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt10__pair_getILm0EE5__getIKiPK1AEERT_RSt4pairIS6_T0_E(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt10__pair_getILm0EE5__getIKiPK1AEERT_RSt4pairIS6_T0_E(ptr noundef nonnull align 8 dereferenceable(16) %__pair) #2 comdat align 2 { -entry: - %__pair.addr = alloca ptr, align 8 - store ptr %__pair, ptr %__pair.addr, align 8 - %0 = load ptr, ptr %__pair.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair", ptr %0, i32 0, i32 0 - ret ptr %first -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexEPKNS_10_Hash_nodeIS6_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__bkt_count) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %call3 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h1Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) - to label %invoke.cont2 unwind label %terminate.lpad - -invoke.cont2: ; preds = %invoke.cont - %call5 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE10_M_extractEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - to label %invoke.cont4 unwind label %terminate.lpad - -invoke.cont4: ; preds = %invoke.cont2 - %0 = load ptr, ptr %__p.addr, align 8 - %call6 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt8__detail21_Hash_node_value_baseISt4pairIKiPK1AEE4_M_vEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #5 - %call8 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt8__detail10_Select1stclIRKSt4pairIKiPK1AEEEDTclsr3stdE3getILi0EEclsr3stdE7forwardIT_Efp_EEEOSA_(ptr noundef nonnull align 1 dereferenceable(1) %call5, ptr noundef nonnull align 8 dereferenceable(16) %call6) - to label %invoke.cont7 unwind label %terminate.lpad - -invoke.cont7: ; preds = %invoke.cont4 - %1 = load i32, ptr %call8, align 4 - %call9 = call noundef i64 @_ZNKSt4hashIiEclEi(ptr noundef nonnull align 1 dereferenceable(1) %call3, i32 noundef %1) #5 - %2 = load i64, ptr %__bkt_count.addr, align 8 - %call10 = call noundef i64 @_ZNKSt8__detail18_Mod_range_hashingclEmm(ptr noundef nonnull align 1 dereferenceable(1) %call, i64 noundef %call9, i64 noundef %2) #5 - ret i64 %call10 - -terminate.lpad: ; preds = %invoke.cont4, %invoke.cont2, %invoke.cont, %entry - %3 = landingpad { ptr, i32 } - catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #15 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt8__detail10_Select1stclIRKSt4pairIKiPK1AEEEDTclsr3stdE3getILi0EEclsr3stdE7forwardIT_Efp_EEEOSA_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(16) %__x) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm0EKiPK1AERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKS8_(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt8__detail21_Hash_node_value_baseISt4pairIKiPK1AEE4_M_vEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNKSt8__detail21_Hash_node_value_baseISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm0EKiPK1AERKNSt13tuple_elementIXT_ESt4pairIT0_T1_EE4typeERKS8_(ptr noundef nonnull align 8 dereferenceable(16) %__in) #2 comdat { -entry: - %__in.addr = alloca ptr, align 8 - store ptr %__in, ptr %__in.addr, align 8 - %0 = load ptr, ptr %__in.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt10__pair_getILm0EE11__const_getIKiPK1AEERKT_RKSt4pairIS6_T0_E(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt10__pair_getILm0EE11__const_getIKiPK1AEERKT_RKSt4pairIS6_T0_E(ptr noundef nonnull align 8 dereferenceable(16) %__pair) #2 comdat align 2 { -entry: - %__pair.addr = alloca ptr, align 8 - store ptr %__pair, ptr %__pair.addr, align 8 - %0 = load ptr, ptr %__pair.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair", ptr %0, i32 0, i32 0 - ret ptr %first -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt8__detail21_Hash_node_value_baseISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::__detail::_Hash_node_value_base", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %_M_storage) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_bufferISt4pairIKiPK1AEE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_buffer", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5tupleIJOiEEC2IJiELb1ELb1EEEDpOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 4 dereferenceable(4) %__elements) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__elements.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__elements, ptr %__elements.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__elements.addr, align 8 - invoke void @_ZNSt11_Tuple_implILm0EJOiEEC2IiEEOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef nonnull align 4 dereferenceable(4) %0) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - ret void - -terminate.lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - call void @__clang_call_terminate(ptr %2) #15 - unreachable -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Tuple_implILm0EJOiEEC2IiEEOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 4 dereferenceable(4) %__head) unnamed_addr #11 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__head.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__head, ptr %__head.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__head.addr, align 8 - call void @_ZNSt10_Head_baseILm0EOiLb0EEC2IiEEOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef nonnull align 4 dereferenceable(4) %0) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_Head_baseILm0EOiLb0EEC2IiEEOT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 4 dereferenceable(4) %__h) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__h.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__h, ptr %__h.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_head_impl = getelementptr inbounds %"struct.std::_Head_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__h.addr, align 8 - store ptr %0, ptr %_M_head_impl, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE16_M_allocate_nodeIJRKSt21piecewise_construct_tSt5tupleIJOiEESF_IJEEEEEPS8_DpOT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 1 dereferenceable(1) %__args, ptr noundef nonnull align 8 dereferenceable(8) %__args1, ptr noundef nonnull align 1 dereferenceable(1) %__args3) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__args.addr2 = alloca ptr, align 8 - %__args.addr4 = alloca ptr, align 8 - %__nptr = alloca ptr, align 8 - %__n = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - store ptr %__args1, ptr %__args.addr2, align 8 - store ptr %__args3, ptr %__args.addr4, align 8 - %this5 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this5) - %call6 = call noundef ptr @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEE8allocateERS9_m(ptr noundef nonnull align 1 dereferenceable(1) %call, i64 noundef 1) - store ptr %call6, ptr %__nptr, align 8 - %0 = load ptr, ptr %__nptr, align 8 - %call7 = call noundef ptr @_ZSt12__to_addressINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEPT_SA_(ptr noundef %0) #5 - store ptr %call7, ptr %__n, align 8 - %1 = load ptr, ptr %__n, align 8 - call void @_ZNSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1) #5 - %call8 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this5) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %2 = load ptr, ptr %__n, align 8 - %call9 = call noundef ptr @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKiPK1AEE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #5 - %3 = load ptr, ptr %__args.addr, align 8 - %4 = load ptr, ptr %__args.addr2, align 8 - %5 = load ptr, ptr %__args.addr4, align 8 - invoke void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEE9constructIS7_JRKSt21piecewise_construct_tSt5tupleIJOiEESF_IJEEEEEvRS9_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %call8, ptr noundef %call9, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 1 dereferenceable(1) %5) - to label %invoke.cont10 unwind label %lpad - -invoke.cont10: ; preds = %invoke.cont - %6 = load ptr, ptr %__n, align 8 - ret ptr %6 - -lpad: ; preds = %invoke.cont, %entry - %7 = landingpad { ptr, i32 } - catch ptr null - %8 = extractvalue { ptr, i32 } %7, 0 - store ptr %8, ptr %exn.slot, align 8 - %9 = extractvalue { ptr, i32 } %7, 1 - store i32 %9, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %10 = call ptr @__cxa_begin_catch(ptr %exn) #5 - %call13 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this5) - to label %invoke.cont12 unwind label %lpad11 - -invoke.cont12: ; preds = %catch - %11 = load ptr, ptr %__nptr, align 8 - invoke void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEE10deallocateERS9_PS8_m(ptr noundef nonnull align 1 dereferenceable(1) %call13, ptr noundef %11, i64 noundef 1) - to label %invoke.cont14 unwind label %lpad11 - -invoke.cont14: ; preds = %invoke.cont12 - invoke void @__cxa_rethrow() #16 - to label %unreachable unwind label %lpad11 - -lpad11: ; preds = %invoke.cont14, %invoke.cont12, %catch - %12 = landingpad { ptr, i32 } - cleanup - %13 = extractvalue { ptr, i32 } %12, 0 - store ptr %13, ptr %exn.slot, align 8 - %14 = extractvalue { ptr, i32 } %12, 1 - store i32 %14, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont15 unwind label %terminate.lpad - -invoke.cont15: ; preds = %lpad11 - br label %eh.resume - -try.cont: ; No predecessors! - call void @llvm.trap() - unreachable - -eh.resume: ; preds = %invoke.cont15 - %exn16 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn16, 0 - %lpad.val17 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val17 - -terminate.lpad: ; preds = %lpad11 - %15 = landingpad { ptr, i32 } - catch ptr null - %16 = extractvalue { ptr, i32 } %15, 0 - call void @__clang_call_terminate(ptr %16) #15 - unreachable - -unreachable: ; preds = %invoke.cont14 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEE8allocateERS9_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__to_addressINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEPT_SA_(ptr noundef %__ptr) #2 comdat { -entry: - %__ptr.addr = alloca ptr, align 8 - store ptr %__ptr, ptr %__ptr.addr, align 8 - %0 = load ptr, ptr %__ptr.addr, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKiPK1AEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEEE9constructIS7_JRKSt21piecewise_construct_tSt5tupleIJOiEESF_IJEEEEEvRS9_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 1 dereferenceable(1) %__args, ptr noundef nonnull align 8 dereferenceable(8) %__args1, ptr noundef nonnull align 1 dereferenceable(1) %__args3) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__args.addr2 = alloca ptr, align 8 - %__args.addr4 = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - store ptr %__args1, ptr %__args.addr2, align 8 - store ptr %__args3, ptr %__args.addr4, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - %3 = load ptr, ptr %__args.addr2, align 8 - %4 = load ptr, ptr %__args.addr4, align 8 - call void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE9constructIS8_JRKSt21piecewise_construct_tSt5tupleIJOiEESF_IJEEEEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 1 dereferenceable(1) %4) - ret void -} - -declare void @__cxa_rethrow() - -declare void @__cxa_end_catch() - -; Function Attrs: cold noreturn nounwind -declare void @llvm.trap() #12 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 24 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #17 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 384307168202282325 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #13 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #14 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hash_node_value_baseISt4pairIKiPK1AEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail15_Hash_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %_M_storage = getelementptr inbounds %"struct.std::__detail::_Hash_node_value_base", ptr %this1, i32 0, i32 1 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EEEE9constructIS8_JRKSt21piecewise_construct_tSt5tupleIJOiEESF_IJEEEEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 1 dereferenceable(1) %__args, ptr noundef nonnull align 8 dereferenceable(8) %__args1, ptr noundef nonnull align 1 dereferenceable(1) %__args3) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__args.addr2 = alloca ptr, align 8 - %__args.addr4 = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::piecewise_construct_t", align 1 - %agg.tmp6 = alloca %"class.std::tuple", align 8 - %agg.tmp7 = alloca %"class.std::tuple.7", align 1 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - store ptr %__args1, ptr %__args.addr2, align 8 - store ptr %__args3, ptr %__args.addr4, align 8 - %this5 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - %2 = load ptr, ptr %__args.addr2, align 8 - call void @_ZNSt5tupleIJOiEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(8) %agg.tmp6, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - %3 = load ptr, ptr %__args.addr4, align 8 - call void @_ZNSt4pairIKiPK1AEC2IJOiEJEEESt21piecewise_construct_tSt5tupleIJDpT_EES8_IJDpT0_EE(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef %agg.tmp6) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt5tupleIJOiEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load ptr, ptr %.addr, align 8 - call void @_ZNSt11_Tuple_implILm0EJOiEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef nonnull align 8 dereferenceable(8) %1) #5 - ret void -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairIKiPK1AEC2IJOiEJEEESt21piecewise_construct_tSt5tupleIJDpT_EES8_IJDpT0_EE(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef %__first) unnamed_addr #11 comdat align 2 { -entry: - %0 = alloca %"struct.std::piecewise_construct_t", align 1 - %__second = alloca %"class.std::tuple.7", align 1 - %this.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::_Index_tuple", align 1 - %agg.tmp3 = alloca %"struct.std::_Index_tuple.8", align 1 - store ptr %this, ptr %this.addr, align 8 - %this2 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt4pairIKiPK1AEC2IJOiEJLm0EEJEJEEERSt5tupleIJDpT_EERS7_IJDpT1_EESt12_Index_tupleIJXspT0_EEESG_IJXspT2_EEE(ptr noundef nonnull align 8 dereferenceable(16) %this2, ptr noundef nonnull align 8 dereferenceable(8) %__first, ptr noundef nonnull align 1 dereferenceable(1) %__second) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt11_Tuple_implILm0EJOiEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__in) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__in.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__in, ptr %__in.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__in.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt11_Tuple_implILm0EJOiEE7_M_headERS1_(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 - call void @_ZNSt10_Head_baseILm0EOiLb0EEC2IiEEOT_(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef nonnull align 4 dereferenceable(4) %call) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt11_Tuple_implILm0EJOiEE7_M_headERS1_(ptr noundef nonnull align 8 dereferenceable(8) %__t) #2 comdat align 2 { -entry: - %__t.addr = alloca ptr, align 8 - store ptr %__t, ptr %__t.addr, align 8 - %0 = load ptr, ptr %__t.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt10_Head_baseILm0EOiLb0EE7_M_headERS1_(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt10_Head_baseILm0EOiLb0EE7_M_headERS1_(ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat align 2 { -entry: - %__b.addr = alloca ptr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__b.addr, align 8 - %_M_head_impl = getelementptr inbounds %"struct.std::_Head_base", ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %_M_head_impl, align 8 - ret ptr %1 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairIKiPK1AEC2IJOiEJLm0EEJEJEEERSt5tupleIJDpT_EERS7_IJDpT1_EESt12_Index_tupleIJXspT0_EEESG_IJXspT2_EEE(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef nonnull align 8 dereferenceable(8) %__tuple1, ptr noundef nonnull align 1 dereferenceable(1) %__tuple2) unnamed_addr #7 comdat align 2 { -entry: - %0 = alloca %"struct.std::_Index_tuple", align 1 - %1 = alloca %"struct.std::_Index_tuple.8", align 1 - %this.addr = alloca ptr, align 8 - %__tuple1.addr = alloca ptr, align 8 - %__tuple2.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__tuple1, ptr %__tuple1.addr, align 8 - store ptr %__tuple2, ptr %__tuple2.addr, align 8 - %this2 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair", ptr %this2, i32 0, i32 0 - %2 = load ptr, ptr %__tuple1.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm0EJOiEERNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERS5_(ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - %3 = load i32, ptr %call, align 4 - store i32 %3, ptr %first, align 8 - %second = getelementptr inbounds %"struct.std::pair", ptr %this2, i32 0, i32 1 - store ptr null, ptr %second, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3getILm0EJOiEERNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERS5_(ptr noundef nonnull align 8 dereferenceable(8) %__t) #2 comdat { -entry: - %__t.addr = alloca ptr, align 8 - store ptr %__t, ptr %__t.addr, align 8 - %0 = load ptr, ptr %__t.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt12__get_helperILm0EOiJEERT0_RSt11_Tuple_implIXT_EJS1_DpT1_EE(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt12__get_helperILm0EOiJEERT0_RSt11_Tuple_implIXT_EJS1_DpT1_EE(ptr noundef nonnull align 8 dereferenceable(8) %__t) #2 comdat { -entry: - %__t.addr = alloca ptr, align 8 - store ptr %__t, ptr %__t.addr, align 8 - %0 = load ptr, ptr %__t.addr, align 8 - %call = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt11_Tuple_implILm0EJOiEE7_M_headERS1_(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt8__detail20_Prime_rehash_policy8_M_stateEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_next_resize = getelementptr inbounds %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 1 - %0 = load i64, ptr %_M_next_resize, align 8 - ret i64 %0 -} - -declare { i8, i64 } @_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i64 noundef, i64 noundef) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_rehashEmRKm(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt_count, ptr noundef nonnull align 8 dereferenceable(8) %__state) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - %__state.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::integral_constant", align 1 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - store ptr %__state, ptr %__state.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__bkt_count.addr, align 8 - invoke void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - br label %try.cont - -lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - store ptr %2, ptr %exn.slot, align 8 - %3 = extractvalue { ptr, i32 } %1, 1 - store i32 %3, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %4 = call ptr @__cxa_begin_catch(ptr %exn) #5 - %_M_rehash_policy = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - %5 = load ptr, ptr %__state.addr, align 8 - %6 = load i64, ptr %5, align 8 - invoke void @_ZNSt8__detail20_Prime_rehash_policy8_M_resetEm(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy, i64 noundef %6) - to label %invoke.cont3 unwind label %lpad2 - -invoke.cont3: ; preds = %catch - invoke void @__cxa_rethrow() #16 - to label %unreachable unwind label %lpad2 - -lpad2: ; preds = %invoke.cont3, %catch - %7 = landingpad { ptr, i32 } - cleanup - %8 = extractvalue { ptr, i32 } %7, 0 - store ptr %8, ptr %exn.slot, align 8 - %9 = extractvalue { ptr, i32 } %7, 1 - store i32 %9, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont4 unwind label %terminate.lpad - -invoke.cont4: ; preds = %lpad2 - br label %eh.resume - -try.cont: ; preds = %invoke.cont - ret void - -eh.resume: ; preds = %invoke.cont4 - %exn5 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn5, 0 - %lpad.val6 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val6 - -terminate.lpad: ; preds = %lpad2 - %10 = landingpad { ptr, i32 } - catch ptr null - %11 = extractvalue { ptr, i32 } %10, 0 - call void @__clang_call_terminate(ptr %11) #15 - unreachable - -unreachable: ; preds = %invoke.cont3 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE13_M_store_codeEPNS_10_Hash_nodeIS6_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %0, i64 noundef %1) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - %.addr1 = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - store i64 %1, ptr %.addr1, align 8 - %this2 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE22_M_insert_bucket_beginEmPNS7_10_Hash_nodeIS5_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt, ptr noundef %__node) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__bkt.addr = alloca i64, align 8 - %__node.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt, ptr %__bkt.addr, align 8 - store ptr %__node, ptr %__node.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_buckets, align 8 - %1 = load i64, ptr %__bkt.addr, align 8 - %arrayidx = getelementptr inbounds ptr, ptr %0, i64 %1 - %2 = load ptr, ptr %arrayidx, align 8 - %tobool = icmp ne ptr %2, null - br i1 %tobool, label %if.then, label %if.else - -if.then: ; preds = %entry - %_M_buckets2 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %3 = load ptr, ptr %_M_buckets2, align 8 - %4 = load i64, ptr %__bkt.addr, align 8 - %arrayidx3 = getelementptr inbounds ptr, ptr %3, i64 %4 - %5 = load ptr, ptr %arrayidx3, align 8 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %5, i32 0, i32 0 - %6 = load ptr, ptr %_M_nxt, align 8 - %7 = load ptr, ptr %__node.addr, align 8 - %_M_nxt4 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %7, i32 0, i32 0 - store ptr %6, ptr %_M_nxt4, align 8 - %8 = load ptr, ptr %__node.addr, align 8 - %_M_buckets5 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %9 = load ptr, ptr %_M_buckets5, align 8 - %10 = load i64, ptr %__bkt.addr, align 8 - %arrayidx6 = getelementptr inbounds ptr, ptr %9, i64 %10 - %11 = load ptr, ptr %arrayidx6, align 8 - %_M_nxt7 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %11, i32 0, i32 0 - store ptr %8, ptr %_M_nxt7, align 8 - br label %if.end21 - -if.else: ; preds = %entry - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt8 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - %12 = load ptr, ptr %_M_nxt8, align 8 - %13 = load ptr, ptr %__node.addr, align 8 - %_M_nxt9 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %13, i32 0, i32 0 - store ptr %12, ptr %_M_nxt9, align 8 - %14 = load ptr, ptr %__node.addr, align 8 - %_M_before_begin10 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt11 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin10, i32 0, i32 0 - store ptr %14, ptr %_M_nxt11, align 8 - %15 = load ptr, ptr %__node.addr, align 8 - %_M_nxt12 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %15, i32 0, i32 0 - %16 = load ptr, ptr %_M_nxt12, align 8 - %tobool13 = icmp ne ptr %16, null - br i1 %tobool13, label %if.then14, label %if.end - -if.then14: ; preds = %if.else - %17 = load ptr, ptr %__node.addr, align 8 - %_M_buckets15 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %18 = load ptr, ptr %_M_buckets15, align 8 - %19 = load ptr, ptr %__node.addr, align 8 - %call = call noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #5 - %call16 = call noundef i64 @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE15_M_bucket_indexEPNS7_10_Hash_nodeIS5_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef %call) #5 - %arrayidx17 = getelementptr inbounds ptr, ptr %18, i64 %call16 - store ptr %17, ptr %arrayidx17, align 8 - br label %if.end - -if.end: ; preds = %if.then14, %if.else - %_M_before_begin18 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_buckets19 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %20 = load ptr, ptr %_M_buckets19, align 8 - %21 = load i64, ptr %__bkt.addr, align 8 - %arrayidx20 = getelementptr inbounds ptr, ptr %20, i64 %21 - store ptr %_M_before_begin18, ptr %arrayidx20, align 8 - br label %if.end21 - -if.end21: ; preds = %if.end, %if.then - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail14_Node_iteratorISt4pairIKiPK1AELb0ELb0EEC2EPNS_10_Hash_nodeIS6_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__p) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZNSt8__detail19_Node_iterator_baseISt4pairIKiPK1AELb0EEC2EPNS_10_Hash_nodeIS6_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %0) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt_count) #0 comdat align 2 { -entry: - %0 = alloca %"struct.std::integral_constant", align 1 - %this.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - %__new_buckets = alloca ptr, align 8 - %__p = alloca ptr, align 8 - %__bbegin_bkt = alloca i64, align 8 - %__next = alloca ptr, align 8 - %__bkt = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__bkt_count.addr, align 8 - %call = call noundef ptr @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %1) - store ptr %call, ptr %__new_buckets, align 8 - %call2 = call noundef ptr @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) - store ptr %call2, ptr %__p, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - store ptr null, ptr %_M_nxt, align 8 - store i64 0, ptr %__bbegin_bkt, align 8 - br label %while.cond - -while.cond: ; preds = %if.end22, %entry - %2 = load ptr, ptr %__p, align 8 - %tobool = icmp ne ptr %2, null - br i1 %tobool, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %3 = load ptr, ptr %__p, align 8 - %call3 = call noundef ptr @_ZNKSt8__detail10_Hash_nodeISt4pairIKiPK1AELb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #5 - store ptr %call3, ptr %__next, align 8 - %4 = load ptr, ptr %__p, align 8 - %5 = load i64, ptr %__bkt_count.addr, align 8 - %call4 = call noundef i64 @_ZNKSt8__detail15_Hash_code_baseIiSt4pairIKiPK1AENS_10_Select1stESt4hashIiENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexEPKNS_10_Hash_nodeIS6_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %4, i64 noundef %5) #5 - store i64 %call4, ptr %__bkt, align 8 - %6 = load ptr, ptr %__new_buckets, align 8 - %7 = load i64, ptr %__bkt, align 8 - %arrayidx = getelementptr inbounds ptr, ptr %6, i64 %7 - %8 = load ptr, ptr %arrayidx, align 8 - %tobool5 = icmp ne ptr %8, null - br i1 %tobool5, label %if.else, label %if.then - -if.then: ; preds = %while.body - %_M_before_begin6 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt7 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin6, i32 0, i32 0 - %9 = load ptr, ptr %_M_nxt7, align 8 - %10 = load ptr, ptr %__p, align 8 - %_M_nxt8 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %10, i32 0, i32 0 - store ptr %9, ptr %_M_nxt8, align 8 - %11 = load ptr, ptr %__p, align 8 - %_M_before_begin9 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt10 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin9, i32 0, i32 0 - store ptr %11, ptr %_M_nxt10, align 8 - %_M_before_begin11 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %12 = load ptr, ptr %__new_buckets, align 8 - %13 = load i64, ptr %__bkt, align 8 - %arrayidx12 = getelementptr inbounds ptr, ptr %12, i64 %13 - store ptr %_M_before_begin11, ptr %arrayidx12, align 8 - %14 = load ptr, ptr %__p, align 8 - %_M_nxt13 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %14, i32 0, i32 0 - %15 = load ptr, ptr %_M_nxt13, align 8 - %tobool14 = icmp ne ptr %15, null - br i1 %tobool14, label %if.then15, label %if.end - -if.then15: ; preds = %if.then - %16 = load ptr, ptr %__p, align 8 - %17 = load ptr, ptr %__new_buckets, align 8 - %18 = load i64, ptr %__bbegin_bkt, align 8 - %arrayidx16 = getelementptr inbounds ptr, ptr %17, i64 %18 - store ptr %16, ptr %arrayidx16, align 8 - br label %if.end - -if.end: ; preds = %if.then15, %if.then - %19 = load i64, ptr %__bkt, align 8 - store i64 %19, ptr %__bbegin_bkt, align 8 - br label %if.end22 - -if.else: ; preds = %while.body - %20 = load ptr, ptr %__new_buckets, align 8 - %21 = load i64, ptr %__bkt, align 8 - %arrayidx17 = getelementptr inbounds ptr, ptr %20, i64 %21 - %22 = load ptr, ptr %arrayidx17, align 8 - %_M_nxt18 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %22, i32 0, i32 0 - %23 = load ptr, ptr %_M_nxt18, align 8 - %24 = load ptr, ptr %__p, align 8 - %_M_nxt19 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %24, i32 0, i32 0 - store ptr %23, ptr %_M_nxt19, align 8 - %25 = load ptr, ptr %__p, align 8 - %26 = load ptr, ptr %__new_buckets, align 8 - %27 = load i64, ptr %__bkt, align 8 - %arrayidx20 = getelementptr inbounds ptr, ptr %26, i64 %27 - %28 = load ptr, ptr %arrayidx20, align 8 - %_M_nxt21 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %28, i32 0, i32 0 - store ptr %25, ptr %_M_nxt21, align 8 - br label %if.end22 - -if.end22: ; preds = %if.else, %if.end - %29 = load ptr, ptr %__next, align 8 - store ptr %29, ptr %__p, align 8 - br label %while.cond, !llvm.loop !9 - -while.end: ; preds = %while.cond - call void @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_deallocate_bucketsEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) - %30 = load i64, ptr %__bkt_count.addr, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - store i64 %30, ptr %_M_bucket_count, align 8 - %31 = load ptr, ptr %__new_buckets, align 8 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - store ptr %31, ptr %_M_buckets, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail20_Prime_rehash_policy8_M_resetEm(ptr noundef nonnull align 8 dereferenceable(16) %this, i64 noundef %__state) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__state.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__state, ptr %__state.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__state.addr, align 8 - %_M_next_resize = getelementptr inbounds %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 1 - store i64 %0, ptr %_M_next_resize, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt_count) #0 comdat align 2 { -entry: - %retval = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__bkt_count.addr, align 8 - %cmp = icmp eq i64 %0, 1 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_single_bucket = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 - store ptr null, ptr %_M_single_bucket, align 8 - %_M_single_bucket2 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 - store ptr %_M_single_bucket2, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %1 = load i64, ptr %__bkt_count.addr, align 8 - %call = call noundef ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, i64 noundef %1) - store ptr %call, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %2 = load ptr, ptr %retval, align 8 - ret ptr %2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__bkt_count) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - %__alloc = alloca %"class.std::allocator.4", align 1 - %__ptr = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %__p = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEEC2INS_10_Hash_nodeISt4pairIKiPK1AELb0EEEEERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %__alloc, ptr noundef nonnull align 1 dereferenceable(1) %call) #5 - %0 = load i64, ptr %__bkt_count.addr, align 8 - %call2 = invoke noundef ptr @_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__alloc, i64 noundef %0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - store ptr %call2, ptr %__ptr, align 8 - %1 = load ptr, ptr %__ptr, align 8 - %call3 = call noundef ptr @_ZSt12__to_addressIPNSt8__detail15_Hash_node_baseEEPT_S4_(ptr noundef %1) #5 - store ptr %call3, ptr %__p, align 8 - %2 = load ptr, ptr %__p, align 8 - %3 = load i64, ptr %__bkt_count.addr, align 8 - %mul = mul i64 %3, 8 - call void @llvm.memset.p0.i64(ptr align 8 %2, i8 0, i64 %mul, i1 false) - %4 = load ptr, ptr %__p, align 8 - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #5 - ret ptr %4 - -lpad: ; preds = %entry - %5 = landingpad { ptr, i32 } - cleanup - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val4 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val4 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__to_addressIPNSt8__detail15_Hash_node_baseEEPT_S4_(ptr noundef %__ptr) #2 comdat { -entry: - %__ptr.addr = alloca ptr, align 8 - store ptr %__ptr, ptr %__ptr.addr, align 8 - %0 = load ptr, ptr %__ptr.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #16 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #17 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail19_Node_iterator_baseISt4pairIKiPK1AELb0EEC2EPNS_10_Hash_nodeIS6_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__p) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__p.addr, align 8 - store ptr %0, ptr %_M_cur, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::__detail::_Node_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNKSt10_HashtableIiSt4pairIKiPK1AESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) - call void @_ZNSt8__detail14_Node_iteratorISt4pairIKiPK1AELb0ELb0EEC2EPNS_10_Hash_nodeIS6_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %call) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive2 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive2, align 8 - ret ptr %0 -} - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_unordered_map_2.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noinline uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #10 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { cold noreturn nounwind } -attributes #13 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #14 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #15 = { noreturn nounwind } -attributes #16 = { noreturn } -attributes #17 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} -!9 = distinct !{!9, !7} diff --git a/test_cases_bc/basic_cpp_tests/unordered_set-1.cpp.bc b/test_cases_bc/basic_cpp_tests/unordered_set-1.cpp.bc deleted file mode 100644 index ffb8868c..00000000 --- a/test_cases_bc/basic_cpp_tests/unordered_set-1.cpp.bc +++ /dev/null @@ -1,2795 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/unordered_set-1.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/unordered_set-1.cpp" -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-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%"class.std::unordered_set" = type { %"class.std::_Hashtable" } -%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr } -%"struct.std::__detail::_Hash_node_base" = type { ptr } -%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 } -%"struct.std::pair" = type <{ %"struct.std::__detail::_Node_iterator", i8, [7 x i8] }> -%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" } -%"struct.std::__detail::_Node_iterator_base" = type { ptr } -%"struct.std::__detail::_Hash_node_value_base" = type { %"struct.std::__detail::_Hash_node_base", %"struct.__gnu_cxx::__aligned_buffer" } -%"struct.__gnu_cxx::__aligned_buffer" = type { %"union.std::aligned_storage<8, 8>::type" } -%"union.std::aligned_storage<8, 8>::type" = type { [8 x i8] } -%"class.std::allocator.4" = type { i8 } -%"struct.std::__detail::_AllocNode" = type { ptr } -%"struct.std::integral_constant" = type { i8 } -%"struct.std::_Hashtable, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node" = type { ptr, ptr } -%"struct.std::pair.7" = type { i8, i64 } - -$_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EEC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EE6insertERKS2_ = comdat any - -$_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EE5beginEv = comdat any - -$_ZNKSt8__detail14_Node_iteratorIPK1ALb1ELb0EEdeEv = comdat any - -$_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EED2Ev = comdat any - -$_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEEC2Ev = comdat any - -$_ZNSt8__detail15_Hashtable_baseIPK1AS3_NS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb1ELb1EEEEC2Ev = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEEC2Ev = comdat any - -$_ZNSt8__detail15_Hash_node_baseC2Ev = comdat any - -$_ZNSt8__detail20_Prime_rehash_policyC2Ef = comdat any - -$_ZNSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EEC2Ev = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIPK1AELb1EEC2Ev = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_9_IdentityELb1EEC2Ev = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi1ESt4hashIPK1AELb1EEC2Ev = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EEC2Ev = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeIPK1ALb0EEEELb1EEC2Ev = comdat any - -$_ZNSaINSt8__detail10_Hash_nodeIPK1ALb0EEEEC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEEC2Ev = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEED2Ev = comdat any - -$_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE5clearEv = comdat any - -$_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_deallocate_bucketsEv = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEED2Ev = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE19_M_deallocate_nodesEPS5_ = comdat any - -$_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE8_M_beginEv = comdat any - -$_ZNKSt8__detail10_Hash_nodeIPK1ALb0EE7_M_nextEv = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE18_M_deallocate_nodeEPS5_ = comdat any - -$_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeIPK1ALb0EEEEE7destroyIS4_EEvRS6_PT_ = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE17_M_node_allocatorEv = comdat any - -$_ZNSt8__detail21_Hash_node_value_baseIPK1AE9_M_valptrEv = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE22_M_deallocate_node_ptrEPS5_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE7destroyIS5_EEvPT_ = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeIPK1ALb0EEEELb1EE6_M_getEv = comdat any - -$_ZN9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv = comdat any - -$_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv = comdat any - -$_ZNSt14pointer_traitsIPNSt8__detail10_Hash_nodeIPK1ALb0EEEE10pointer_toERS5_ = comdat any - -$_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeIPK1ALb0EEEEE10deallocateERS6_PS5_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE10deallocateEPS6_m = comdat any - -$_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_deallocate_bucketsEPPNS4_15_Hash_node_baseEm = comdat any - -$_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_uses_single_bucketEPPNS4_15_Hash_node_baseE = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE21_M_deallocate_bucketsEPPNS_15_Hash_node_baseEm = comdat any - -$_ZNSt14pointer_traitsIPPNSt8__detail15_Hash_node_baseEE10pointer_toERS2_ = comdat any - -$_ZNSaIPNSt8__detail15_Hash_node_baseEEC2INS_10_Hash_nodeIPK1ALb0EEEEERKSaIT_E = comdat any - -$_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE10deallocateERS3_PS2_m = comdat any - -$_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEEC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS3_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev = comdat any - -$_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeIPK1ALb0EEEELb1EED2Ev = comdat any - -$_ZNSaINSt8__detail10_Hash_nodeIPK1ALb0EEEED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEED2Ev = comdat any - -$_ZNSt8__detail12_Insert_baseIPK1AS3_SaIS3_ENS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb1ELb1EEEE6insertERKS3_ = comdat any - -$_ZNSt8__detail12_Insert_baseIPK1AS3_SaIS3_ENS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb1ELb1EEEE20_M_conjure_hashtableEv = comdat any - -$_ZNSt8__detail10_AllocNodeISaINS_10_Hash_nodeIPK1ALb0EEEEEC2ERNS_16_Hashtable_allocIS6_EE = comdat any - -$_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE9_M_insertIRKS2_NS4_10_AllocNodeISaINS4_10_Hash_nodeIS2_Lb0EEEEEEEESt4pairINS4_14_Node_iteratorIS2_Lb1ELb0EEEbEOT_RKT0_St17integral_constantIbLb1EEm = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE10_M_extractEv = comdat any - -$_ZNKSt8__detail9_IdentityclIRKPK1AEEOT_S8_ = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE12_M_hash_codeERKS3_ = comdat any - -$_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE15_M_bucket_indexERKS2_m = comdat any - -$_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE12_M_find_nodeEmRKS2_m = comdat any - -$_ZNSt8__detail14_Node_iteratorIPK1ALb1ELb0EEC2EPNS_10_Hash_nodeIS3_Lb0EEE = comdat any - -$_ZNSt4pairINSt8__detail14_Node_iteratorIPK1ALb1ELb0EEEbEC2IS5_bLb1EEEOT_OT0_ = comdat any - -$_ZNKSt8__detail10_AllocNodeISaINS_10_Hash_nodeIPK1ALb0EEEEEclIRKS4_EEPS5_OT_ = comdat any - -$_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE12_Scoped_nodeC2EPNS4_10_Hash_nodeIS2_Lb0EEEPNS4_16_Hashtable_allocISaISI_EEE = comdat any - -$_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_insert_unique_nodeERKS2_mmPNS4_10_Hash_nodeIS2_Lb0EEEm = comdat any - -$_ZNSt4pairINSt8__detail14_Node_iteratorIPK1ALb1ELb0EEEbEC2IRS5_bLb1EEEOT_OT0_ = comdat any - -$_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE12_Scoped_nodeD2Ev = comdat any - -$_ZNKSt8__detail21_Hashtable_ebo_helperILi0ENS_9_IdentityELb1EE7_M_cgetEv = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h1Ev = comdat any - -$_ZNKSt4hashIPK1AEclES2_ = comdat any - -$_ZNKSt8__detail21_Hashtable_ebo_helperILi1ESt4hashIPK1AELb1EE7_M_cgetEv = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexERKS3_mm = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h2Ev = comdat any - -$_ZNKSt8__detail18_Mod_range_hashingclEmm = comdat any - -$_ZNKSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EE7_M_cgetEv = comdat any - -$_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE19_M_find_before_nodeEmRKS2_m = comdat any - -$_ZNKSt8__detail15_Hashtable_baseIPK1AS3_NS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb1ELb1EEEE9_M_equalsERKS3_mPNS_10_Hash_nodeIS3_Lb0EEE = comdat any - -$_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE15_M_bucket_indexEPNS4_10_Hash_nodeIS2_Lb0EEE = comdat any - -$_ZNSt8__detail15_Hashtable_baseIPK1AS3_NS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb1ELb1EEEE16_Equal_hash_codeINS_10_Hash_nodeIS3_Lb0EEEE9_S_equalsEmRKSG_ = comdat any - -$_ZNKSt8__detail15_Hashtable_baseIPK1AS3_NS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb1ELb1EEEE5_M_eqEv = comdat any - -$_ZNKSt8equal_toIPK1AEclERKS2_S5_ = comdat any - -$_ZNKSt8__detail9_IdentityclIRPK1AEEOT_S7_ = comdat any - -$_ZNSt8__detail21_Hash_node_value_baseIPK1AE4_M_vEv = comdat any - -$_ZNKSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIPK1AELb1EE7_M_cgetEv = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexEPKNS_10_Hash_nodeIS3_Lb0EEEm = comdat any - -$_ZNKSt8__detail21_Hash_node_value_baseIPK1AE4_M_vEv = comdat any - -$_ZNKSt8__detail21_Hash_node_value_baseIPK1AE9_M_valptrEv = comdat any - -$_ZNK9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv = comdat any - -$_ZNK9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv = comdat any - -$_ZNSt8__detail19_Node_iterator_baseIPK1ALb0EEC2EPNS_10_Hash_nodeIS3_Lb0EEE = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE16_M_allocate_nodeIJRKS4_EEEPS5_DpOT_ = comdat any - -$_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeIPK1ALb0EEEEE8allocateERS6_m = comdat any - -$_ZSt12__to_addressINSt8__detail10_Hash_nodeIPK1ALb0EEEEPT_S7_ = comdat any - -$_ZNSt8__detail10_Hash_nodeIPK1ALb0EEC2Ev = comdat any - -$_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeIPK1ALb0EEEEE9constructIS4_JRKS4_EEEvRS6_PT_DpOT0_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE11_M_max_sizeEv = comdat any - -$_ZNSt8__detail21_Hash_node_value_baseIPK1AEC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE9constructIS5_JRKS5_EEEvPT_DpOT0_ = comdat any - -$_ZNKSt8__detail20_Prime_rehash_policy8_M_stateEv = comdat any - -$_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE9_M_rehashEmRKm = comdat any - -$_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE13_M_store_codeEPNS_10_Hash_nodeIS3_Lb0EEEm = comdat any - -$_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE22_M_insert_bucket_beginEmPNS4_10_Hash_nodeIS2_Lb0EEE = comdat any - -$_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE = comdat any - -$_ZNSt8__detail20_Prime_rehash_policy8_M_resetEm = comdat any - -$_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE19_M_allocate_bucketsEm = comdat any - -$_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE19_M_allocate_bucketsEm = comdat any - -$_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE8allocateERS3_m = comdat any - -$_ZSt12__to_addressIPNSt8__detail15_Hash_node_baseEEPT_S4_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE8allocateEmPKv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE11_M_max_sizeEv = comdat any - -$_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE5beginEv = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 -@__dso_handle = external hidden global i8 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_unordered_set_1.cpp, ptr null }] - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init() #3 section ".text.startup" { -entry: - call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = call i32 @__cxa_atexit(ptr @_ZNSt8ios_base4InitD1Ev, ptr @_ZStL8__ioinit, ptr @__dso_handle) #5 - ret void -} - -declare void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 - -; Function Attrs: nounwind -declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 - -; Function Attrs: nounwind -declare i32 @__cxa_atexit(ptr, ptr, ptr) #5 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #6 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %aset = alloca %"class.std::unordered_set", align 8 - %a = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %coerce = alloca %"struct.std::pair", align 8 - %it = alloca %"struct.std::__detail::_Node_iterator", align 8 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %aset) #5 - %call = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #15 - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #5 - store ptr %call, ptr %a, align 8 - %call2 = invoke { ptr, i8 } @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EE6insertERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %aset, ptr noundef nonnull align 8 dereferenceable(8) %a) - to label %invoke.cont1 unwind label %lpad - -invoke.cont1: ; preds = %invoke.cont - %0 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 0 - %1 = extractvalue { ptr, i8 } %call2, 0 - store ptr %1, ptr %0, align 8 - %2 = getelementptr inbounds { ptr, i8 }, ptr %coerce, i32 0, i32 1 - %3 = extractvalue { ptr, i8 } %call2, 1 - store i8 %3, ptr %2, align 8 - %call3 = call ptr @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %aset) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %it, i32 0, i32 0 - %coerce.dive4 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - store ptr %call3, ptr %coerce.dive4, align 8 - %call5 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail14_Node_iteratorIPK1ALb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 - %4 = load ptr, ptr %call5, align 8 - store ptr %4, ptr %aptr, align 8 - %5 = load ptr, ptr %aptr, align 8 - %6 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %5, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %7 = load ptr, ptr %vfn, align 8 - invoke void %7(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef %6) - to label %invoke.cont6 unwind label %lpad - -invoke.cont6: ; preds = %invoke.cont1 - store i32 0, ptr %retval, align 4 - call void @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %aset) #5 - %8 = load i32, ptr %retval, align 4 - ret i32 %8 - -lpad: ; preds = %invoke.cont1, %invoke.cont, %entry - %9 = landingpad { ptr, i32 } - cleanup - %10 = extractvalue { ptr, i32 } %9, 0 - store ptr %10, ptr %exn.slot, align 8 - %11 = extractvalue { ptr, i32 } %9, 1 - store i32 %11, ptr %ehselector.slot, align 4 - call void @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %aset) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val7 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val7 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"class.std::unordered_set", ptr %this1, i32 0, i32 0 - call void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %_M_h) #5 - ret void -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #8 - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, i8 } @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EE6insertERKS2_(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { -entry: - %retval = alloca %"struct.std::pair", align 8 - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"class.std::unordered_set", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call { ptr, i8 } @_ZNSt8__detail12_Insert_baseIPK1AS3_SaIS3_ENS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb1ELb1EEEE6insertERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %_M_h, ptr noundef nonnull align 8 dereferenceable(8) %0) - %1 = getelementptr inbounds { ptr, i8 }, ptr %retval, i32 0, i32 0 - %2 = extractvalue { ptr, i8 } %call, 0 - store ptr %2, ptr %1, align 8 - %3 = getelementptr inbounds { ptr, i8 }, ptr %retval, i32 0, i32 1 - %4 = extractvalue { ptr, i8 } %call, 1 - store i8 %4, ptr %3, align 8 - %5 = load { ptr, i8 }, ptr %retval, align 8 - ret { ptr, i8 } %5 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::__detail::_Node_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"class.std::unordered_set", ptr %this1, i32 0, i32 0 - %call = call ptr @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %_M_h) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive2 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - store ptr %call, ptr %coerce.dive2, align 8 - %coerce.dive3 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive4 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive3, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive4, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail14_Node_iteratorIPK1ALb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_cur, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail21_Hash_node_value_baseIPK1AE4_M_vEv(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt13unordered_setIPK1ASt4hashIS2_ESt8equal_toIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"class.std::unordered_set", ptr %this1, i32 0, i32 0 - call void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %_M_h) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail15_Hashtable_baseIPK1AS3_NS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb1ELb1EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %_M_single_bucket = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 - store ptr %_M_single_bucket, ptr %_M_buckets, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - store i64 1, ptr %_M_bucket_count, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - call void @_ZNSt8__detail15_Hash_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %_M_before_begin) #5 - %_M_element_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - store i64 0, ptr %_M_element_count, align 8 - %_M_rehash_policy = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - call void @_ZNSt8__detail20_Prime_rehash_policyC2Ef(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy, float noundef 1.000000e+00) #5 - %_M_single_bucket2 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 - store ptr null, ptr %_M_single_bucket2, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail15_Hashtable_baseIPK1AS3_NS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb1ELb1EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIPK1AELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeIPK1ALb0EEEELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail15_Hash_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_nxt, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail20_Prime_rehash_policyC2Ef(ptr noundef nonnull align 8 dereferenceable(16) %this, float noundef %__z) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__z.addr = alloca float, align 4 - store ptr %this, ptr %this.addr, align 8 - store float %__z, ptr %__z.addr, align 4 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_max_load_factor = getelementptr inbounds %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 0 - %0 = load float, ptr %__z.addr, align 4 - store float %0, ptr %_M_max_load_factor, align 8 - %_M_next_resize = getelementptr inbounds %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 1 - store i64 0, ptr %_M_next_resize, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_9_IdentityELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt8__detail21_Hashtable_ebo_helperILi1ESt4hashIPK1AELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIPK1AELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ENS_9_IdentityELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hashtable_ebo_helperILi1ESt4hashIPK1AELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeIPK1ALb0EEEELb1EEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaINSt8__detail10_Hash_nodeIPK1ALb0EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaINSt8__detail10_Hash_nodeIPK1ALb0EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) #5 - invoke void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_deallocate_bucketsEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void - -terminate.lpad: ; preds = %entry - %0 = landingpad { ptr, i32 } - catch ptr null - %1 = extractvalue { ptr, i32 } %0, 0 - call void @__clang_call_terminate(ptr %1) #16 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = invoke noundef ptr @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - invoke void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE19_M_deallocate_nodesEPS5_(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %call) - to label %invoke.cont2 unwind label %terminate.lpad - -invoke.cont2: ; preds = %invoke.cont - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_buckets, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %1 = load i64, ptr %_M_bucket_count, align 8 - %mul = mul i64 %1, 8 - call void @llvm.memset.p0.i64(ptr align 8 %0, i8 0, i64 %mul, i1 false) - %_M_element_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - store i64 0, ptr %_M_element_count, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - store ptr null, ptr %_M_nxt, align 8 - ret void - -terminate.lpad: ; preds = %invoke.cont, %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #16 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_deallocate_bucketsEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_buckets, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %1 = load i64, ptr %_M_bucket_count, align 8 - call void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_deallocate_bucketsEPPNS4_15_Hash_node_baseEm(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef %0, i64 noundef %1) - ret void -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #9 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #5 - call void @_ZSt9terminatev() #16 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeIPK1ALb0EEEELb1EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE19_M_deallocate_nodesEPS5_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__n) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca ptr, align 8 - %__tmp = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - br label %while.cond - -while.cond: ; preds = %while.body, %entry - %0 = load ptr, ptr %__n.addr, align 8 - %tobool = icmp ne ptr %0, null - br i1 %tobool, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %1 = load ptr, ptr %__n.addr, align 8 - store ptr %1, ptr %__tmp, align 8 - %2 = load ptr, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZNKSt8__detail10_Hash_nodeIPK1ALb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #5 - store ptr %call, ptr %__n.addr, align 8 - %3 = load ptr, ptr %__tmp, align 8 - call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE18_M_deallocate_nodeEPS5_(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %3) - br label %while.cond, !llvm.loop !6 - -while.end: ; preds = %while.cond - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - %0 = load ptr, ptr %_M_nxt, align 8 - ret ptr %0 -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #10 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt8__detail10_Hash_nodeIPK1ALb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_nxt, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE18_M_deallocate_nodeEPS5_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__n) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - %0 = load ptr, ptr %__n.addr, align 8 - %call2 = call noundef ptr @_ZNSt8__detail21_Hash_node_value_baseIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - call void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeIPK1ALb0EEEEE7destroyIS4_EEvRS6_PT_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %call2) #5 - %1 = load ptr, ptr %__n.addr, align 8 - call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE22_M_deallocate_node_ptrEPS5_(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeIPK1ALb0EEEEE7destroyIS4_EEvRS6_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE7destroyIS5_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeIPK1ALb0EEEELb1EE6_M_getEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8__detail21_Hash_node_value_baseIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::__detail::_Hash_node_value_base", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %_M_storage) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE22_M_deallocate_node_ptrEPS5_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__n) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca ptr, align 8 - %__ptr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZNSt14pointer_traitsIPNSt8__detail10_Hash_nodeIPK1ALb0EEEE10pointer_toERS5_(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - store ptr %call, ptr %__ptr, align 8 - %1 = load ptr, ptr %__n.addr, align 8 - %call2 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - %2 = load ptr, ptr %__ptr, align 8 - call void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeIPK1ALb0EEEEE10deallocateERS6_PS5_m(ptr noundef nonnull align 1 dereferenceable(1) %call2, ptr noundef %2, i64 noundef 1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE7destroyIS5_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeIPK1ALb0EEEELb1EE6_M_getEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_buffer", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14pointer_traitsIPNSt8__detail10_Hash_nodeIPK1ALb0EEEE10pointer_toERS5_(ptr noundef nonnull align 8 dereferenceable(16) %__r) #2 comdat align 2 { -entry: - %__r.addr = alloca ptr, align 8 - store ptr %__r, ptr %__r.addr, align 8 - %0 = load ptr, ptr %__r.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeIPK1ALb0EEEEE10deallocateERS6_PS5_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE10deallocateEPS6_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE10deallocateEPS6_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #11 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_deallocate_bucketsEPPNS4_15_Hash_node_baseEm(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef %__bkts, i64 noundef %__bkt_count) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__bkts.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__bkts, ptr %__bkts.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__bkts.addr, align 8 - %call = call noundef zeroext i1 @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_uses_single_bucketEPPNS4_15_Hash_node_baseE(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef %0) - br i1 %call, label %if.then, label %if.end - -if.then: ; preds = %entry - br label %return - -if.end: ; preds = %entry - %1 = load ptr, ptr %__bkts.addr, align 8 - %2 = load i64, ptr %__bkt_count.addr, align 8 - call void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE21_M_deallocate_bucketsEPPNS_15_Hash_node_baseEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %1, i64 noundef %2) - br label %return - -return: ; preds = %if.end, %if.then - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_uses_single_bucketEPPNS4_15_Hash_node_baseE(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef %__bkts) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__bkts.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__bkts, ptr %__bkts.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__bkts.addr, align 8 - %_M_single_bucket = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 - %cmp = icmp eq ptr %0, %_M_single_bucket - ret i1 %cmp -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE21_M_deallocate_bucketsEPPNS_15_Hash_node_baseEm(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__bkts, i64 noundef %__bkt_count) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__bkts.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - %__ptr = alloca ptr, align 8 - %__alloc = alloca %"class.std::allocator.4", align 1 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store ptr %__bkts, ptr %__bkts.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__bkts.addr, align 8 - %call = call noundef ptr @_ZNSt14pointer_traitsIPPNSt8__detail15_Hash_node_baseEE10pointer_toERS2_(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 - store ptr %call, ptr %__ptr, align 8 - %call2 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEEC2INS_10_Hash_nodeIPK1ALb0EEEEERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %__alloc, ptr noundef nonnull align 1 dereferenceable(1) %call2) #5 - %1 = load ptr, ptr %__ptr, align 8 - %2 = load i64, ptr %__bkt_count.addr, align 8 - invoke void @_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__alloc, ptr noundef %1, i64 noundef %2) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #5 - ret void - -lpad: ; preds = %entry - %3 = landingpad { ptr, i32 } - cleanup - %4 = extractvalue { ptr, i32 } %3, 0 - store ptr %4, ptr %exn.slot, align 8 - %5 = extractvalue { ptr, i32 } %3, 1 - store i32 %5, ptr %ehselector.slot, align 4 - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val3 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val3 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt14pointer_traitsIPPNSt8__detail15_Hash_node_baseEE10pointer_toERS2_(ptr noundef nonnull align 8 dereferenceable(8) %__r) #2 comdat align 2 { -entry: - %__r.addr = alloca ptr, align 8 - store ptr %__r, ptr %__r.addr, align 8 - %0 = load ptr, ptr %__r.addr, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPNSt8__detail15_Hash_node_baseEEC2INS_10_Hash_nodeIPK1ALb0EEEEERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 1 dereferenceable(1) %0) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hashtable_ebo_helperILi0ESaINS_10_Hash_nodeIPK1ALb0EEEELb1EED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaINSt8__detail10_Hash_nodeIPK1ALb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaINSt8__detail10_Hash_nodeIPK1ALb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, i8 } @_ZNSt8__detail12_Insert_baseIPK1AS3_SaIS3_ENS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb1ELb1EEEE6insertERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(8) %__v) #0 comdat align 2 { -entry: - %retval = alloca %"struct.std::pair", align 8 - %this.addr = alloca ptr, align 8 - %__v.addr = alloca ptr, align 8 - %__h = alloca ptr, align 8 - %__node_gen = alloca %"struct.std::__detail::_AllocNode", align 8 - %agg.tmp = alloca %"struct.std::integral_constant", align 1 - store ptr %this, ptr %this.addr, align 8 - store ptr %__v, ptr %__v.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt8__detail12_Insert_baseIPK1AS3_SaIS3_ENS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb1ELb1EEEE20_M_conjure_hashtableEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - store ptr %call, ptr %__h, align 8 - %0 = load ptr, ptr %__h, align 8 - call void @_ZNSt8__detail10_AllocNodeISaINS_10_Hash_nodeIPK1ALb0EEEEEC2ERNS_16_Hashtable_allocIS6_EE(ptr noundef nonnull align 8 dereferenceable(8) %__node_gen, ptr noundef nonnull align 1 dereferenceable(1) %0) - %1 = load ptr, ptr %__h, align 8 - %2 = load ptr, ptr %__v.addr, align 8 - %call2 = call { ptr, i8 } @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE9_M_insertIRKS2_NS4_10_AllocNodeISaINS4_10_Hash_nodeIS2_Lb0EEEEEEEESt4pairINS4_14_Node_iteratorIS2_Lb1ELb0EEEbEOT_RKT0_St17integral_constantIbLb1EEm(ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %__node_gen, i64 noundef 1) - %3 = getelementptr inbounds { ptr, i8 }, ptr %retval, i32 0, i32 0 - %4 = extractvalue { ptr, i8 } %call2, 0 - store ptr %4, ptr %3, align 8 - %5 = getelementptr inbounds { ptr, i8 }, ptr %retval, i32 0, i32 1 - %6 = extractvalue { ptr, i8 } %call2, 1 - store i8 %6, ptr %5, align 8 - %7 = load { ptr, i8 }, ptr %retval, align 8 - ret { ptr, i8 } %7 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt8__detail12_Insert_baseIPK1AS3_SaIS3_ENS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb1ELb1EEEE20_M_conjure_hashtableEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret ptr %this1 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail10_AllocNodeISaINS_10_Hash_nodeIPK1ALb0EEEEEC2ERNS_16_Hashtable_allocIS6_EE(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 1 dereferenceable(1) %__h) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__h.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__h, ptr %__h.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"struct.std::__detail::_AllocNode", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__h.addr, align 8 - store ptr %0, ptr %_M_h, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local { ptr, i8 } @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE9_M_insertIRKS2_NS4_10_AllocNodeISaINS4_10_Hash_nodeIS2_Lb0EEEEEEEESt4pairINS4_14_Node_iteratorIS2_Lb1ELb0EEEbEOT_RKT0_St17integral_constantIbLb1EEm(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 8 dereferenceable(8) %__v, ptr noundef nonnull align 8 dereferenceable(8) %__node_gen, i64 noundef %__n_elt) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca %"struct.std::pair", align 8 - %0 = alloca %"struct.std::integral_constant", align 1 - %this.addr = alloca ptr, align 8 - %__v.addr = alloca ptr, align 8 - %__node_gen.addr = alloca ptr, align 8 - %__n_elt.addr = alloca i64, align 8 - %__k = alloca ptr, align 8 - %__code = alloca i64, align 8 - %__bkt = alloca i64, align 8 - %__node = alloca ptr, align 8 - %ref.tmp = alloca %"struct.std::__detail::_Node_iterator", align 8 - %ref.tmp6 = alloca i8, align 1 - %__node7 = alloca %"struct.std::_Hashtable, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", align 8 - %__pos = alloca %"struct.std::__detail::_Node_iterator", align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %ref.tmp12 = alloca i8, align 1 - store ptr %this, ptr %this.addr, align 8 - store ptr %__v, ptr %__v.addr, align 8 - store ptr %__node_gen, ptr %__node_gen.addr, align 8 - store i64 %__n_elt, ptr %__n_elt.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE10_M_extractEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - %1 = load ptr, ptr %__v.addr, align 8 - %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail9_IdentityclIRKPK1AEEOT_S8_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef nonnull align 8 dereferenceable(8) %1) - store ptr %call2, ptr %__k, align 8 - %2 = load ptr, ptr %__k, align 8 - %call3 = call noundef i64 @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE12_M_hash_codeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 8 dereferenceable(8) %2) - store i64 %call3, ptr %__code, align 8 - %3 = load ptr, ptr %__k, align 8 - %4 = load i64, ptr %__code, align 8 - %call4 = call noundef i64 @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE15_M_bucket_indexERKS2_m(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef %4) - store i64 %call4, ptr %__bkt, align 8 - %5 = load i64, ptr %__bkt, align 8 - %6 = load ptr, ptr %__k, align 8 - %7 = load i64, ptr %__code, align 8 - %call5 = call noundef ptr @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE12_M_find_nodeEmRKS2_m(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %5, ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef %7) - store ptr %call5, ptr %__node, align 8 - %8 = load ptr, ptr %__node, align 8 - %tobool = icmp ne ptr %8, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %9 = load ptr, ptr %__node, align 8 - call void @_ZNSt8__detail14_Node_iteratorIPK1ALb1ELb0EEC2EPNS_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef %9) #5 - store i8 0, ptr %ref.tmp6, align 1 - call void @_ZNSt4pairINSt8__detail14_Node_iteratorIPK1ALb1ELb0EEEbEC2IS5_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp6) - br label %return - -if.end: ; preds = %entry - %10 = load ptr, ptr %__node_gen.addr, align 8 - %11 = load ptr, ptr %__v.addr, align 8 - %call8 = call noundef ptr @_ZNKSt8__detail10_AllocNodeISaINS_10_Hash_nodeIPK1ALb0EEEEEclIRKS4_EEPS5_OT_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) - call void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE12_Scoped_nodeC2EPNS4_10_Hash_nodeIS2_Lb0EEEPNS4_16_Hashtable_allocISaISI_EEE(ptr noundef nonnull align 8 dereferenceable(16) %__node7, ptr noundef %call8, ptr noundef %this1) - %12 = load ptr, ptr %__k, align 8 - %13 = load i64, ptr %__bkt, align 8 - %14 = load i64, ptr %__code, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Hashtable, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %__node7, i32 0, i32 1 - %15 = load ptr, ptr %_M_node, align 8 - %16 = load i64, ptr %__n_elt.addr, align 8 - %call9 = invoke ptr @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_insert_unique_nodeERKS2_mmPNS4_10_Hash_nodeIS2_Lb0EEEm(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef nonnull align 8 dereferenceable(8) %12, i64 noundef %13, i64 noundef %14, ptr noundef %15, i64 noundef %16) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %if.end - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %__pos, i32 0, i32 0 - %coerce.dive10 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - store ptr %call9, ptr %coerce.dive10, align 8 - %_M_node11 = getelementptr inbounds %"struct.std::_Hashtable, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %__node7, i32 0, i32 1 - store ptr null, ptr %_M_node11, align 8 - store i8 1, ptr %ref.tmp12, align 1 - invoke void @_ZNSt4pairINSt8__detail14_Node_iteratorIPK1ALb1ELb0EEEbEC2IRS5_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %retval, ptr noundef nonnull align 8 dereferenceable(8) %__pos, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp12) - to label %invoke.cont13 unwind label %lpad - -invoke.cont13: ; preds = %invoke.cont - call void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE12_Scoped_nodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %__node7) #5 - br label %return - -lpad: ; preds = %invoke.cont, %if.end - %17 = landingpad { ptr, i32 } - cleanup - %18 = extractvalue { ptr, i32 } %17, 0 - store ptr %18, ptr %exn.slot, align 8 - %19 = extractvalue { ptr, i32 } %17, 1 - store i32 %19, ptr %ehselector.slot, align 4 - call void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE12_Scoped_nodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %__node7) #5 - br label %eh.resume - -return: ; preds = %invoke.cont13, %if.then - %20 = load { ptr, i8 }, ptr %retval, align 8 - ret { ptr, i8 } %20 - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val14 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val14 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE10_M_extractEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi0ENS_9_IdentityELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail9_IdentityclIRKPK1AEEOT_S8_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE12_M_hash_codeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(8) %__k) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__k.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h1Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) - %0 = load ptr, ptr %__k.addr, align 8 - %1 = load ptr, ptr %0, align 8 - %call2 = call noundef i64 @_ZNKSt4hashIPK1AEclES2_(ptr noundef nonnull align 1 dereferenceable(1) %call, ptr noundef %1) #5 - ret i64 %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE15_M_bucket_indexERKS2_m(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 8 dereferenceable(8) %__k, i64 noundef %__c) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__k.addr = alloca ptr, align 8 - %__c.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - store i64 %__c, ptr %__c.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__k.addr, align 8 - %1 = load i64, ptr %__c.addr, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %2 = load i64, ptr %_M_bucket_count, align 8 - %call = call noundef i64 @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexERKS3_mm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 8 dereferenceable(8) %0, i64 noundef %1, i64 noundef %2) - ret i64 %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE12_M_find_nodeEmRKS2_m(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt, ptr noundef nonnull align 8 dereferenceable(8) %__key, i64 noundef %__c) #0 comdat align 2 { -entry: - %retval = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - %__bkt.addr = alloca i64, align 8 - %__key.addr = alloca ptr, align 8 - %__c.addr = alloca i64, align 8 - %__before_n = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt, ptr %__bkt.addr, align 8 - store ptr %__key, ptr %__key.addr, align 8 - store i64 %__c, ptr %__c.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__bkt.addr, align 8 - %1 = load ptr, ptr %__key.addr, align 8 - %2 = load i64, ptr %__c.addr, align 8 - %call = call noundef ptr @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE19_M_find_before_nodeEmRKS2_m(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %0, ptr noundef nonnull align 8 dereferenceable(8) %1, i64 noundef %2) - store ptr %call, ptr %__before_n, align 8 - %3 = load ptr, ptr %__before_n, align 8 - %tobool = icmp ne ptr %3, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__before_n, align 8 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %4, i32 0, i32 0 - %5 = load ptr, ptr %_M_nxt, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - store ptr null, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail14_Node_iteratorIPK1ALb1ELb0EEC2EPNS_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__p) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZNSt8__detail19_Node_iterator_baseIPK1ALb0EEC2EPNS_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef %0) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairINSt8__detail14_Node_iteratorIPK1ALb1ELb0EEEbEC2IS5_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 1 dereferenceable(1) %__y) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %first, ptr align 8 %0, i64 8, i1 false) - %second = getelementptr inbounds %"struct.std::pair", ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %__y.addr, align 8 - %2 = load i8, ptr %1, align 1 - %tobool = trunc i8 %2 to i1 - %frombool = zext i1 %tobool to i8 - store i8 %frombool, ptr %second, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt8__detail10_AllocNodeISaINS_10_Hash_nodeIPK1ALb0EEEEEclIRKS4_EEPS5_OT_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__arg) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__arg.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__arg, ptr %__arg.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"struct.std::__detail::_AllocNode", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_h, align 8 - %1 = load ptr, ptr %__arg.addr, align 8 - %call = call noundef ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE16_M_allocate_nodeIJRKS4_EEEPS5_DpOT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE12_Scoped_nodeC2EPNS4_10_Hash_nodeIS2_Lb0EEEPNS4_16_Hashtable_allocISaISI_EEE(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef %__n, ptr noundef %__h) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca ptr, align 8 - %__h.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - store ptr %__h, ptr %__h.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_h = getelementptr inbounds %"struct.std::_Hashtable, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__h.addr, align 8 - store ptr %0, ptr %_M_h, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Hashtable, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %__n.addr, align 8 - store ptr %1, ptr %_M_node, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_insert_unique_nodeERKS2_mmPNS4_10_Hash_nodeIS2_Lb0EEEm(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef nonnull align 8 dereferenceable(8) %__k, i64 noundef %__bkt, i64 noundef %__code, ptr noundef %__node, i64 noundef %__n_elt) #0 comdat align 2 { -entry: - %retval = alloca %"struct.std::__detail::_Node_iterator", align 8 - %this.addr = alloca ptr, align 8 - %__k.addr = alloca ptr, align 8 - %__bkt.addr = alloca i64, align 8 - %__code.addr = alloca i64, align 8 - %__node.addr = alloca ptr, align 8 - %__n_elt.addr = alloca i64, align 8 - %__saved_state = alloca ptr, align 8 - %ref.tmp = alloca i64, align 8 - %__do_rehash = alloca %"struct.std::pair.7", align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - store i64 %__bkt, ptr %__bkt.addr, align 8 - store i64 %__code, ptr %__code.addr, align 8 - store ptr %__node, ptr %__node.addr, align 8 - store i64 %__n_elt, ptr %__n_elt.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_rehash_policy = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - %call = call noundef i64 @_ZNKSt8__detail20_Prime_rehash_policy8_M_stateEv(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy) - store i64 %call, ptr %ref.tmp, align 8 - store ptr %ref.tmp, ptr %__saved_state, align 8 - %_M_rehash_policy2 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %0 = load i64, ptr %_M_bucket_count, align 8 - %_M_element_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - %1 = load i64, ptr %_M_element_count, align 8 - %2 = load i64, ptr %__n_elt.addr, align 8 - %call3 = call { i8, i64 } @_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy2, i64 noundef %0, i64 noundef %1, i64 noundef %2) - %3 = getelementptr inbounds { i8, i64 }, ptr %__do_rehash, i32 0, i32 0 - %4 = extractvalue { i8, i64 } %call3, 0 - store i8 %4, ptr %3, align 8 - %5 = getelementptr inbounds { i8, i64 }, ptr %__do_rehash, i32 0, i32 1 - %6 = extractvalue { i8, i64 } %call3, 1 - store i64 %6, ptr %5, align 8 - %first = getelementptr inbounds %"struct.std::pair.7", ptr %__do_rehash, i32 0, i32 0 - %7 = load i8, ptr %first, align 8 - %tobool = trunc i8 %7 to i1 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %second = getelementptr inbounds %"struct.std::pair.7", ptr %__do_rehash, i32 0, i32 1 - %8 = load i64, ptr %second, align 8 - %9 = load ptr, ptr %__saved_state, align 8 - call void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE9_M_rehashEmRKm(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %8, ptr noundef nonnull align 8 dereferenceable(8) %9) - %10 = load ptr, ptr %__k.addr, align 8 - %11 = load i64, ptr %__code.addr, align 8 - %call4 = call noundef i64 @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE15_M_bucket_indexERKS2_m(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef nonnull align 8 dereferenceable(8) %10, i64 noundef %11) - store i64 %call4, ptr %__bkt.addr, align 8 - br label %if.end - -if.end: ; preds = %if.then, %entry - %12 = load ptr, ptr %__node.addr, align 8 - %13 = load i64, ptr %__code.addr, align 8 - call void @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE13_M_store_codeEPNS_10_Hash_nodeIS3_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %12, i64 noundef %13) - %14 = load i64, ptr %__bkt.addr, align 8 - %15 = load ptr, ptr %__node.addr, align 8 - call void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE22_M_insert_bucket_beginEmPNS4_10_Hash_nodeIS2_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %14, ptr noundef %15) - %_M_element_count5 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 3 - %16 = load i64, ptr %_M_element_count5, align 8 - %inc = add i64 %16, 1 - store i64 %inc, ptr %_M_element_count5, align 8 - %17 = load ptr, ptr %__node.addr, align 8 - call void @_ZNSt8__detail14_Node_iteratorIPK1ALb1ELb0EEC2EPNS_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %17) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive6 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - %18 = load ptr, ptr %coerce.dive6, align 8 - ret ptr %18 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt4pairINSt8__detail14_Node_iteratorIPK1ALb1ELb0EEEbEC2IRS5_bLb1EEEOT_OT0_(ptr noundef nonnull align 8 dereferenceable(9) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 1 dereferenceable(1) %__y) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %first = getelementptr inbounds %"struct.std::pair", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__x.addr, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %first, ptr align 8 %0, i64 8, i1 false) - %second = getelementptr inbounds %"struct.std::pair", ptr %this1, i32 0, i32 1 - %1 = load ptr, ptr %__y.addr, align 8 - %2 = load i8, ptr %1, align 1 - %tobool = trunc i8 %2 to i1 - %frombool = zext i1 %tobool to i8 - store i8 %frombool, ptr %second, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE12_Scoped_nodeD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_node = getelementptr inbounds %"struct.std::_Hashtable, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this1, i32 0, i32 1 - %0 = load ptr, ptr %_M_node, align 8 - %tobool = icmp ne ptr %0, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_h = getelementptr inbounds %"struct.std::_Hashtable, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this1, i32 0, i32 0 - %1 = load ptr, ptr %_M_h, align 8 - %_M_node2 = getelementptr inbounds %"struct.std::_Hashtable, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits>::_Scoped_node", ptr %this1, i32 0, i32 1 - %2 = load ptr, ptr %_M_node2, align 8 - invoke void @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE18_M_deallocate_nodeEPS5_(ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef %2) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %if.then - br label %if.end - -if.end: ; preds = %invoke.cont, %entry - ret void - -terminate.lpad: ; preds = %if.then - %3 = landingpad { ptr, i32 } - catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #16 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi0ENS_9_IdentityELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h1Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi1ESt4hashIPK1AELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt4hashIPK1AEclES2_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = ptrtoint ptr %0 to i64 - ret i64 %1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi1ESt4hashIPK1AELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexERKS3_mm(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(8) %0, i64 noundef %__c, i64 noundef %__bkt_count) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - %__c.addr = alloca i64, align 8 - %__bkt_count.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - store i64 %__c, ptr %__c.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) - %1 = load i64, ptr %__c.addr, align 8 - %2 = load i64, ptr %__bkt_count.addr, align 8 - %call2 = call noundef i64 @_ZNKSt8__detail18_Mod_range_hashingclEmm(ptr noundef nonnull align 1 dereferenceable(1) %call, i64 noundef %1, i64 noundef %2) #5 - ret i64 %call2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt8__detail18_Mod_range_hashingclEmm(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__num, i64 noundef %__den) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__num.addr = alloca i64, align 8 - %__den.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__num, ptr %__num.addr, align 8 - store i64 %__den, ptr %__den.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__num.addr, align 8 - %1 = load i64, ptr %__den.addr, align 8 - %rem = urem i64 %0, %1 - ret i64 %rem -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi2ENS_18_Mod_range_hashingELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE19_M_find_before_nodeEmRKS2_m(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt, ptr noundef nonnull align 8 dereferenceable(8) %__k, i64 noundef %__code) #0 comdat align 2 { -entry: - %retval = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - %__bkt.addr = alloca i64, align 8 - %__k.addr = alloca ptr, align 8 - %__code.addr = alloca i64, align 8 - %__prev_p = alloca ptr, align 8 - %__p = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt, ptr %__bkt.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - store i64 %__code, ptr %__code.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_buckets, align 8 - %1 = load i64, ptr %__bkt.addr, align 8 - %arrayidx = getelementptr inbounds ptr, ptr %0, i64 %1 - %2 = load ptr, ptr %arrayidx, align 8 - store ptr %2, ptr %__prev_p, align 8 - %3 = load ptr, ptr %__prev_p, align 8 - %tobool = icmp ne ptr %3, null - br i1 %tobool, label %if.end, label %if.then - -if.then: ; preds = %entry - store ptr null, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %4 = load ptr, ptr %__prev_p, align 8 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %4, i32 0, i32 0 - %5 = load ptr, ptr %_M_nxt, align 8 - store ptr %5, ptr %__p, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %if.end - %6 = load ptr, ptr %__k.addr, align 8 - %7 = load i64, ptr %__code.addr, align 8 - %8 = load ptr, ptr %__p, align 8 - %call = call noundef zeroext i1 @_ZNKSt8__detail15_Hashtable_baseIPK1AS3_NS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb1ELb1EEEE9_M_equalsERKS3_mPNS_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef %7, ptr noundef %8) - br i1 %call, label %if.then2, label %if.end3 - -if.then2: ; preds = %for.cond - %9 = load ptr, ptr %__prev_p, align 8 - store ptr %9, ptr %retval, align 8 - br label %return - -if.end3: ; preds = %for.cond - %10 = load ptr, ptr %__p, align 8 - %_M_nxt4 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %10, i32 0, i32 0 - %11 = load ptr, ptr %_M_nxt4, align 8 - %tobool5 = icmp ne ptr %11, null - br i1 %tobool5, label %lor.lhs.false, label %if.then8 - -lor.lhs.false: ; preds = %if.end3 - %12 = load ptr, ptr %__p, align 8 - %call6 = call noundef ptr @_ZNKSt8__detail10_Hash_nodeIPK1ALb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(16) %12) #5 - %call7 = call noundef i64 @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE15_M_bucket_indexEPNS4_10_Hash_nodeIS2_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef %call6) #5 - %13 = load i64, ptr %__bkt.addr, align 8 - %cmp = icmp ne i64 %call7, %13 - br i1 %cmp, label %if.then8, label %if.end9 - -if.then8: ; preds = %lor.lhs.false, %if.end3 - br label %for.end - -if.end9: ; preds = %lor.lhs.false - %14 = load ptr, ptr %__p, align 8 - store ptr %14, ptr %__prev_p, align 8 - br label %for.inc - -for.inc: ; preds = %if.end9 - %15 = load ptr, ptr %__p, align 8 - %call10 = call noundef ptr @_ZNKSt8__detail10_Hash_nodeIPK1ALb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(16) %15) #5 - store ptr %call10, ptr %__p, align 8 - br label %for.cond, !llvm.loop !8 - -for.end: ; preds = %if.then8 - store ptr null, ptr %retval, align 8 - br label %return - -return: ; preds = %for.end, %if.then2, %if.then - %16 = load ptr, ptr %retval, align 8 - ret ptr %16 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt8__detail15_Hashtable_baseIPK1AS3_NS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb1ELb1EEEE9_M_equalsERKS3_mPNS_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(8) %__k, i64 noundef %__c, ptr noundef %__n) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__k.addr = alloca ptr, align 8 - %__c.addr = alloca i64, align 8 - %__n.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__k, ptr %__k.addr, align 8 - store i64 %__c, ptr %__c.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__c.addr, align 8 - %1 = load ptr, ptr %__n.addr, align 8 - %call = call noundef zeroext i1 @_ZNSt8__detail15_Hashtable_baseIPK1AS3_NS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb1ELb1EEEE16_Equal_hash_codeINS_10_Hash_nodeIS3_Lb0EEEE9_S_equalsEmRKSG_(i64 noundef %0, ptr noundef nonnull align 8 dereferenceable(16) %1) - br i1 %call, label %land.rhs, label %land.end - -land.rhs: ; preds = %entry - %call2 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hashtable_baseIPK1AS3_NS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb1ELb1EEEE5_M_eqEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - %2 = load ptr, ptr %__k.addr, align 8 - %call3 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE10_M_extractEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - %3 = load ptr, ptr %__n.addr, align 8 - %call4 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail21_Hash_node_value_baseIPK1AE4_M_vEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #5 - %call5 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail9_IdentityclIRPK1AEEOT_S7_(ptr noundef nonnull align 1 dereferenceable(1) %call3, ptr noundef nonnull align 8 dereferenceable(8) %call4) - %call6 = call noundef zeroext i1 @_ZNKSt8equal_toIPK1AEclERKS2_S5_(ptr noundef nonnull align 1 dereferenceable(1) %call2, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %call5) - br label %land.end - -land.end: ; preds = %land.rhs, %entry - %4 = phi i1 [ false, %entry ], [ %call6, %land.rhs ] - ret i1 %4 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE15_M_bucket_indexEPNS4_10_Hash_nodeIS2_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this, ptr noundef %__n) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__n.addr, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - %1 = load i64, ptr %_M_bucket_count, align 8 - %call = call noundef i64 @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexEPKNS_10_Hash_nodeIS3_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %0, i64 noundef %1) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNSt8__detail15_Hashtable_baseIPK1AS3_NS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb1ELb1EEEE16_Equal_hash_codeINS_10_Hash_nodeIS3_Lb0EEEE9_S_equalsEmRKSG_(i64 noundef %0, ptr noundef nonnull align 8 dereferenceable(16) %1) #2 comdat align 2 { -entry: - %.addr = alloca i64, align 8 - %.addr1 = alloca ptr, align 8 - store i64 %0, ptr %.addr, align 8 - store ptr %1, ptr %.addr1, align 8 - ret i1 true -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hashtable_baseIPK1AS3_NS_9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb0ELb1ELb1EEEE5_M_eqEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIPK1AELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef zeroext i1 @_ZNKSt8equal_toIPK1AEclERKS2_S5_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x, ptr noundef nonnull align 8 dereferenceable(8) %__y) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %__y.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - store ptr %__y, ptr %__y.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %1 = load ptr, ptr %0, align 8 - %2 = load ptr, ptr %__y.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %cmp = icmp eq ptr %1, %3 - ret i1 %cmp -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail9_IdentityclIRPK1AEEOT_S7_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail21_Hash_node_value_baseIPK1AE4_M_vEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNSt8__detail21_Hash_node_value_baseIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail21_Hashtable_ebo_helperILi0ESt8equal_toIPK1AELb1EE7_M_cgetEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret ptr %this1 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexEPKNS_10_Hash_nodeIS3_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__bkt_count) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %call3 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE5_M_h1Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) - to label %invoke.cont2 unwind label %terminate.lpad - -invoke.cont2: ; preds = %invoke.cont - %call5 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE10_M_extractEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - to label %invoke.cont4 unwind label %terminate.lpad - -invoke.cont4: ; preds = %invoke.cont2 - %0 = load ptr, ptr %__p.addr, align 8 - %call6 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail21_Hash_node_value_baseIPK1AE4_M_vEv(ptr noundef nonnull align 8 dereferenceable(16) %0) #5 - %call7 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail9_IdentityclIRKPK1AEEOT_S8_(ptr noundef nonnull align 1 dereferenceable(1) %call5, ptr noundef nonnull align 8 dereferenceable(8) %call6) - %1 = load ptr, ptr %call7, align 8 - %call8 = call noundef i64 @_ZNKSt4hashIPK1AEclES2_(ptr noundef nonnull align 1 dereferenceable(1) %call3, ptr noundef %1) #5 - %2 = load i64, ptr %__bkt_count.addr, align 8 - %call9 = call noundef i64 @_ZNKSt8__detail18_Mod_range_hashingclEmm(ptr noundef nonnull align 1 dereferenceable(1) %call, i64 noundef %call8, i64 noundef %2) #5 - ret i64 %call9 - -terminate.lpad: ; preds = %invoke.cont2, %invoke.cont, %entry - %3 = landingpad { ptr, i32 } - catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #16 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail21_Hash_node_value_baseIPK1AE4_M_vEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNKSt8__detail21_Hash_node_value_baseIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNKSt8__detail21_Hash_node_value_baseIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.std::__detail::_Hash_node_value_base", ptr %this1, i32 0, i32 1 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %_M_storage) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_bufferIPK1AE6_M_ptrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNK9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNK9__gnu_cxx16__aligned_bufferIPK1AE7_M_addrEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_storage = getelementptr inbounds %"struct.__gnu_cxx::__aligned_buffer", ptr %this1, i32 0, i32 0 - ret ptr %_M_storage -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail19_Node_iterator_baseIPK1ALb0EEC2EPNS_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %__p) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_cur = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__p.addr, align 8 - store ptr %0, ptr %_M_cur, align 8 - ret void -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #12 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE16_M_allocate_nodeIJRKS4_EEEPS5_DpOT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__nptr = alloca ptr, align 8 - %__n = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - %call2 = call noundef ptr @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeIPK1ALb0EEEEE8allocateERS6_m(ptr noundef nonnull align 1 dereferenceable(1) %call, i64 noundef 1) - store ptr %call2, ptr %__nptr, align 8 - %0 = load ptr, ptr %__nptr, align 8 - %call3 = call noundef ptr @_ZSt12__to_addressINSt8__detail10_Hash_nodeIPK1ALb0EEEEPT_S7_(ptr noundef %0) #5 - store ptr %call3, ptr %__n, align 8 - %1 = load ptr, ptr %__n, align 8 - call void @_ZNSt8__detail10_Hash_nodeIPK1ALb0EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %1) #5 - %call4 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %2 = load ptr, ptr %__n, align 8 - %call5 = call noundef ptr @_ZNSt8__detail21_Hash_node_value_baseIPK1AE9_M_valptrEv(ptr noundef nonnull align 8 dereferenceable(16) %2) #5 - %3 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeIPK1ALb0EEEEE9constructIS4_JRKS4_EEEvRS6_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %call4, ptr noundef %call5, ptr noundef nonnull align 8 dereferenceable(8) %3) #5 - %4 = load ptr, ptr %__n, align 8 - ret ptr %4 - -lpad: ; preds = %entry - %5 = landingpad { ptr, i32 } - catch ptr null - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %8 = call ptr @__cxa_begin_catch(ptr %exn) #5 - %call8 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - to label %invoke.cont7 unwind label %lpad6 - -invoke.cont7: ; preds = %catch - %9 = load ptr, ptr %__nptr, align 8 - invoke void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeIPK1ALb0EEEEE10deallocateERS6_PS5_m(ptr noundef nonnull align 1 dereferenceable(1) %call8, ptr noundef %9, i64 noundef 1) - to label %invoke.cont9 unwind label %lpad6 - -invoke.cont9: ; preds = %invoke.cont7 - invoke void @__cxa_rethrow() #17 - to label %unreachable unwind label %lpad6 - -lpad6: ; preds = %invoke.cont9, %invoke.cont7, %catch - %10 = landingpad { ptr, i32 } - cleanup - %11 = extractvalue { ptr, i32 } %10, 0 - store ptr %11, ptr %exn.slot, align 8 - %12 = extractvalue { ptr, i32 } %10, 1 - store i32 %12, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont10 unwind label %terminate.lpad - -invoke.cont10: ; preds = %lpad6 - br label %eh.resume - -try.cont: ; No predecessors! - call void @llvm.trap() - unreachable - -eh.resume: ; preds = %invoke.cont10 - %exn11 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn11, 0 - %lpad.val12 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val12 - -terminate.lpad: ; preds = %lpad6 - %13 = landingpad { ptr, i32 } - catch ptr null - %14 = extractvalue { ptr, i32 } %13, 0 - call void @__clang_call_terminate(ptr %14) #16 - unreachable - -unreachable: ; preds = %invoke.cont9 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeIPK1ALb0EEEEE8allocateERS6_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__to_addressINSt8__detail10_Hash_nodeIPK1ALb0EEEEPT_S7_(ptr noundef %__ptr) #2 comdat { -entry: - %__ptr.addr = alloca ptr, align 8 - store ptr %__ptr, ptr %__ptr.addr, align 8 - %0 = load ptr, ptr %__ptr.addr, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail10_Hash_nodeIPK1ALb0EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail21_Hash_node_value_baseIPK1AEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaINSt8__detail10_Hash_nodeIPK1ALb0EEEEE9constructIS4_JRKS4_EEEvRS6_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE9constructIS5_JRKS5_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - ret void -} - -declare void @__cxa_rethrow() - -declare void @__cxa_end_catch() - -; Function Attrs: cold noreturn nounwind -declare void @llvm.trap() #13 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #17 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 16 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #18 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 576460752303423487 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #14 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail21_Hash_node_value_baseIPK1AEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt8__detail15_Hash_node_baseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - %_M_storage = getelementptr inbounds %"struct.std::__detail::_Hash_node_value_base", ptr %this1, i32 0, i32 1 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorINSt8__detail10_Hash_nodeIPK1ALb0EEEE9constructIS5_JRKS5_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - %2 = load ptr, ptr %1, align 8 - store ptr %2, ptr %0, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt8__detail20_Prime_rehash_policy8_M_stateEv(ptr noundef nonnull align 8 dereferenceable(16) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_next_resize = getelementptr inbounds %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 1 - %0 = load i64, ptr %_M_next_resize, align 8 - ret i64 %0 -} - -declare { i8, i64 } @_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i64 noundef, i64 noundef) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE9_M_rehashEmRKm(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt_count, ptr noundef nonnull align 8 dereferenceable(8) %__state) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - %__state.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::integral_constant", align 1 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - store ptr %__state, ptr %__state.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__bkt_count.addr, align 8 - invoke void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - br label %try.cont - -lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - catch ptr null - %2 = extractvalue { ptr, i32 } %1, 0 - store ptr %2, ptr %exn.slot, align 8 - %3 = extractvalue { ptr, i32 } %1, 1 - store i32 %3, ptr %ehselector.slot, align 4 - br label %catch - -catch: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %4 = call ptr @__cxa_begin_catch(ptr %exn) #5 - %_M_rehash_policy = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 4 - %5 = load ptr, ptr %__state.addr, align 8 - %6 = load i64, ptr %5, align 8 - invoke void @_ZNSt8__detail20_Prime_rehash_policy8_M_resetEm(ptr noundef nonnull align 8 dereferenceable(16) %_M_rehash_policy, i64 noundef %6) - to label %invoke.cont3 unwind label %lpad2 - -invoke.cont3: ; preds = %catch - invoke void @__cxa_rethrow() #17 - to label %unreachable unwind label %lpad2 - -lpad2: ; preds = %invoke.cont3, %catch - %7 = landingpad { ptr, i32 } - cleanup - %8 = extractvalue { ptr, i32 } %7, 0 - store ptr %8, ptr %exn.slot, align 8 - %9 = extractvalue { ptr, i32 } %7, 1 - store i32 %9, ptr %ehselector.slot, align 4 - invoke void @__cxa_end_catch() - to label %invoke.cont4 unwind label %terminate.lpad - -invoke.cont4: ; preds = %lpad2 - br label %eh.resume - -try.cont: ; preds = %invoke.cont - ret void - -eh.resume: ; preds = %invoke.cont4 - %exn5 = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn5, 0 - %lpad.val6 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val6 - -terminate.lpad: ; preds = %lpad2 - %10 = landingpad { ptr, i32 } - catch ptr null - %11 = extractvalue { ptr, i32 } %10, 0 - call void @__clang_call_terminate(ptr %11) #16 - unreachable - -unreachable: ; preds = %invoke.cont3 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE13_M_store_codeEPNS_10_Hash_nodeIS3_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %0, i64 noundef %1) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - %.addr1 = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - store i64 %1, ptr %.addr1, align 8 - %this2 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE22_M_insert_bucket_beginEmPNS4_10_Hash_nodeIS2_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt, ptr noundef %__node) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__bkt.addr = alloca i64, align 8 - %__node.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt, ptr %__bkt.addr, align 8 - store ptr %__node, ptr %__node.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_buckets, align 8 - %1 = load i64, ptr %__bkt.addr, align 8 - %arrayidx = getelementptr inbounds ptr, ptr %0, i64 %1 - %2 = load ptr, ptr %arrayidx, align 8 - %tobool = icmp ne ptr %2, null - br i1 %tobool, label %if.then, label %if.else - -if.then: ; preds = %entry - %_M_buckets2 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %3 = load ptr, ptr %_M_buckets2, align 8 - %4 = load i64, ptr %__bkt.addr, align 8 - %arrayidx3 = getelementptr inbounds ptr, ptr %3, i64 %4 - %5 = load ptr, ptr %arrayidx3, align 8 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %5, i32 0, i32 0 - %6 = load ptr, ptr %_M_nxt, align 8 - %7 = load ptr, ptr %__node.addr, align 8 - %_M_nxt4 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %7, i32 0, i32 0 - store ptr %6, ptr %_M_nxt4, align 8 - %8 = load ptr, ptr %__node.addr, align 8 - %_M_buckets5 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %9 = load ptr, ptr %_M_buckets5, align 8 - %10 = load i64, ptr %__bkt.addr, align 8 - %arrayidx6 = getelementptr inbounds ptr, ptr %9, i64 %10 - %11 = load ptr, ptr %arrayidx6, align 8 - %_M_nxt7 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %11, i32 0, i32 0 - store ptr %8, ptr %_M_nxt7, align 8 - br label %if.end21 - -if.else: ; preds = %entry - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt8 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - %12 = load ptr, ptr %_M_nxt8, align 8 - %13 = load ptr, ptr %__node.addr, align 8 - %_M_nxt9 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %13, i32 0, i32 0 - store ptr %12, ptr %_M_nxt9, align 8 - %14 = load ptr, ptr %__node.addr, align 8 - %_M_before_begin10 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt11 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin10, i32 0, i32 0 - store ptr %14, ptr %_M_nxt11, align 8 - %15 = load ptr, ptr %__node.addr, align 8 - %_M_nxt12 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %15, i32 0, i32 0 - %16 = load ptr, ptr %_M_nxt12, align 8 - %tobool13 = icmp ne ptr %16, null - br i1 %tobool13, label %if.then14, label %if.end - -if.then14: ; preds = %if.else - %17 = load ptr, ptr %__node.addr, align 8 - %_M_buckets15 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %18 = load ptr, ptr %_M_buckets15, align 8 - %19 = load ptr, ptr %__node.addr, align 8 - %call = call noundef ptr @_ZNKSt8__detail10_Hash_nodeIPK1ALb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(16) %19) #5 - %call16 = call noundef i64 @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE15_M_bucket_indexEPNS4_10_Hash_nodeIS2_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(56) %this1, ptr noundef %call) #5 - %arrayidx17 = getelementptr inbounds ptr, ptr %18, i64 %call16 - store ptr %17, ptr %arrayidx17, align 8 - br label %if.end - -if.end: ; preds = %if.then14, %if.else - %_M_before_begin18 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_buckets19 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - %20 = load ptr, ptr %_M_buckets19, align 8 - %21 = load i64, ptr %__bkt.addr, align 8 - %arrayidx20 = getelementptr inbounds ptr, ptr %20, i64 %21 - store ptr %_M_before_begin18, ptr %arrayidx20, align 8 - br label %if.end21 - -if.end21: ; preds = %if.end, %if.then - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE13_M_rehash_auxEmSt17integral_constantIbLb1EE(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt_count) #0 comdat align 2 { -entry: - %0 = alloca %"struct.std::integral_constant", align 1 - %this.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - %__new_buckets = alloca ptr, align 8 - %__p = alloca ptr, align 8 - %__bbegin_bkt = alloca i64, align 8 - %__next = alloca ptr, align 8 - %__bkt = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__bkt_count.addr, align 8 - %call = call noundef ptr @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 8 dereferenceable(56) %this1, i64 noundef %1) - store ptr %call, ptr %__new_buckets, align 8 - %call2 = call noundef ptr @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) - store ptr %call2, ptr %__p, align 8 - %_M_before_begin = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin, i32 0, i32 0 - store ptr null, ptr %_M_nxt, align 8 - store i64 0, ptr %__bbegin_bkt, align 8 - br label %while.cond - -while.cond: ; preds = %if.end22, %entry - %2 = load ptr, ptr %__p, align 8 - %tobool = icmp ne ptr %2, null - br i1 %tobool, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %3 = load ptr, ptr %__p, align 8 - %call3 = call noundef ptr @_ZNKSt8__detail10_Hash_nodeIPK1ALb0EE7_M_nextEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #5 - store ptr %call3, ptr %__next, align 8 - %4 = load ptr, ptr %__p, align 8 - %5 = load i64, ptr %__bkt_count.addr, align 8 - %call4 = call noundef i64 @_ZNKSt8__detail15_Hash_code_baseIPK1AS3_NS_9_IdentityESt4hashIS3_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE15_M_bucket_indexEPKNS_10_Hash_nodeIS3_Lb0EEEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, ptr noundef %4, i64 noundef %5) #5 - store i64 %call4, ptr %__bkt, align 8 - %6 = load ptr, ptr %__new_buckets, align 8 - %7 = load i64, ptr %__bkt, align 8 - %arrayidx = getelementptr inbounds ptr, ptr %6, i64 %7 - %8 = load ptr, ptr %arrayidx, align 8 - %tobool5 = icmp ne ptr %8, null - br i1 %tobool5, label %if.else, label %if.then - -if.then: ; preds = %while.body - %_M_before_begin6 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt7 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin6, i32 0, i32 0 - %9 = load ptr, ptr %_M_nxt7, align 8 - %10 = load ptr, ptr %__p, align 8 - %_M_nxt8 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %10, i32 0, i32 0 - store ptr %9, ptr %_M_nxt8, align 8 - %11 = load ptr, ptr %__p, align 8 - %_M_before_begin9 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %_M_nxt10 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %_M_before_begin9, i32 0, i32 0 - store ptr %11, ptr %_M_nxt10, align 8 - %_M_before_begin11 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 2 - %12 = load ptr, ptr %__new_buckets, align 8 - %13 = load i64, ptr %__bkt, align 8 - %arrayidx12 = getelementptr inbounds ptr, ptr %12, i64 %13 - store ptr %_M_before_begin11, ptr %arrayidx12, align 8 - %14 = load ptr, ptr %__p, align 8 - %_M_nxt13 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %14, i32 0, i32 0 - %15 = load ptr, ptr %_M_nxt13, align 8 - %tobool14 = icmp ne ptr %15, null - br i1 %tobool14, label %if.then15, label %if.end - -if.then15: ; preds = %if.then - %16 = load ptr, ptr %__p, align 8 - %17 = load ptr, ptr %__new_buckets, align 8 - %18 = load i64, ptr %__bbegin_bkt, align 8 - %arrayidx16 = getelementptr inbounds ptr, ptr %17, i64 %18 - store ptr %16, ptr %arrayidx16, align 8 - br label %if.end - -if.end: ; preds = %if.then15, %if.then - %19 = load i64, ptr %__bkt, align 8 - store i64 %19, ptr %__bbegin_bkt, align 8 - br label %if.end22 - -if.else: ; preds = %while.body - %20 = load ptr, ptr %__new_buckets, align 8 - %21 = load i64, ptr %__bkt, align 8 - %arrayidx17 = getelementptr inbounds ptr, ptr %20, i64 %21 - %22 = load ptr, ptr %arrayidx17, align 8 - %_M_nxt18 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %22, i32 0, i32 0 - %23 = load ptr, ptr %_M_nxt18, align 8 - %24 = load ptr, ptr %__p, align 8 - %_M_nxt19 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %24, i32 0, i32 0 - store ptr %23, ptr %_M_nxt19, align 8 - %25 = load ptr, ptr %__p, align 8 - %26 = load ptr, ptr %__new_buckets, align 8 - %27 = load i64, ptr %__bkt, align 8 - %arrayidx20 = getelementptr inbounds ptr, ptr %26, i64 %27 - %28 = load ptr, ptr %arrayidx20, align 8 - %_M_nxt21 = getelementptr inbounds %"struct.std::__detail::_Hash_node_base", ptr %28, i32 0, i32 0 - store ptr %25, ptr %_M_nxt21, align 8 - br label %if.end22 - -if.end22: ; preds = %if.else, %if.end - %29 = load ptr, ptr %__next, align 8 - store ptr %29, ptr %__p, align 8 - br label %while.cond, !llvm.loop !9 - -while.end: ; preds = %while.cond - call void @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE21_M_deallocate_bucketsEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) - %30 = load i64, ptr %__bkt_count.addr, align 8 - %_M_bucket_count = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 1 - store i64 %30, ptr %_M_bucket_count, align 8 - %31 = load ptr, ptr %__new_buckets, align 8 - %_M_buckets = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 0 - store ptr %31, ptr %_M_buckets, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt8__detail20_Prime_rehash_policy8_M_resetEm(ptr noundef nonnull align 8 dereferenceable(16) %this, i64 noundef %__state) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__state.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__state, ptr %__state.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__state.addr, align 8 - %_M_next_resize = getelementptr inbounds %"struct.std::__detail::_Prime_rehash_policy", ptr %this1, i32 0, i32 1 - store i64 %0, ptr %_M_next_resize, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 8 dereferenceable(56) %this, i64 noundef %__bkt_count) #0 comdat align 2 { -entry: - %retval = alloca ptr, align 8 - %this.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__bkt_count.addr, align 8 - %cmp = icmp eq i64 %0, 1 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_single_bucket = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 - store ptr null, ptr %_M_single_bucket, align 8 - %_M_single_bucket2 = getelementptr inbounds %"class.std::_Hashtable", ptr %this1, i32 0, i32 5 - store ptr %_M_single_bucket2, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %1 = load i64, ptr %__bkt_count.addr, align 8 - %call = call noundef ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 1 dereferenceable(1) %this1, i64 noundef %1) - store ptr %call, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %2 = load ptr, ptr %retval, align 8 - ret ptr %2 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE19_M_allocate_bucketsEm(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__bkt_count) #0 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - %__bkt_count.addr = alloca i64, align 8 - %__alloc = alloca %"class.std::allocator.4", align 1 - %__ptr = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %__p = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__bkt_count, ptr %__bkt_count.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail16_Hashtable_allocISaINS_10_Hash_nodeIPK1ALb0EEEEE17_M_node_allocatorEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEEC2INS_10_Hash_nodeIPK1ALb0EEEEERKSaIT_E(ptr noundef nonnull align 1 dereferenceable(1) %__alloc, ptr noundef nonnull align 1 dereferenceable(1) %call) #5 - %0 = load i64, ptr %__bkt_count.addr, align 8 - %call2 = invoke noundef ptr @_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__alloc, i64 noundef %0) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - store ptr %call2, ptr %__ptr, align 8 - %1 = load ptr, ptr %__ptr, align 8 - %call3 = call noundef ptr @_ZSt12__to_addressIPNSt8__detail15_Hash_node_baseEEPT_S4_(ptr noundef %1) #5 - store ptr %call3, ptr %__p, align 8 - %2 = load ptr, ptr %__p, align 8 - %3 = load i64, ptr %__bkt_count.addr, align 8 - %mul = mul i64 %3, 8 - call void @llvm.memset.p0.i64(ptr align 8 %2, i8 0, i64 %mul, i1 false) - %4 = load ptr, ptr %__p, align 8 - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #5 - ret ptr %4 - -lpad: ; preds = %entry - %5 = landingpad { ptr, i32 } - cleanup - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - call void @_ZNSaIPNSt8__detail15_Hash_node_baseEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val4 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val4 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaIPNSt8__detail15_Hash_node_baseEEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__to_addressIPNSt8__detail15_Hash_node_baseEEPT_S4_(ptr noundef %__ptr) #2 comdat { -entry: - %__ptr.addr = alloca ptr, align 8 - store ptr %__ptr, ptr %__ptr.addr, align 8 - %0 = load ptr, ptr %__ptr.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #17 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #18 - ret ptr %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPNSt8__detail15_Hash_node_baseEE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this) #2 comdat align 2 { -entry: - %retval = alloca %"struct.std::__detail::_Node_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef ptr @_ZNKSt10_HashtableIPK1AS2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb1ELb1EEEE8_M_beginEv(ptr noundef nonnull align 8 dereferenceable(56) %this1) - call void @_ZNSt8__detail14_Node_iteratorIPK1ALb1ELb0EEC2EPNS_10_Hash_nodeIS3_Lb0EEE(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef %call) #5 - %coerce.dive = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %retval, i32 0, i32 0 - %coerce.dive2 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %coerce.dive, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive2, align 8 - ret ptr %0 -} - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_unordered_set_1.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noinline uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #11 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #13 = { cold noreturn nounwind } -attributes #14 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #15 = { builtin allocsize(0) } -attributes #16 = { noreturn nounwind } -attributes #17 = { noreturn } -attributes #18 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} -!9 = distinct !{!9, !7} diff --git a/test_cases_bc/basic_cpp_tests/variant-gep.cpp.bc b/test_cases_bc/basic_cpp_tests/variant-gep.cpp.bc deleted file mode 100644 index c3207efd..00000000 --- a/test_cases_bc/basic_cpp_tests/variant-gep.cpp.bc +++ /dev/null @@ -1,53 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/variant-gep.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/variant-gep.cpp" -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-unknown-linux-gnu" - -%struct.Data = type { i32, i32, i32, %struct.Point } -%struct.Point = type { i32, i32 } - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #0 { -entry: - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %dt = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - %call = call noalias noundef nonnull ptr @_Znam(i64 noundef 320) #2 - store ptr %call, ptr %dt, align 8 - %0 = load ptr, ptr %dt, align 8 - %1 = load i32, ptr %argc.addr, align 4 - %idxprom = sext i32 %1 to i64 - %arrayidx = getelementptr inbounds %struct.Data, ptr %0, i64 %idxprom - %p = getelementptr inbounds %struct.Data, ptr %arrayidx, i32 0, i32 3 - store ptr %p, ptr %ptr, align 8 - %2 = load ptr, ptr %ptr, align 8 - store ptr %2, ptr %c, align 8 - %3 = load ptr, ptr %dt, align 8 - %arrayidx1 = getelementptr inbounds %struct.Data, ptr %3, i64 3 - %p2 = getelementptr inbounds %struct.Data, ptr %arrayidx1, i32 0, i32 3 - store ptr %p2, ptr %ptr, align 8 - %4 = load ptr, ptr %ptr, align 8 - store ptr %4, ptr %c, align 8 - ret i32 0 -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znam(i64 noundef) #1 - -attributes #0 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { builtin allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/vector-1.cpp.bc b/test_cases_bc/basic_cpp_tests/vector-1.cpp.bc deleted file mode 100644 index 0816d57a..00000000 --- a/test_cases_bc/basic_cpp_tests/vector-1.cpp.bc +++ /dev/null @@ -1,1444 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/vector-1.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/vector-1.cpp" -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-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%"class.std::vector" = type { %"struct.std::_Vector_base" } -%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base>::_Vector_impl" } -%"struct.std::_Vector_base>::_Vector_impl" = type { %"struct.std::_Vector_base>::_Vector_impl_data" } -%"struct.std::_Vector_base>::_Vector_impl_data" = type { ptr, ptr, ptr } -%class.A = type { ptr } -%"class.__gnu_cxx::__normal_iterator" = type { ptr } -%"struct.std::integral_constant" = type { i8 } - -$_ZNSt6vectorI1ASaIS0_EEC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt6vectorI1ASaIS0_EE9push_backERKS0_ = comdat any - -$_ZNSt6vectorI1ASaIS0_EEixEm = comdat any - -$_ZNSt6vectorI1ASaIS0_EED2Ev = comdat any - -$_ZNSt12_Vector_baseI1ASaIS0_EEC2Ev = comdat any - -$_ZNSt12_Vector_baseI1ASaIS0_EE12_Vector_implC2Ev = comdat any - -$_ZNSaI1AEC2Ev = comdat any - -$_ZNSt12_Vector_baseI1ASaIS0_EE17_Vector_impl_dataC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AEC2Ev = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZSt8_DestroyIP1AS0_EvT_S2_RSaIT0_E = comdat any - -$_ZNSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt12_Vector_baseI1ASaIS0_EED2Ev = comdat any - -$_ZSt8_DestroyIP1AEvT_S2_ = comdat any - -$_ZNSt12_Destroy_auxILb1EE9__destroyIP1AEEvT_S4_ = comdat any - -$_ZNSt12_Vector_baseI1ASaIS0_EE13_M_deallocateEPS0_m = comdat any - -$_ZNSt12_Vector_baseI1ASaIS0_EE12_Vector_implD2Ev = comdat any - -$_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE10deallocateEPS1_m = comdat any - -$_ZNSaI1AED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AED2Ev = comdat any - -$_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_ = comdat any - -$_ZNSt6vectorI1ASaIS0_EE17_M_realloc_insertIJRKS0_EEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_ = comdat any - -$_ZNSt6vectorI1ASaIS0_EE3endEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JRKS1_EEEvPT_DpOT0_ = comdat any - -$_ZN1AC2ERKS_ = comdat any - -$_ZNKSt6vectorI1ASaIS0_EE12_M_check_lenEmPKc = comdat any - -$_ZN9__gnu_cxxmiIP1ASt6vectorIS1_SaIS1_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_ = comdat any - -$_ZNSt6vectorI1ASaIS0_EE5beginEv = comdat any - -$_ZNSt12_Vector_baseI1ASaIS0_EE11_M_allocateEm = comdat any - -$_ZNSt6vectorI1ASaIS0_EE11_S_relocateEPS0_S3_S3_RS1_ = comdat any - -$_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv = comdat any - -$_ZNKSt6vectorI1ASaIS0_EE8max_sizeEv = comdat any - -$_ZNKSt6vectorI1ASaIS0_EE4sizeEv = comdat any - -$_ZSt3maxImERKT_S2_S2_ = comdat any - -$_ZNSt6vectorI1ASaIS0_EE11_S_max_sizeERKS1_ = comdat any - -$_ZNKSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv = comdat any - -$_ZNSt16allocator_traitsISaI1AEE8max_sizeERKS1_ = comdat any - -$_ZSt3minImERKT_S2_S2_ = comdat any - -$_ZNK9__gnu_cxx13new_allocatorI1AE8max_sizeEv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv = comdat any - -$_ZN9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEEC2ERKS2_ = comdat any - -$_ZNSt16allocator_traitsISaI1AEE8allocateERS1_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE8allocateEmPKv = comdat any - -$_ZNSt6vectorI1ASaIS0_EE14_S_do_relocateEPS0_S3_S3_RS1_St17integral_constantIbLb1EE = comdat any - -$_ZSt12__relocate_aIP1AS1_SaIS0_EET0_T_S4_S3_RT1_ = comdat any - -$_ZSt14__relocate_a_1IP1AS1_SaIS0_EET0_T_S4_S3_RT1_ = comdat any - -$_ZSt12__niter_baseIP1AET_S2_ = comdat any - -$_ZSt19__relocate_object_aI1AS0_SaIS0_EEvPT_PT0_RT1_ = comdat any - -$_ZNSt16allocator_traitsISaI1AEE9constructIS0_JS0_EEEvRS1_PT_DpOT0_ = comdat any - -$_ZNSt16allocator_traitsISaI1AEE7destroyIS0_EEvRS1_PT_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JS1_EEEvPT_DpOT0_ = comdat any - -$_ZN1AC2EOS_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE7destroyIS1_EEvPT_ = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 -@__dso_handle = external hidden global i8 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@.str.3 = private unnamed_addr constant [26 x i8] c"vector::_M_realloc_insert\00", align 1 -@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_vector_1.cpp, ptr null }] - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init() #3 section ".text.startup" { -entry: - call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = call i32 @__cxa_atexit(ptr @_ZNSt8ios_base4InitD1Ev, ptr @_ZStL8__ioinit, ptr @__dso_handle) #5 - ret void -} - -declare void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 - -; Function Attrs: nounwind -declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 - -; Function Attrs: nounwind -declare i32 @__cxa_atexit(ptr, ptr, ptr) #5 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #6 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %vec = alloca %"class.std::vector", align 8 - %a = alloca %class.A, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt6vectorI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 - invoke void @_ZNSt6vectorI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %vec, ptr noundef nonnull align 8 dereferenceable(8) %a) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorI1ASaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %vec, i64 noundef 0) #5 - store ptr %call, ptr %aptr, align 8 - %0 = load ptr, ptr %aptr, align 8 - %1 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %0, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %2 = load ptr, ptr %vfn, align 8 - invoke void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) - to label %invoke.cont1 unwind label %lpad - -invoke.cont1: ; preds = %invoke.cont - store i32 0, ptr %retval, align 4 - call void @_ZNSt6vectorI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 - %3 = load i32, ptr %retval, align 4 - ret i32 %3 - -lpad: ; preds = %invoke.cont, %entry - %4 = landingpad { ptr, i32 } - cleanup - %5 = extractvalue { ptr, i32 } %4, 0 - store ptr %5, ptr %exn.slot, align 8 - %6 = extractvalue { ptr, i32 } %4, 1 - store i32 %6, ptr %ehselector.slot, align 4 - call void @_ZNSt6vectorI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val2 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val2 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt6vectorI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt12_Vector_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt6vectorI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - %0 = load ptr, ptr %_M_finish, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 2 - %1 = load ptr, ptr %_M_end_of_storage, align 8 - %cmp = icmp ne ptr %0, %1 - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_impl4 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish5 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl4, i32 0, i32 1 - %2 = load ptr, ptr %_M_finish5, align 8 - %3 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl3, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #5 - %_M_impl6 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish7 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl6, i32 0, i32 1 - %4 = load ptr, ptr %_M_finish7, align 8 - %incdec.ptr = getelementptr inbounds %class.A, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_finish7, align 8 - br label %if.end - -if.else: ; preds = %entry - %call = call ptr @_ZNSt6vectorI1ASaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %agg.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %5 = load ptr, ptr %__x.addr, align 8 - %coerce.dive8 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %agg.tmp, i32 0, i32 0 - %6 = load ptr, ptr %coerce.dive8, align 8 - call void @_ZNSt6vectorI1ASaIS0_EE17_M_realloc_insertIJRKS0_EEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr %6, ptr noundef nonnull align 8 dereferenceable(8) %5) - br label %if.end - -if.end: ; preds = %if.else, %if.then - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorI1ASaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %__n) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_start, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %add.ptr = getelementptr inbounds %class.A, ptr %0, i64 %1 - ret ptr %add.ptr -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt6vectorI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 1 - %1 = load ptr, ptr %_M_finish, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - invoke void @_ZSt8_DestroyIP1AS0_EvT_S2_RSaIT0_E(ptr noundef %0, ptr noundef %1, ptr noundef nonnull align 1 dereferenceable(1) %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt12_Vector_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret void - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt12_Vector_baseI1ASaIS0_EE12_Vector_implC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %_M_impl) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EE12_Vector_implC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt12_Vector_baseI1ASaIS0_EE17_Vector_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EE17_Vector_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_start, align 8 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_finish, align 8 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_end_of_storage, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZSt8_DestroyIP1AS0_EvT_S2_RSaIT0_E(ptr noundef %__first, ptr noundef %__last, ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %2 = load ptr, ptr %__last.addr, align 8 - call void @_ZSt8_DestroyIP1AEvT_S2_(ptr noundef %1, ptr noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #8 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #5 - call void @_ZSt9terminatev() #12 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 2 - %1 = load ptr, ptr %_M_end_of_storage, align 8 - %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start4 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl3, i32 0, i32 0 - %2 = load ptr, ptr %_M_start4, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %2 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - invoke void @_ZNSt12_Vector_baseI1ASaIS0_EE13_M_deallocateEPS0_m(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef %0, i64 noundef %sub.ptr.div) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %_M_impl5 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt12_Vector_baseI1ASaIS0_EE12_Vector_implD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %_M_impl5) #5 - ret void - -terminate.lpad: ; preds = %entry - %3 = landingpad { ptr, i32 } - catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #12 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZSt8_DestroyIP1AEvT_S2_(ptr noundef %__first, ptr noundef %__last) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - call void @_ZNSt12_Destroy_auxILb1EE9__destroyIP1AEEvT_S4_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Destroy_auxILb1EE9__destroyIP1AEEvT_S4_(ptr noundef %0, ptr noundef %1) #2 comdat align 2 { -entry: - %.addr = alloca ptr, align 8 - %.addr1 = alloca ptr, align 8 - store ptr %0, ptr %.addr, align 8 - store ptr %1, ptr %.addr1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EE13_M_deallocateEPS0_m(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %tobool = icmp ne ptr %0, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef %1, i64 noundef %2) - br label %if.end - -if.end: ; preds = %if.then, %entry - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EE12_Vector_implD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #9 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JRKS1_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt6vectorI1ASaIS0_EE17_M_realloc_insertIJRKS0_EEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr %__position.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %__position = alloca %"class.__gnu_cxx::__normal_iterator", align 8 - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__len = alloca i64, align 8 - %__old_start = alloca ptr, align 8 - %__old_finish = alloca ptr, align 8 - %__elems_before = alloca i64, align 8 - %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 - %__new_start = alloca ptr, align 8 - %__new_finish = alloca ptr, align 8 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %__position, i32 0, i32 0 - store ptr %__position.coerce, ptr %coerce.dive, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE12_M_check_lenEmPKc(ptr noundef nonnull align 8 dereferenceable(24) %this1, i64 noundef 1, ptr noundef @.str.3) - store i64 %call, ptr %__len, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_start, align 8 - store ptr %0, ptr %__old_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 1 - %1 = load ptr, ptr %_M_finish, align 8 - store ptr %1, ptr %__old_finish, align 8 - %call3 = call ptr @_ZNSt6vectorI1ASaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %coerce.dive4 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %ref.tmp, i32 0, i32 0 - store ptr %call3, ptr %coerce.dive4, align 8 - %call5 = call noundef i64 @_ZN9__gnu_cxxmiIP1ASt6vectorIS1_SaIS1_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_(ptr noundef nonnull align 8 dereferenceable(8) %__position, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #5 - store i64 %call5, ptr %__elems_before, align 8 - %2 = load i64, ptr %__len, align 8 - %call6 = call noundef ptr @_ZNSt12_Vector_baseI1ASaIS0_EE11_M_allocateEm(ptr noundef nonnull align 8 dereferenceable(24) %this1, i64 noundef %2) - store ptr %call6, ptr %__new_start, align 8 - %3 = load ptr, ptr %__new_start, align 8 - store ptr %3, ptr %__new_finish, align 8 - %_M_impl7 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %4 = load ptr, ptr %__new_start, align 8 - %5 = load i64, ptr %__elems_before, align 8 - %add.ptr = getelementptr inbounds %class.A, ptr %4, i64 %5 - %6 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl7, ptr noundef %add.ptr, ptr noundef nonnull align 8 dereferenceable(8) %6) #5 - store ptr null, ptr %__new_finish, align 8 - %7 = load ptr, ptr %__old_start, align 8 - %call8 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %__position) #5 - %8 = load ptr, ptr %call8, align 8 - %9 = load ptr, ptr %__new_start, align 8 - %call9 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call10 = call noundef ptr @_ZNSt6vectorI1ASaIS0_EE11_S_relocateEPS0_S3_S3_RS1_(ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull align 1 dereferenceable(1) %call9) #5 - store ptr %call10, ptr %__new_finish, align 8 - %10 = load ptr, ptr %__new_finish, align 8 - %incdec.ptr = getelementptr inbounds %class.A, ptr %10, i32 1 - store ptr %incdec.ptr, ptr %__new_finish, align 8 - %call11 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %__position) #5 - %11 = load ptr, ptr %call11, align 8 - %12 = load ptr, ptr %__old_finish, align 8 - %13 = load ptr, ptr %__new_finish, align 8 - %call12 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call13 = call noundef ptr @_ZNSt6vectorI1ASaIS0_EE11_S_relocateEPS0_S3_S3_RS1_(ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef nonnull align 1 dereferenceable(1) %call12) #5 - store ptr %call13, ptr %__new_finish, align 8 - %14 = load ptr, ptr %__old_start, align 8 - %_M_impl14 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl14, i32 0, i32 2 - %15 = load ptr, ptr %_M_end_of_storage, align 8 - %16 = load ptr, ptr %__old_start, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %15 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %16 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - call void @_ZNSt12_Vector_baseI1ASaIS0_EE13_M_deallocateEPS0_m(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef %14, i64 noundef %sub.ptr.div) - %17 = load ptr, ptr %__new_start, align 8 - %_M_impl15 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start16 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl15, i32 0, i32 0 - store ptr %17, ptr %_M_start16, align 8 - %18 = load ptr, ptr %__new_finish, align 8 - %_M_impl17 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish18 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl17, i32 0, i32 1 - store ptr %18, ptr %_M_finish18, align 8 - %19 = load ptr, ptr %__new_start, align 8 - %20 = load i64, ptr %__len, align 8 - %add.ptr19 = getelementptr inbounds %class.A, ptr %19, i64 %20 - %_M_impl20 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage21 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl20, i32 0, i32 2 - store ptr %add.ptr19, ptr %_M_end_of_storage21, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt6vectorI1ASaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %retval = alloca %"class.__gnu_cxx::__normal_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - call void @_ZN9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_finish) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JRKS1_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorI1ASaIS0_EE12_M_check_lenEmPKc(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %__n, ptr noundef %__s) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %__s.addr = alloca ptr, align 8 - %__len = alloca i64, align 8 - %ref.tmp = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %__s, ptr %__s.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call2 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %sub = sub i64 %call, %call2 - %0 = load i64, ptr %__n.addr, align 8 - %cmp = icmp ult i64 %sub, %0 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %1 = load ptr, ptr %__s.addr, align 8 - call void @_ZSt20__throw_length_errorPKc(ptr noundef %1) #13 - unreachable - -if.end: ; preds = %entry - %call3 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call4 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - store i64 %call4, ptr %ref.tmp, align 8 - %call5 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %__n.addr) - %2 = load i64, ptr %call5, align 8 - %add = add i64 %call3, %2 - store i64 %add, ptr %__len, align 8 - %3 = load i64, ptr %__len, align 8 - %call6 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %cmp7 = icmp ult i64 %3, %call6 - br i1 %cmp7, label %cond.true, label %lor.lhs.false - -lor.lhs.false: ; preds = %if.end - %4 = load i64, ptr %__len, align 8 - %call8 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %cmp9 = icmp ugt i64 %4, %call8 - br i1 %cmp9, label %cond.true, label %cond.false - -cond.true: ; preds = %lor.lhs.false, %if.end - %call10 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - br label %cond.end - -cond.false: ; preds = %lor.lhs.false - %5 = load i64, ptr %__len, align 8 - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %call10, %cond.true ], [ %5, %cond.false ] - ret i64 %cond -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZN9__gnu_cxxmiIP1ASt6vectorIS1_SaIS1_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_(ptr noundef nonnull align 8 dereferenceable(8) %__lhs, ptr noundef nonnull align 8 dereferenceable(8) %__rhs) #2 comdat { -entry: - %__lhs.addr = alloca ptr, align 8 - %__rhs.addr = alloca ptr, align 8 - store ptr %__lhs, ptr %__lhs.addr, align 8 - store ptr %__rhs, ptr %__rhs.addr, align 8 - %0 = load ptr, ptr %__lhs.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 - %1 = load ptr, ptr %call, align 8 - %2 = load ptr, ptr %__rhs.addr, align 8 - %call1 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - %3 = load ptr, ptr %call1, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - ret i64 %sub.ptr.div -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt6vectorI1ASaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %retval = alloca %"class.__gnu_cxx::__normal_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - call void @_ZN9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_start) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt12_Vector_baseI1ASaIS0_EE11_M_allocateEm(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %__n) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__n.addr, align 8 - %cmp = icmp ne i64 %0, 0 - br i1 %cmp, label %cond.true, label %cond.false - -cond.true: ; preds = %entry - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZNSt16allocator_traitsISaI1AEE8allocateERS1_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, i64 noundef %1) - br label %cond.end - -cond.false: ; preds = %entry - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi ptr [ %call, %cond.true ], [ null, %cond.false ] - ret ptr %cond -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt6vectorI1ASaIS0_EE11_S_relocateEPS0_S3_S3_RS1_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result, ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #2 comdat align 2 { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %__alloc.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::integral_constant", align 1 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - store ptr %__alloc, ptr %__alloc.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %3 = load ptr, ptr %__alloc.addr, align 8 - %call = call noundef ptr @_ZNSt6vectorI1ASaIS0_EE14_S_do_relocateEPS0_S3_S3_RS1_St17integral_constantIbLb1EE(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull align 1 dereferenceable(1) %3) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 - ret ptr %_M_current -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call2 = call noundef i64 @_ZNSt6vectorI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %call) #5 - ret i64 %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - %0 = load ptr, ptr %_M_finish, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 0 - %1 = load ptr, ptr %_M_start, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - ret i64 %sub.ptr.div -} - -; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #10 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__b.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt6vectorI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %__a.addr = alloca ptr, align 8 - %__diffmax = alloca i64, align 8 - %__allocmax = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 1152921504606846975, ptr %__diffmax, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNSt16allocator_traitsISaI1AEE8max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %0) #5 - store i64 %call, ptr %__allocmax, align 8 - %call1 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__diffmax, ptr noundef nonnull align 8 dereferenceable(8) %__allocmax) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %1 = load i64, ptr %call1, align 8 - ret i64 %1 - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt16allocator_traitsISaI1AEE8max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %0) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__b.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__a.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__i) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__i, ptr %__i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__i.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %_M_current, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaI1AEE8allocateERS1_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #13 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #14 - ret ptr %call2 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #10 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #11 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt6vectorI1ASaIS0_EE14_S_do_relocateEPS0_S3_S3_RS1_St17integral_constantIbLb1EE(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result, ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #2 comdat align 2 { -entry: - %0 = alloca %"struct.std::integral_constant", align 1 - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %__alloc.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - store ptr %__alloc, ptr %__alloc.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %2 = load ptr, ptr %__last.addr, align 8 - %3 = load ptr, ptr %__result.addr, align 8 - %4 = load ptr, ptr %__alloc.addr, align 8 - %call = call noundef ptr @_ZSt12__relocate_aIP1AS1_SaIS0_EET0_T_S4_S3_RT1_(ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef nonnull align 1 dereferenceable(1) %4) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__relocate_aIP1AS1_SaIS0_EET0_T_S4_S3_RT1_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result, ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #2 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %__alloc.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - store ptr %__alloc, ptr %__alloc.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__niter_baseIP1AET_S2_(ptr noundef %0) #5 - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIP1AET_S2_(ptr noundef %1) #5 - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIP1AET_S2_(ptr noundef %2) #5 - %3 = load ptr, ptr %__alloc.addr, align 8 - %call3 = call noundef ptr @_ZSt14__relocate_a_1IP1AS1_SaIS0_EET0_T_S4_S3_RT1_(ptr noundef %call, ptr noundef %call1, ptr noundef %call2, ptr noundef nonnull align 1 dereferenceable(1) %3) #5 - ret ptr %call3 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt14__relocate_a_1IP1AS1_SaIS0_EET0_T_S4_S3_RT1_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result, ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #2 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %__alloc.addr = alloca ptr, align 8 - %__cur = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - store ptr %__alloc, ptr %__alloc.addr, align 8 - %0 = load ptr, ptr %__result.addr, align 8 - store ptr %0, ptr %__cur, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %1 = load ptr, ptr %__first.addr, align 8 - %2 = load ptr, ptr %__last.addr, align 8 - %cmp = icmp ne ptr %1, %2 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %3 = load ptr, ptr %__cur, align 8 - %4 = load ptr, ptr %__first.addr, align 8 - %5 = load ptr, ptr %__alloc.addr, align 8 - call void @_ZSt19__relocate_object_aI1AS0_SaIS0_EEvPT_PT0_RT1_(ptr noundef %3, ptr noundef %4, ptr noundef nonnull align 1 dereferenceable(1) %5) #5 - br label %for.inc - -for.inc: ; preds = %for.body - %6 = load ptr, ptr %__first.addr, align 8 - %incdec.ptr = getelementptr inbounds %class.A, ptr %6, i32 1 - store ptr %incdec.ptr, ptr %__first.addr, align 8 - %7 = load ptr, ptr %__cur, align 8 - %incdec.ptr1 = getelementptr inbounds %class.A, ptr %7, i32 1 - store ptr %incdec.ptr1, ptr %__cur, align 8 - br label %for.cond, !llvm.loop !6 - -for.end: ; preds = %for.cond - %8 = load ptr, ptr %__cur, align 8 - ret ptr %8 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__niter_baseIP1AET_S2_(ptr noundef %__it) #2 comdat { -entry: - %__it.addr = alloca ptr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %0 = load ptr, ptr %__it.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZSt19__relocate_object_aI1AS0_SaIS0_EEvPT_PT0_RT1_(ptr noalias noundef %__dest, ptr noalias noundef %__orig, ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #2 comdat { -entry: - %__dest.addr = alloca ptr, align 8 - %__orig.addr = alloca ptr, align 8 - %__alloc.addr = alloca ptr, align 8 - store ptr %__dest, ptr %__dest.addr, align 8 - store ptr %__orig, ptr %__orig.addr, align 8 - store ptr %__alloc, ptr %__alloc.addr, align 8 - %0 = load ptr, ptr %__alloc.addr, align 8 - %1 = load ptr, ptr %__dest.addr, align 8 - %2 = load ptr, ptr %__orig.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - %3 = load ptr, ptr %__alloc.addr, align 8 - %4 = load ptr, ptr %__orig.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE7destroyIS0_EEvRS1_PT_(ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef %4) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JS1_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaI1AEE7destroyIS0_EEvRS1_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AE7destroyIS1_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JS1_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - call void @_ZN1AC2EOS_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2EOS_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AE7destroyIS1_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_vector_1.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noinline uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { noreturn nounwind } -attributes #13 = { noreturn } -attributes #14 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/basic_cpp_tests/vector-2.cpp.bc b/test_cases_bc/basic_cpp_tests/vector-2.cpp.bc deleted file mode 100644 index a039f70f..00000000 --- a/test_cases_bc/basic_cpp_tests/vector-2.cpp.bc +++ /dev/null @@ -1,1334 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/vector-2.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/vector-2.cpp" -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-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%"class.std::vector" = type { %"struct.std::_Vector_base" } -%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base>::_Vector_impl" } -%"struct.std::_Vector_base>::_Vector_impl" = type { %"struct.std::_Vector_base>::_Vector_impl_data" } -%"struct.std::_Vector_base>::_Vector_impl_data" = type { ptr, ptr, ptr } -%"class.__gnu_cxx::__normal_iterator" = type { ptr } -%"struct.std::integral_constant" = type { i8 } - -$_ZNSt6vectorIP1ASaIS1_EEC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt6vectorIP1ASaIS1_EE9push_backERKS1_ = comdat any - -$_ZNSt6vectorIP1ASaIS1_EEixEm = comdat any - -$_ZNSt6vectorIP1ASaIS1_EED2Ev = comdat any - -$_ZNSt12_Vector_baseIP1ASaIS1_EEC2Ev = comdat any - -$_ZNSt12_Vector_baseIP1ASaIS1_EE12_Vector_implC2Ev = comdat any - -$_ZNSaIP1AEC2Ev = comdat any - -$_ZNSt12_Vector_baseIP1ASaIS1_EE17_Vector_impl_dataC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AEC2Ev = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZSt8_DestroyIPP1AS1_EvT_S3_RSaIT0_E = comdat any - -$_ZNSt12_Vector_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt12_Vector_baseIP1ASaIS1_EED2Ev = comdat any - -$_ZSt8_DestroyIPP1AEvT_S3_ = comdat any - -$_ZNSt12_Destroy_auxILb1EE9__destroyIPP1AEEvT_S5_ = comdat any - -$_ZNSt12_Vector_baseIP1ASaIS1_EE13_M_deallocateEPS1_m = comdat any - -$_ZNSt12_Vector_baseIP1ASaIS1_EE12_Vector_implD2Ev = comdat any - -$_ZNSt16allocator_traitsISaIP1AEE10deallocateERS2_PS1_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m = comdat any - -$_ZNSaIP1AED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AED2Ev = comdat any - -$_ZNSt16allocator_traitsISaIP1AEE9constructIS1_JRKS1_EEEvRS2_PT_DpOT0_ = comdat any - -$_ZNSt6vectorIP1ASaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_ = comdat any - -$_ZNSt6vectorIP1ASaIS1_EE3endEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AE9constructIS2_JRKS2_EEEvPT_DpOT0_ = comdat any - -$_ZNKSt6vectorIP1ASaIS1_EE12_M_check_lenEmPKc = comdat any - -$_ZN9__gnu_cxxmiIPP1ASt6vectorIS2_SaIS2_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSA_SD_ = comdat any - -$_ZNSt6vectorIP1ASaIS1_EE5beginEv = comdat any - -$_ZNSt12_Vector_baseIP1ASaIS1_EE11_M_allocateEm = comdat any - -$_ZNSt6vectorIP1ASaIS1_EE11_S_relocateEPS1_S4_S4_RS2_ = comdat any - -$_ZNK9__gnu_cxx17__normal_iteratorIPP1ASt6vectorIS2_SaIS2_EEE4baseEv = comdat any - -$_ZNKSt6vectorIP1ASaIS1_EE8max_sizeEv = comdat any - -$_ZNKSt6vectorIP1ASaIS1_EE4sizeEv = comdat any - -$_ZSt3maxImERKT_S2_S2_ = comdat any - -$_ZNSt6vectorIP1ASaIS1_EE11_S_max_sizeERKS2_ = comdat any - -$_ZNKSt12_Vector_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv = comdat any - -$_ZNSt16allocator_traitsISaIP1AEE8max_sizeERKS2_ = comdat any - -$_ZSt3minImERKT_S2_S2_ = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIP1AE8max_sizeEv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIP1AE11_M_max_sizeEv = comdat any - -$_ZN9__gnu_cxx17__normal_iteratorIPP1ASt6vectorIS2_SaIS2_EEEC2ERKS3_ = comdat any - -$_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIP1AE8allocateEmPKv = comdat any - -$_ZNSt6vectorIP1ASaIS1_EE14_S_do_relocateEPS1_S4_S4_RS2_St17integral_constantIbLb1EE = comdat any - -$_ZSt12__relocate_aIPP1AS2_SaIS1_EET0_T_S5_S4_RT1_ = comdat any - -$_ZSt14__relocate_a_1IP1AS1_ENSt9enable_ifIXsr3std24__is_bitwise_relocatableIT_EE5valueEPS3_E4typeES4_S4_S4_RSaIT0_E = comdat any - -$_ZSt12__niter_baseIPP1AET_S3_ = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 -@__dso_handle = external hidden global i8 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@.str.3 = private unnamed_addr constant [26 x i8] c"vector::_M_realloc_insert\00", align 1 -@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_vector_2.cpp, ptr null }] - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init() #3 section ".text.startup" { -entry: - call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = call i32 @__cxa_atexit(ptr @_ZNSt8ios_base4InitD1Ev, ptr @_ZStL8__ioinit, ptr @__dso_handle) #5 - ret void -} - -declare void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 - -; Function Attrs: nounwind -declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 - -; Function Attrs: nounwind -declare i32 @__cxa_atexit(ptr, ptr, ptr) #5 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #6 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %vec = alloca %"class.std::vector", align 8 - %a = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt6vectorIP1ASaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 - %call = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #13 - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #5 - store ptr %call, ptr %a, align 8 - invoke void @_ZNSt6vectorIP1ASaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %vec, ptr noundef nonnull align 8 dereferenceable(8) %a) - to label %invoke.cont1 unwind label %lpad - -invoke.cont1: ; preds = %invoke.cont - %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP1ASaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %vec, i64 noundef 0) #5 - %0 = load ptr, ptr %call2, align 8 - store ptr %0, ptr %aptr, align 8 - %1 = load ptr, ptr %aptr, align 8 - %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) - to label %invoke.cont3 unwind label %lpad - -invoke.cont3: ; preds = %invoke.cont1 - store i32 0, ptr %retval, align 4 - call void @_ZNSt6vectorIP1ASaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 - %4 = load i32, ptr %retval, align 4 - ret i32 %4 - -lpad: ; preds = %invoke.cont1, %invoke.cont, %entry - %5 = landingpad { ptr, i32 } - cleanup - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - call void @_ZNSt6vectorIP1ASaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val4 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val4 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt6vectorIP1ASaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt12_Vector_baseIP1ASaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret void -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #8 - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt6vectorIP1ASaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - %0 = load ptr, ptr %_M_finish, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 2 - %1 = load ptr, ptr %_M_end_of_storage, align 8 - %cmp = icmp ne ptr %0, %1 - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_impl4 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish5 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl4, i32 0, i32 1 - %2 = load ptr, ptr %_M_finish5, align 8 - %3 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt16allocator_traitsISaIP1AEE9constructIS1_JRKS1_EEEvRS2_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl3, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #5 - %_M_impl6 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish7 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl6, i32 0, i32 1 - %4 = load ptr, ptr %_M_finish7, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_finish7, align 8 - br label %if.end - -if.else: ; preds = %entry - %call = call ptr @_ZNSt6vectorIP1ASaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %agg.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %5 = load ptr, ptr %__x.addr, align 8 - %coerce.dive8 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %agg.tmp, i32 0, i32 0 - %6 = load ptr, ptr %coerce.dive8, align 8 - call void @_ZNSt6vectorIP1ASaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr %6, ptr noundef nonnull align 8 dereferenceable(8) %5) - br label %if.end - -if.end: ; preds = %if.else, %if.then - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP1ASaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %__n) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_start, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %0, i64 %1 - ret ptr %add.ptr -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt6vectorIP1ASaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 1 - %1 = load ptr, ptr %_M_finish, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - invoke void @_ZSt8_DestroyIPP1AS1_EvT_S3_RSaIT0_E(ptr noundef %0, ptr noundef %1, ptr noundef nonnull align 1 dereferenceable(1) %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt12_Vector_baseIP1ASaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret void - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #14 - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseIP1ASaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt12_Vector_baseIP1ASaIS1_EE12_Vector_implC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %_M_impl) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseIP1ASaIS1_EE12_Vector_implC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt12_Vector_baseIP1ASaIS1_EE17_Vector_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseIP1ASaIS1_EE17_Vector_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_start, align 8 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_finish, align 8 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_end_of_storage, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZSt8_DestroyIPP1AS1_EvT_S3_RSaIT0_E(ptr noundef %__first, ptr noundef %__last, ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %2 = load ptr, ptr %__last.addr, align 8 - call void @_ZSt8_DestroyIPP1AEvT_S3_(ptr noundef %1, ptr noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #9 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #5 - call void @_ZSt9terminatev() #14 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseIP1ASaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 2 - %1 = load ptr, ptr %_M_end_of_storage, align 8 - %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start4 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl3, i32 0, i32 0 - %2 = load ptr, ptr %_M_start4, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %2 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - invoke void @_ZNSt12_Vector_baseIP1ASaIS1_EE13_M_deallocateEPS1_m(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef %0, i64 noundef %sub.ptr.div) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %_M_impl5 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt12_Vector_baseIP1ASaIS1_EE12_Vector_implD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %_M_impl5) #5 - ret void - -terminate.lpad: ; preds = %entry - %3 = landingpad { ptr, i32 } - catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #14 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZSt8_DestroyIPP1AEvT_S3_(ptr noundef %__first, ptr noundef %__last) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - call void @_ZNSt12_Destroy_auxILb1EE9__destroyIPP1AEEvT_S5_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Destroy_auxILb1EE9__destroyIPP1AEEvT_S5_(ptr noundef %0, ptr noundef %1) #2 comdat align 2 { -entry: - %.addr = alloca ptr, align 8 - %.addr1 = alloca ptr, align 8 - store ptr %0, ptr %.addr, align 8 - store ptr %1, ptr %.addr1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseIP1ASaIS1_EE13_M_deallocateEPS1_m(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %tobool = icmp ne ptr %0, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZNSt16allocator_traitsISaIP1AEE10deallocateERS2_PS1_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef %1, i64 noundef %2) - br label %if.end - -if.end: ; preds = %if.then, %entry - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseIP1ASaIS1_EE12_Vector_implD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIP1AEE10deallocateERS2_PS1_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AE10deallocateEPS2_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #10 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIP1AEE9constructIS1_JRKS1_EEEvRS2_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIP1AE9constructIS2_JRKS2_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt6vectorIP1ASaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr %__position.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %__position = alloca %"class.__gnu_cxx::__normal_iterator", align 8 - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__len = alloca i64, align 8 - %__old_start = alloca ptr, align 8 - %__old_finish = alloca ptr, align 8 - %__elems_before = alloca i64, align 8 - %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 - %__new_start = alloca ptr, align 8 - %__new_finish = alloca ptr, align 8 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %__position, i32 0, i32 0 - store ptr %__position.coerce, ptr %coerce.dive, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE12_M_check_lenEmPKc(ptr noundef nonnull align 8 dereferenceable(24) %this1, i64 noundef 1, ptr noundef @.str.3) - store i64 %call, ptr %__len, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_start, align 8 - store ptr %0, ptr %__old_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 1 - %1 = load ptr, ptr %_M_finish, align 8 - store ptr %1, ptr %__old_finish, align 8 - %call3 = call ptr @_ZNSt6vectorIP1ASaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %coerce.dive4 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %ref.tmp, i32 0, i32 0 - store ptr %call3, ptr %coerce.dive4, align 8 - %call5 = call noundef i64 @_ZN9__gnu_cxxmiIPP1ASt6vectorIS2_SaIS2_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSA_SD_(ptr noundef nonnull align 8 dereferenceable(8) %__position, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #5 - store i64 %call5, ptr %__elems_before, align 8 - %2 = load i64, ptr %__len, align 8 - %call6 = call noundef ptr @_ZNSt12_Vector_baseIP1ASaIS1_EE11_M_allocateEm(ptr noundef nonnull align 8 dereferenceable(24) %this1, i64 noundef %2) - store ptr %call6, ptr %__new_start, align 8 - %3 = load ptr, ptr %__new_start, align 8 - store ptr %3, ptr %__new_finish, align 8 - %_M_impl7 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %4 = load ptr, ptr %__new_start, align 8 - %5 = load i64, ptr %__elems_before, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %4, i64 %5 - %6 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaIP1AEE9constructIS1_JRKS1_EEEvRS2_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl7, ptr noundef %add.ptr, ptr noundef nonnull align 8 dereferenceable(8) %6) #5 - store ptr null, ptr %__new_finish, align 8 - %7 = load ptr, ptr %__old_start, align 8 - %call8 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP1ASt6vectorIS2_SaIS2_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %__position) #5 - %8 = load ptr, ptr %call8, align 8 - %9 = load ptr, ptr %__new_start, align 8 - %call9 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call10 = call noundef ptr @_ZNSt6vectorIP1ASaIS1_EE11_S_relocateEPS1_S4_S4_RS2_(ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull align 1 dereferenceable(1) %call9) #5 - store ptr %call10, ptr %__new_finish, align 8 - %10 = load ptr, ptr %__new_finish, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %10, i32 1 - store ptr %incdec.ptr, ptr %__new_finish, align 8 - %call11 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP1ASt6vectorIS2_SaIS2_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %__position) #5 - %11 = load ptr, ptr %call11, align 8 - %12 = load ptr, ptr %__old_finish, align 8 - %13 = load ptr, ptr %__new_finish, align 8 - %call12 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call13 = call noundef ptr @_ZNSt6vectorIP1ASaIS1_EE11_S_relocateEPS1_S4_S4_RS2_(ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef nonnull align 1 dereferenceable(1) %call12) #5 - store ptr %call13, ptr %__new_finish, align 8 - %14 = load ptr, ptr %__old_start, align 8 - %_M_impl14 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl14, i32 0, i32 2 - %15 = load ptr, ptr %_M_end_of_storage, align 8 - %16 = load ptr, ptr %__old_start, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %15 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %16 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - call void @_ZNSt12_Vector_baseIP1ASaIS1_EE13_M_deallocateEPS1_m(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef %14, i64 noundef %sub.ptr.div) - %17 = load ptr, ptr %__new_start, align 8 - %_M_impl15 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start16 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl15, i32 0, i32 0 - store ptr %17, ptr %_M_start16, align 8 - %18 = load ptr, ptr %__new_finish, align 8 - %_M_impl17 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish18 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl17, i32 0, i32 1 - store ptr %18, ptr %_M_finish18, align 8 - %19 = load ptr, ptr %__new_start, align 8 - %20 = load i64, ptr %__len, align 8 - %add.ptr19 = getelementptr inbounds ptr, ptr %19, i64 %20 - %_M_impl20 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage21 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl20, i32 0, i32 2 - store ptr %add.ptr19, ptr %_M_end_of_storage21, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt6vectorIP1ASaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %retval = alloca %"class.__gnu_cxx::__normal_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - call void @_ZN9__gnu_cxx17__normal_iteratorIPP1ASt6vectorIS2_SaIS2_EEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_finish) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIP1AE9constructIS2_JRKS2_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - %2 = load ptr, ptr %1, align 8 - store ptr %2, ptr %0, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE12_M_check_lenEmPKc(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %__n, ptr noundef %__s) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %__s.addr = alloca ptr, align 8 - %__len = alloca i64, align 8 - %ref.tmp = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %__s, ptr %__s.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call2 = call noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %sub = sub i64 %call, %call2 - %0 = load i64, ptr %__n.addr, align 8 - %cmp = icmp ult i64 %sub, %0 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %1 = load ptr, ptr %__s.addr, align 8 - call void @_ZSt20__throw_length_errorPKc(ptr noundef %1) #15 - unreachable - -if.end: ; preds = %entry - %call3 = call noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call4 = call noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - store i64 %call4, ptr %ref.tmp, align 8 - %call5 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %__n.addr) - %2 = load i64, ptr %call5, align 8 - %add = add i64 %call3, %2 - store i64 %add, ptr %__len, align 8 - %3 = load i64, ptr %__len, align 8 - %call6 = call noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %cmp7 = icmp ult i64 %3, %call6 - br i1 %cmp7, label %cond.true, label %lor.lhs.false - -lor.lhs.false: ; preds = %if.end - %4 = load i64, ptr %__len, align 8 - %call8 = call noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %cmp9 = icmp ugt i64 %4, %call8 - br i1 %cmp9, label %cond.true, label %cond.false - -cond.true: ; preds = %lor.lhs.false, %if.end - %call10 = call noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - br label %cond.end - -cond.false: ; preds = %lor.lhs.false - %5 = load i64, ptr %__len, align 8 - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %call10, %cond.true ], [ %5, %cond.false ] - ret i64 %cond -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZN9__gnu_cxxmiIPP1ASt6vectorIS2_SaIS2_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSA_SD_(ptr noundef nonnull align 8 dereferenceable(8) %__lhs, ptr noundef nonnull align 8 dereferenceable(8) %__rhs) #2 comdat { -entry: - %__lhs.addr = alloca ptr, align 8 - %__rhs.addr = alloca ptr, align 8 - store ptr %__lhs, ptr %__lhs.addr, align 8 - store ptr %__rhs, ptr %__rhs.addr, align 8 - %0 = load ptr, ptr %__lhs.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP1ASt6vectorIS2_SaIS2_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 - %1 = load ptr, ptr %call, align 8 - %2 = load ptr, ptr %__rhs.addr, align 8 - %call1 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP1ASt6vectorIS2_SaIS2_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - %3 = load ptr, ptr %call1, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - ret i64 %sub.ptr.div -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt6vectorIP1ASaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %retval = alloca %"class.__gnu_cxx::__normal_iterator", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - call void @_ZN9__gnu_cxx17__normal_iteratorIPP1ASt6vectorIS2_SaIS2_EEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_start) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt12_Vector_baseIP1ASaIS1_EE11_M_allocateEm(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %__n) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__n.addr, align 8 - %cmp = icmp ne i64 %0, 0 - br i1 %cmp, label %cond.true, label %cond.false - -cond.true: ; preds = %entry - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, i64 noundef %1) - br label %cond.end - -cond.false: ; preds = %entry - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi ptr [ %call, %cond.true ], [ null, %cond.false ] - ret ptr %cond -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt6vectorIP1ASaIS1_EE11_S_relocateEPS1_S4_S4_RS2_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result, ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #2 comdat align 2 { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %__alloc.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::integral_constant", align 1 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - store ptr %__alloc, ptr %__alloc.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %3 = load ptr, ptr %__alloc.addr, align 8 - %call = call noundef ptr @_ZNSt6vectorIP1ASaIS1_EE14_S_do_relocateEPS1_S4_S4_RS2_St17integral_constantIbLb1EE(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull align 1 dereferenceable(1) %3) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP1ASt6vectorIS2_SaIS2_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 - ret ptr %_M_current -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call2 = call noundef i64 @_ZNSt6vectorIP1ASaIS1_EE11_S_max_sizeERKS2_(ptr noundef nonnull align 1 dereferenceable(1) %call) #5 - ret i64 %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorIP1ASaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - %0 = load ptr, ptr %_M_finish, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 0 - %1 = load ptr, ptr %_M_start, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - ret i64 %sub.ptr.div -} - -; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #11 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__b.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt6vectorIP1ASaIS1_EE11_S_max_sizeERKS2_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %__a.addr = alloca ptr, align 8 - %__diffmax = alloca i64, align 8 - %__allocmax = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 1152921504606846975, ptr %__diffmax, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNSt16allocator_traitsISaIP1AEE8max_sizeERKS2_(ptr noundef nonnull align 1 dereferenceable(1) %0) #5 - store i64 %call, ptr %__allocmax, align 8 - %call1 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__diffmax, ptr noundef nonnull align 8 dereferenceable(8) %__allocmax) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %1 = load i64, ptr %call1, align 8 - ret i64 %1 - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #14 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseIP1ASaIS1_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt16allocator_traitsISaIP1AEE8max_sizeERKS2_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIP1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %0) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__b.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__a.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIP1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIP1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIP1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx17__normal_iteratorIPP1ASt6vectorIS2_SaIS2_EEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__i) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__i, ptr %__i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__i.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %_M_current, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaIP1AEE8allocateERS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorIP1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIP1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #15 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #16 - ret ptr %call2 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #11 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt6vectorIP1ASaIS1_EE14_S_do_relocateEPS1_S4_S4_RS2_St17integral_constantIbLb1EE(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result, ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #2 comdat align 2 { -entry: - %0 = alloca %"struct.std::integral_constant", align 1 - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %__alloc.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - store ptr %__alloc, ptr %__alloc.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %2 = load ptr, ptr %__last.addr, align 8 - %3 = load ptr, ptr %__result.addr, align 8 - %4 = load ptr, ptr %__alloc.addr, align 8 - %call = call noundef ptr @_ZSt12__relocate_aIPP1AS2_SaIS1_EET0_T_S5_S4_RT1_(ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef nonnull align 1 dereferenceable(1) %4) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__relocate_aIPP1AS2_SaIS1_EET0_T_S5_S4_RT1_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result, ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #2 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %__alloc.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - store ptr %__alloc, ptr %__alloc.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %0) #5 - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %1) #5 - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %2) #5 - %3 = load ptr, ptr %__alloc.addr, align 8 - %call3 = call noundef ptr @_ZSt14__relocate_a_1IP1AS1_ENSt9enable_ifIXsr3std24__is_bitwise_relocatableIT_EE5valueEPS3_E4typeES4_S4_S4_RSaIT0_E(ptr noundef %call, ptr noundef %call1, ptr noundef %call2, ptr noundef nonnull align 1 dereferenceable(1) %3) #5 - ret ptr %call3 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt14__relocate_a_1IP1AS1_ENSt9enable_ifIXsr3std24__is_bitwise_relocatableIT_EE5valueEPS3_E4typeES4_S4_S4_RSaIT0_E(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result, ptr noundef nonnull align 1 dereferenceable(1) %0) #2 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - %__count = alloca i64, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__first.addr, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %2 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - store i64 %sub.ptr.div, ptr %__count, align 8 - %3 = load i64, ptr %__count, align 8 - %cmp = icmp sgt i64 %3, 0 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__result.addr, align 8 - %5 = load ptr, ptr %__first.addr, align 8 - %6 = load i64, ptr %__count, align 8 - %mul = mul i64 %6, 8 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %4, ptr align 8 %5, i64 %mul, i1 false) - br label %if.end - -if.end: ; preds = %if.then, %entry - %7 = load ptr, ptr %__result.addr, align 8 - %8 = load i64, ptr %__count, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %7, i64 %8 - ret ptr %add.ptr -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__niter_baseIPP1AET_S3_(ptr noundef %__it) #2 comdat { -entry: - %__it.addr = alloca ptr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %0 = load ptr, ptr %__it.addr, align 8 - ret ptr %0 -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #12 - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_vector_2.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noinline uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #13 = { builtin allocsize(0) } -attributes #14 = { noreturn nounwind } -attributes #15 = { noreturn } -attributes #16 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/vector-3.cpp.bc b/test_cases_bc/basic_cpp_tests/vector-3.cpp.bc deleted file mode 100644 index bec4ea83..00000000 --- a/test_cases_bc/basic_cpp_tests/vector-3.cpp.bc +++ /dev/null @@ -1,1464 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/vector-3.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/vector-3.cpp" -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-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%"class.std::vector" = type { %"struct.std::_Vector_base" } -%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base>::_Vector_impl" } -%"struct.std::_Vector_base>::_Vector_impl" = type { %"struct.std::_Vector_base>::_Vector_impl_data" } -%"struct.std::_Vector_base>::_Vector_impl_data" = type { ptr, ptr, ptr } -%class.A = type { ptr } -%"class.__gnu_cxx::__normal_iterator" = type { ptr } -%"class.__gnu_cxx::__normal_iterator.0" = type { ptr } -%"struct.std::integral_constant" = type { i8 } - -$_ZNSt6vectorI1ASaIS0_EEC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt6vectorI1ASaIS0_EE9push_backERKS0_ = comdat any - -$_ZNSt6vectorI1ASaIS0_EE5beginEv = comdat any - -$_ZN9__gnu_cxx17__normal_iteratorIPK1ASt6vectorIS1_SaIS1_EEEC2IPS1_EERKNS0_IT_NS_11__enable_ifIXsr3std10__are_sameISA_S9_EE7__valueES6_E6__typeEEE = comdat any - -$_ZNK9__gnu_cxx17__normal_iteratorIPK1ASt6vectorIS1_SaIS1_EEEdeEv = comdat any - -$_ZNSt6vectorI1ASaIS0_EED2Ev = comdat any - -$_ZNSt12_Vector_baseI1ASaIS0_EEC2Ev = comdat any - -$_ZNSt12_Vector_baseI1ASaIS0_EE12_Vector_implC2Ev = comdat any - -$_ZNSaI1AEC2Ev = comdat any - -$_ZNSt12_Vector_baseI1ASaIS0_EE17_Vector_impl_dataC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AEC2Ev = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZSt8_DestroyIP1AS0_EvT_S2_RSaIT0_E = comdat any - -$_ZNSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt12_Vector_baseI1ASaIS0_EED2Ev = comdat any - -$_ZSt8_DestroyIP1AEvT_S2_ = comdat any - -$_ZNSt12_Destroy_auxILb1EE9__destroyIP1AEEvT_S4_ = comdat any - -$_ZNSt12_Vector_baseI1ASaIS0_EE13_M_deallocateEPS0_m = comdat any - -$_ZNSt12_Vector_baseI1ASaIS0_EE12_Vector_implD2Ev = comdat any - -$_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE10deallocateEPS1_m = comdat any - -$_ZNSaI1AED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AED2Ev = comdat any - -$_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_ = comdat any - -$_ZNSt6vectorI1ASaIS0_EE17_M_realloc_insertIJRKS0_EEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_ = comdat any - -$_ZNSt6vectorI1ASaIS0_EE3endEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JRKS1_EEEvPT_DpOT0_ = comdat any - -$_ZN1AC2ERKS_ = comdat any - -$_ZNKSt6vectorI1ASaIS0_EE12_M_check_lenEmPKc = comdat any - -$_ZN9__gnu_cxxmiIP1ASt6vectorIS1_SaIS1_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_ = comdat any - -$_ZNSt12_Vector_baseI1ASaIS0_EE11_M_allocateEm = comdat any - -$_ZNSt6vectorI1ASaIS0_EE11_S_relocateEPS0_S3_S3_RS1_ = comdat any - -$_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv = comdat any - -$_ZNKSt6vectorI1ASaIS0_EE8max_sizeEv = comdat any - -$_ZNKSt6vectorI1ASaIS0_EE4sizeEv = comdat any - -$_ZSt3maxImERKT_S2_S2_ = comdat any - -$_ZNSt6vectorI1ASaIS0_EE11_S_max_sizeERKS1_ = comdat any - -$_ZNKSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv = comdat any - -$_ZNSt16allocator_traitsISaI1AEE8max_sizeERKS1_ = comdat any - -$_ZSt3minImERKT_S2_S2_ = comdat any - -$_ZNK9__gnu_cxx13new_allocatorI1AE8max_sizeEv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv = comdat any - -$_ZNSt16allocator_traitsISaI1AEE8allocateERS1_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE8allocateEmPKv = comdat any - -$_ZNSt6vectorI1ASaIS0_EE14_S_do_relocateEPS0_S3_S3_RS1_St17integral_constantIbLb1EE = comdat any - -$_ZSt12__relocate_aIP1AS1_SaIS0_EET0_T_S4_S3_RT1_ = comdat any - -$_ZSt14__relocate_a_1IP1AS1_SaIS0_EET0_T_S4_S3_RT1_ = comdat any - -$_ZSt12__niter_baseIP1AET_S2_ = comdat any - -$_ZSt19__relocate_object_aI1AS0_SaIS0_EEvPT_PT0_RT1_ = comdat any - -$_ZNSt16allocator_traitsISaI1AEE9constructIS0_JS0_EEEvRS1_PT_DpOT0_ = comdat any - -$_ZNSt16allocator_traitsISaI1AEE7destroyIS0_EEvRS1_PT_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JS1_EEEvPT_DpOT0_ = comdat any - -$_ZN1AC2EOS_ = comdat any - -$_ZN9__gnu_cxx13new_allocatorI1AE7destroyIS1_EEvPT_ = comdat any - -$_ZN9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEEC2ERKS2_ = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 -@__dso_handle = external hidden global i8 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@.str.3 = private unnamed_addr constant [26 x i8] c"vector::_M_realloc_insert\00", align 1 -@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_vector_3.cpp, ptr null }] - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init() #3 section ".text.startup" { -entry: - call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = call i32 @__cxa_atexit(ptr @_ZNSt8ios_base4InitD1Ev, ptr @_ZStL8__ioinit, ptr @__dso_handle) #5 - ret void -} - -declare void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 - -; Function Attrs: nounwind -declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 - -; Function Attrs: nounwind -declare i32 @__cxa_atexit(ptr, ptr, ptr) #5 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #6 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %vec = alloca %"class.std::vector", align 8 - %a = alloca %class.A, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %it = alloca %"class.__gnu_cxx::__normal_iterator", align 8 - %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt6vectorI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 - invoke void @_ZNSt6vectorI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %vec, ptr noundef nonnull align 8 dereferenceable(8) %a) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %call = call ptr @_ZNSt6vectorI1ASaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %ref.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - call void @_ZN9__gnu_cxx17__normal_iteratorIPK1ASt6vectorIS1_SaIS1_EEEC2IPS1_EERKNS0_IT_NS_11__enable_ifIXsr3std10__are_sameISA_S9_EE7__valueES6_E6__typeEEE(ptr noundef nonnull align 8 dereferenceable(8) %it, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #5 - %call1 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK1ASt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 - store ptr %call1, ptr %aptr, align 8 - %0 = load ptr, ptr %aptr, align 8 - %1 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %0, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %2 = load ptr, ptr %vfn, align 8 - invoke void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) - to label %invoke.cont2 unwind label %lpad - -invoke.cont2: ; preds = %invoke.cont - store i32 0, ptr %retval, align 4 - call void @_ZNSt6vectorI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 - %3 = load i32, ptr %retval, align 4 - ret i32 %3 - -lpad: ; preds = %invoke.cont, %entry - %4 = landingpad { ptr, i32 } - cleanup - %5 = extractvalue { ptr, i32 } %4, 0 - store ptr %5, ptr %exn.slot, align 8 - %6 = extractvalue { ptr, i32 } %4, 1 - store i32 %6, ptr %ehselector.slot, align 4 - call void @_ZNSt6vectorI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val3 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val3 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt6vectorI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt12_Vector_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt6vectorI1ASaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - %0 = load ptr, ptr %_M_finish, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 2 - %1 = load ptr, ptr %_M_end_of_storage, align 8 - %cmp = icmp ne ptr %0, %1 - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_impl4 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish5 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl4, i32 0, i32 1 - %2 = load ptr, ptr %_M_finish5, align 8 - %3 = load ptr, ptr %__x.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl3, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #5 - %_M_impl6 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish7 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl6, i32 0, i32 1 - %4 = load ptr, ptr %_M_finish7, align 8 - %incdec.ptr = getelementptr inbounds %class.A, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_finish7, align 8 - br label %if.end - -if.else: ; preds = %entry - %call = call ptr @_ZNSt6vectorI1ASaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %agg.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %5 = load ptr, ptr %__x.addr, align 8 - %coerce.dive8 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %agg.tmp, i32 0, i32 0 - %6 = load ptr, ptr %coerce.dive8, align 8 - call void @_ZNSt6vectorI1ASaIS0_EE17_M_realloc_insertIJRKS0_EEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr %6, ptr noundef nonnull align 8 dereferenceable(8) %5) - br label %if.end - -if.end: ; preds = %if.else, %if.then - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt6vectorI1ASaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %retval = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - call void @_ZN9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_start) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx17__normal_iteratorIPK1ASt6vectorIS1_SaIS1_EEEC2IPS1_EERKNS0_IT_NS_11__enable_ifIXsr3std10__are_sameISA_S9_EE7__valueES6_E6__typeEEE(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__i) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__i, ptr %__i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__i.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 - %1 = load ptr, ptr %call, align 8 - store ptr %1, ptr %_M_current, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK1ASt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_current, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt6vectorI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 1 - %1 = load ptr, ptr %_M_finish, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - invoke void @_ZSt8_DestroyIP1AS0_EvT_S2_RSaIT0_E(ptr noundef %0, ptr noundef %1, ptr noundef nonnull align 1 dereferenceable(1) %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt12_Vector_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret void - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt12_Vector_baseI1ASaIS0_EE12_Vector_implC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %_M_impl) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EE12_Vector_implC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt12_Vector_baseI1ASaIS0_EE17_Vector_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EE17_Vector_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_start, align 8 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_finish, align 8 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_end_of_storage, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZSt8_DestroyIP1AS0_EvT_S2_RSaIT0_E(ptr noundef %__first, ptr noundef %__last, ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %2 = load ptr, ptr %__last.addr, align 8 - call void @_ZSt8_DestroyIP1AEvT_S2_(ptr noundef %1, ptr noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #8 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #5 - call void @_ZSt9terminatev() #12 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 2 - %1 = load ptr, ptr %_M_end_of_storage, align 8 - %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start4 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl3, i32 0, i32 0 - %2 = load ptr, ptr %_M_start4, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %2 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - invoke void @_ZNSt12_Vector_baseI1ASaIS0_EE13_M_deallocateEPS0_m(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef %0, i64 noundef %sub.ptr.div) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %_M_impl5 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt12_Vector_baseI1ASaIS0_EE12_Vector_implD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %_M_impl5) #5 - ret void - -terminate.lpad: ; preds = %entry - %3 = landingpad { ptr, i32 } - catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #12 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZSt8_DestroyIP1AEvT_S2_(ptr noundef %__first, ptr noundef %__last) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - call void @_ZNSt12_Destroy_auxILb1EE9__destroyIP1AEEvT_S4_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Destroy_auxILb1EE9__destroyIP1AEEvT_S4_(ptr noundef %0, ptr noundef %1) #2 comdat align 2 { -entry: - %.addr = alloca ptr, align 8 - %.addr1 = alloca ptr, align 8 - store ptr %0, ptr %.addr, align 8 - store ptr %1, ptr %.addr1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EE13_M_deallocateEPS0_m(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %tobool = icmp ne ptr %0, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef %1, i64 noundef %2) - br label %if.end - -if.end: ; preds = %if.then, %entry - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseI1ASaIS0_EE12_Vector_implD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaI1AEE10deallocateERS1_PS0_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AE10deallocateEPS1_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #9 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JRKS1_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt6vectorI1ASaIS0_EE17_M_realloc_insertIJRKS0_EEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr %__position.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %__position = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__len = alloca i64, align 8 - %__old_start = alloca ptr, align 8 - %__old_finish = alloca ptr, align 8 - %__elems_before = alloca i64, align 8 - %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 - %__new_start = alloca ptr, align 8 - %__new_finish = alloca ptr, align 8 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %__position, i32 0, i32 0 - store ptr %__position.coerce, ptr %coerce.dive, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE12_M_check_lenEmPKc(ptr noundef nonnull align 8 dereferenceable(24) %this1, i64 noundef 1, ptr noundef @.str.3) - store i64 %call, ptr %__len, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_start, align 8 - store ptr %0, ptr %__old_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 1 - %1 = load ptr, ptr %_M_finish, align 8 - store ptr %1, ptr %__old_finish, align 8 - %call3 = call ptr @_ZNSt6vectorI1ASaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %coerce.dive4 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %ref.tmp, i32 0, i32 0 - store ptr %call3, ptr %coerce.dive4, align 8 - %call5 = call noundef i64 @_ZN9__gnu_cxxmiIP1ASt6vectorIS1_SaIS1_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_(ptr noundef nonnull align 8 dereferenceable(8) %__position, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #5 - store i64 %call5, ptr %__elems_before, align 8 - %2 = load i64, ptr %__len, align 8 - %call6 = call noundef ptr @_ZNSt12_Vector_baseI1ASaIS0_EE11_M_allocateEm(ptr noundef nonnull align 8 dereferenceable(24) %this1, i64 noundef %2) - store ptr %call6, ptr %__new_start, align 8 - %3 = load ptr, ptr %__new_start, align 8 - store ptr %3, ptr %__new_finish, align 8 - %_M_impl7 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %4 = load ptr, ptr %__new_start, align 8 - %5 = load i64, ptr %__elems_before, align 8 - %add.ptr = getelementptr inbounds %class.A, ptr %4, i64 %5 - %6 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JRKS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl7, ptr noundef %add.ptr, ptr noundef nonnull align 8 dereferenceable(8) %6) #5 - store ptr null, ptr %__new_finish, align 8 - %7 = load ptr, ptr %__old_start, align 8 - %call8 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %__position) #5 - %8 = load ptr, ptr %call8, align 8 - %9 = load ptr, ptr %__new_start, align 8 - %call9 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call10 = call noundef ptr @_ZNSt6vectorI1ASaIS0_EE11_S_relocateEPS0_S3_S3_RS1_(ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull align 1 dereferenceable(1) %call9) #5 - store ptr %call10, ptr %__new_finish, align 8 - %10 = load ptr, ptr %__new_finish, align 8 - %incdec.ptr = getelementptr inbounds %class.A, ptr %10, i32 1 - store ptr %incdec.ptr, ptr %__new_finish, align 8 - %call11 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %__position) #5 - %11 = load ptr, ptr %call11, align 8 - %12 = load ptr, ptr %__old_finish, align 8 - %13 = load ptr, ptr %__new_finish, align 8 - %call12 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call13 = call noundef ptr @_ZNSt6vectorI1ASaIS0_EE11_S_relocateEPS0_S3_S3_RS1_(ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef nonnull align 1 dereferenceable(1) %call12) #5 - store ptr %call13, ptr %__new_finish, align 8 - %14 = load ptr, ptr %__old_start, align 8 - %_M_impl14 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl14, i32 0, i32 2 - %15 = load ptr, ptr %_M_end_of_storage, align 8 - %16 = load ptr, ptr %__old_start, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %15 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %16 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - call void @_ZNSt12_Vector_baseI1ASaIS0_EE13_M_deallocateEPS0_m(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef %14, i64 noundef %sub.ptr.div) - %17 = load ptr, ptr %__new_start, align 8 - %_M_impl15 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start16 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl15, i32 0, i32 0 - store ptr %17, ptr %_M_start16, align 8 - %18 = load ptr, ptr %__new_finish, align 8 - %_M_impl17 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish18 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl17, i32 0, i32 1 - store ptr %18, ptr %_M_finish18, align 8 - %19 = load ptr, ptr %__new_start, align 8 - %20 = load i64, ptr %__len, align 8 - %add.ptr19 = getelementptr inbounds %class.A, ptr %19, i64 %20 - %_M_impl20 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage21 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl20, i32 0, i32 2 - store ptr %add.ptr19, ptr %_M_end_of_storage21, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt6vectorI1ASaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %retval = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - call void @_ZN9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_finish) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JRKS1_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - call void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorI1ASaIS0_EE12_M_check_lenEmPKc(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %__n, ptr noundef %__s) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %__s.addr = alloca ptr, align 8 - %__len = alloca i64, align 8 - %ref.tmp = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %__s, ptr %__s.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call2 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %sub = sub i64 %call, %call2 - %0 = load i64, ptr %__n.addr, align 8 - %cmp = icmp ult i64 %sub, %0 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %1 = load ptr, ptr %__s.addr, align 8 - call void @_ZSt20__throw_length_errorPKc(ptr noundef %1) #13 - unreachable - -if.end: ; preds = %entry - %call3 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call4 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - store i64 %call4, ptr %ref.tmp, align 8 - %call5 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %__n.addr) - %2 = load i64, ptr %call5, align 8 - %add = add i64 %call3, %2 - store i64 %add, ptr %__len, align 8 - %3 = load i64, ptr %__len, align 8 - %call6 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %cmp7 = icmp ult i64 %3, %call6 - br i1 %cmp7, label %cond.true, label %lor.lhs.false - -lor.lhs.false: ; preds = %if.end - %4 = load i64, ptr %__len, align 8 - %call8 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %cmp9 = icmp ugt i64 %4, %call8 - br i1 %cmp9, label %cond.true, label %cond.false - -cond.true: ; preds = %lor.lhs.false, %if.end - %call10 = call noundef i64 @_ZNKSt6vectorI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - br label %cond.end - -cond.false: ; preds = %lor.lhs.false - %5 = load i64, ptr %__len, align 8 - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %call10, %cond.true ], [ %5, %cond.false ] - ret i64 %cond -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZN9__gnu_cxxmiIP1ASt6vectorIS1_SaIS1_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_(ptr noundef nonnull align 8 dereferenceable(8) %__lhs, ptr noundef nonnull align 8 dereferenceable(8) %__rhs) #2 comdat { -entry: - %__lhs.addr = alloca ptr, align 8 - %__rhs.addr = alloca ptr, align 8 - store ptr %__lhs, ptr %__lhs.addr, align 8 - store ptr %__rhs, ptr %__rhs.addr, align 8 - %0 = load ptr, ptr %__lhs.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 - %1 = load ptr, ptr %call, align 8 - %2 = load ptr, ptr %__rhs.addr, align 8 - %call1 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - %3 = load ptr, ptr %call1, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - ret i64 %sub.ptr.div -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt12_Vector_baseI1ASaIS0_EE11_M_allocateEm(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %__n) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__n.addr, align 8 - %cmp = icmp ne i64 %0, 0 - br i1 %cmp, label %cond.true, label %cond.false - -cond.true: ; preds = %entry - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZNSt16allocator_traitsISaI1AEE8allocateERS1_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, i64 noundef %1) - br label %cond.end - -cond.false: ; preds = %entry - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi ptr [ %call, %cond.true ], [ null, %cond.false ] - ret ptr %cond -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt6vectorI1ASaIS0_EE11_S_relocateEPS0_S3_S3_RS1_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result, ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #2 comdat align 2 { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %__alloc.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::integral_constant", align 1 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - store ptr %__alloc, ptr %__alloc.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %3 = load ptr, ptr %__alloc.addr, align 8 - %call = call noundef ptr @_ZNSt6vectorI1ASaIS0_EE14_S_do_relocateEPS0_S3_S3_RS1_St17integral_constantIbLb1EE(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull align 1 dereferenceable(1) %3) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %this1, i32 0, i32 0 - ret ptr %_M_current -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorI1ASaIS0_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call2 = call noundef i64 @_ZNSt6vectorI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %call) #5 - ret i64 %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorI1ASaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - %0 = load ptr, ptr %_M_finish, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 0 - %1 = load ptr, ptr %_M_start, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - ret i64 %sub.ptr.div -} - -; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #10 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__b.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt6vectorI1ASaIS0_EE11_S_max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %__a.addr = alloca ptr, align 8 - %__diffmax = alloca i64, align 8 - %__allocmax = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 1152921504606846975, ptr %__diffmax, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNSt16allocator_traitsISaI1AEE8max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %0) #5 - store i64 %call, ptr %__allocmax, align 8 - %call1 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__diffmax, ptr noundef nonnull align 8 dereferenceable(8) %__allocmax) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %1 = load i64, ptr %call1, align 8 - ret i64 %1 - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #12 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseI1ASaIS0_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt16allocator_traitsISaI1AEE8max_sizeERKS1_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %0) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__b.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__a.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaI1AEE8allocateERS1_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorI1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorI1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #13 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #14 - ret ptr %call2 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #10 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #11 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt6vectorI1ASaIS0_EE14_S_do_relocateEPS0_S3_S3_RS1_St17integral_constantIbLb1EE(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result, ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #2 comdat align 2 { -entry: - %0 = alloca %"struct.std::integral_constant", align 1 - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %__alloc.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - store ptr %__alloc, ptr %__alloc.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %2 = load ptr, ptr %__last.addr, align 8 - %3 = load ptr, ptr %__result.addr, align 8 - %4 = load ptr, ptr %__alloc.addr, align 8 - %call = call noundef ptr @_ZSt12__relocate_aIP1AS1_SaIS0_EET0_T_S4_S3_RT1_(ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef nonnull align 1 dereferenceable(1) %4) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__relocate_aIP1AS1_SaIS0_EET0_T_S4_S3_RT1_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result, ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #2 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %__alloc.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - store ptr %__alloc, ptr %__alloc.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__niter_baseIP1AET_S2_(ptr noundef %0) #5 - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIP1AET_S2_(ptr noundef %1) #5 - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIP1AET_S2_(ptr noundef %2) #5 - %3 = load ptr, ptr %__alloc.addr, align 8 - %call3 = call noundef ptr @_ZSt14__relocate_a_1IP1AS1_SaIS0_EET0_T_S4_S3_RT1_(ptr noundef %call, ptr noundef %call1, ptr noundef %call2, ptr noundef nonnull align 1 dereferenceable(1) %3) #5 - ret ptr %call3 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt14__relocate_a_1IP1AS1_SaIS0_EET0_T_S4_S3_RT1_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result, ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #2 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %__alloc.addr = alloca ptr, align 8 - %__cur = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - store ptr %__alloc, ptr %__alloc.addr, align 8 - %0 = load ptr, ptr %__result.addr, align 8 - store ptr %0, ptr %__cur, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %1 = load ptr, ptr %__first.addr, align 8 - %2 = load ptr, ptr %__last.addr, align 8 - %cmp = icmp ne ptr %1, %2 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %3 = load ptr, ptr %__cur, align 8 - %4 = load ptr, ptr %__first.addr, align 8 - %5 = load ptr, ptr %__alloc.addr, align 8 - call void @_ZSt19__relocate_object_aI1AS0_SaIS0_EEvPT_PT0_RT1_(ptr noundef %3, ptr noundef %4, ptr noundef nonnull align 1 dereferenceable(1) %5) #5 - br label %for.inc - -for.inc: ; preds = %for.body - %6 = load ptr, ptr %__first.addr, align 8 - %incdec.ptr = getelementptr inbounds %class.A, ptr %6, i32 1 - store ptr %incdec.ptr, ptr %__first.addr, align 8 - %7 = load ptr, ptr %__cur, align 8 - %incdec.ptr1 = getelementptr inbounds %class.A, ptr %7, i32 1 - store ptr %incdec.ptr1, ptr %__cur, align 8 - br label %for.cond, !llvm.loop !6 - -for.end: ; preds = %for.cond - %8 = load ptr, ptr %__cur, align 8 - ret ptr %8 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__niter_baseIP1AET_S2_(ptr noundef %__it) #2 comdat { -entry: - %__it.addr = alloca ptr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %0 = load ptr, ptr %__it.addr, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZSt19__relocate_object_aI1AS0_SaIS0_EEvPT_PT0_RT1_(ptr noalias noundef %__dest, ptr noalias noundef %__orig, ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #2 comdat { -entry: - %__dest.addr = alloca ptr, align 8 - %__orig.addr = alloca ptr, align 8 - %__alloc.addr = alloca ptr, align 8 - store ptr %__dest, ptr %__dest.addr, align 8 - store ptr %__orig, ptr %__orig.addr, align 8 - store ptr %__alloc, ptr %__alloc.addr, align 8 - %0 = load ptr, ptr %__alloc.addr, align 8 - %1 = load ptr, ptr %__dest.addr, align 8 - %2 = load ptr, ptr %__orig.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - %3 = load ptr, ptr %__alloc.addr, align 8 - %4 = load ptr, ptr %__orig.addr, align 8 - call void @_ZNSt16allocator_traitsISaI1AEE7destroyIS0_EEvRS1_PT_(ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef %4) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaI1AEE9constructIS0_JS0_EEEvRS1_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JS1_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaI1AEE7destroyIS0_EEvRS1_PT_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorI1AE7destroyIS1_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1) #5 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AE9constructIS1_JS1_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - call void @_ZN1AC2EOS_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2EOS_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %0) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI1AE7destroyIS1_EEvPT_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx17__normal_iteratorIP1ASt6vectorIS1_SaIS1_EEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__i) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__i, ptr %__i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__i.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %_M_current, align 8 - ret void -} - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_vector_3.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noinline uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { noreturn nounwind } -attributes #13 = { noreturn } -attributes #14 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} diff --git a/test_cases_bc/basic_cpp_tests/vector-4.cpp.bc b/test_cases_bc/basic_cpp_tests/vector-4.cpp.bc deleted file mode 100644 index f2a09d72..00000000 --- a/test_cases_bc/basic_cpp_tests/vector-4.cpp.bc +++ /dev/null @@ -1,1424 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/vector-4.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/vector-4.cpp" -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-unknown-linux-gnu" - -%"class.std::ios_base::Init" = type { i8 } -%"class.std::vector" = type { %"struct.std::_Vector_base" } -%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base>::_Vector_impl" } -%"struct.std::_Vector_base>::_Vector_impl" = type { %"struct.std::_Vector_base>::_Vector_impl_data" } -%"struct.std::_Vector_base>::_Vector_impl_data" = type { ptr, ptr, ptr } -%class.A = type { ptr } -%"class.__gnu_cxx::__normal_iterator" = type { ptr } -%"class.__gnu_cxx::__normal_iterator.0" = type { ptr } -%"struct.std::integral_constant" = type { i8 } - -$_ZNSt6vectorIPK1ASaIS2_EEC2Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZNSt6vectorIPK1ASaIS2_EE9push_backEOS2_ = comdat any - -$_ZNSt6vectorIPK1ASaIS2_EE5beginEv = comdat any - -$_ZN9__gnu_cxx17__normal_iteratorIPKPK1ASt6vectorIS3_SaIS3_EEEC2IPS3_EERKNS0_IT_NS_11__enable_ifIXsr3std10__are_sameISC_SB_EE7__valueES8_E6__typeEEE = comdat any - -$_ZNK9__gnu_cxx17__normal_iteratorIPKPK1ASt6vectorIS3_SaIS3_EEEdeEv = comdat any - -$_ZNSt6vectorIPK1ASaIS2_EED2Ev = comdat any - -$_ZNSt12_Vector_baseIPK1ASaIS2_EEC2Ev = comdat any - -$_ZNSt12_Vector_baseIPK1ASaIS2_EE12_Vector_implC2Ev = comdat any - -$_ZNSaIPK1AEC2Ev = comdat any - -$_ZNSt12_Vector_baseIPK1ASaIS2_EE17_Vector_impl_dataC2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AEC2Ev = comdat any - -$_ZNK1A1fEPi = comdat any - -$_ZSt8_DestroyIPPK1AS2_EvT_S4_RSaIT0_E = comdat any - -$_ZNSt12_Vector_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv = comdat any - -$__clang_call_terminate = comdat any - -$_ZNSt12_Vector_baseIPK1ASaIS2_EED2Ev = comdat any - -$_ZSt8_DestroyIPPK1AEvT_S4_ = comdat any - -$_ZNSt12_Destroy_auxILb1EE9__destroyIPPK1AEEvT_S6_ = comdat any - -$_ZNSt12_Vector_baseIPK1ASaIS2_EE13_M_deallocateEPS2_m = comdat any - -$_ZNSt12_Vector_baseIPK1ASaIS2_EE12_Vector_implD2Ev = comdat any - -$_ZNSt16allocator_traitsISaIPK1AEE10deallocateERS3_PS2_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AE10deallocateEPS3_m = comdat any - -$_ZNSaIPK1AED2Ev = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AED2Ev = comdat any - -$_ZNSt6vectorIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_ = comdat any - -$_ZNSt16allocator_traitsISaIPK1AEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_ = comdat any - -$_ZNSt6vectorIPK1ASaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_ = comdat any - -$_ZNSt6vectorIPK1ASaIS2_EE3endEv = comdat any - -$_ZNSt6vectorIPK1ASaIS2_EE4backEv = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AE9constructIS3_JS3_EEEvPT_DpOT0_ = comdat any - -$_ZNKSt6vectorIPK1ASaIS2_EE12_M_check_lenEmPKc = comdat any - -$_ZN9__gnu_cxxmiIPPK1ASt6vectorIS3_SaIS3_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSB_SE_ = comdat any - -$_ZNSt12_Vector_baseIPK1ASaIS2_EE11_M_allocateEm = comdat any - -$_ZNSt6vectorIPK1ASaIS2_EE11_S_relocateEPS2_S5_S5_RS3_ = comdat any - -$_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEE4baseEv = comdat any - -$_ZNKSt6vectorIPK1ASaIS2_EE8max_sizeEv = comdat any - -$_ZNKSt6vectorIPK1ASaIS2_EE4sizeEv = comdat any - -$_ZSt3maxImERKT_S2_S2_ = comdat any - -$_ZNSt6vectorIPK1ASaIS2_EE11_S_max_sizeERKS3_ = comdat any - -$_ZNKSt12_Vector_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv = comdat any - -$_ZNSt16allocator_traitsISaIPK1AEE8max_sizeERKS3_ = comdat any - -$_ZSt3minImERKT_S2_S2_ = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIPK1AE8max_sizeEv = comdat any - -$_ZNK9__gnu_cxx13new_allocatorIPK1AE11_M_max_sizeEv = comdat any - -$_ZNSt16allocator_traitsISaIPK1AEE8allocateERS3_m = comdat any - -$_ZN9__gnu_cxx13new_allocatorIPK1AE8allocateEmPKv = comdat any - -$_ZNSt6vectorIPK1ASaIS2_EE14_S_do_relocateEPS2_S5_S5_RS3_St17integral_constantIbLb1EE = comdat any - -$_ZSt12__relocate_aIPPK1AS3_SaIS2_EET0_T_S6_S5_RT1_ = comdat any - -$_ZSt14__relocate_a_1IPK1AS2_ENSt9enable_ifIXsr3std24__is_bitwise_relocatableIT_EE5valueEPS4_E4typeES5_S5_S5_RSaIT0_E = comdat any - -$_ZSt12__niter_baseIPPK1AET_S4_ = comdat any - -$_ZN9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEC2ERKS4_ = comdat any - -$_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEmiEl = comdat any - -$_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEdeEv = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1 -@__dso_handle = external hidden global i8 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZNK1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@.str.3 = private unnamed_addr constant [26 x i8] c"vector::_M_realloc_insert\00", align 1 -@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_vector_4.cpp, ptr null }] - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: noinline uwtable -define internal void @__cxx_global_var_init() #3 section ".text.startup" { -entry: - call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %0 = call i32 @__cxa_atexit(ptr @_ZNSt8ios_base4InitD1Ev, ptr @_ZStL8__ioinit, ptr @__dso_handle) #5 - ret void -} - -declare void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 - -; Function Attrs: nounwind -declare void @_ZNSt8ios_base4InitD1Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 - -; Function Attrs: nounwind -declare i32 @__cxa_atexit(ptr, ptr, ptr) #5 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #6 personality ptr @__gxx_personality_v0 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %vec = alloca %"class.std::vector", align 8 - %a = alloca %class.A, align 8 - %ref.tmp = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %it = alloca %"class.__gnu_cxx::__normal_iterator", align 8 - %ref.tmp1 = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 - %aptr = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - call void @_ZNSt6vectorIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %a) #5 - store ptr %a, ptr %ref.tmp, align 8 - invoke void @_ZNSt6vectorIPK1ASaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %vec, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - %call = call ptr @_ZNSt6vectorIPK1ASaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %ref.tmp1, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - call void @_ZN9__gnu_cxx17__normal_iteratorIPKPK1ASt6vectorIS3_SaIS3_EEEC2IPS3_EERKNS0_IT_NS_11__enable_ifIXsr3std10__are_sameISC_SB_EE7__valueES8_E6__typeEEE(ptr noundef nonnull align 8 dereferenceable(8) %it, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp1) #5 - %call2 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPK1ASt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %it) #5 - %0 = load ptr, ptr %call2, align 8 - store ptr %0, ptr %aptr, align 8 - %1 = load ptr, ptr %aptr, align 8 - %2 = load ptr, ptr %ptr, align 8 - %vtable = load ptr, ptr %1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %3 = load ptr, ptr %vfn, align 8 - invoke void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) - to label %invoke.cont3 unwind label %lpad - -invoke.cont3: ; preds = %invoke.cont - store i32 0, ptr %retval, align 4 - call void @_ZNSt6vectorIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 - %4 = load i32, ptr %retval, align 4 - ret i32 %4 - -lpad: ; preds = %invoke.cont, %entry - %5 = landingpad { ptr, i32 } - cleanup - %6 = extractvalue { ptr, i32 } %5, 0 - store ptr %6, ptr %exn.slot, align 8 - %7 = extractvalue { ptr, i32 } %5, 1 - store i32 %7, ptr %ehselector.slot, align 4 - call void @_ZNSt6vectorIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %vec) #5 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val4 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val4 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt6vectorIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSt12_Vector_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt6vectorIPK1ASaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef nonnull align 8 dereferenceable(8) %__x) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__x.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__x, ptr %__x.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__x.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef nonnull align 8 dereferenceable(8) %0) - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt6vectorIPK1ASaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %retval = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - call void @_ZN9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_start) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx17__normal_iteratorIPKPK1ASt6vectorIS3_SaIS3_EEEC2IPS3_EERKNS0_IT_NS_11__enable_ifIXsr3std10__are_sameISC_SB_EE7__valueES8_E6__typeEEE(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__i) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__i, ptr %__i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__i.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 - %1 = load ptr, ptr %call, align 8 - store ptr %1, ptr %_M_current, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPK1ASt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_current, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt6vectorIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 1 - %1 = load ptr, ptr %_M_finish, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - invoke void @_ZSt8_DestroyIPPK1AS2_EvT_S4_RSaIT0_E(ptr noundef %0, ptr noundef %1, ptr noundef nonnull align 1 dereferenceable(1) %call) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - call void @_ZNSt12_Vector_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret void - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #13 - unreachable -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseIPK1ASaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt12_Vector_baseIPK1ASaIS2_EE12_Vector_implC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %_M_impl) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseIPK1ASaIS2_EE12_Vector_implC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - call void @_ZNSt12_Vector_baseIPK1ASaIS2_EE17_Vector_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseIPK1ASaIS2_EE17_Vector_impl_dataC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 0 - store ptr null, ptr %_M_start, align 8 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 1 - store ptr null, ptr %_M_finish, align 8 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %this1, i32 0, i32 2 - store ptr null, ptr %_M_end_of_storage, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPK1AEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNK1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZSt8_DestroyIPPK1AS2_EvT_S4_RSaIT0_E(ptr noundef %__first, ptr noundef %__last, ptr noundef nonnull align 1 dereferenceable(1) %0) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %2 = load ptr, ptr %__last.addr, align 8 - call void @_ZSt8_DestroyIPPK1AEvT_S4_(ptr noundef %1, ptr noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: noinline noreturn nounwind -define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) #8 comdat { - %2 = call ptr @__cxa_begin_catch(ptr %0) #5 - call void @_ZSt9terminatev() #13 - unreachable -} - -declare ptr @__cxa_begin_catch(ptr) - -declare void @_ZSt9terminatev() - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseIPK1ASaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 2 - %1 = load ptr, ptr %_M_end_of_storage, align 8 - %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start4 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl3, i32 0, i32 0 - %2 = load ptr, ptr %_M_start4, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %2 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - invoke void @_ZNSt12_Vector_baseIPK1ASaIS2_EE13_M_deallocateEPS2_m(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef %0, i64 noundef %sub.ptr.div) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %_M_impl5 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - call void @_ZNSt12_Vector_baseIPK1ASaIS2_EE12_Vector_implD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %_M_impl5) #5 - ret void - -terminate.lpad: ; preds = %entry - %3 = landingpad { ptr, i32 } - catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #13 - unreachable -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZSt8_DestroyIPPK1AEvT_S4_(ptr noundef %__first, ptr noundef %__last) #0 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - call void @_ZNSt12_Destroy_auxILb1EE9__destroyIPPK1AEEvT_S6_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Destroy_auxILb1EE9__destroyIPPK1AEEvT_S6_(ptr noundef %0, ptr noundef %1) #2 comdat align 2 { -entry: - %.addr = alloca ptr, align 8 - %.addr1 = alloca ptr, align 8 - store ptr %0, ptr %.addr, align 8 - store ptr %1, ptr %.addr1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseIPK1ASaIS2_EE13_M_deallocateEPS2_m(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %tobool = icmp ne ptr %0, null - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZNSt16allocator_traitsISaIPK1AEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, ptr noundef %1, i64 noundef %2) - br label %if.end - -if.end: ; preds = %if.then, %entry - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt12_Vector_baseIPK1ASaIS2_EE12_Vector_implD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZNSaIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIPK1AEE10deallocateERS3_PS2_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load i64, ptr %__n.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPK1AE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, i64 noundef %2) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPK1AE10deallocateEPS3_m(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, i64 noundef %__t) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__t.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store i64 %__t, ptr %__t.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - call void @_ZdlPv(ptr noundef %0) #5 - ret void -} - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #9 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSaIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPK1AED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPK1ASaIS2_EE12emplace_backIJS2_EEERS2_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - %0 = load ptr, ptr %_M_finish, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 2 - %1 = load ptr, ptr %_M_end_of_storage, align 8 - %cmp = icmp ne ptr %0, %1 - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_impl4 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish5 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl4, i32 0, i32 1 - %2 = load ptr, ptr %_M_finish5, align 8 - %3 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaIPK1AEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl3, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #5 - %_M_impl6 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish7 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl6, i32 0, i32 1 - %4 = load ptr, ptr %_M_finish7, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %4, i32 1 - store ptr %incdec.ptr, ptr %_M_finish7, align 8 - br label %if.end - -if.else: ; preds = %entry - %call = call ptr @_ZNSt6vectorIPK1ASaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %agg.tmp, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %5 = load ptr, ptr %__args.addr, align 8 - %coerce.dive8 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %agg.tmp, i32 0, i32 0 - %6 = load ptr, ptr %coerce.dive8, align 8 - call void @_ZNSt6vectorIPK1ASaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr %6, ptr noundef nonnull align 8 dereferenceable(8) %5) - br label %if.end - -if.end: ; preds = %if.else, %if.then - %call9 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - ret ptr %call9 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIPK1AEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %__a, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load ptr, ptr %__p.addr, align 8 - %2 = load ptr, ptr %__args.addr, align 8 - call void @_ZN9__gnu_cxx13new_allocatorIPK1AE9constructIS3_JS3_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZNSt6vectorIPK1ASaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr %__position.coerce, ptr noundef nonnull align 8 dereferenceable(8) %__args) #0 comdat align 2 { -entry: - %__position = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 - %this.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - %__len = alloca i64, align 8 - %__old_start = alloca ptr, align 8 - %__old_finish = alloca ptr, align 8 - %__elems_before = alloca i64, align 8 - %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 - %__new_start = alloca ptr, align 8 - %__new_finish = alloca ptr, align 8 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %__position, i32 0, i32 0 - store ptr %__position.coerce, ptr %coerce.dive, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE12_M_check_lenEmPKc(ptr noundef nonnull align 8 dereferenceable(24) %this1, i64 noundef 1, ptr noundef @.str.3) - store i64 %call, ptr %__len, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 0 - %0 = load ptr, ptr %_M_start, align 8 - store ptr %0, ptr %__old_start, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 1 - %1 = load ptr, ptr %_M_finish, align 8 - store ptr %1, ptr %__old_finish, align 8 - %call3 = call ptr @_ZNSt6vectorIPK1ASaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %coerce.dive4 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %ref.tmp, i32 0, i32 0 - store ptr %call3, ptr %coerce.dive4, align 8 - %call5 = call noundef i64 @_ZN9__gnu_cxxmiIPPK1ASt6vectorIS3_SaIS3_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSB_SE_(ptr noundef nonnull align 8 dereferenceable(8) %__position, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #5 - store i64 %call5, ptr %__elems_before, align 8 - %2 = load i64, ptr %__len, align 8 - %call6 = call noundef ptr @_ZNSt12_Vector_baseIPK1ASaIS2_EE11_M_allocateEm(ptr noundef nonnull align 8 dereferenceable(24) %this1, i64 noundef %2) - store ptr %call6, ptr %__new_start, align 8 - %3 = load ptr, ptr %__new_start, align 8 - store ptr %3, ptr %__new_finish, align 8 - %_M_impl7 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %4 = load ptr, ptr %__new_start, align 8 - %5 = load i64, ptr %__elems_before, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %4, i64 %5 - %6 = load ptr, ptr %__args.addr, align 8 - call void @_ZNSt16allocator_traitsISaIPK1AEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl7, ptr noundef %add.ptr, ptr noundef nonnull align 8 dereferenceable(8) %6) #5 - store ptr null, ptr %__new_finish, align 8 - %7 = load ptr, ptr %__old_start, align 8 - %call8 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %__position) #5 - %8 = load ptr, ptr %call8, align 8 - %9 = load ptr, ptr %__new_start, align 8 - %call9 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call10 = call noundef ptr @_ZNSt6vectorIPK1ASaIS2_EE11_S_relocateEPS2_S5_S5_RS3_(ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull align 1 dereferenceable(1) %call9) #5 - store ptr %call10, ptr %__new_finish, align 8 - %10 = load ptr, ptr %__new_finish, align 8 - %incdec.ptr = getelementptr inbounds ptr, ptr %10, i32 1 - store ptr %incdec.ptr, ptr %__new_finish, align 8 - %call11 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %__position) #5 - %11 = load ptr, ptr %call11, align 8 - %12 = load ptr, ptr %__old_finish, align 8 - %13 = load ptr, ptr %__new_finish, align 8 - %call12 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt12_Vector_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call13 = call noundef ptr @_ZNSt6vectorIPK1ASaIS2_EE11_S_relocateEPS2_S5_S5_RS3_(ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef nonnull align 1 dereferenceable(1) %call12) #5 - store ptr %call13, ptr %__new_finish, align 8 - %14 = load ptr, ptr %__old_start, align 8 - %_M_impl14 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl14, i32 0, i32 2 - %15 = load ptr, ptr %_M_end_of_storage, align 8 - %16 = load ptr, ptr %__old_start, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %15 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %16 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - call void @_ZNSt12_Vector_baseIPK1ASaIS2_EE13_M_deallocateEPS2_m(ptr noundef nonnull align 8 dereferenceable(24) %this1, ptr noundef %14, i64 noundef %sub.ptr.div) - %17 = load ptr, ptr %__new_start, align 8 - %_M_impl15 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start16 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl15, i32 0, i32 0 - store ptr %17, ptr %_M_start16, align 8 - %18 = load ptr, ptr %__new_finish, align 8 - %_M_impl17 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish18 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl17, i32 0, i32 1 - store ptr %18, ptr %_M_finish18, align 8 - %19 = load ptr, ptr %__new_start, align 8 - %20 = load i64, ptr %__len, align 8 - %add.ptr19 = getelementptr inbounds ptr, ptr %19, i64 %20 - %_M_impl20 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_end_of_storage21 = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl20, i32 0, i32 2 - store ptr %add.ptr19, ptr %_M_end_of_storage21, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNSt6vectorIPK1ASaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %retval = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - call void @_ZN9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef nonnull align 8 dereferenceable(8) %_M_finish) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %retval, i32 0, i32 0 - %0 = load ptr, ptr %coerce.dive, align 8 - ret ptr %0 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPK1ASaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 - %ref.tmp2 = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call ptr @_ZNSt6vectorIPK1ASaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %ref.tmp2, i32 0, i32 0 - store ptr %call, ptr %coerce.dive, align 8 - %call3 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEmiEl(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp2, i64 noundef 1) #5 - %coerce.dive4 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %ref.tmp, i32 0, i32 0 - store ptr %call3, ptr %coerce.dive4, align 8 - %call5 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #5 - ret ptr %call5 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIPK1AE9constructIS3_JS3_EEEvPT_DpOT0_(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %__p, ptr noundef nonnull align 8 dereferenceable(8) %__args) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__p.addr = alloca ptr, align 8 - %__args.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__p, ptr %__p.addr, align 8 - store ptr %__args, ptr %__args.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %__p.addr, align 8 - %1 = load ptr, ptr %__args.addr, align 8 - %2 = load ptr, ptr %1, align 8 - store ptr %2, ptr %0, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE12_M_check_lenEmPKc(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %__n, ptr noundef %__s) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %__s.addr = alloca ptr, align 8 - %__len = alloca i64, align 8 - %ref.tmp = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %__s, ptr %__s.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call2 = call noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %sub = sub i64 %call, %call2 - %0 = load i64, ptr %__n.addr, align 8 - %cmp = icmp ult i64 %sub, %0 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %1 = load ptr, ptr %__s.addr, align 8 - call void @_ZSt20__throw_length_errorPKc(ptr noundef %1) #14 - unreachable - -if.end: ; preds = %entry - %call3 = call noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call4 = call noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - store i64 %call4, ptr %ref.tmp, align 8 - %call5 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(8) %__n.addr) - %2 = load i64, ptr %call5, align 8 - %add = add i64 %call3, %2 - store i64 %add, ptr %__len, align 8 - %3 = load i64, ptr %__len, align 8 - %call6 = call noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %cmp7 = icmp ult i64 %3, %call6 - br i1 %cmp7, label %cond.true, label %lor.lhs.false - -lor.lhs.false: ; preds = %if.end - %4 = load i64, ptr %__len, align 8 - %call8 = call noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %cmp9 = icmp ugt i64 %4, %call8 - br i1 %cmp9, label %cond.true, label %cond.false - -cond.true: ; preds = %lor.lhs.false, %if.end - %call10 = call noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - br label %cond.end - -cond.false: ; preds = %lor.lhs.false - %5 = load i64, ptr %__len, align 8 - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi i64 [ %call10, %cond.true ], [ %5, %cond.false ] - ret i64 %cond -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZN9__gnu_cxxmiIPPK1ASt6vectorIS3_SaIS3_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSB_SE_(ptr noundef nonnull align 8 dereferenceable(8) %__lhs, ptr noundef nonnull align 8 dereferenceable(8) %__rhs) #2 comdat { -entry: - %__lhs.addr = alloca ptr, align 8 - %__rhs.addr = alloca ptr, align 8 - store ptr %__lhs, ptr %__lhs.addr, align 8 - store ptr %__rhs, ptr %__rhs.addr, align 8 - %0 = load ptr, ptr %__lhs.addr, align 8 - %call = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #5 - %1 = load ptr, ptr %call, align 8 - %2 = load ptr, ptr %__rhs.addr, align 8 - %call1 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #5 - %3 = load ptr, ptr %call1, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %3 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - ret i64 %sub.ptr.div -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt12_Vector_baseIPK1ASaIS2_EE11_M_allocateEm(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %__n) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load i64, ptr %__n.addr, align 8 - %cmp = icmp ne i64 %0, 0 - br i1 %cmp, label %cond.true, label %cond.false - -cond.true: ; preds = %entry - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZNSt16allocator_traitsISaIPK1AEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %_M_impl, i64 noundef %1) - br label %cond.end - -cond.false: ; preds = %entry - br label %cond.end - -cond.end: ; preds = %cond.false, %cond.true - %cond = phi ptr [ %call, %cond.true ], [ null, %cond.false ] - ret ptr %cond -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt6vectorIPK1ASaIS2_EE11_S_relocateEPS2_S5_S5_RS3_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result, ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #2 comdat align 2 { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %__alloc.addr = alloca ptr, align 8 - %agg.tmp = alloca %"struct.std::integral_constant", align 1 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - store ptr %__alloc, ptr %__alloc.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__result.addr, align 8 - %3 = load ptr, ptr %__alloc.addr, align 8 - %call = call noundef ptr @_ZNSt6vectorIPK1ASaIS2_EE14_S_do_relocateEPS2_S5_S5_RS3_St17integral_constantIbLb1EE(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull align 1 dereferenceable(1) %3) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEE4baseEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %this1, i32 0, i32 0 - ret ptr %_M_current -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE8max_sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this1) #5 - %call2 = call noundef i64 @_ZNSt6vectorIPK1ASaIS2_EE11_S_max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %call) #5 - ret i64 %call2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNKSt6vectorIPK1ASaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_finish = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl, i32 0, i32 1 - %0 = load ptr, ptr %_M_finish, align 8 - %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - %_M_start = getelementptr inbounds %"struct.std::_Vector_base>::_Vector_impl_data", ptr %_M_impl2, i32 0, i32 0 - %1 = load ptr, ptr %_M_start, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %0 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - ret i64 %sub.ptr.div -} - -; Function Attrs: noreturn -declare void @_ZSt20__throw_length_errorPKc(ptr noundef) #10 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__b.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt6vectorIPK1ASaIS2_EE11_S_max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 personality ptr @__gxx_personality_v0 { -entry: - %__a.addr = alloca ptr, align 8 - %__diffmax = alloca i64, align 8 - %__allocmax = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 1152921504606846975, ptr %__diffmax, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNSt16allocator_traitsISaIPK1AEE8max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %0) #5 - store i64 %call, ptr %__allocmax, align 8 - %call1 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__diffmax, ptr noundef nonnull align 8 dereferenceable(8) %__allocmax) - to label %invoke.cont unwind label %terminate.lpad - -invoke.cont: ; preds = %entry - %1 = load i64, ptr %call1, align 8 - ret i64 %1 - -terminate.lpad: ; preds = %entry - %2 = landingpad { ptr, i32 } - catch ptr null - %3 = extractvalue { ptr, i32 } %2, 0 - call void @__clang_call_terminate(ptr %3) #13 - unreachable -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt12_Vector_baseIPK1ASaIS2_EE19_M_get_Tp_allocatorEv(ptr noundef nonnull align 8 dereferenceable(24) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", ptr %this1, i32 0, i32 0 - ret ptr %_M_impl -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNSt16allocator_traitsISaIPK1AEE8max_sizeERKS3_(ptr noundef nonnull align 1 dereferenceable(1) %__a) #2 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPK1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %0) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minImERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 comdat { -entry: - %retval = alloca ptr, align 8 - %__a.addr = alloca ptr, align 8 - %__b.addr = alloca ptr, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store ptr %__b, ptr %__b.addr, align 8 - %0 = load ptr, ptr %__b.addr, align 8 - %1 = load i64, ptr %0, align 8 - %2 = load ptr, ptr %__a.addr, align 8 - %3 = load i64, ptr %2, align 8 - %cmp = icmp ult i64 %1, %3 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__b.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %5 = load ptr, ptr %__a.addr, align 8 - store ptr %5, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %6 = load ptr, ptr %retval, align 8 - ret ptr %6 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPK1AE8max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPK1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - ret i64 %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPK1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret i64 1152921504606846975 -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt16allocator_traitsISaIPK1AEE8allocateERS3_m(ptr noundef nonnull align 1 dereferenceable(1) %__a, i64 noundef %__n) #0 comdat align 2 { -entry: - %__a.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - store ptr %__a, ptr %__a.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %0 = load ptr, ptr %__a.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef ptr @_ZN9__gnu_cxx13new_allocatorIPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, ptr noundef null) - ret ptr %call -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN9__gnu_cxx13new_allocatorIPK1AE8allocateEmPKv(ptr noundef nonnull align 1 dereferenceable(1) %this, i64 noundef %__n, ptr noundef %0) #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %call = call noundef i64 @_ZNK9__gnu_cxx13new_allocatorIPK1AE11_M_max_sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %this1) #5 - %cmp = icmp ugt i64 %1, %call - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - call void @_ZSt17__throw_bad_allocv() #14 - unreachable - -if.end: ; preds = %entry - %2 = load i64, ptr %__n.addr, align 8 - %mul = mul i64 %2, 8 - %call2 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul) #15 - ret ptr %call2 -} - -; Function Attrs: noreturn -declare void @_ZSt17__throw_bad_allocv() #10 - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #11 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZNSt6vectorIPK1ASaIS2_EE14_S_do_relocateEPS2_S5_S5_RS3_St17integral_constantIbLb1EE(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result, ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #2 comdat align 2 { -entry: - %0 = alloca %"struct.std::integral_constant", align 1 - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %__alloc.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - store ptr %__alloc, ptr %__alloc.addr, align 8 - %1 = load ptr, ptr %__first.addr, align 8 - %2 = load ptr, ptr %__last.addr, align 8 - %3 = load ptr, ptr %__result.addr, align 8 - %4 = load ptr, ptr %__alloc.addr, align 8 - %call = call noundef ptr @_ZSt12__relocate_aIPPK1AS3_SaIS2_EET0_T_S6_S5_RT1_(ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef nonnull align 1 dereferenceable(1) %4) #5 - ret ptr %call -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__relocate_aIPPK1AS3_SaIS2_EET0_T_S6_S5_RT1_(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result, ptr noundef nonnull align 1 dereferenceable(1) %__alloc) #2 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %__alloc.addr = alloca ptr, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - store ptr %__alloc, ptr %__alloc.addr, align 8 - %0 = load ptr, ptr %__first.addr, align 8 - %call = call noundef ptr @_ZSt12__niter_baseIPPK1AET_S4_(ptr noundef %0) #5 - %1 = load ptr, ptr %__last.addr, align 8 - %call1 = call noundef ptr @_ZSt12__niter_baseIPPK1AET_S4_(ptr noundef %1) #5 - %2 = load ptr, ptr %__result.addr, align 8 - %call2 = call noundef ptr @_ZSt12__niter_baseIPPK1AET_S4_(ptr noundef %2) #5 - %3 = load ptr, ptr %__alloc.addr, align 8 - %call3 = call noundef ptr @_ZSt14__relocate_a_1IPK1AS2_ENSt9enable_ifIXsr3std24__is_bitwise_relocatableIT_EE5valueEPS4_E4typeES5_S5_S5_RSaIT0_E(ptr noundef %call, ptr noundef %call1, ptr noundef %call2, ptr noundef nonnull align 1 dereferenceable(1) %3) #5 - ret ptr %call3 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt14__relocate_a_1IPK1AS2_ENSt9enable_ifIXsr3std24__is_bitwise_relocatableIT_EE5valueEPS4_E4typeES5_S5_S5_RSaIT0_E(ptr noundef %__first, ptr noundef %__last, ptr noundef %__result, ptr noundef nonnull align 1 dereferenceable(1) %0) #2 comdat { -entry: - %__first.addr = alloca ptr, align 8 - %__last.addr = alloca ptr, align 8 - %__result.addr = alloca ptr, align 8 - %.addr = alloca ptr, align 8 - %__count = alloca i64, align 8 - store ptr %__first, ptr %__first.addr, align 8 - store ptr %__last, ptr %__last.addr, align 8 - store ptr %__result, ptr %__result.addr, align 8 - store ptr %0, ptr %.addr, align 8 - %1 = load ptr, ptr %__last.addr, align 8 - %2 = load ptr, ptr %__first.addr, align 8 - %sub.ptr.lhs.cast = ptrtoint ptr %1 to i64 - %sub.ptr.rhs.cast = ptrtoint ptr %2 to i64 - %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 - store i64 %sub.ptr.div, ptr %__count, align 8 - %3 = load i64, ptr %__count, align 8 - %cmp = icmp sgt i64 %3, 0 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %4 = load ptr, ptr %__result.addr, align 8 - %5 = load ptr, ptr %__first.addr, align 8 - %6 = load i64, ptr %__count, align 8 - %mul = mul i64 %6, 8 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %4, ptr align 8 %5, i64 %mul, i1 false) - br label %if.end - -if.end: ; preds = %if.then, %entry - %7 = load ptr, ptr %__result.addr, align 8 - %8 = load i64, ptr %__count, align 8 - %add.ptr = getelementptr inbounds ptr, ptr %7, i64 %8 - ret ptr %add.ptr -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZSt12__niter_baseIPPK1AET_S4_(ptr noundef %__it) #2 comdat { -entry: - %__it.addr = alloca ptr, align 8 - store ptr %__it, ptr %__it.addr, align 8 - %0 = load ptr, ptr %__it.addr, align 8 - ret ptr %0 -} - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #12 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(8) %__i) unnamed_addr #7 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %__i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %__i, ptr %__i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %__i.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %_M_current, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEmiEl(ptr noundef nonnull align 8 dereferenceable(8) %this, i64 noundef %__n) #2 comdat align 2 { -entry: - %retval = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8 - %this.addr = alloca ptr, align 8 - %__n.addr = alloca i64, align 8 - %ref.tmp = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store i64 %__n, ptr %__n.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_current, align 8 - %1 = load i64, ptr %__n.addr, align 8 - %idx.neg = sub i64 0, %1 - %add.ptr = getelementptr inbounds ptr, ptr %0, i64 %idx.neg - store ptr %add.ptr, ptr %ref.tmp, align 8 - call void @_ZN9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(8) %retval, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp) #5 - %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %retval, i32 0, i32 0 - %2 = load ptr, ptr %coerce.dive, align 8 - ret ptr %2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPK1ASt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #2 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %this1, i32 0, i32 0 - %0 = load ptr, ptr %_M_current, align 8 - ret ptr %0 -} - -; Function Attrs: noinline uwtable -define internal void @_GLOBAL__sub_I_vector_4.cpp() #3 section ".text.startup" { -entry: - call void @__cxx_global_var_init() - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noinline uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } -attributes #6 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { noinline noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #10 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #13 = { noreturn nounwind } -attributes #14 = { noreturn } -attributes #15 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/virtual-call-simple.cpp.bc b/test_cases_bc/basic_cpp_tests/virtual-call-simple.cpp.bc deleted file mode 100644 index 25e1091c..00000000 --- a/test_cases_bc/basic_cpp_tests/virtual-call-simple.cpp.bc +++ /dev/null @@ -1,156 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/virtual-call-simple.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/virtual-call-simple.cpp" -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-unknown-linux-gnu" - -%class.F = type { %class.K } -%class.K = type { ptr } - -$_ZN1FC2Ev = comdat any - -$_ZN1F8getinputEv = comdat any - -$_ZN1F3fooEPPc = comdat any - -$_ZN1KC2Ev = comdat any - -$_ZN1K5faterEv = comdat any - -$_ZTV1F = comdat any - -$_ZTS1F = comdat any - -$_ZTS1K = comdat any - -$_ZTI1K = comdat any - -$_ZTI1F = comdat any - -$_ZTV1K = comdat any - -@.str = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@_ZTV1F = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1F, ptr @_ZN1K5faterEv] }, comdat, align 8 -@_ZTVN10__cxxabiv120__si_class_type_infoE = external global ptr -@_ZTS1F = linkonce_odr dso_local constant [3 x i8] c"1F\00", comdat, align 1 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1K = linkonce_odr dso_local constant [3 x i8] c"1K\00", comdat, align 1 -@_ZTI1K = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1K }, comdat, align 8 -@_ZTI1F = linkonce_odr dso_local constant { ptr, ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), ptr @_ZTS1F, ptr @_ZTI1K }, comdat, align 8 -@_ZTV1K = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1K, ptr @_ZN1K5faterEv] }, comdat, align 8 -@.str.1 = private unnamed_addr constant [3 x i8] c"fd\00", align 1 -@.str.2 = private unnamed_addr constant [5 x i8] c"fdaf\00", align 1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main() #0 { -entry: - %k = alloca ptr, align 8 - %f = alloca %class.F, align 8 - %a = alloca ptr, align 8 - %q = alloca ptr, align 8 - %p = alloca ptr, align 8 - %r = alloca ptr, align 8 - %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #6 - call void @llvm.memset.p0.i64(ptr align 8 %call, i8 0, i64 8, i1 false) - call void @_ZN1FC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #7 - store ptr %call, ptr %k, align 8 - call void @_ZN1FC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %f) #7 - store ptr %a, ptr %q, align 8 - %call1 = call noundef ptr @_ZN1F8getinputEv(ptr noundef nonnull align 8 dereferenceable(8) %f) - store ptr %call1, ptr %p, align 8 - %0 = load ptr, ptr %k, align 8 - %vtable = load ptr, ptr %0, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %1 = load ptr, ptr %vfn, align 8 - %call2 = call noundef ptr %1(ptr noundef nonnull align 8 dereferenceable(8) %0) - %2 = load ptr, ptr %p, align 8 - %3 = load ptr, ptr %q, align 8 - store ptr %2, ptr %3, align 8 - %4 = load ptr, ptr %q, align 8 - %call3 = call noundef ptr @_ZN1F3fooEPPc(ptr noundef nonnull align 8 dereferenceable(8) %f, ptr noundef %4) - store ptr %call3, ptr %r, align 8 - %5 = load ptr, ptr %r, align 8 - %call4 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef %5) - ret i32 0 -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #1 - -; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1FC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #3 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN1KC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #7 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1F, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN1F8getinputEv(ptr noundef nonnull align 8 dereferenceable(8) %this) #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret ptr @.str.2 -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN1F3fooEPPc(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %q) #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - %t = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %q.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %t, align 8 - %2 = load ptr, ptr %t, align 8 - ret ptr %2 -} - -declare i32 @printf(ptr noundef, ...) #5 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1KC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #3 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1K, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define linkonce_odr dso_local noundef ptr @_ZN1K5faterEv(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret ptr @.str.1 -} - -attributes #0 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #3 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { builtin allocsize(0) } -attributes #7 = { nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/virtual-diamond-inheritance-2.cpp.bc b/test_cases_bc/basic_cpp_tests/virtual-diamond-inheritance-2.cpp.bc deleted file mode 100644 index 330010d4..00000000 --- a/test_cases_bc/basic_cpp_tests/virtual-diamond-inheritance-2.cpp.bc +++ /dev/null @@ -1,532 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/virtual-diamond-inheritance-2.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/virtual-diamond-inheritance-2.cpp" -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-unknown-linux-gnu" - -%class.D = type { %class.B, %class.C } -%class.B = type { %class.A } -%class.A = type { ptr } -%class.C = type { %class.A } - -$_ZN1DC1Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZN1BC2Ev = comdat any - -$_ZN1CC2Ev = comdat any - -$_ZN1A2f1EPi = comdat any - -$_ZN1A2f2EPi = comdat any - -$_ZN1B2g1EPi = comdat any - -$_ZN1B2g2EPi = comdat any - -$_ZN1C2h1EPi = comdat any - -$_ZN1C2h2EPi = comdat any - -$_ZN1D2l1EPi = comdat any - -$_ZN1D2l2EPi = comdat any - -$_ZTV1D = comdat any - -$_ZTT1D = comdat any - -$_ZTC1D0_1B = comdat any - -$_ZTS1B = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -$_ZTI1B = comdat any - -$_ZTC1D8_1C = comdat any - -$_ZTS1C = comdat any - -$_ZTI1C = comdat any - -$_ZTS1D = comdat any - -$_ZTI1D = comdat any - -$_ZTV1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj_f1 = dso_local global i32 0, align 4 -@global_ptr_f1 = dso_local global ptr @global_obj_f1, align 8 -@global_obj_f2 = dso_local global i32 0, align 4 -@global_ptr_f2 = dso_local global ptr @global_obj_f2, align 8 -@global_obj_g1 = dso_local global i32 0, align 4 -@global_ptr_g1 = dso_local global ptr @global_obj_g1, align 8 -@global_obj_g2 = dso_local global i32 0, align 4 -@global_ptr_g2 = dso_local global ptr @global_obj_g2, align 8 -@global_obj_h1 = dso_local global i32 0, align 4 -@global_ptr_h1 = dso_local global ptr @global_obj_h1, align 8 -@global_obj_h2 = dso_local global i32 0, align 4 -@global_ptr_h2 = dso_local global ptr @global_obj_h2, align 8 -@global_obj_l1 = dso_local global i32 0, align 4 -@global_ptr_l1 = dso_local global ptr @global_obj_l1, align 8 -@global_obj_l2 = dso_local global i32 0, align 4 -@global_ptr_l2 = dso_local global ptr @global_obj_l2, align 8 -@_ZTV1D = linkonce_odr dso_local unnamed_addr constant { [11 x ptr], [9 x ptr] } { [11 x ptr] [ptr null, ptr null, ptr null, ptr null, ptr @_ZTI1D, ptr @_ZN1A2f1EPi, ptr @_ZN1A2f2EPi, ptr @_ZN1B2g1EPi, ptr @_ZN1B2g2EPi, ptr @_ZN1D2l1EPi, ptr @_ZN1D2l2EPi], [9 x ptr] [ptr inttoptr (i64 -8 to ptr), ptr inttoptr (i64 -8 to ptr), ptr inttoptr (i64 -8 to ptr), ptr inttoptr (i64 -8 to ptr), ptr @_ZTI1D, ptr null, ptr null, ptr @_ZN1C2h1EPi, ptr @_ZN1C2h2EPi] }, comdat, align 8 -@_ZTT1D = linkonce_odr unnamed_addr constant [7 x ptr] [ptr getelementptr inbounds ({ [11 x ptr], [9 x ptr] }, ptr @_ZTV1D, i32 0, inrange i32 0, i32 5), ptr getelementptr inbounds ({ [9 x ptr] }, ptr @_ZTC1D0_1B, i32 0, inrange i32 0, i32 5), ptr getelementptr inbounds ({ [9 x ptr] }, ptr @_ZTC1D0_1B, i32 0, inrange i32 0, i32 5), ptr getelementptr inbounds ({ [9 x ptr], [6 x ptr] }, ptr @_ZTC1D8_1C, i32 0, inrange i32 0, i32 5), ptr getelementptr inbounds ({ [9 x ptr], [6 x ptr] }, ptr @_ZTC1D8_1C, i32 0, inrange i32 1, i32 4), ptr getelementptr inbounds ({ [11 x ptr], [9 x ptr] }, ptr @_ZTV1D, i32 0, inrange i32 0, i32 5), ptr getelementptr inbounds ({ [11 x ptr], [9 x ptr] }, ptr @_ZTV1D, i32 0, inrange i32 1, i32 5)], comdat, align 8 -@_ZTC1D0_1B = linkonce_odr dso_local unnamed_addr constant { [9 x ptr] } { [9 x ptr] [ptr null, ptr null, ptr null, ptr null, ptr @_ZTI1B, ptr @_ZN1A2f1EPi, ptr @_ZN1A2f2EPi, ptr @_ZN1B2g1EPi, ptr @_ZN1B2g2EPi] }, comdat, align 8 -@_ZTVN10__cxxabiv121__vmi_class_type_infoE = external global ptr -@_ZTS1B = linkonce_odr dso_local constant [3 x i8] c"1B\00", comdat, align 1 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@_ZTI1B = linkonce_odr dso_local constant { ptr, ptr, i32, i32, ptr, i64 } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv121__vmi_class_type_infoE, i64 2), ptr @_ZTS1B, i32 0, i32 1, ptr @_ZTI1A, i64 -10237 }, comdat, align 8 -@_ZTC1D8_1C = linkonce_odr dso_local unnamed_addr constant { [9 x ptr], [6 x ptr] } { [9 x ptr] [ptr inttoptr (i64 -8 to ptr), ptr inttoptr (i64 -8 to ptr), ptr inttoptr (i64 -8 to ptr), ptr null, ptr @_ZTI1C, ptr null, ptr null, ptr @_ZN1C2h1EPi, ptr @_ZN1C2h2EPi], [6 x ptr] [ptr null, ptr null, ptr inttoptr (i64 8 to ptr), ptr @_ZTI1C, ptr @_ZN1A2f1EPi, ptr @_ZN1A2f2EPi] }, comdat, align 8 -@_ZTS1C = linkonce_odr dso_local constant [3 x i8] c"1C\00", comdat, align 1 -@_ZTI1C = linkonce_odr dso_local constant { ptr, ptr, i32, i32, ptr, i64 } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv121__vmi_class_type_infoE, i64 2), ptr @_ZTS1C, i32 0, i32 1, ptr @_ZTI1A, i64 -10237 }, comdat, align 8 -@_ZTS1D = linkonce_odr dso_local constant [3 x i8] c"1D\00", comdat, align 1 -@_ZTI1D = linkonce_odr dso_local constant { ptr, ptr, i32, i32, ptr, i64, ptr, i64 } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv121__vmi_class_type_infoE, i64 2), ptr @_ZTS1D, i32 2, i32 2, ptr @_ZTI1B, i64 2, ptr @_ZTI1C, i64 2050 }, comdat, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [4 x ptr] } { [4 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1A2f1EPi, ptr @_ZN1A2f2EPi] }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr_f1 = alloca ptr, align 8 - %ptr_f2 = alloca ptr, align 8 - %ptr_g1 = alloca ptr, align 8 - %ptr_g2 = alloca ptr, align 8 - %ptr_h1 = alloca ptr, align 8 - %ptr_h2 = alloca ptr, align 8 - %ptr_l1 = alloca ptr, align 8 - %ptr_l2 = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %pc = alloca ptr, align 8 - %pd = alloca ptr, align 8 - %d = alloca %class.D, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj_f1, ptr %ptr_f1, align 8 - store ptr @global_obj_f2, ptr %ptr_f2, align 8 - store ptr @global_obj_g1, ptr %ptr_g1, align 8 - store ptr @global_obj_g2, ptr %ptr_g2, align 8 - store ptr @global_obj_h1, ptr %ptr_h1, align 8 - store ptr @global_obj_h2, ptr %ptr_h2, align 8 - store ptr @global_obj_l1, ptr %ptr_l1, align 8 - store ptr @global_obj_l2, ptr %ptr_l2, align 8 - call void @_ZN1DC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %d) #5 - %0 = icmp eq ptr %d, null - br i1 %0, label %cast.end, label %cast.notnull - -cast.notnull: ; preds = %entry - %vtable = load ptr, ptr %d, align 8 - %vbase.offset.ptr = getelementptr i8, ptr %vtable, i64 -40 - %vbase.offset = load i64, ptr %vbase.offset.ptr, align 8 - %add.ptr = getelementptr inbounds i8, ptr %d, i64 %vbase.offset - br label %cast.end - -cast.end: ; preds = %cast.notnull, %entry - %cast.result = phi ptr [ %add.ptr, %cast.notnull ], [ null, %entry ] - store ptr %cast.result, ptr %pa, align 8 - %1 = load ptr, ptr %pa, align 8 - %2 = load ptr, ptr %ptr_f1, align 8 - %vtable1 = load ptr, ptr %1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable1, i64 0 - %3 = load ptr, ptr %vfn, align 8 - call void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) - %4 = load ptr, ptr %pa, align 8 - %5 = load ptr, ptr %ptr_f2, align 8 - %vtable2 = load ptr, ptr %4, align 8 - %vfn3 = getelementptr inbounds ptr, ptr %vtable2, i64 1 - %6 = load ptr, ptr %vfn3, align 8 - call void %6(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %5) - store ptr %d, ptr %pb, align 8 - %7 = load ptr, ptr %pb, align 8 - %8 = load ptr, ptr %ptr_g1, align 8 - %vtable4 = load ptr, ptr %7, align 8 - %vfn5 = getelementptr inbounds ptr, ptr %vtable4, i64 2 - %9 = load ptr, ptr %vfn5, align 8 - call void %9(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef %8) - %10 = load ptr, ptr %pb, align 8 - %11 = load ptr, ptr %ptr_g2, align 8 - %vtable6 = load ptr, ptr %10, align 8 - %vfn7 = getelementptr inbounds ptr, ptr %vtable6, i64 3 - %12 = load ptr, ptr %vfn7, align 8 - call void %12(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %11) - %13 = icmp eq ptr %d, null - br i1 %13, label %cast.end10, label %cast.notnull8 - -cast.notnull8: ; preds = %cast.end - %add.ptr9 = getelementptr inbounds i8, ptr %d, i64 8 - br label %cast.end10 - -cast.end10: ; preds = %cast.notnull8, %cast.end - %cast.result11 = phi ptr [ %add.ptr9, %cast.notnull8 ], [ null, %cast.end ] - store ptr %cast.result11, ptr %pc, align 8 - %14 = load ptr, ptr %pc, align 8 - %15 = load ptr, ptr %ptr_h1, align 8 - %vtable12 = load ptr, ptr %14, align 8 - %vfn13 = getelementptr inbounds ptr, ptr %vtable12, i64 2 - %16 = load ptr, ptr %vfn13, align 8 - call void %16(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef %15) - %17 = load ptr, ptr %pc, align 8 - %18 = load ptr, ptr %ptr_h2, align 8 - %vtable14 = load ptr, ptr %17, align 8 - %vfn15 = getelementptr inbounds ptr, ptr %vtable14, i64 3 - %19 = load ptr, ptr %vfn15, align 8 - call void %19(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef %18) - store ptr %d, ptr %pd, align 8 - %20 = load ptr, ptr %pd, align 8 - %21 = load ptr, ptr %ptr_l1, align 8 - %vtable16 = load ptr, ptr %20, align 8 - %vfn17 = getelementptr inbounds ptr, ptr %vtable16, i64 4 - %22 = load ptr, ptr %vfn17, align 8 - call void %22(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef %21) - %23 = load ptr, ptr %pd, align 8 - %24 = load ptr, ptr %ptr_l2, align 8 - %vtable18 = load ptr, ptr %23, align 8 - %vfn19 = getelementptr inbounds ptr, ptr %vtable18, i64 5 - %25 = load ptr, ptr %vfn19, align 8 - call void %25(ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef %24) - ret i32 0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1DC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #5 - call void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1, ptr noundef getelementptr inbounds ([7 x ptr], ptr @_ZTT1D, i64 0, i64 1)) #5 - %0 = getelementptr inbounds i8, ptr %this1, i64 8 - call void @_ZN1CC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef getelementptr inbounds ([7 x ptr], ptr @_ZTT1D, i64 0, i64 3)) #5 - store ptr getelementptr inbounds ({ [11 x ptr], [9 x ptr] }, ptr @_ZTV1D, i32 0, inrange i32 0, i32 5), ptr %this1, align 8 - store ptr getelementptr inbounds ({ [11 x ptr], [9 x ptr] }, ptr @_ZTV1D, i32 0, inrange i32 0, i32 5), ptr %this1, align 8 - %add.ptr = getelementptr inbounds i8, ptr %this1, i64 8 - store ptr getelementptr inbounds ({ [11 x ptr], [9 x ptr] }, ptr @_ZTV1D, i32 0, inrange i32 1, i32 5), ptr %add.ptr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [4 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %vtt) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %vtt.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %vtt, ptr %vtt.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %vtt2 = load ptr, ptr %vtt.addr, align 8 - %0 = load ptr, ptr %vtt2, align 8 - store ptr %0, ptr %this1, align 8 - %1 = getelementptr inbounds ptr, ptr %vtt2, i64 1 - %2 = load ptr, ptr %1, align 8 - %vtable = load ptr, ptr %this1, align 8 - %vbase.offset.ptr = getelementptr i8, ptr %vtable, i64 -40 - %vbase.offset = load i64, ptr %vbase.offset.ptr, align 8 - %add.ptr = getelementptr inbounds i8, ptr %this1, i64 %vbase.offset - store ptr %2, ptr %add.ptr, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1CC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %vtt) unnamed_addr #4 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %vtt.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %vtt, ptr %vtt.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %vtt2 = load ptr, ptr %vtt.addr, align 8 - %0 = load ptr, ptr %vtt2, align 8 - store ptr %0, ptr %this1, align 8 - %1 = getelementptr inbounds ptr, ptr %vtt2, i64 1 - %2 = load ptr, ptr %1, align 8 - %vtable = load ptr, ptr %this1, align 8 - %vbase.offset.ptr = getelementptr i8, ptr %vtable, i64 -40 - %vbase.offset = load i64, ptr %vbase.offset.ptr, align 8 - %add.ptr = getelementptr inbounds i8, ptr %this1, i64 %vbase.offset - store ptr %2, ptr %add.ptr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A2f1EPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_f1, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A2f2EPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_f2, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B2g1EPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_g1, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B2g2EPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_g2, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1C2h1EPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_h1, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1C2h2EPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_h2, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1D2l1EPi(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_l1, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1D2l2EPi(ptr noundef nonnull align 8 dereferenceable(16) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_l2, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/virtual-inheritance-1.cpp.bc b/test_cases_bc/basic_cpp_tests/virtual-inheritance-1.cpp.bc deleted file mode 100644 index 6af1332a..00000000 --- a/test_cases_bc/basic_cpp_tests/virtual-inheritance-1.cpp.bc +++ /dev/null @@ -1,266 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/virtual-inheritance-1.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/virtual-inheritance-1.cpp" -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-unknown-linux-gnu" - -$_ZN1BC1Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZN1A1fEPi = comdat any - -$_ZTV1B = comdat any - -$_ZTT1B = comdat any - -$_ZTS1B = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -$_ZTI1B = comdat any - -$_ZTV1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj = dso_local global i32 0, align 4 -@global_ptr = dso_local global ptr @global_obj, align 8 -@_ZTV1B = linkonce_odr dso_local unnamed_addr constant { [5 x ptr] } { [5 x ptr] [ptr null, ptr null, ptr null, ptr @_ZTI1B, ptr @_ZN1A1fEPi] }, comdat, align 8 -@_ZTT1B = linkonce_odr unnamed_addr constant [2 x ptr] [ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 4), ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 4)], comdat, align 8 -@_ZTVN10__cxxabiv121__vmi_class_type_infoE = external global ptr -@_ZTS1B = linkonce_odr dso_local constant [3 x i8] c"1B\00", comdat, align 1 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@_ZTI1B = linkonce_odr dso_local constant { ptr, ptr, i32, i32, ptr, i64 } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv121__vmi_class_type_infoE, i64 2), ptr @_ZTS1B, i32 0, i32 1, ptr @_ZTI1A, i64 -8189 }, comdat, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1A1fEPi] }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %ptr = alloca ptr, align 8 - %pb = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj, ptr %ptr, align 8 - %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #6 - call void @_ZN1BC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #7 - %0 = icmp eq ptr %call, null - br i1 %0, label %cast.end, label %cast.notnull - -cast.notnull: ; preds = %entry - %vtable = load ptr, ptr %call, align 8 - %vbase.offset.ptr = getelementptr i8, ptr %vtable, i64 -32 - %vbase.offset = load i64, ptr %vbase.offset.ptr, align 8 - %add.ptr = getelementptr inbounds i8, ptr %call, i64 %vbase.offset - br label %cast.end - -cast.end: ; preds = %cast.notnull, %entry - %cast.result = phi ptr [ %add.ptr, %cast.notnull ], [ null, %entry ] - store ptr %cast.result, ptr %pb, align 8 - %1 = load ptr, ptr %pb, align 8 - %2 = load ptr, ptr %ptr, align 8 - %vtable1 = load ptr, ptr %1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable1, i64 0 - %3 = load ptr, ptr %vfn, align 8 - call void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) - ret i32 0 -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #7 - store ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 4), ptr %this1, align 8 - store ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 4), ptr %this1, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { builtin allocsize(0) } -attributes #7 = { nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/virtual-inheritance-2.cpp.bc b/test_cases_bc/basic_cpp_tests/virtual-inheritance-2.cpp.bc deleted file mode 100644 index ae07e82d..00000000 --- a/test_cases_bc/basic_cpp_tests/virtual-inheritance-2.cpp.bc +++ /dev/null @@ -1,310 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/virtual-inheritance-2.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/virtual-inheritance-2.cpp" -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-unknown-linux-gnu" - -$_ZN1AC2Ev = comdat any - -$_ZN1BC1Ev = comdat any - -$_ZN1A1fEPi = comdat any - -$_ZN1B1fEPi = comdat any - -$_ZTv0_n24_N1B1fEPi = comdat any - -$_ZTV1A = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -$_ZTV1B = comdat any - -$_ZTT1B = comdat any - -$_ZTS1B = comdat any - -$_ZTI1B = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_obj_a = dso_local global i32 0, align 4 -@global_ptr_a = dso_local global ptr @global_obj_a, align 8 -@global_obj_b = dso_local global i32 0, align 4 -@global_ptr_b = dso_local global ptr @global_obj_b, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1A1fEPi] }, comdat, align 8 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@_ZTV1B = linkonce_odr dso_local unnamed_addr constant { [5 x ptr] } { [5 x ptr] [ptr null, ptr null, ptr null, ptr @_ZTI1B, ptr @_ZN1B1fEPi] }, comdat, align 8 -@_ZTT1B = linkonce_odr unnamed_addr constant [2 x ptr] [ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 4), ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 4)], comdat, align 8 -@_ZTVN10__cxxabiv121__vmi_class_type_infoE = external global ptr -@_ZTS1B = linkonce_odr dso_local constant [3 x i8] c"1B\00", comdat, align 1 -@_ZTI1B = linkonce_odr dso_local constant { ptr, ptr, i32, i32, ptr, i64 } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv121__vmi_class_type_infoE, i64 2), ptr @_ZTS1B, i32 0, i32 1, ptr @_ZTI1A, i64 -8189 }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %i = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %j = alloca ptr, align 8 - %pb = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_obj_a, ptr %i, align 8 - %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #7 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #8 - store ptr %call, ptr %pa, align 8 - %0 = load ptr, ptr %pa, align 8 - %1 = load ptr, ptr %i, align 8 - %vtable = load ptr, ptr %0, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable, i64 0 - %2 = load ptr, ptr %vfn, align 8 - call void %2(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %1) - store ptr @global_obj_b, ptr %j, align 8 - %call1 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #7 - call void @_ZN1BC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %call1) #8 - store ptr %call1, ptr %pb, align 8 - %3 = load ptr, ptr %pb, align 8 - %4 = load ptr, ptr %j, align 8 - %vtable2 = load ptr, ptr %3, align 8 - %vfn3 = getelementptr inbounds ptr, ptr %vtable2, i64 0 - %5 = load ptr, ptr %vfn3, align 8 - call void %5(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4) - ret i32 0 -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #8 - store ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 4), ptr %this1, align 8 - store ptr getelementptr inbounds ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 4), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_a, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_ptr_b, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_ptr_a, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_ptr_b, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZTv0_n24_N1B1fEPi(ptr noundef %this, ptr noundef %i) unnamed_addr #6 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %this1, align 8 - %1 = getelementptr inbounds i8, ptr %0, i64 -24 - %2 = load i64, ptr %1, align 8 - %3 = getelementptr inbounds i8, ptr %this1, i64 %2 - %4 = load ptr, ptr %i.addr, align 8 - tail call void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4) - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { builtin allocsize(0) } -attributes #8 = { nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/basic_cpp_tests/virtual-inheritance-3.cpp.bc b/test_cases_bc/basic_cpp_tests/virtual-inheritance-3.cpp.bc deleted file mode 100644 index c9fbf12e..00000000 --- a/test_cases_bc/basic_cpp_tests/virtual-inheritance-3.cpp.bc +++ /dev/null @@ -1,375 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/basic_cpp_tests/virtual-inheritance-3.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/basic_cpp_tests/virtual-inheritance-3.cpp" -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-unknown-linux-gnu" - -$_ZN1BC1Ev = comdat any - -$_ZN1AC2Ev = comdat any - -$_ZN1B1fEPi = comdat any - -$_ZN1B1gEPf = comdat any - -$_ZN1A1fEPi = comdat any - -$_ZN1A1gEPf = comdat any - -$_ZTv0_n24_N1B1fEPi = comdat any - -$_ZTv0_n32_N1B1gEPf = comdat any - -$_ZTV1B = comdat any - -$_ZTT1B = comdat any - -$_ZTS1B = comdat any - -$_ZTS1A = comdat any - -$_ZTI1A = comdat any - -$_ZTI1B = comdat any - -$_ZTV1A = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 -@.str.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -@.str.2 = private unnamed_addr constant [25 x i8] c"Press ENTER to continue\0A\00", align 1 -@global_int_obj = dso_local global i32 0, align 4 -@global_int_ptr = dso_local global ptr @global_int_obj, align 8 -@global_float_obj = dso_local global float 0.000000e+00, align 4 -@global_float_ptr = dso_local global ptr @global_float_obj, align 8 -@_ZTV1B = linkonce_odr dso_local unnamed_addr constant { [7 x ptr] } { [7 x ptr] [ptr null, ptr null, ptr null, ptr null, ptr @_ZTI1B, ptr @_ZN1B1fEPi, ptr @_ZN1B1gEPf] }, comdat, align 8 -@_ZTT1B = linkonce_odr unnamed_addr constant [2 x ptr] [ptr getelementptr inbounds ({ [7 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 5), ptr getelementptr inbounds ({ [7 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 5)], comdat, align 8 -@_ZTVN10__cxxabiv121__vmi_class_type_infoE = external global ptr -@_ZTS1B = linkonce_odr dso_local constant [3 x i8] c"1B\00", comdat, align 1 -@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr -@_ZTS1A = linkonce_odr dso_local constant [3 x i8] c"1A\00", comdat, align 1 -@_ZTI1A = linkonce_odr dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8 -@_ZTI1B = linkonce_odr dso_local constant { ptr, ptr, i32, i32, ptr, i64 } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv121__vmi_class_type_infoE, i64 2), ptr @_ZTS1B, i32 0, i32 1, ptr @_ZTI1A, i64 -10237 }, comdat, align 8 -@_ZTV1A = linkonce_odr dso_local unnamed_addr constant { [4 x ptr] } { [4 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1A1fEPi, ptr @_ZN1A1gEPf] }, comdat, align 8 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9MUSTALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -declare i32 @printf(ptr noundef, ...) #1 - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z12PARTIALALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z8MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z7NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z21EXPECTEDFAIL_MAYALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z20EXPECTEDFAIL_NOALIASPvS_(ptr noundef %p, ptr noundef %q) #0 { -entry: - %p.addr = alloca ptr, align 8 - %q.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - store ptr %q, ptr %q.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z9RC_ACCESSii(i32 noundef %id, i32 noundef %flags) #0 { -entry: - %id.addr = alloca i32, align 4 - %flags.addr = alloca i32, align 4 - store i32 %id, ptr %id.addr, align 4 - store i32 %flags, ptr %flags.addr, align 4 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str) - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10CXT_THREADiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z10TCT_ACCESSiPc(i32 noundef %thdid, ptr noundef %cxt) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z15INTERLEV_ACCESSiPcS_(i32 noundef %thdid, ptr noundef %cxt, ptr noundef %lev) #2 { -entry: - %thdid.addr = alloca i32, align 4 - %cxt.addr = alloca ptr, align 8 - %lev.addr = alloca ptr, align 8 - store i32 %thdid, ptr %thdid.addr, align 4 - store ptr %cxt, ptr %cxt.addr, align 8 - store ptr %lev, ptr %lev.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z4LOCKPc(ptr noundef %lockname) #2 { -entry: - %lockname.addr = alloca ptr, align 8 - store ptr %lockname, ptr %lockname.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define dso_local void @_Z5PAUSEPc(ptr noundef %str) #0 { -entry: - %str.addr = alloca ptr, align 8 - store ptr %str, ptr %str.addr, align 8 - %0 = load ptr, ptr %str.addr, align 8 - %call = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %0) - %call1 = call i32 (ptr, ...) @printf(ptr noundef @.str.2) - %call2 = call i32 @getchar() - ret void -} - -declare i32 @getchar() #1 - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main(i32 noundef %argc, ptr noundef %argv) #3 { -entry: - %retval = alloca i32, align 4 - %argc.addr = alloca i32, align 4 - %argv.addr = alloca ptr, align 8 - %i = alloca ptr, align 8 - %j = alloca ptr, align 8 - %p = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - store i32 %argc, ptr %argc.addr, align 4 - store ptr %argv, ptr %argv.addr, align 8 - store ptr @global_int_obj, ptr %i, align 8 - store ptr @global_float_obj, ptr %j, align 8 - %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 8) #7 - call void @_ZN1BC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %call) #8 - %0 = icmp eq ptr %call, null - br i1 %0, label %cast.end, label %cast.notnull - -cast.notnull: ; preds = %entry - %vtable = load ptr, ptr %call, align 8 - %vbase.offset.ptr = getelementptr i8, ptr %vtable, i64 -40 - %vbase.offset = load i64, ptr %vbase.offset.ptr, align 8 - %add.ptr = getelementptr inbounds i8, ptr %call, i64 %vbase.offset - br label %cast.end - -cast.end: ; preds = %cast.notnull, %entry - %cast.result = phi ptr [ %add.ptr, %cast.notnull ], [ null, %entry ] - store ptr %cast.result, ptr %p, align 8 - %1 = load ptr, ptr %p, align 8 - %2 = load ptr, ptr %i, align 8 - %vtable1 = load ptr, ptr %1, align 8 - %vfn = getelementptr inbounds ptr, ptr %vtable1, i64 0 - %3 = load ptr, ptr %vfn, align 8 - call void %3(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %2) - %4 = load ptr, ptr %p, align 8 - %5 = load ptr, ptr %j, align 8 - %vtable2 = load ptr, ptr %4, align 8 - %vfn3 = getelementptr inbounds ptr, ptr %vtable2, i64 1 - %6 = load ptr, ptr %vfn3, align 8 - call void %6(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %5) - ret i32 0 -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #4 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1BC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - call void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this1) #8 - store ptr getelementptr inbounds ({ [7 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 5), ptr %this1, align 8 - store ptr getelementptr inbounds ({ [7 x ptr] }, ptr @_ZTV1B, i32 0, inrange i32 0, i32 5), ptr %this1, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr #5 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - store ptr getelementptr inbounds ({ [4 x ptr] }, ptr @_ZTV1A, i32 0, inrange i32 0, i32 2), ptr %this1, align 8 - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_int_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_float_ptr, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1B1gEPf(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %j) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %j.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %j, ptr %j.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_int_ptr, align 8 - %1 = load ptr, ptr %j.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_float_ptr, align 8 - %3 = load ptr, ptr %j.addr, align 8 - call void @_Z9MUSTALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %i) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_int_ptr, align 8 - %1 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_float_ptr, align 8 - %3 = load ptr, ptr %i.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: mustprogress noinline optnone uwtable -define linkonce_odr dso_local void @_ZN1A1gEPf(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %j) unnamed_addr #0 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %j.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %j, ptr %j.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr @global_int_ptr, align 8 - %1 = load ptr, ptr %j.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr @global_float_ptr, align 8 - %3 = load ptr, ptr %j.addr, align 8 - call void @_Z7NOALIASPvS_(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZTv0_n24_N1B1fEPi(ptr noundef %this, ptr noundef %i) unnamed_addr #6 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %i.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %i, ptr %i.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %this1, align 8 - %1 = getelementptr inbounds i8, ptr %0, i64 -24 - %2 = load i64, ptr %1, align 8 - %3 = getelementptr inbounds i8, ptr %this1, i64 %2 - %4 = load ptr, ptr %i.addr, align 8 - tail call void @_ZN1B1fEPi(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4) - ret void -} - -; Function Attrs: noinline optnone uwtable -define linkonce_odr dso_local void @_ZTv0_n32_N1B1gEPf(ptr noundef %this, ptr noundef %j) unnamed_addr #6 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - %j.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - store ptr %j, ptr %j.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - %0 = load ptr, ptr %this1, align 8 - %1 = getelementptr inbounds i8, ptr %0, i64 -32 - %2 = load i64, ptr %1, align 8 - %3 = getelementptr inbounds i8, ptr %this1, i64 %2 - %4 = load ptr, ptr %j.addr, align 8 - tail call void @_ZN1B1gEPf(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4) - ret void -} - -attributes #0 = { mustprogress noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { noinline optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { builtin allocsize(0) } -attributes #8 = { nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/cond-swap.c.bc b/test_cases_bc/complex_tests/cond-swap.c.bc deleted file mode 100644 index 70cc2a1d..00000000 --- a/test_cases_bc/complex_tests/cond-swap.c.bc +++ /dev/null @@ -1,71 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/cond-swap.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/cond-swap.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b, i32 noundef %flag) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %flag.addr = alloca i32, align 4 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - store i32 %flag, ptr %flag.addr, align 4 - %0 = load i32, ptr %flag.addr, align 4 - %cmp = icmp eq i32 %0, 1 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %1 = load ptr, ptr %a.addr, align 8 - %2 = load ptr, ptr %1, align 8 - store ptr %2, ptr %c, align 8 - %3 = load ptr, ptr %b.addr, align 8 - %4 = load ptr, ptr %3, align 8 - %5 = load ptr, ptr %a.addr, align 8 - store ptr %4, ptr %5, align 8 - %6 = load ptr, ptr %c, align 8 - %7 = load ptr, ptr %b.addr, align 8 - store ptr %6, ptr %7, align 8 - br label %if.end - -if.end: ; preds = %if.then, %entry - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %b = alloca [20 x i8], align 16 - %a = alloca [20 x i8], align 16 - %p1 = alloca ptr, align 8 - %p2 = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - store ptr %arraydecay, ptr %p1, align 8 - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - store ptr %arraydecay1, ptr %p2, align 8 - call void @swap(ptr noundef %p1, ptr noundef %p2, i32 noundef 1) - call void @swap(ptr noundef %p1, ptr noundef %p2, i32 noundef 1) - call void @swap(ptr noundef %p1, ptr noundef %p2, i32 noundef 1) - call void @swap(ptr noundef %p1, ptr noundef %p2, i32 noundef 0) - %0 = load ptr, ptr %p2, align 8 - store ptr %0, ptr %pa, align 8 - %1 = load ptr, ptr %p1, align 8 - store ptr %1, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap-array.c.bc b/test_cases_bc/complex_tests/swap-array.c.bc deleted file mode 100644 index 6c198b2d..00000000 --- a/test_cases_bc/complex_tests/swap-array.c.bc +++ /dev/null @@ -1,63 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap-array.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap-array.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %a.addr, align 8 - store ptr %3, ptr %4, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %b.addr, align 8 - store ptr %5, ptr %6, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %b = alloca [20 x i8], align 16 - %a = alloca [20 x i8], align 16 - %p1 = alloca [2 x ptr], align 16 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - %arrayidx = getelementptr inbounds [2 x ptr], ptr %p1, i64 0, i64 0 - store ptr %arraydecay, ptr %arrayidx, align 16 - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - %arrayidx2 = getelementptr inbounds [2 x ptr], ptr %p1, i64 0, i64 1 - store ptr %arraydecay1, ptr %arrayidx2, align 8 - %arrayidx3 = getelementptr inbounds [2 x ptr], ptr %p1, i64 0, i64 0 - %arrayidx4 = getelementptr inbounds [2 x ptr], ptr %p1, i64 0, i64 1 - call void @swap(ptr noundef %arrayidx3, ptr noundef %arrayidx4) - %arrayidx5 = getelementptr inbounds [2 x ptr], ptr %p1, i64 0, i64 1 - %0 = load ptr, ptr %arrayidx5, align 8 - store ptr %0, ptr %pa, align 8 - %arrayidx6 = getelementptr inbounds [2 x ptr], ptr %p1, i64 0, i64 0 - %1 = load ptr, ptr %arrayidx6, align 16 - store ptr %1, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap-funcptr.c.bc b/test_cases_bc/complex_tests/swap-funcptr.c.bc deleted file mode 100644 index f59ceaa3..00000000 --- a/test_cases_bc/complex_tests/swap-funcptr.c.bc +++ /dev/null @@ -1,62 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap-funcptr.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap-funcptr.c" -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-unknown-linux-gnu" - -@p = dso_local global ptr null, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %a.addr, align 8 - store ptr %3, ptr %4, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %b.addr, align 8 - store ptr %5, ptr %6, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %p1 = alloca ptr, align 8 - %p2 = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %b = alloca [20 x i8], align 16 - %a = alloca [20 x i8], align 16 - %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - store ptr %arraydecay, ptr %p1, align 8 - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - store ptr %arraydecay1, ptr %p2, align 8 - store ptr @swap, ptr @p, align 8 - %0 = load ptr, ptr @p, align 8 - call void %0(ptr noundef %p1, ptr noundef %p2) - %1 = load ptr, ptr %p2, align 8 - store ptr %1, ptr %pa, align 8 - %2 = load ptr, ptr %p1, align 8 - store ptr %2, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap-funcptr1.c.bc b/test_cases_bc/complex_tests/swap-funcptr1.c.bc deleted file mode 100644 index 699f3e4d..00000000 --- a/test_cases_bc/complex_tests/swap-funcptr1.c.bc +++ /dev/null @@ -1,72 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap-funcptr1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap-funcptr1.c" -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-unknown-linux-gnu" - -@p = dso_local global ptr null, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %a.addr, align 8 - store ptr %3, ptr %4, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %b.addr, align 8 - store ptr %5, ptr %6, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @registerhandle(ptr noundef %f) #0 { -entry: - %f.addr = alloca ptr, align 8 - store ptr %f, ptr %f.addr, align 8 - %0 = load ptr, ptr %f.addr, align 8 - store ptr %0, ptr @p, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %p1 = alloca ptr, align 8 - %p2 = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %b = alloca [20 x i8], align 16 - %a = alloca [20 x i8], align 16 - %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - store ptr %arraydecay, ptr %p1, align 8 - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - store ptr %arraydecay1, ptr %p2, align 8 - call void @registerhandle(ptr noundef @swap) - %0 = load ptr, ptr @p, align 8 - call void %0(ptr noundef %p1, ptr noundef %p2) - %1 = load ptr, ptr %p2, align 8 - store ptr %1, ptr %pa, align 8 - %2 = load ptr, ptr %p1, align 8 - store ptr %2, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap-funcptr2.c.bc b/test_cases_bc/complex_tests/swap-funcptr2.c.bc deleted file mode 100644 index 33060114..00000000 --- a/test_cases_bc/complex_tests/swap-funcptr2.c.bc +++ /dev/null @@ -1,72 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap-funcptr2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap-funcptr2.c" -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-unknown-linux-gnu" - -@p = dso_local global ptr null, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %a.addr, align 8 - store ptr %3, ptr %4, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %b.addr, align 8 - store ptr %5, ptr %6, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @registerhandle(ptr noundef %f) #0 { -entry: - %f.addr = alloca ptr, align 8 - store ptr %f, ptr %f.addr, align 8 - %0 = load ptr, ptr %f.addr, align 8 - store ptr %0, ptr @p, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %p1 = alloca ptr, align 8 - %p2 = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %b = alloca [20 x i8], align 16 - %a = alloca [20 x i8], align 16 - %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - store ptr %arraydecay, ptr %p1, align 8 - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - store ptr %arraydecay1, ptr %p2, align 8 - call void @registerhandle(ptr noundef @swap) - %0 = load ptr, ptr @p, align 8 - call void %0(ptr noundef %p1, ptr noundef %p2) - %1 = load ptr, ptr %p2, align 8 - store ptr %1, ptr %pa, align 8 - %2 = load ptr, ptr %p1, align 8 - store ptr %2, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap-global.c.bc b/test_cases_bc/complex_tests/swap-global.c.bc deleted file mode 100644 index 0718c40a..00000000 --- a/test_cases_bc/complex_tests/swap-global.c.bc +++ /dev/null @@ -1,59 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap-global.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap-global.c" -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-unknown-linux-gnu" - -@p1 = dso_local global ptr null, align 8 -@p2 = dso_local global ptr null, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %a.addr, align 8 - store ptr %3, ptr %4, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %b.addr, align 8 - store ptr %5, ptr %6, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %b = alloca [20 x i8], align 16 - %a = alloca [20 x i8], align 16 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - store ptr %arraydecay, ptr @p1, align 8 - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - store ptr %arraydecay1, ptr @p2, align 8 - call void @swap(ptr noundef @p1, ptr noundef @p2) - %0 = load ptr, ptr @p1, align 8 - store ptr %0, ptr %pa, align 8 - %1 = load ptr, ptr @p2, align 8 - store ptr %1, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap-global1.c.bc b/test_cases_bc/complex_tests/swap-global1.c.bc deleted file mode 100644 index 6655fd9d..00000000 --- a/test_cases_bc/complex_tests/swap-global1.c.bc +++ /dev/null @@ -1,51 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap-global1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap-global1.c" -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-unknown-linux-gnu" - -@p1 = dso_local global ptr null, align 8 -@p2 = dso_local global ptr null, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap() #0 { -entry: - %c = alloca ptr, align 8 - %0 = load ptr, ptr @p1, align 8 - store ptr %0, ptr %c, align 8 - %1 = load ptr, ptr @p2, align 8 - store ptr %1, ptr @p1, align 8 - %2 = load ptr, ptr %c, align 8 - store ptr %2, ptr @p2, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %b = alloca [20 x i8], align 16 - %a = alloca [20 x i8], align 16 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - store ptr %arraydecay, ptr @p1, align 8 - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - store ptr %arraydecay1, ptr @p2, align 8 - call void @swap() - %0 = load ptr, ptr @p1, align 8 - store ptr %0, ptr %pa, align 8 - %1 = load ptr, ptr @p2, align 8 - store ptr %1, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap-global2.c.bc b/test_cases_bc/complex_tests/swap-global2.c.bc deleted file mode 100644 index 1ef0d240..00000000 --- a/test_cases_bc/complex_tests/swap-global2.c.bc +++ /dev/null @@ -1,58 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap-global2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap-global2.c" -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-unknown-linux-gnu" - -@p1 = dso_local global ptr null, align 8 -@p2 = dso_local global ptr null, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap() #0 { -entry: - %c = alloca ptr, align 8 - %0 = load ptr, ptr @p1, align 8 - store ptr %0, ptr %c, align 8 - %1 = load ptr, ptr @p2, align 8 - store ptr %1, ptr @p1, align 8 - %2 = load ptr, ptr %c, align 8 - store ptr %2, ptr @p2, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @f() #0 { -entry: - call void @swap() - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %b = alloca [20 x i8], align 16 - %a = alloca [20 x i8], align 16 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - store ptr %arraydecay, ptr @p1, align 8 - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - store ptr %arraydecay1, ptr @p2, align 8 - call void @f() - %0 = load ptr, ptr @p1, align 8 - store ptr %0, ptr %pa, align 8 - %1 = load ptr, ptr @p2, align 8 - store ptr %1, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap-heap.c.bc b/test_cases_bc/complex_tests/swap-heap.c.bc deleted file mode 100644 index 95edf149..00000000 --- a/test_cases_bc/complex_tests/swap-heap.c.bc +++ /dev/null @@ -1,84 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap-heap.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap-heap.c" -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-unknown-linux-gnu" - -@ga = dso_local global [20 x i8] zeroinitializer, align 16 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %a.addr, align 8 - store ptr %3, ptr %4, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %b.addr, align 8 - store ptr %5, ptr %6, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @mymalloc(i32 noundef %i) #0 { -entry: - %i.addr = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - %0 = load i32, ptr %i.addr, align 4 - %call = call ptr @malloc(i32 noundef %0) - ret ptr %call -} - -declare ptr @malloc(i32 noundef) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @my_malloc(i32 noundef %i) #0 { -entry: - %i.addr = alloca i32, align 4 - %p = alloca ptr, align 8 - store i32 %i, ptr %i.addr, align 4 - %0 = load i32, ptr %i.addr, align 4 - %call = call ptr @mymalloc(i32 noundef %0) - store ptr %call, ptr %p, align 8 - %1 = load ptr, ptr %p, align 8 - ret ptr %1 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %p1 = alloca ptr, align 8 - %p2 = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %call = call ptr @my_malloc(i32 noundef 10) - store ptr %call, ptr %p1, align 8 - %call1 = call ptr @my_malloc(i32 noundef 20) - store ptr %call1, ptr %p2, align 8 - call void @swap(ptr noundef %p1, ptr noundef %p2) - %0 = load ptr, ptr %p2, align 8 - store ptr %0, ptr %pa, align 8 - %1 = load ptr, ptr %p1, align 8 - store ptr %1, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap-heap1.c.bc b/test_cases_bc/complex_tests/swap-heap1.c.bc deleted file mode 100644 index 74bca53e..00000000 --- a/test_cases_bc/complex_tests/swap-heap1.c.bc +++ /dev/null @@ -1,87 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap-heap1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap-heap1.c" -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-unknown-linux-gnu" - -@ga = dso_local global [20 x i8] zeroinitializer, align 16 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %a.addr, align 8 - store ptr %3, ptr %4, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %b.addr, align 8 - store ptr %5, ptr %6, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @mymalloc(i32 noundef %i) #0 { -entry: - %i.addr = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - %0 = load i32, ptr %i.addr, align 4 - %call = call ptr @malloc(i32 noundef %0) - ret ptr %call -} - -declare ptr @malloc(i32 noundef) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @my_malloc(i32 noundef %i, ptr noundef %ret) #0 { -entry: - %i.addr = alloca i32, align 4 - %ret.addr = alloca ptr, align 8 - %p = alloca ptr, align 8 - store i32 %i, ptr %i.addr, align 4 - store ptr %ret, ptr %ret.addr, align 8 - %0 = load i32, ptr %i.addr, align 4 - %call = call ptr @mymalloc(i32 noundef %0) - store ptr %call, ptr %p, align 8 - %1 = load ptr, ptr %p, align 8 - %2 = load ptr, ptr %ret.addr, align 8 - store ptr %1, ptr %2, align 8 - %3 = load ptr, ptr %p, align 8 - ret ptr %3 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %p1 = alloca ptr, align 8 - %p2 = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %call = call ptr @my_malloc(i32 noundef 10, ptr noundef %p1) - %call1 = call ptr @my_malloc(i32 noundef 20, ptr noundef %p2) - call void @swap(ptr noundef %p1, ptr noundef %p2) - %0 = load ptr, ptr %p2, align 8 - store ptr %0, ptr %pa, align 8 - %1 = load ptr, ptr %p1, align 8 - store ptr %1, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap-heap2.c.bc b/test_cases_bc/complex_tests/swap-heap2.c.bc deleted file mode 100644 index 08834159..00000000 --- a/test_cases_bc/complex_tests/swap-heap2.c.bc +++ /dev/null @@ -1,91 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap-heap2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap-heap2.c" -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-unknown-linux-gnu" - -@ga = dso_local global [20 x i8] zeroinitializer, align 16 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %a.addr, align 8 - store ptr %3, ptr %4, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %b.addr, align 8 - store ptr %5, ptr %6, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @mymalloc(i32 noundef %i) #0 { -entry: - %i.addr = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - %0 = load i32, ptr %i.addr, align 4 - %call = call ptr @malloc(i32 noundef %0) - ret ptr %call -} - -declare ptr @malloc(i32 noundef) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @my_malloc(i32 noundef %i, ptr noundef %ret) #0 { -entry: - %i.addr = alloca i32, align 4 - %ret.addr = alloca ptr, align 8 - %p = alloca ptr, align 8 - %g = alloca ptr, align 8 - store i32 %i, ptr %i.addr, align 4 - store ptr %ret, ptr %ret.addr, align 8 - store ptr @ga, ptr %g, align 8 - %0 = load i32, ptr %i.addr, align 4 - %call = call ptr @mymalloc(i32 noundef %0) - store ptr %call, ptr %p, align 8 - call void @swap(ptr noundef %p, ptr noundef %g) - %1 = load ptr, ptr %g, align 8 - %2 = load ptr, ptr %ret.addr, align 8 - store ptr %1, ptr %2, align 8 - %3 = load ptr, ptr %p, align 8 - ret ptr %3 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %p1 = alloca ptr, align 8 - %p2 = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %call = call ptr @my_malloc(i32 noundef 10, ptr noundef %p1) - store ptr %call, ptr %p2, align 8 - %call1 = call ptr @my_malloc(i32 noundef 20, ptr noundef %p1) - call void @swap(ptr noundef %p1, ptr noundef %p2) - %0 = load ptr, ptr %p2, align 8 - store ptr %0, ptr %pa, align 8 - %1 = load ptr, ptr %p1, align 8 - store ptr %1, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap-heap3.c.bc b/test_cases_bc/complex_tests/swap-heap3.c.bc deleted file mode 100644 index 38157dc9..00000000 --- a/test_cases_bc/complex_tests/swap-heap3.c.bc +++ /dev/null @@ -1,91 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap-heap3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap-heap3.c" -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-unknown-linux-gnu" - -@ga = dso_local global [20 x i8] zeroinitializer, align 16 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %a.addr, align 8 - store ptr %3, ptr %4, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %b.addr, align 8 - store ptr %5, ptr %6, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @mymalloc(i32 noundef %i) #0 { -entry: - %i.addr = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - %0 = load i32, ptr %i.addr, align 4 - %call = call ptr @malloc(i32 noundef %0) - ret ptr %call -} - -declare ptr @malloc(i32 noundef) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @my_malloc(i32 noundef %i, ptr noundef %ret) #0 { -entry: - %i.addr = alloca i32, align 4 - %ret.addr = alloca ptr, align 8 - %p = alloca ptr, align 8 - %g = alloca ptr, align 8 - store i32 %i, ptr %i.addr, align 4 - store ptr %ret, ptr %ret.addr, align 8 - store ptr @ga, ptr %g, align 8 - %0 = load i32, ptr %i.addr, align 4 - %call = call ptr @mymalloc(i32 noundef %0) - store ptr %call, ptr %p, align 8 - call void @swap(ptr noundef %p, ptr noundef %g) - %1 = load ptr, ptr %g, align 8 - %2 = load ptr, ptr %ret.addr, align 8 - store ptr %1, ptr %2, align 8 - %3 = load ptr, ptr %p, align 8 - ret ptr %3 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %p1 = alloca ptr, align 8 - %p2 = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %call = call ptr @my_malloc(i32 noundef 10, ptr noundef %p1) - store ptr %call, ptr %p2, align 8 - %call1 = call ptr @my_malloc(i32 noundef 20, ptr noundef %p1) - call void @swap(ptr noundef %p1, ptr noundef %p2) - %0 = load ptr, ptr %p2, align 8 - store ptr %0, ptr %pa, align 8 - %1 = load ptr, ptr %p1, align 8 - store ptr %1, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap-heap4.c.bc b/test_cases_bc/complex_tests/swap-heap4.c.bc deleted file mode 100644 index 0ff321ad..00000000 --- a/test_cases_bc/complex_tests/swap-heap4.c.bc +++ /dev/null @@ -1,96 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap-heap4.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap-heap4.c" -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-unknown-linux-gnu" - -@ga = dso_local global [20 x i8] zeroinitializer, align 16 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %a.addr, align 8 - store ptr %3, ptr %4, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %b.addr, align 8 - store ptr %5, ptr %6, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @mymalloc(i32 noundef %i) #0 { -entry: - %i.addr = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - %0 = load i32, ptr %i.addr, align 4 - %call = call ptr @malloc(i32 noundef %0) - ret ptr %call -} - -declare ptr @malloc(i32 noundef) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @my_malloc(i32 noundef %i, ptr noundef %ret) #0 { -entry: - %i.addr = alloca i32, align 4 - %ret.addr = alloca ptr, align 8 - %p = alloca ptr, align 8 - %q = alloca ptr, align 8 - store i32 %i, ptr %i.addr, align 4 - store ptr %ret, ptr %ret.addr, align 8 - %0 = load i32, ptr %i.addr, align 4 - %call = call ptr @mymalloc(i32 noundef %0) - store ptr %call, ptr %p, align 8 - %1 = load i32, ptr %i.addr, align 4 - %add = add i32 %1, 20 - %call1 = call ptr @mymalloc(i32 noundef %add) - store ptr %call1, ptr %q, align 8 - call void @swap(ptr noundef %p, ptr noundef %q) - %2 = load ptr, ptr %q, align 8 - %3 = load ptr, ptr %ret.addr, align 8 - store ptr %2, ptr %3, align 8 - %4 = load ptr, ptr %p, align 8 - ret ptr %4 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %p1 = alloca ptr, align 8 - %p2 = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %call = call ptr @my_malloc(i32 noundef 10, ptr noundef %p1) - store ptr %call, ptr %pa, align 8 - %call1 = call ptr @my_malloc(i32 noundef 20, ptr noundef %p2) - store ptr %call1, ptr %pb, align 8 - call void @swap(ptr noundef %pa, ptr noundef %pb) - call void @swap(ptr noundef %p1, ptr noundef %p2) - %0 = load ptr, ptr %p2, align 8 - store ptr %0, ptr %pa, align 8 - %1 = load ptr, ptr %p1, align 8 - store ptr %1, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap-indirect.c.bc b/test_cases_bc/complex_tests/swap-indirect.c.bc deleted file mode 100644 index c3ac4b9b..00000000 --- a/test_cases_bc/complex_tests/swap-indirect.c.bc +++ /dev/null @@ -1,76 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap-indirect.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap-indirect.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %a1 = alloca ptr, align 8 - %b1 = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %a1, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - store ptr %3, ptr %b1, align 8 - %4 = load ptr, ptr %a1, align 8 - %5 = load ptr, ptr %4, align 8 - store ptr %5, ptr %c, align 8 - %6 = load ptr, ptr %b1, align 8 - %7 = load ptr, ptr %6, align 8 - %8 = load ptr, ptr %a1, align 8 - store ptr %7, ptr %8, align 8 - %9 = load ptr, ptr %c, align 8 - %10 = load ptr, ptr %b1, align 8 - store ptr %9, ptr %10, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %b = alloca [20 x i8], align 16 - %a = alloca [20 x i8], align 16 - %p1 = alloca ptr, align 8 - %p2 = alloca ptr, align 8 - %t1 = alloca ptr, align 8 - %t2 = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - store ptr %arraydecay, ptr %p1, align 8 - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - store ptr %arraydecay1, ptr %p2, align 8 - store ptr %p1, ptr %pa, align 8 - store ptr %p2, ptr %pb, align 8 - call void @swap(ptr noundef %pa, ptr noundef %pb) - %0 = load ptr, ptr %pa, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %t1, align 8 - %2 = load ptr, ptr %t1, align 8 - store i8 1, ptr %2, align 1 - %3 = load ptr, ptr %pb, align 8 - %4 = load ptr, ptr %3, align 8 - store ptr %4, ptr %t2, align 8 - %5 = load ptr, ptr %t2, align 8 - store i8 0, ptr %5, align 1 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap-indirect1.c.bc b/test_cases_bc/complex_tests/swap-indirect1.c.bc deleted file mode 100644 index 45c86442..00000000 --- a/test_cases_bc/complex_tests/swap-indirect1.c.bc +++ /dev/null @@ -1,83 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap-indirect1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap-indirect1.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap1(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %a.addr, align 8 - store ptr %3, ptr %4, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %b.addr, align 8 - store ptr %5, ptr %6, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - call void @swap1(ptr noundef %1, ptr noundef %3) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %b = alloca [20 x i8], align 16 - %a = alloca [20 x i8], align 16 - %p1 = alloca ptr, align 8 - %p2 = alloca ptr, align 8 - %t1 = alloca ptr, align 8 - %t2 = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - store ptr %arraydecay, ptr %p1, align 8 - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - store ptr %arraydecay1, ptr %p2, align 8 - store ptr %p1, ptr %pa, align 8 - store ptr %p2, ptr %pb, align 8 - call void @swap(ptr noundef %pa, ptr noundef %pb) - %0 = load ptr, ptr %pa, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %t1, align 8 - %2 = load ptr, ptr %t1, align 8 - store i8 0, ptr %2, align 1 - %3 = load ptr, ptr %pb, align 8 - %4 = load ptr, ptr %3, align 8 - store ptr %4, ptr %t2, align 8 - %5 = load ptr, ptr %t2, align 8 - store i8 0, ptr %5, align 1 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap-indirect2.c.bc b/test_cases_bc/complex_tests/swap-indirect2.c.bc deleted file mode 100644 index 863f9c7e..00000000 --- a/test_cases_bc/complex_tests/swap-indirect2.c.bc +++ /dev/null @@ -1,99 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap-indirect2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap-indirect2.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap1(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %a.addr, align 8 - store ptr %3, ptr %4, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %b.addr, align 8 - store ptr %5, ptr %6, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - call void @swap1(ptr noundef %1, ptr noundef %3) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @f(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %b.addr, align 8 - call void @swap(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr %a.addr, align 8 - %3 = load ptr, ptr %b.addr, align 8 - call void @swap(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %b = alloca [20 x i8], align 16 - %a = alloca [20 x i8], align 16 - %p1 = alloca ptr, align 8 - %p2 = alloca ptr, align 8 - %t1 = alloca ptr, align 8 - %t2 = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - store ptr %arraydecay, ptr %p1, align 8 - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - store ptr %arraydecay1, ptr %p2, align 8 - store ptr %p1, ptr %pa, align 8 - store ptr %p2, ptr %pb, align 8 - call void @f(ptr noundef %pa, ptr noundef %pb) - %0 = load ptr, ptr %pa, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %t1, align 8 - %2 = load ptr, ptr %t1, align 8 - store i8 0, ptr %2, align 1 - %3 = load ptr, ptr %pb, align 8 - %4 = load ptr, ptr %3, align 8 - store ptr %4, ptr %t2, align 8 - %5 = load ptr, ptr %t2, align 8 - store i8 0, ptr %5, align 1 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap-recursion.c.bc b/test_cases_bc/complex_tests/swap-recursion.c.bc deleted file mode 100644 index 7b3a8000..00000000 --- a/test_cases_bc/complex_tests/swap-recursion.c.bc +++ /dev/null @@ -1,88 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap-recursion.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap-recursion.c" -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-unknown-linux-gnu" - -@n = internal global i32 0, align 4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap1(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %b.addr, align 8 - call void @swap(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %a.addr, align 8 - store ptr %3, ptr %4, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %b.addr, align 8 - store ptr %5, ptr %6, align 8 - %7 = load i32, ptr @n, align 4 - %dec = add nsw i32 %7, -1 - store i32 %dec, ptr @n, align 4 - %8 = load i32, ptr @n, align 4 - %cmp = icmp sgt i32 %8, 0 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %9 = load ptr, ptr %a.addr, align 8 - %10 = load ptr, ptr %b.addr, align 8 - call void @swap1(ptr noundef %9, ptr noundef %10) - br label %if.end - -if.end: ; preds = %if.then, %entry - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %b = alloca [20 x i8], align 16 - %a = alloca [20 x i8], align 16 - %p1 = alloca ptr, align 8 - %p2 = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - store ptr %arraydecay, ptr %p1, align 8 - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - store ptr %arraydecay1, ptr %p2, align 8 - store i32 4, ptr @n, align 4 - call void @swap(ptr noundef %p1, ptr noundef %p2) - %0 = load ptr, ptr %p2, align 8 - store ptr %0, ptr %pa, align 8 - %1 = load ptr, ptr %p1, align 8 - store ptr %1, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap-struct.c.bc b/test_cases_bc/complex_tests/swap-struct.c.bc deleted file mode 100644 index f970c306..00000000 --- a/test_cases_bc/complex_tests/swap-struct.c.bc +++ /dev/null @@ -1,65 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap-struct.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap-struct.c" -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-unknown-linux-gnu" - -%struct.ptrstruct = type { ptr, ptr } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %a.addr, align 8 - store ptr %3, ptr %4, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %b.addr, align 8 - store ptr %5, ptr %6, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %PSt = alloca %struct.ptrstruct, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %b = alloca [20 x i8], align 16 - %a = alloca [20 x i8], align 16 - %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - %p1 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 0 - store ptr %arraydecay, ptr %p1, align 8 - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - %p2 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 1 - store ptr %arraydecay1, ptr %p2, align 8 - %p12 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 0 - %p23 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 1 - call void @swap(ptr noundef %p12, ptr noundef %p23) - %p24 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 1 - %0 = load ptr, ptr %p24, align 8 - store ptr %0, ptr %pa, align 8 - %p15 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 0 - %1 = load ptr, ptr %p15, align 8 - store ptr %1, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap-struct1.c.bc b/test_cases_bc/complex_tests/swap-struct1.c.bc deleted file mode 100644 index 68eb7be1..00000000 --- a/test_cases_bc/complex_tests/swap-struct1.c.bc +++ /dev/null @@ -1,65 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap-struct1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap-struct1.c" -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-unknown-linux-gnu" - -%struct.ptrstruct = type { ptr, ptr } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %P) #0 { -entry: - %P.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %P, ptr %P.addr, align 8 - %0 = load ptr, ptr %P.addr, align 8 - %p1 = getelementptr inbounds %struct.ptrstruct, ptr %0, i32 0, i32 0 - %1 = load ptr, ptr %p1, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %P.addr, align 8 - %p2 = getelementptr inbounds %struct.ptrstruct, ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %p2, align 8 - %4 = load ptr, ptr %P.addr, align 8 - %p11 = getelementptr inbounds %struct.ptrstruct, ptr %4, i32 0, i32 0 - store ptr %3, ptr %p11, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %P.addr, align 8 - %p22 = getelementptr inbounds %struct.ptrstruct, ptr %6, i32 0, i32 1 - store ptr %5, ptr %p22, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %PSt = alloca %struct.ptrstruct, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %b = alloca [20 x i8], align 16 - %a = alloca [20 x i8], align 16 - %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - %p1 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 0 - store ptr %arraydecay, ptr %p1, align 8 - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - %p2 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 1 - store ptr %arraydecay1, ptr %p2, align 8 - call void @swap(ptr noundef %PSt) - %p22 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 1 - %0 = load ptr, ptr %p22, align 8 - store ptr %0, ptr %pa, align 8 - %p13 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 0 - %1 = load ptr, ptr %p13, align 8 - store ptr %1, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap-structindirect.c.bc b/test_cases_bc/complex_tests/swap-structindirect.c.bc deleted file mode 100644 index e4c4bc0d..00000000 --- a/test_cases_bc/complex_tests/swap-structindirect.c.bc +++ /dev/null @@ -1,71 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap-structindirect.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap-structindirect.c" -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-unknown-linux-gnu" - -%struct.ptrstruct = type { i32, ptr, ptr } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %pstruct) #0 { -entry: - %pstruct.addr = alloca ptr, align 8 - %P = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %pstruct, ptr %pstruct.addr, align 8 - %0 = load ptr, ptr %pstruct.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %P, align 8 - %2 = load ptr, ptr %P, align 8 - %p1 = getelementptr inbounds %struct.ptrstruct, ptr %2, i32 0, i32 1 - %3 = load ptr, ptr %p1, align 8 - store ptr %3, ptr %c, align 8 - %4 = load ptr, ptr %P, align 8 - %p2 = getelementptr inbounds %struct.ptrstruct, ptr %4, i32 0, i32 2 - %5 = load ptr, ptr %p2, align 8 - %6 = load ptr, ptr %P, align 8 - %p11 = getelementptr inbounds %struct.ptrstruct, ptr %6, i32 0, i32 1 - store ptr %5, ptr %p11, align 8 - %7 = load ptr, ptr %c, align 8 - %8 = load ptr, ptr %P, align 8 - %p22 = getelementptr inbounds %struct.ptrstruct, ptr %8, i32 0, i32 2 - store ptr %7, ptr %p22, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %PSt = alloca %struct.ptrstruct, align 8 - %pstruct = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %b = alloca [20 x i8], align 16 - %a = alloca [20 x i8], align 16 - store ptr %PSt, ptr %pstruct, align 8 - %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - %p1 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 1 - store ptr %arraydecay, ptr %p1, align 8 - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - %p2 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 2 - store ptr %arraydecay1, ptr %p2, align 8 - call void @swap(ptr noundef %pstruct) - %p22 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 2 - %0 = load ptr, ptr %p22, align 8 - store ptr %0, ptr %pa, align 8 - %p13 = getelementptr inbounds %struct.ptrstruct, ptr %PSt, i32 0, i32 1 - %1 = load ptr, ptr %p13, align 8 - store ptr %1, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap.c.bc b/test_cases_bc/complex_tests/swap.c.bc deleted file mode 100644 index 497c8e9e..00000000 --- a/test_cases_bc/complex_tests/swap.c.bc +++ /dev/null @@ -1,58 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %a.addr, align 8 - store ptr %3, ptr %4, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %b.addr, align 8 - store ptr %5, ptr %6, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %p1 = alloca ptr, align 8 - %p2 = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %b = alloca [20 x i8], align 16 - %a = alloca [20 x i8], align 16 - %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - store ptr %arraydecay, ptr %p1, align 8 - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - store ptr %arraydecay1, ptr %p2, align 8 - call void @swap(ptr noundef %p1, ptr noundef %p2) - %0 = load ptr, ptr %p2, align 8 - store ptr %0, ptr %pa, align 8 - %1 = load ptr, ptr %p1, align 8 - store ptr %1, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap1.c.bc b/test_cases_bc/complex_tests/swap1.c.bc deleted file mode 100644 index 48495f68..00000000 --- a/test_cases_bc/complex_tests/swap1.c.bc +++ /dev/null @@ -1,72 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap1.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %a.addr, align 8 - store ptr %3, ptr %4, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %b.addr, align 8 - store ptr %5, ptr %6, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @f(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %b.addr, align 8 - call void @swap(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %p1 = alloca ptr, align 8 - %p2 = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %b = alloca [20 x i8], align 16 - %a = alloca [20 x i8], align 16 - %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - store ptr %arraydecay, ptr %p1, align 8 - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - store ptr %arraydecay1, ptr %p2, align 8 - call void @swap(ptr noundef %p1, ptr noundef %p2) - call void @f(ptr noundef %p2, ptr noundef %p1) - %0 = load ptr, ptr %p2, align 8 - store ptr %0, ptr %pa, align 8 - %1 = load ptr, ptr %p1, align 8 - store ptr %1, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap4-context.c.bc b/test_cases_bc/complex_tests/swap4-context.c.bc deleted file mode 100644 index 1a63f722..00000000 --- a/test_cases_bc/complex_tests/swap4-context.c.bc +++ /dev/null @@ -1,108 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap4-context.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap4-context.c" -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-unknown-linux-gnu" - -@a = dso_local global [20 x i8] zeroinitializer, align 16 -@b = dso_local global [20 x i8] zeroinitializer, align 16 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %a.addr, align 8 - store ptr %3, ptr %4, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %b.addr, align 8 - store ptr %5, ptr %6, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @f(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %b.addr, align 8 - call void @swap(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @g(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %b.addr, align 8 - call void @swap(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr %a.addr, align 8 - %3 = load ptr, ptr %b.addr, align 8 - call void @swap(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @h(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %b.addr, align 8 - call void @f(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr %a.addr, align 8 - %3 = load ptr, ptr %b.addr, align 8 - call void @f(ptr noundef %2, ptr noundef %3) - %4 = load ptr, ptr %a.addr, align 8 - %5 = load ptr, ptr %b.addr, align 8 - call void @g(ptr noundef %4, ptr noundef %5) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %p1 = alloca ptr, align 8 - %p2 = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - store ptr @a, ptr %p1, align 8 - store ptr @b, ptr %p2, align 8 - call void @h(ptr noundef %p1, ptr noundef %p2) - call void @g(ptr noundef %p1, ptr noundef %p2) - call void @f(ptr noundef %p1, ptr noundef %p2) - call void @g(ptr noundef %p1, ptr noundef %p2) - %0 = load ptr, ptr %p2, align 8 - store ptr %0, ptr %pa, align 8 - %1 = load ptr, ptr %p1, align 8 - store ptr %1, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap4-context1.c.bc b/test_cases_bc/complex_tests/swap4-context1.c.bc deleted file mode 100644 index f5b40a2c..00000000 --- a/test_cases_bc/complex_tests/swap4-context1.c.bc +++ /dev/null @@ -1,172 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap4-context1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap4-context1.c" -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-unknown-linux-gnu" - -@a = dso_local global [20 x i8] zeroinitializer, align 16 -@b = dso_local global [20 x i8] zeroinitializer, align 16 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %a.addr, align 8 - store ptr %3, ptr %4, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %b.addr, align 8 - store ptr %5, ptr %6, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @f1(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %b.addr, align 8 - call void @swap(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @f2(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %b.addr, align 8 - call void @swap(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %a.addr, align 8 - call void @f1(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @f3(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %b.addr, align 8 - call void @f1(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %a.addr, align 8 - call void @f2(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @f5(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %b.addr, align 8 - call void @f3(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %a.addr, align 8 - call void @f2(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @f8(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %b.addr, align 8 - call void @f3(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr %a.addr, align 8 - %3 = load ptr, ptr %b.addr, align 8 - call void @f5(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @g(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %b.addr, align 8 - call void @swap(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr %a.addr, align 8 - %3 = load ptr, ptr %b.addr, align 8 - call void @swap(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @h(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %b.addr, align 8 - call void @f8(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr %a.addr, align 8 - %3 = load ptr, ptr %b.addr, align 8 - call void @f5(ptr noundef %2, ptr noundef %3) - %4 = load ptr, ptr %a.addr, align 8 - %5 = load ptr, ptr %b.addr, align 8 - call void @g(ptr noundef %4, ptr noundef %5) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %p1 = alloca ptr, align 8 - %p2 = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - store ptr @a, ptr %p1, align 8 - store ptr @b, ptr %p2, align 8 - call void @h(ptr noundef %p1, ptr noundef %p2) - call void @g(ptr noundef %p2, ptr noundef %p1) - call void @f5(ptr noundef %p1, ptr noundef %p2) - call void @g(ptr noundef %p2, ptr noundef %p1) - %0 = load ptr, ptr %p2, align 8 - store ptr %0, ptr %pa, align 8 - %1 = load ptr, ptr %p1, align 8 - store ptr %1, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap4-contextindirect.c.bc b/test_cases_bc/complex_tests/swap4-contextindirect.c.bc deleted file mode 100644 index 585d9385..00000000 --- a/test_cases_bc/complex_tests/swap4-contextindirect.c.bc +++ /dev/null @@ -1,135 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap4-contextindirect.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap4-contextindirect.c" -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-unknown-linux-gnu" - -@a = dso_local global [20 x i8] zeroinitializer, align 16 -@b = dso_local global [20 x i8] zeroinitializer, align 16 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap1(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %a.addr, align 8 - store ptr %3, ptr %4, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %b.addr, align 8 - store ptr %5, ptr %6, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - %d = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - store ptr %3, ptr %d, align 8 - %4 = load ptr, ptr %c, align 8 - %5 = load ptr, ptr %d, align 8 - call void @swap1(ptr noundef %4, ptr noundef %5) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @f(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %b.addr, align 8 - call void @swap(ptr noundef %0, ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @g(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %b.addr, align 8 - call void @swap(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr %a.addr, align 8 - %3 = load ptr, ptr %b.addr, align 8 - call void @swap(ptr noundef %2, ptr noundef %3) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @h(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %b.addr, align 8 - call void @f(ptr noundef %0, ptr noundef %1) - %2 = load ptr, ptr %a.addr, align 8 - %3 = load ptr, ptr %b.addr, align 8 - call void @f(ptr noundef %2, ptr noundef %3) - %4 = load ptr, ptr %a.addr, align 8 - %5 = load ptr, ptr %b.addr, align 8 - call void @g(ptr noundef %4, ptr noundef %5) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %p1 = alloca ptr, align 8 - %p2 = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %pa1 = alloca ptr, align 8 - %pb1 = alloca ptr, align 8 - store ptr @a, ptr %pa, align 8 - store ptr @b, ptr %pb, align 8 - store ptr %pa, ptr %p1, align 8 - store ptr %pb, ptr %p2, align 8 - call void @h(ptr noundef %p1, ptr noundef %p2) - call void @g(ptr noundef %p1, ptr noundef %p2) - call void @f(ptr noundef %p1, ptr noundef %p2) - call void @g(ptr noundef %p1, ptr noundef %p2) - %0 = load ptr, ptr %p2, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %pa1, align 8 - %2 = load ptr, ptr %p1, align 8 - %3 = load ptr, ptr %2, align 8 - store ptr %3, ptr %pb1, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/swap4.c.bc b/test_cases_bc/complex_tests/swap4.c.bc deleted file mode 100644 index 0511f813..00000000 --- a/test_cases_bc/complex_tests/swap4.c.bc +++ /dev/null @@ -1,60 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/swap4.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/swap4.c" -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-unknown-linux-gnu" - -@a = dso_local global [20 x i8] zeroinitializer, align 16 -@b = dso_local global [20 x i8] zeroinitializer, align 16 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(ptr noundef %a, ptr noundef %b) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - store ptr %1, ptr %c, align 8 - %2 = load ptr, ptr %b.addr, align 8 - %3 = load ptr, ptr %2, align 8 - %4 = load ptr, ptr %a.addr, align 8 - store ptr %3, ptr %4, align 8 - %5 = load ptr, ptr %c, align 8 - %6 = load ptr, ptr %b.addr, align 8 - store ptr %5, ptr %6, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %p1 = alloca ptr, align 8 - %p2 = alloca ptr, align 8 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - store ptr @a, ptr %p1, align 8 - store ptr @b, ptr %p2, align 8 - call void @swap(ptr noundef %p1, ptr noundef %p2) - call void @swap(ptr noundef %p1, ptr noundef %p2) - call void @swap(ptr noundef %p2, ptr noundef %p1) - call void @swap(ptr noundef %p1, ptr noundef %p2) - %0 = load ptr, ptr %p2, align 8 - store ptr %0, ptr %pa, align 8 - %1 = load ptr, ptr %p1, align 8 - store ptr %1, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test-clone.c.bc b/test_cases_bc/complex_tests/test-clone.c.bc deleted file mode 100644 index 5e4199be..00000000 --- a/test_cases_bc/complex_tests/test-clone.c.bc +++ /dev/null @@ -1,119 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test-clone.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test-clone.c" -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-unknown-linux-gnu" - -@ptrs = dso_local global [10 x ptr] zeroinitializer, align 16 -@my_malloc1.a = internal global ptr null, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @my_malloc(i32 noundef %idx, i32 noundef %length) #0 { -entry: - %idx.addr = alloca i32, align 4 - %length.addr = alloca i32, align 4 - %a = alloca ptr, align 8 - store i32 %idx, ptr %idx.addr, align 4 - store i32 %length, ptr %length.addr, align 4 - %0 = load i32, ptr %length.addr, align 4 - %call = call ptr @malloc(i32 noundef %0) - store ptr %call, ptr %a, align 8 - %1 = load i32, ptr %idx.addr, align 4 - %idxprom = zext i32 %1 to i64 - %arrayidx = getelementptr inbounds [10 x ptr], ptr @ptrs, i64 0, i64 %idxprom - %2 = load ptr, ptr %arrayidx, align 8 - call void @free(ptr noundef %2) - %3 = load ptr, ptr %a, align 8 - %4 = load i32, ptr %idx.addr, align 4 - %idxprom1 = zext i32 %4 to i64 - %arrayidx2 = getelementptr inbounds [10 x ptr], ptr @ptrs, i64 0, i64 %idxprom1 - store ptr %3, ptr %arrayidx2, align 8 - ret void -} - -declare ptr @malloc(i32 noundef) #1 - -declare void @free(ptr noundef) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @my_malloc1(i32 noundef %idx, i32 noundef %lenght) #0 { -entry: - %idx.addr = alloca i32, align 4 - %lenght.addr = alloca i32, align 4 - store i32 %idx, ptr %idx.addr, align 4 - store i32 %lenght, ptr %lenght.addr, align 4 - %0 = load ptr, ptr @my_malloc1.a, align 8 - %cmp = icmp ne ptr %0, null - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %1 = load ptr, ptr @my_malloc1.a, align 8 - call void @free(ptr noundef %1) - br label %if.end - -if.end: ; preds = %if.then, %entry - %2 = load i32, ptr %idx.addr, align 4 - %call = call ptr @malloc(i32 noundef %2) - store ptr %call, ptr @my_malloc1.a, align 8 - %3 = load ptr, ptr @my_malloc1.a, align 8 - ret ptr %3 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @malloc2(i32 noundef %idx, i32 noundef %length) #0 { -entry: - %retval = alloca i32, align 4 - %idx.addr = alloca i32, align 4 - %length.addr = alloca i32, align 4 - %curidx = alloca i32, align 4 - store i32 %idx, ptr %idx.addr, align 4 - store i32 %length, ptr %length.addr, align 4 - %0 = load i32, ptr %idx.addr, align 4 - %1 = load i32, ptr %length.addr, align 4 - call void @my_malloc(i32 noundef %0, i32 noundef %1) - %2 = load i32, ptr %idx.addr, align 4 - %add = add i32 %2, 1 - %3 = load i32, ptr %length.addr, align 4 - %call = call ptr @my_malloc1(i32 noundef %add, i32 noundef %3) - %4 = load i32, ptr %idx.addr, align 4 - %add1 = add i32 %4, 2 - store i32 %add1, ptr %curidx, align 4 - %5 = load i32, ptr %curidx, align 4 - %cmp = icmp ult i32 %5, 8 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %6 = load i32, ptr %curidx, align 4 - %7 = load i32, ptr %length.addr, align 4 - %call2 = call i32 @malloc2(i32 noundef %6, i32 noundef %7) - store i32 %call2, ptr %retval, align 4 - br label %return - -if.end: ; preds = %entry - %8 = load i32, ptr %curidx, align 4 - store i32 %8, ptr %retval, align 4 - br label %return - -return: ; preds = %if.end, %if.then - %9 = load i32, ptr %retval, align 4 - ret i32 %9 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %call = call i32 @malloc2(i32 noundef 1, i32 noundef 10) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test-clone1.c.bc b/test_cases_bc/complex_tests/test-clone1.c.bc deleted file mode 100644 index abde6619..00000000 --- a/test_cases_bc/complex_tests/test-clone1.c.bc +++ /dev/null @@ -1,127 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test-clone1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test-clone1.c" -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-unknown-linux-gnu" - -@ptrs = dso_local global [10 x ptr] zeroinitializer, align 16 -@my_malloc1.a = internal global ptr null, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @my_malloc(i32 noundef %idx, i32 noundef %length) #0 { -entry: - %idx.addr = alloca i32, align 4 - %length.addr = alloca i32, align 4 - %a = alloca ptr, align 8 - store i32 %idx, ptr %idx.addr, align 4 - store i32 %length, ptr %length.addr, align 4 - %0 = load i32, ptr %length.addr, align 4 - %call = call ptr @malloc(i32 noundef %0) - store ptr %call, ptr %a, align 8 - %1 = load i32, ptr %idx.addr, align 4 - %idxprom = zext i32 %1 to i64 - %arrayidx = getelementptr inbounds [10 x ptr], ptr @ptrs, i64 0, i64 %idxprom - %2 = load ptr, ptr %arrayidx, align 8 - call void @free(ptr noundef %2) - %3 = load ptr, ptr %a, align 8 - %4 = load i32, ptr %idx.addr, align 4 - %idxprom1 = zext i32 %4 to i64 - %arrayidx2 = getelementptr inbounds [10 x ptr], ptr @ptrs, i64 0, i64 %idxprom1 - store ptr %3, ptr %arrayidx2, align 8 - ret void -} - -declare ptr @malloc(i32 noundef) #1 - -declare void @free(ptr noundef) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @my_malloc1(i32 noundef %idx, i32 noundef %lenght) #0 { -entry: - %idx.addr = alloca i32, align 4 - %lenght.addr = alloca i32, align 4 - store i32 %idx, ptr %idx.addr, align 4 - store i32 %lenght, ptr %lenght.addr, align 4 - %0 = load i32, ptr %idx.addr, align 4 - %1 = load i32, ptr %lenght.addr, align 4 - call void @my_malloc(i32 noundef %0, i32 noundef %1) - %2 = load ptr, ptr @my_malloc1.a, align 8 - %cmp = icmp ne ptr %2, null - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %3 = load i32, ptr %idx.addr, align 4 - %add = add i32 %3, 1 - %call = call ptr @malloc(i32 noundef %add) - store ptr %call, ptr @my_malloc1.a, align 8 - br label %if.end - -if.else: ; preds = %entry - %4 = load i32, ptr %idx.addr, align 4 - %call1 = call ptr @malloc(i32 noundef %4) - store ptr %call1, ptr @my_malloc1.a, align 8 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %5 = load ptr, ptr @my_malloc1.a, align 8 - ret ptr %5 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @malloc2(i32 noundef %idx, i32 noundef %length) #0 { -entry: - %retval = alloca i32, align 4 - %idx.addr = alloca i32, align 4 - %length.addr = alloca i32, align 4 - %curidx = alloca i32, align 4 - store i32 %idx, ptr %idx.addr, align 4 - store i32 %length, ptr %length.addr, align 4 - %0 = load i32, ptr %idx.addr, align 4 - %1 = load i32, ptr %length.addr, align 4 - call void @my_malloc(i32 noundef %0, i32 noundef %1) - %2 = load i32, ptr %idx.addr, align 4 - %add = add i32 %2, 1 - %3 = load i32, ptr %length.addr, align 4 - %call = call ptr @my_malloc1(i32 noundef %add, i32 noundef %3) - %4 = load i32, ptr %idx.addr, align 4 - %add1 = add i32 %4, 2 - store i32 %add1, ptr %curidx, align 4 - %5 = load i32, ptr %curidx, align 4 - %cmp = icmp ult i32 %5, 8 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %6 = load i32, ptr %curidx, align 4 - %7 = load i32, ptr %length.addr, align 4 - %call2 = call i32 @malloc2(i32 noundef %6, i32 noundef %7) - store i32 %call2, ptr %retval, align 4 - br label %return - -if.end: ; preds = %entry - %8 = load i32, ptr %curidx, align 4 - store i32 %8, ptr %retval, align 4 - br label %return - -return: ; preds = %if.end, %if.then - %9 = load i32, ptr %retval, align 4 - ret i32 %9 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %call = call i32 @malloc2(i32 noundef 1, i32 noundef 10) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test-cond.c.bc b/test_cases_bc/complex_tests/test-cond.c.bc deleted file mode 100644 index 6cd0ebf9..00000000 --- a/test_cases_bc/complex_tests/test-cond.c.bc +++ /dev/null @@ -1,50 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test-cond.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test-cond.c" -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-unknown-linux-gnu" - -@g2 = dso_local global i8 0, align 1 -@g1 = dso_local global i8 0, align 1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @f1(ptr noundef %p) #0 { -entry: - %p.addr = alloca ptr, align 8 - store ptr %p, ptr %p.addr, align 8 - %call = call i32 (...) @cond() - %tobool = icmp ne i32 %call, 0 - br i1 %tobool, label %if.then, label %if.end - -if.then: ; preds = %entry - %0 = load ptr, ptr %p.addr, align 8 - store ptr @g2, ptr %0, align 8 - br label %if.end - -if.end: ; preds = %if.then, %entry - ret void -} - -declare i32 @cond(...) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @f2() #0 { -entry: - %p = alloca ptr, align 8 - store ptr @g1, ptr %p, align 8 - call void @f1(ptr noundef %p) - %0 = load ptr, ptr %p, align 8 - ret ptr %0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test-globalstruct.c.bc b/test_cases_bc/complex_tests/test-globalstruct.c.bc deleted file mode 100644 index 7933d385..00000000 --- a/test_cases_bc/complex_tests/test-globalstruct.c.bc +++ /dev/null @@ -1,33 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test-globalstruct.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test-globalstruct.c" -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-unknown-linux-gnu" - -%struct.anon = type { ptr, ptr } - -@g1 = dso_local global i32 0, align 4 -@g2 = dso_local global i32 0, align 4 -@obj = dso_local constant %struct.anon { ptr @g1, ptr @g2 }, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @f() #0 { -entry: - %p = alloca ptr, align 8 - %0 = load ptr, ptr @obj, align 8 - store ptr %0, ptr %p, align 8 - %1 = load ptr, ptr %p, align 8 - %2 = load i32, ptr %1, align 4 - ret i32 %2 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test-indirect.c.bc b/test_cases_bc/complex_tests/test-indirect.c.bc deleted file mode 100644 index 1eaf3257..00000000 --- a/test_cases_bc/complex_tests/test-indirect.c.bc +++ /dev/null @@ -1,63 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test-indirect.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test-indirect.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @D(ptr noundef %ppp) #0 { -entry: - %ppp.addr = alloca ptr, align 8 - store ptr %ppp, ptr %ppp.addr, align 8 - %0 = load ptr, ptr %ppp.addr, align 8 - %1 = load ptr, ptr %0, align 8 - %2 = load ptr, ptr %1, align 8 - store i8 0, ptr %2, align 1 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @C(ptr noundef %ppp) #0 { -entry: - %ppp.addr = alloca ptr, align 8 - store ptr %ppp, ptr %ppp.addr, align 8 - %0 = load ptr, ptr %ppp.addr, align 8 - %1 = load ptr, ptr %0, align 8 - %2 = load ptr, ptr %1, align 8 - store i8 0, ptr %2, align 1 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @B(ptr noundef %ppp) #0 { -entry: - %ppp.addr = alloca ptr, align 8 - store ptr %ppp, ptr %ppp.addr, align 8 - %0 = load ptr, ptr %ppp.addr, align 8 - call void @D(ptr noundef %0) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @A() #0 { -entry: - %c = alloca i8, align 1 - %p = alloca ptr, align 8 - %pp = alloca ptr, align 8 - store ptr %c, ptr %p, align 8 - store ptr %p, ptr %pp, align 8 - call void @B(ptr noundef %pp) - call void @C(ptr noundef %pp) - ret void -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test-indirect1.c.bc b/test_cases_bc/complex_tests/test-indirect1.c.bc deleted file mode 100644 index 1bce2083..00000000 --- a/test_cases_bc/complex_tests/test-indirect1.c.bc +++ /dev/null @@ -1,70 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test-indirect1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test-indirect1.c" -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-unknown-linux-gnu" - -@g1 = dso_local global i32 0, align 4 -@g2 = dso_local global i32 0, align 4 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @f1(ptr noundef %pp) #0 { -entry: - %pp.addr = alloca ptr, align 8 - store ptr %pp, ptr %pp.addr, align 8 - %0 = load ptr, ptr %pp.addr, align 8 - store ptr @g1, ptr %0, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @f2(ptr noundef %pp) #0 { -entry: - %pp.addr = alloca ptr, align 8 - store ptr %pp, ptr %pp.addr, align 8 - %0 = load ptr, ptr %pp.addr, align 8 - call void @f1(ptr noundef %0) - %1 = load ptr, ptr %pp.addr, align 8 - store ptr @g2, ptr %1, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @f3() #0 { -entry: - %pp = alloca ptr, align 8 - %call = call noalias ptr @malloc(i64 noundef 8) #2 - store ptr %call, ptr %pp, align 8 - %0 = load ptr, ptr %pp, align 8 - call void @f2(ptr noundef %0) - %1 = load ptr, ptr %pp, align 8 - %2 = load ptr, ptr %1, align 8 - %3 = load i32, ptr %2, align 4 - ret i32 %3 -} - -; Function Attrs: nounwind allocsize(0) -declare noalias ptr @malloc(i64 noundef) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @f4() #0 { -entry: - %p = alloca ptr, align 8 - call void @f2(ptr noundef %p) - %0 = load ptr, ptr %p, align 8 - %1 = load i32, ptr %0, align 4 - ret i32 %1 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { nounwind allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nounwind allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test-linklist.c.bc b/test_cases_bc/complex_tests/test-linklist.c.bc deleted file mode 100644 index a10a86ee..00000000 --- a/test_cases_bc/complex_tests/test-linklist.c.bc +++ /dev/null @@ -1,174 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test-linklist.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test-linklist.c" -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-unknown-linux-gnu" - -%struct.list = type { i32, ptr } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @destroy(ptr noundef %head) #0 { -entry: - %head.addr = alloca ptr, align 8 - %cur = alloca ptr, align 8 - store ptr %head, ptr %head.addr, align 8 - %0 = load ptr, ptr %head.addr, align 8 - store ptr %0, ptr %cur, align 8 - br label %while.cond - -while.cond: ; preds = %while.body, %entry - %1 = load ptr, ptr %cur, align 8 - %flag = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 0 - %2 = load i32, ptr %flag, align 8 - %cmp = icmp ne i32 %2, -1 - br i1 %cmp, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %3 = load ptr, ptr %cur, align 8 - %next = getelementptr inbounds %struct.list, ptr %3, i32 0, i32 1 - %4 = load ptr, ptr %next, align 8 - store ptr %4, ptr %cur, align 8 - %5 = load ptr, ptr %cur, align 8 - call void @free(ptr noundef %5) - br label %while.cond, !llvm.loop !6 - -while.end: ; preds = %while.cond - ret void -} - -declare void @free(ptr noundef) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @construct(i32 noundef %idx) #0 { -entry: - %idx.addr = alloca i32, align 4 - %head = alloca ptr, align 8 - %i = alloca i32, align 4 - %cur = alloca ptr, align 8 - store i32 %idx, ptr %idx.addr, align 4 - store i32 0, ptr %i, align 4 - %call = call ptr @malloc(i32 noundef 16) - store ptr %call, ptr %head, align 8 - %0 = load ptr, ptr %head, align 8 - %next = getelementptr inbounds %struct.list, ptr %0, i32 0, i32 1 - store ptr null, ptr %next, align 8 - %1 = load ptr, ptr %head, align 8 - %flag = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 0 - store i32 -1, ptr %flag, align 8 - store i32 0, ptr %i, align 4 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %2 = load i32, ptr %i, align 4 - %3 = load i32, ptr %idx.addr, align 4 - %cmp = icmp ult i32 %2, %3 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %call1 = call ptr @malloc(i32 noundef 16) - store ptr %call1, ptr %cur, align 8 - %4 = load i32, ptr %idx.addr, align 4 - %5 = load ptr, ptr %cur, align 8 - %flag2 = getelementptr inbounds %struct.list, ptr %5, i32 0, i32 0 - store i32 %4, ptr %flag2, align 8 - %6 = load ptr, ptr %head, align 8 - %7 = load ptr, ptr %cur, align 8 - %next3 = getelementptr inbounds %struct.list, ptr %7, i32 0, i32 1 - store ptr %6, ptr %next3, align 8 - %8 = load ptr, ptr %cur, align 8 - store ptr %8, ptr %head, align 8 - br label %for.inc - -for.inc: ; preds = %for.body - %9 = load i32, ptr %i, align 4 - %inc = add i32 %9, 1 - store i32 %inc, ptr %i, align 4 - br label %for.cond, !llvm.loop !8 - -for.end: ; preds = %for.cond - %10 = load ptr, ptr %head, align 8 - ret ptr %10 -} - -declare ptr @malloc(i32 noundef) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @addlist(ptr noundef %l, ptr noundef %elem) #0 { -entry: - %l.addr = alloca ptr, align 8 - %elem.addr = alloca ptr, align 8 - %head = alloca ptr, align 8 - %t = alloca ptr, align 8 - store ptr %l, ptr %l.addr, align 8 - store ptr %elem, ptr %elem.addr, align 8 - %0 = load ptr, ptr %l.addr, align 8 - store ptr %0, ptr %head, align 8 - br label %while.cond - -while.cond: ; preds = %while.body, %entry - %1 = load ptr, ptr %head, align 8 - %next = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 1 - %2 = load ptr, ptr %next, align 8 - store ptr %2, ptr %t, align 8 - %tobool = icmp ne ptr %2, null - br i1 %tobool, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %3 = load ptr, ptr %t, align 8 - store ptr %3, ptr %head, align 8 - br label %while.cond, !llvm.loop !9 - -while.end: ; preds = %while.cond - %4 = load ptr, ptr %elem.addr, align 8 - %5 = load ptr, ptr %head, align 8 - %next1 = getelementptr inbounds %struct.list, ptr %5, i32 0, i32 1 - store ptr %4, ptr %next1, align 8 - %6 = load ptr, ptr %l.addr, align 8 - ret ptr %6 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @main() #0 { -entry: - %head = alloca ptr, align 8 - %head1 = alloca ptr, align 8 - %call = call ptr @construct(i32 noundef 10) - store ptr %call, ptr %head, align 8 - %call1 = call ptr @construct(i32 noundef 2) - store ptr %call1, ptr %head1, align 8 - %0 = load ptr, ptr %head, align 8 - %flag = getelementptr inbounds %struct.list, ptr %0, i32 0, i32 0 - %1 = load i32, ptr %flag, align 8 - %cmp = icmp eq i32 %1, 5 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %2 = load ptr, ptr %head, align 8 - store ptr %2, ptr %head1, align 8 - br label %if.end - -if.end: ; preds = %if.then, %entry - %3 = load ptr, ptr %head, align 8 - %4 = load ptr, ptr %head1, align 8 - %call2 = call ptr @addlist(ptr noundef %3, ptr noundef %4) - store ptr %call2, ptr %head, align 8 - %5 = load ptr, ptr %head, align 8 - call void @destroy(ptr noundef %5) - ret void -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} -!9 = distinct !{!9, !7} diff --git a/test_cases_bc/complex_tests/test-linklist1.c.bc b/test_cases_bc/complex_tests/test-linklist1.c.bc deleted file mode 100644 index 3352faaf..00000000 --- a/test_cases_bc/complex_tests/test-linklist1.c.bc +++ /dev/null @@ -1,145 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test-linklist1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test-linklist1.c" -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-unknown-linux-gnu" - -%struct.list = type { i32, ptr, ptr } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @construct(i32 noundef %idx) #0 { -entry: - %idx.addr = alloca i32, align 4 - %head = alloca ptr, align 8 - %i = alloca i32, align 4 - %cur = alloca ptr, align 8 - store i32 %idx, ptr %idx.addr, align 4 - store i32 0, ptr %i, align 4 - %call = call ptr @malloc(i32 noundef 24) - store ptr %call, ptr %head, align 8 - %0 = load ptr, ptr %head, align 8 - %next = getelementptr inbounds %struct.list, ptr %0, i32 0, i32 1 - store ptr null, ptr %next, align 8 - %1 = load ptr, ptr %head, align 8 - %prev = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 2 - store ptr null, ptr %prev, align 8 - %2 = load ptr, ptr %head, align 8 - %flag = getelementptr inbounds %struct.list, ptr %2, i32 0, i32 0 - store i32 -1, ptr %flag, align 8 - store i32 0, ptr %i, align 4 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %3 = load i32, ptr %i, align 4 - %4 = load i32, ptr %idx.addr, align 4 - %cmp = icmp ult i32 %3, %4 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %call1 = call ptr @malloc(i32 noundef 24) - store ptr %call1, ptr %cur, align 8 - %5 = load i32, ptr %idx.addr, align 4 - %6 = load ptr, ptr %cur, align 8 - %flag2 = getelementptr inbounds %struct.list, ptr %6, i32 0, i32 0 - store i32 %5, ptr %flag2, align 8 - %7 = load ptr, ptr %head, align 8 - %8 = load ptr, ptr %cur, align 8 - %next3 = getelementptr inbounds %struct.list, ptr %8, i32 0, i32 1 - store ptr %7, ptr %next3, align 8 - %9 = load ptr, ptr %cur, align 8 - %prev4 = getelementptr inbounds %struct.list, ptr %9, i32 0, i32 2 - store ptr null, ptr %prev4, align 8 - %10 = load ptr, ptr %cur, align 8 - %11 = load ptr, ptr %head, align 8 - %prev5 = getelementptr inbounds %struct.list, ptr %11, i32 0, i32 2 - store ptr %10, ptr %prev5, align 8 - %12 = load ptr, ptr %cur, align 8 - store ptr %12, ptr %head, align 8 - br label %for.inc - -for.inc: ; preds = %for.body - %13 = load i32, ptr %i, align 4 - %inc = add i32 %13, 1 - store i32 %inc, ptr %i, align 4 - br label %for.cond, !llvm.loop !6 - -for.end: ; preds = %for.cond - %14 = load ptr, ptr %head, align 8 - ret ptr %14 -} - -declare ptr @malloc(i32 noundef) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @randomwalk(ptr noundef %head) #0 { -entry: - %head.addr = alloca ptr, align 8 - %cur = alloca ptr, align 8 - store ptr %head, ptr %head.addr, align 8 - %0 = load ptr, ptr %head.addr, align 8 - store ptr %0, ptr %cur, align 8 - br label %for.cond - -for.cond: ; preds = %for.inc, %entry - %1 = load ptr, ptr %cur, align 8 - %flag = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 0 - %2 = load i32, ptr %flag, align 8 - %cmp = icmp ne i32 %2, 0 - br i1 %cmp, label %for.body, label %for.end - -for.body: ; preds = %for.cond - %3 = load ptr, ptr %cur, align 8 - %flag1 = getelementptr inbounds %struct.list, ptr %3, i32 0, i32 0 - %4 = load i32, ptr %flag1, align 8 - %cmp2 = icmp sgt i32 %4, 3 - br i1 %cmp2, label %if.then, label %if.end - -if.then: ; preds = %for.body - %5 = load ptr, ptr %cur, align 8 - %prev = getelementptr inbounds %struct.list, ptr %5, i32 0, i32 2 - %6 = load ptr, ptr %prev, align 8 - store ptr %6, ptr %cur, align 8 - br label %if.end - -if.end: ; preds = %if.then, %for.body - br label %for.inc - -for.inc: ; preds = %if.end - %7 = load ptr, ptr %cur, align 8 - %next = getelementptr inbounds %struct.list, ptr %7, i32 0, i32 1 - %8 = load ptr, ptr %next, align 8 - store ptr %8, ptr %cur, align 8 - br label %for.cond, !llvm.loop !8 - -for.end: ; preds = %for.cond - %9 = load ptr, ptr %cur, align 8 - ret ptr %9 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @main() #0 { -entry: - %head = alloca ptr, align 8 - %head1 = alloca ptr, align 8 - %call = call ptr @construct(i32 noundef 10) - store ptr %call, ptr %head, align 8 - %0 = load ptr, ptr %head, align 8 - %call1 = call ptr @randomwalk(ptr noundef %0) - store ptr %call1, ptr %head1, align 8 - ret void -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} diff --git a/test_cases_bc/complex_tests/test-path.c.bc b/test_cases_bc/complex_tests/test-path.c.bc deleted file mode 100644 index 714bd27b..00000000 --- a/test_cases_bc/complex_tests/test-path.c.bc +++ /dev/null @@ -1,104 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test-path.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test-path.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @h() #0 { -entry: - %a = alloca ptr, align 8 - %call = call ptr @malloc(i32 noundef 20) - store ptr %call, ptr %a, align 8 - %0 = load ptr, ptr %a, align 8 - ret ptr %0 -} - -declare ptr @malloc(i32 noundef) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @g() #0 { -entry: - %a = alloca ptr, align 8 - %call = call ptr @malloc(i32 noundef 10) - store ptr %call, ptr %a, align 8 - %0 = load ptr, ptr %a, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @f(i32 noundef %flag) #0 { -entry: - %retval = alloca ptr, align 8 - %flag.addr = alloca i32, align 4 - store i32 %flag, ptr %flag.addr, align 4 - %0 = load i32, ptr %flag.addr, align 4 - %cmp = icmp eq i32 %0, 1 - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %call = call ptr @h() - store ptr %call, ptr %retval, align 8 - br label %return - -if.else: ; preds = %entry - %call1 = call ptr @g() - store ptr %call1, ptr %retval, align 8 - br label %return - -return: ; preds = %if.else, %if.then - %1 = load ptr, ptr %retval, align 8 - ret ptr %1 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %a = alloca [20 x i8], align 16 - %flag = alloca i32, align 4 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - %arrayidx = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - %0 = load i8, ptr %arrayidx, align 16 - %conv = sext i8 %0 to i32 - store i32 %conv, ptr %flag, align 4 - store ptr null, ptr %pa, align 8 - store ptr null, ptr %pb, align 8 - %1 = load i32, ptr %flag, align 4 - %cmp = icmp eq i32 %1, 1 - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %2 = load i32, ptr %flag, align 4 - %call = call ptr @f(i32 noundef %2) - store ptr %call, ptr %pa, align 8 - br label %if.end - -if.else: ; preds = %entry - %3 = load i32, ptr %flag, align 4 - %call2 = call ptr @f(i32 noundef %3) - store ptr %call2, ptr %pb, align 8 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %4 = load ptr, ptr %pa, align 8 - store i8 0, ptr %4, align 1 - %5 = load ptr, ptr %pb, align 8 - store i8 1, ptr %5, align 1 - %6 = load i32, ptr %retval, align 4 - ret i32 %6 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test-recursive.c.bc b/test_cases_bc/complex_tests/test-recursive.c.bc deleted file mode 100644 index b14af192..00000000 --- a/test_cases_bc/complex_tests/test-recursive.c.bc +++ /dev/null @@ -1,90 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test-recursive.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test-recursive.c" -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-unknown-linux-gnu" - -%struct.list = type { i32, ptr, ptr } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @construct(ptr noundef %head, i32 noundef %i) #0 { -entry: - %retval = alloca ptr, align 8 - %head.addr = alloca ptr, align 8 - %i.addr = alloca i32, align 4 - %tmp = alloca ptr, align 8 - store ptr %head, ptr %head.addr, align 8 - store i32 %i, ptr %i.addr, align 4 - %0 = load i32, ptr %i.addr, align 4 - %cmp = icmp ugt i32 %0, 0 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %call = call ptr @malloc(i32 noundef 24) - store ptr %call, ptr %tmp, align 8 - %1 = load ptr, ptr %tmp, align 8 - %field = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 0 - store i32 0, ptr %field, align 8 - %2 = load ptr, ptr %head.addr, align 8 - %3 = load ptr, ptr %tmp, align 8 - %next = getelementptr inbounds %struct.list, ptr %3, i32 0, i32 1 - store ptr %2, ptr %next, align 8 - %4 = load ptr, ptr %tmp, align 8 - %5 = load ptr, ptr %head.addr, align 8 - %prev = getelementptr inbounds %struct.list, ptr %5, i32 0, i32 2 - store ptr %4, ptr %prev, align 8 - %6 = load ptr, ptr %tmp, align 8 - %prev1 = getelementptr inbounds %struct.list, ptr %6, i32 0, i32 2 - store ptr null, ptr %prev1, align 8 - %7 = load ptr, ptr %tmp, align 8 - %8 = load i32, ptr %i.addr, align 4 - %dec = add i32 %8, -1 - store i32 %dec, ptr %i.addr, align 4 - %call2 = call ptr @construct(ptr noundef %7, i32 noundef %8) - store ptr %call2, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %9 = load ptr, ptr %head.addr, align 8 - store ptr %9, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %10 = load ptr, ptr %retval, align 8 - ret ptr %10 -} - -declare ptr @malloc(i32 noundef) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %head = alloca ptr, align 8 - %call = call ptr @malloc(i32 noundef 24) - store ptr %call, ptr %head, align 8 - %0 = load ptr, ptr %head, align 8 - %field = getelementptr inbounds %struct.list, ptr %0, i32 0, i32 0 - store i32 0, ptr %field, align 8 - %1 = load ptr, ptr %head, align 8 - %next = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 1 - store ptr null, ptr %next, align 8 - %2 = load ptr, ptr %head, align 8 - %prev = getelementptr inbounds %struct.list, ptr %2, i32 0, i32 2 - store ptr null, ptr %prev, align 8 - %3 = load ptr, ptr %head, align 8 - %call1 = call ptr @construct(ptr noundef %3, i32 noundef 10) - store ptr %call1, ptr %head, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test-recursive0.c.bc b/test_cases_bc/complex_tests/test-recursive0.c.bc deleted file mode 100644 index 10d34b86..00000000 --- a/test_cases_bc/complex_tests/test-recursive0.c.bc +++ /dev/null @@ -1,76 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test-recursive0.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test-recursive0.c" -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-unknown-linux-gnu" - -%struct.list = type { ptr } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @construct(ptr noundef %head) #0 { -entry: - %retval = alloca ptr, align 8 - %head.addr = alloca ptr, align 8 - %i = alloca i32, align 4 - %tmp = alloca ptr, align 8 - store ptr %head, ptr %head.addr, align 8 - %0 = load i32, ptr %i, align 4 - %cmp = icmp sgt i32 %0, 0 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %call = call ptr @malloc(i64 noundef 8) #2 - store ptr %call, ptr %tmp, align 8 - %1 = load ptr, ptr %tmp, align 8 - %2 = load ptr, ptr %head.addr, align 8 - %prev = getelementptr inbounds %struct.list, ptr %2, i32 0, i32 0 - store ptr %1, ptr %prev, align 8 - %3 = load ptr, ptr %tmp, align 8 - %call1 = call ptr @construct(ptr noundef %3) - store ptr %call1, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %4 = load ptr, ptr %head.addr, align 8 - store ptr %4, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %5 = load ptr, ptr %retval, align 8 - ret ptr %5 -} - -; Function Attrs: allocsize(0) -declare ptr @malloc(i64 noundef) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %head = alloca ptr, align 8 - %call = call ptr @malloc(i64 noundef 8) #2 - store ptr %call, ptr %head, align 8 - %0 = load ptr, ptr %head, align 8 - %prev = getelementptr inbounds %struct.list, ptr %0, i32 0, i32 0 - store ptr null, ptr %prev, align 8 - %1 = load ptr, ptr %head, align 8 - %call1 = call ptr @construct(ptr noundef %1) - store ptr %call1, ptr %head, align 8 - %2 = load ptr, ptr %head, align 8 - %prev2 = getelementptr inbounds %struct.list, ptr %2, i32 0, i32 0 - %3 = load ptr, ptr %prev2, align 8 - store ptr %3, ptr %head, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { allocsize(0) } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test-recursive1.c.bc b/test_cases_bc/complex_tests/test-recursive1.c.bc deleted file mode 100644 index 1b64723b..00000000 --- a/test_cases_bc/complex_tests/test-recursive1.c.bc +++ /dev/null @@ -1,176 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test-recursive1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test-recursive1.c" -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-unknown-linux-gnu" - -%struct.list = type { i32, ptr, ptr } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @construct(ptr noundef %head, i32 noundef %i) #0 { -entry: - %retval = alloca ptr, align 8 - %head.addr = alloca ptr, align 8 - %i.addr = alloca i32, align 4 - %tmp = alloca ptr, align 8 - store ptr %head, ptr %head.addr, align 8 - store i32 %i, ptr %i.addr, align 4 - %0 = load i32, ptr %i.addr, align 4 - %cmp = icmp ugt i32 %0, 0 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %call = call ptr @malloc(i32 noundef 24) - store ptr %call, ptr %tmp, align 8 - %1 = load ptr, ptr %tmp, align 8 - %field = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 0 - store i32 0, ptr %field, align 8 - %2 = load ptr, ptr %head.addr, align 8 - %3 = load ptr, ptr %tmp, align 8 - %next = getelementptr inbounds %struct.list, ptr %3, i32 0, i32 1 - store ptr %2, ptr %next, align 8 - %4 = load ptr, ptr %tmp, align 8 - %5 = load ptr, ptr %head.addr, align 8 - %prev = getelementptr inbounds %struct.list, ptr %5, i32 0, i32 2 - store ptr %4, ptr %prev, align 8 - %6 = load ptr, ptr %tmp, align 8 - %prev1 = getelementptr inbounds %struct.list, ptr %6, i32 0, i32 2 - store ptr null, ptr %prev1, align 8 - %7 = load ptr, ptr %tmp, align 8 - %8 = load i32, ptr %i.addr, align 4 - %dec = add i32 %8, -1 - store i32 %dec, ptr %i.addr, align 4 - %call2 = call ptr @construct(ptr noundef %7, i32 noundef %8) - store ptr %call2, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %9 = load ptr, ptr %head.addr, align 8 - store ptr %9, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %10 = load ptr, ptr %retval, align 8 - ret ptr %10 -} - -declare ptr @malloc(i32 noundef) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @walklist(ptr noundef %input) #0 { -entry: - %input.addr = alloca ptr, align 8 - %head = alloca ptr, align 8 - %curr = alloca ptr, align 8 - store ptr %input, ptr %input.addr, align 8 - %0 = load ptr, ptr %input.addr, align 8 - store ptr %0, ptr %head, align 8 - br label %while.cond - -while.cond: ; preds = %while.body, %entry - %1 = load ptr, ptr %head, align 8 - %prev = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 2 - %2 = load ptr, ptr %prev, align 8 - %cmp = icmp ne ptr %2, null - br i1 %cmp, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %3 = load ptr, ptr %head, align 8 - %prev1 = getelementptr inbounds %struct.list, ptr %3, i32 0, i32 2 - %4 = load ptr, ptr %prev1, align 8 - store ptr %4, ptr %head, align 8 - br label %while.cond, !llvm.loop !6 - -while.end: ; preds = %while.cond - br label %while.cond2 - -while.cond2: ; preds = %if.end, %while.end - %5 = load ptr, ptr %head, align 8 - %next = getelementptr inbounds %struct.list, ptr %5, i32 0, i32 1 - %6 = load ptr, ptr %next, align 8 - %tobool = icmp ne ptr %6, null - br i1 %tobool, label %while.body3, label %while.end10 - -while.body3: ; preds = %while.cond2 - %7 = load ptr, ptr %head, align 8 - store ptr %7, ptr %curr, align 8 - %8 = load ptr, ptr %curr, align 8 - %field = getelementptr inbounds %struct.list, ptr %8, i32 0, i32 0 - %9 = load i32, ptr %field, align 8 - %inc = add i32 %9, 1 - store i32 %inc, ptr %field, align 8 - %10 = load ptr, ptr %curr, align 8 - %field4 = getelementptr inbounds %struct.list, ptr %10, i32 0, i32 0 - %11 = load i32, ptr %field4, align 8 - %cmp5 = icmp ugt i32 %11, 5 - br i1 %cmp5, label %if.then, label %if.else - -if.then: ; preds = %while.body3 - %12 = load ptr, ptr %head, align 8 - %next6 = getelementptr inbounds %struct.list, ptr %12, i32 0, i32 1 - %13 = load ptr, ptr %next6, align 8 - store ptr %13, ptr %head, align 8 - br label %if.end - -if.else: ; preds = %while.body3 - %14 = load ptr, ptr %head, align 8 - %prev7 = getelementptr inbounds %struct.list, ptr %14, i32 0, i32 2 - %15 = load ptr, ptr %prev7, align 8 - store ptr %15, ptr %head, align 8 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %16 = load ptr, ptr %head, align 8 - %call = call ptr @walklist(ptr noundef %16) - %17 = load ptr, ptr %head, align 8 - %prev8 = getelementptr inbounds %struct.list, ptr %17, i32 0, i32 2 - store ptr %call, ptr %prev8, align 8 - %18 = load ptr, ptr %curr, align 8 - %19 = load ptr, ptr %head, align 8 - %next9 = getelementptr inbounds %struct.list, ptr %19, i32 0, i32 1 - store ptr %18, ptr %next9, align 8 - br label %while.cond2, !llvm.loop !8 - -while.end10: ; preds = %while.cond2 - %20 = load ptr, ptr %head, align 8 - ret ptr %20 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %head = alloca ptr, align 8 - %call = call ptr @malloc(i32 noundef 24) - store ptr %call, ptr %head, align 8 - %0 = load ptr, ptr %head, align 8 - %field = getelementptr inbounds %struct.list, ptr %0, i32 0, i32 0 - store i32 0, ptr %field, align 8 - %1 = load ptr, ptr %head, align 8 - %next = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 1 - store ptr null, ptr %next, align 8 - %2 = load ptr, ptr %head, align 8 - %prev = getelementptr inbounds %struct.list, ptr %2, i32 0, i32 2 - store ptr null, ptr %prev, align 8 - %3 = load ptr, ptr %head, align 8 - %call1 = call ptr @construct(ptr noundef %3, i32 noundef 10) - store ptr %call1, ptr %head, align 8 - %4 = load ptr, ptr %head, align 8 - %call2 = call ptr @walklist(ptr noundef %4) - store ptr %call2, ptr %head, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} diff --git a/test_cases_bc/complex_tests/test-recursive2.c.bc b/test_cases_bc/complex_tests/test-recursive2.c.bc deleted file mode 100644 index 530d1630..00000000 --- a/test_cases_bc/complex_tests/test-recursive2.c.bc +++ /dev/null @@ -1,206 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test-recursive2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test-recursive2.c" -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-unknown-linux-gnu" - -%struct.list = type { i32, ptr, ptr } - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @construct(ptr noundef %head, i32 noundef %i) #0 { -entry: - %retval = alloca ptr, align 8 - %head.addr = alloca ptr, align 8 - %i.addr = alloca i32, align 4 - %tmp = alloca ptr, align 8 - store ptr %head, ptr %head.addr, align 8 - store i32 %i, ptr %i.addr, align 4 - %0 = load i32, ptr %i.addr, align 4 - %cmp = icmp ugt i32 %0, 0 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %call = call ptr @malloc(i32 noundef 24) - store ptr %call, ptr %tmp, align 8 - %1 = load ptr, ptr %tmp, align 8 - %field = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 0 - store i32 0, ptr %field, align 8 - %2 = load ptr, ptr %head.addr, align 8 - %3 = load ptr, ptr %tmp, align 8 - %next = getelementptr inbounds %struct.list, ptr %3, i32 0, i32 1 - store ptr %2, ptr %next, align 8 - %4 = load ptr, ptr %tmp, align 8 - %5 = load ptr, ptr %head.addr, align 8 - %prev = getelementptr inbounds %struct.list, ptr %5, i32 0, i32 2 - store ptr %4, ptr %prev, align 8 - %6 = load ptr, ptr %tmp, align 8 - %prev1 = getelementptr inbounds %struct.list, ptr %6, i32 0, i32 2 - store ptr null, ptr %prev1, align 8 - %7 = load ptr, ptr %tmp, align 8 - %8 = load i32, ptr %i.addr, align 4 - %dec = add i32 %8, -1 - store i32 %dec, ptr %i.addr, align 4 - %call2 = call ptr @construct(ptr noundef %7, i32 noundef %8) - store ptr %call2, ptr %retval, align 8 - br label %return - -if.end: ; preds = %entry - %9 = load ptr, ptr %head.addr, align 8 - %call3 = call ptr @construct1(ptr noundef %9, i32 noundef 10) - store ptr %call3, ptr %retval, align 8 - br label %return - -return: ; preds = %if.end, %if.then - %10 = load ptr, ptr %retval, align 8 - ret ptr %10 -} - -declare ptr @malloc(i32 noundef) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @construct1(ptr noundef %head, i32 noundef %i) #0 { -entry: - %head.addr = alloca ptr, align 8 - %i.addr = alloca i32, align 4 - %list = alloca ptr, align 8 - store ptr %head, ptr %head.addr, align 8 - store i32 %i, ptr %i.addr, align 4 - %0 = load i32, ptr %i.addr, align 4 - %cmp = icmp ugt i32 %0, 0 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - %1 = load ptr, ptr %head.addr, align 8 - %2 = load i32, ptr %i.addr, align 4 - %sub = sub i32 %2, 1 - %call = call ptr @construct(ptr noundef %1, i32 noundef %sub) - store ptr %call, ptr %list, align 8 - %3 = load ptr, ptr %list, align 8 - %4 = load ptr, ptr %head.addr, align 8 - %next = getelementptr inbounds %struct.list, ptr %4, i32 0, i32 1 - store ptr %3, ptr %next, align 8 - br label %if.end - -if.end: ; preds = %if.then, %entry - %5 = load ptr, ptr %head.addr, align 8 - ret ptr %5 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @walklist(ptr noundef %input) #0 { -entry: - %input.addr = alloca ptr, align 8 - %head = alloca ptr, align 8 - %curr = alloca ptr, align 8 - store ptr %input, ptr %input.addr, align 8 - %0 = load ptr, ptr %input.addr, align 8 - store ptr %0, ptr %head, align 8 - br label %while.cond - -while.cond: ; preds = %while.body, %entry - %1 = load ptr, ptr %head, align 8 - %prev = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 2 - %2 = load ptr, ptr %prev, align 8 - %cmp = icmp ne ptr %2, null - br i1 %cmp, label %while.body, label %while.end - -while.body: ; preds = %while.cond - %3 = load ptr, ptr %head, align 8 - %prev1 = getelementptr inbounds %struct.list, ptr %3, i32 0, i32 2 - %4 = load ptr, ptr %prev1, align 8 - store ptr %4, ptr %head, align 8 - br label %while.cond, !llvm.loop !6 - -while.end: ; preds = %while.cond - br label %while.cond2 - -while.cond2: ; preds = %if.end, %while.end - %5 = load ptr, ptr %head, align 8 - %next = getelementptr inbounds %struct.list, ptr %5, i32 0, i32 1 - %6 = load ptr, ptr %next, align 8 - %tobool = icmp ne ptr %6, null - br i1 %tobool, label %while.body3, label %while.end10 - -while.body3: ; preds = %while.cond2 - %7 = load ptr, ptr %head, align 8 - store ptr %7, ptr %curr, align 8 - %8 = load ptr, ptr %curr, align 8 - %field = getelementptr inbounds %struct.list, ptr %8, i32 0, i32 0 - %9 = load i32, ptr %field, align 8 - %inc = add i32 %9, 1 - store i32 %inc, ptr %field, align 8 - %10 = load ptr, ptr %curr, align 8 - %field4 = getelementptr inbounds %struct.list, ptr %10, i32 0, i32 0 - %11 = load i32, ptr %field4, align 8 - %cmp5 = icmp ugt i32 %11, 5 - br i1 %cmp5, label %if.then, label %if.else - -if.then: ; preds = %while.body3 - %12 = load ptr, ptr %head, align 8 - %next6 = getelementptr inbounds %struct.list, ptr %12, i32 0, i32 1 - %13 = load ptr, ptr %next6, align 8 - store ptr %13, ptr %head, align 8 - br label %if.end - -if.else: ; preds = %while.body3 - %14 = load ptr, ptr %head, align 8 - %prev7 = getelementptr inbounds %struct.list, ptr %14, i32 0, i32 2 - %15 = load ptr, ptr %prev7, align 8 - store ptr %15, ptr %head, align 8 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %16 = load ptr, ptr %head, align 8 - %call = call ptr @walklist(ptr noundef %16) - %17 = load ptr, ptr %head, align 8 - %prev8 = getelementptr inbounds %struct.list, ptr %17, i32 0, i32 2 - store ptr %call, ptr %prev8, align 8 - %18 = load ptr, ptr %curr, align 8 - %19 = load ptr, ptr %head, align 8 - %next9 = getelementptr inbounds %struct.list, ptr %19, i32 0, i32 1 - store ptr %18, ptr %next9, align 8 - br label %while.cond2, !llvm.loop !8 - -while.end10: ; preds = %while.cond2 - %20 = load ptr, ptr %head, align 8 - ret ptr %20 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %head = alloca ptr, align 8 - %call = call ptr @malloc(i32 noundef 24) - store ptr %call, ptr %head, align 8 - %0 = load ptr, ptr %head, align 8 - %field = getelementptr inbounds %struct.list, ptr %0, i32 0, i32 0 - store i32 0, ptr %field, align 8 - %1 = load ptr, ptr %head, align 8 - %next = getelementptr inbounds %struct.list, ptr %1, i32 0, i32 1 - store ptr null, ptr %next, align 8 - %2 = load ptr, ptr %head, align 8 - %prev = getelementptr inbounds %struct.list, ptr %2, i32 0, i32 2 - store ptr null, ptr %prev, align 8 - %3 = load ptr, ptr %head, align 8 - %call1 = call ptr @construct(ptr noundef %3, i32 noundef 10) - store ptr %call1, ptr %head, align 8 - %4 = load ptr, ptr %head, align 8 - %call2 = call ptr @walklist(ptr noundef %4) - store ptr %call2, ptr %head, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} -!6 = distinct !{!6, !7} -!7 = !{!"llvm.loop.mustprogress"} -!8 = distinct !{!8, !7} diff --git a/test_cases_bc/complex_tests/test-recursiveglobal.c.bc b/test_cases_bc/complex_tests/test-recursiveglobal.c.bc deleted file mode 100644 index 17026d52..00000000 --- a/test_cases_bc/complex_tests/test-recursiveglobal.c.bc +++ /dev/null @@ -1,68 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test-recursiveglobal.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test-recursiveglobal.c" -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-unknown-linux-gnu" - -@p = dso_local global ptr null, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local signext i8 @accessA(i32 noundef %i) #0 { -entry: - %i.addr = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - %0 = load ptr, ptr @p, align 8 - %1 = load i32, ptr %i.addr, align 4 - %idx.ext = zext i32 %1 to i64 - %add.ptr = getelementptr inbounds i8, ptr %0, i64 %idx.ext - %2 = load i8, ptr %add.ptr, align 1 - ret i8 %2 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @recursion(i32 noundef %i) #0 { -entry: - %i.addr = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - %0 = load i32, ptr %i.addr, align 4 - %call = call signext i8 @accessA(i32 noundef %0) - %conv = sext i8 %call to i32 - %cmp = icmp sgt i32 %conv, 0 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - br label %return - -if.end: ; preds = %entry - %1 = load i32, ptr %i.addr, align 4 - %inc = add i32 %1, 1 - store i32 %inc, ptr %i.addr, align 4 - call void @recursion(i32 noundef %1) - br label %return - -return: ; preds = %if.end, %if.then - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %i = alloca i32, align 4 - %a = alloca [10 x i32], align 16 - store i32 0, ptr %i, align 4 - %arraydecay = getelementptr inbounds [10 x i32], ptr %a, i64 0, i64 0 - store ptr %arraydecay, ptr @p, align 8 - call void @recursion(i32 noundef 0) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test-recursiveglobal1.c.bc b/test_cases_bc/complex_tests/test-recursiveglobal1.c.bc deleted file mode 100644 index e692f4b7..00000000 --- a/test_cases_bc/complex_tests/test-recursiveglobal1.c.bc +++ /dev/null @@ -1,71 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test-recursiveglobal1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test-recursiveglobal1.c" -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-unknown-linux-gnu" - -@p = dso_local global ptr null, align 8 -@q = dso_local global ptr null, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local signext i8 @swap() #0 { -entry: - %retval = alloca i8, align 1 - %c = alloca ptr, align 8 - %0 = load ptr, ptr @p, align 8 - store ptr %0, ptr %c, align 8 - %1 = load ptr, ptr @q, align 8 - store ptr %1, ptr @p, align 8 - %2 = load ptr, ptr %c, align 8 - store ptr %2, ptr @q, align 8 - %3 = load i8, ptr %retval, align 1 - ret i8 %3 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @recursion(i32 noundef %i) #0 { -entry: - %i.addr = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - %0 = load i32, ptr %i.addr, align 4 - %cmp = icmp eq i32 %0, 0 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - br label %return - -if.end: ; preds = %entry - %call = call signext i8 @swap() - %1 = load i32, ptr %i.addr, align 4 - %dec = add i32 %1, -1 - store i32 %dec, ptr %i.addr, align 4 - call void @recursion(i32 noundef %1) - br label %return - -return: ; preds = %if.end, %if.then - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %a = alloca [10 x i8], align 1 - %b = alloca [10 x i8], align 1 - %arraydecay = getelementptr inbounds [10 x i8], ptr %a, i64 0, i64 0 - store ptr %arraydecay, ptr @p, align 8 - %arraydecay1 = getelementptr inbounds [10 x i8], ptr %b, i64 0, i64 0 - store ptr %arraydecay1, ptr @q, align 8 - call void @recursion(i32 noundef 10) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test-recursiveglobal2.c.bc b/test_cases_bc/complex_tests/test-recursiveglobal2.c.bc deleted file mode 100644 index 3cd25a68..00000000 --- a/test_cases_bc/complex_tests/test-recursiveglobal2.c.bc +++ /dev/null @@ -1,72 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test-recursiveglobal2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test-recursiveglobal2.c" -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-unknown-linux-gnu" - -@p = dso_local global ptr null, align 8 -@q = dso_local global ptr null, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @swap(i32 noundef %i) #0 { -entry: - %i.addr = alloca i32, align 4 - %c = alloca ptr, align 8 - store i32 %i, ptr %i.addr, align 4 - %0 = load ptr, ptr @p, align 8 - store ptr %0, ptr %c, align 8 - %1 = load ptr, ptr @q, align 8 - store ptr %1, ptr @p, align 8 - %2 = load ptr, ptr %c, align 8 - store ptr %2, ptr @q, align 8 - %3 = load i32, ptr %i.addr, align 4 - %dec = add i32 %3, -1 - store i32 %dec, ptr %i.addr, align 4 - call void @recursion(i32 noundef %3) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @recursion(i32 noundef %i) #0 { -entry: - %i.addr = alloca i32, align 4 - store i32 %i, ptr %i.addr, align 4 - %0 = load i32, ptr %i.addr, align 4 - %cmp = icmp eq i32 %0, 0 - br i1 %cmp, label %if.then, label %if.end - -if.then: ; preds = %entry - br label %return - -if.end: ; preds = %entry - %1 = load i32, ptr %i.addr, align 4 - call void @swap(i32 noundef %1) - br label %return - -return: ; preds = %if.end, %if.then - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %a = alloca [10 x i8], align 1 - %b = alloca [10 x i8], align 1 - %arraydecay = getelementptr inbounds [10 x i8], ptr %a, i64 0, i64 0 - store ptr %arraydecay, ptr @p, align 8 - %arraydecay1 = getelementptr inbounds [10 x i8], ptr %b, i64 0, i64 0 - store ptr %arraydecay1, ptr @q, align 8 - call void @recursion(i32 noundef 10) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test.c.bc b/test_cases_bc/complex_tests/test.c.bc deleted file mode 100644 index e266aa1f..00000000 --- a/test_cases_bc/complex_tests/test.c.bc +++ /dev/null @@ -1,79 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test.c" -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-unknown-linux-gnu" - -%struct.extendstruct = type { ptr, ptr, i32 } -%struct.basestruct = type { ptr, ptr } - -@i = dso_local global i32 0, align 4 -@saveptr = dso_local global [5 x ptr] zeroinitializer, align 16 -@gvar = dso_local global [10 x %struct.extendstruct] zeroinitializer, align 16 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @save(ptr noundef %var) #0 { -entry: - %var.addr = alloca ptr, align 8 - %idx = alloca i32, align 4 - %temp = alloca ptr, align 8 - store ptr %var, ptr %var.addr, align 8 - %0 = load i32, ptr @i, align 4 - store i32 %0, ptr %idx, align 4 - %1 = load ptr, ptr %var.addr, align 8 - store ptr %1, ptr %temp, align 8 - %2 = load ptr, ptr %var.addr, align 8 - %3 = load i32, ptr %idx, align 4 - %idxprom = zext i32 %3 to i64 - %arrayidx = getelementptr inbounds [5 x ptr], ptr @saveptr, i64 0, i64 %idxprom - store ptr %2, ptr %arrayidx, align 8 - %4 = load ptr, ptr %var.addr, align 8 - %5 = load ptr, ptr %4, align 8 - %6 = load i32, ptr %idx, align 4 - %add = add i32 %6, 1 - %idxprom1 = zext i32 %add to i64 - %arrayidx2 = getelementptr inbounds [5 x ptr], ptr @saveptr, i64 0, i64 %idxprom1 - store ptr %5, ptr %arrayidx2, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @f() #0 { -entry: - %temp = alloca ptr, align 8 - %t1 = alloca ptr, align 8 - %t2 = alloca ptr, align 8 - %call = call ptr @malloc(i32 noundef 16) - store ptr %call, ptr getelementptr inbounds (%struct.extendstruct, ptr @gvar, i32 0, i32 1), align 8 - call void @save(ptr noundef @gvar) - %0 = load i32, ptr @i, align 4 - %idxprom = sext i32 %0 to i64 - %arrayidx = getelementptr inbounds [5 x ptr], ptr @saveptr, i64 0, i64 %idxprom - %1 = load ptr, ptr %arrayidx, align 8 - store ptr %1, ptr %temp, align 8 - %2 = load ptr, ptr %temp, align 8 - store ptr %2, ptr %t1, align 8 - %3 = load ptr, ptr %t1, align 8 - %a = getelementptr inbounds %struct.extendstruct, ptr %3, i32 0, i32 1 - %4 = load ptr, ptr %a, align 8 - store ptr %4, ptr %t2, align 8 - %5 = load ptr, ptr %t2, align 8 - %a1 = getelementptr inbounds %struct.basestruct, ptr %5, i32 0, i32 1 - %6 = load ptr, ptr %a1, align 8 - store i32 0, ptr %6, align 4 - ret void -} - -declare ptr @malloc(i32 noundef) #1 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test1-path.c.bc b/test_cases_bc/complex_tests/test1-path.c.bc deleted file mode 100644 index fa750c35..00000000 --- a/test_cases_bc/complex_tests/test1-path.c.bc +++ /dev/null @@ -1,75 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test1-path.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test1-path.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local signext i8 @h(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - store i8 0, ptr %0, align 1 - ret i8 0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local signext i8 @g(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - store i8 0, ptr %0, align 1 - ret i8 0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @f(ptr noundef %a, i32 noundef %flag) #0 { -entry: - %retval = alloca ptr, align 8 - %a.addr = alloca ptr, align 8 - %flag.addr = alloca i32, align 4 - store ptr %a, ptr %a.addr, align 8 - store i32 %flag, ptr %flag.addr, align 4 - %0 = load i32, ptr %flag.addr, align 4 - %cmp = icmp eq i32 %0, 1 - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %1 = load ptr, ptr %a.addr, align 8 - %call = call signext i8 @h(ptr noundef %1) - br label %if.end - -if.else: ; preds = %entry - %2 = load ptr, ptr %a.addr, align 8 - %call1 = call signext i8 @g(ptr noundef %2) - br label %if.end - -if.end: ; preds = %if.else, %if.then - %3 = load ptr, ptr %retval, align 8 - ret ptr %3 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %b = alloca [20 x i8], align 16 - %a = alloca [20 x i8], align 16 - %arraydecay = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - %call = call ptr @f(ptr noundef %arraydecay, i32 noundef 1) - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - %call2 = call ptr @f(ptr noundef %arraydecay1, i32 noundef 2) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test1.c.bc b/test_cases_bc/complex_tests/test1.c.bc deleted file mode 100644 index b185136d..00000000 --- a/test_cases_bc/complex_tests/test1.c.bc +++ /dev/null @@ -1,69 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test1.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test1.c" -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-unknown-linux-gnu" - -@c = dso_local global ptr null, align 8 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @g(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - store i8 0, ptr %0, align 1 - %1 = load ptr, ptr %a.addr, align 8 - ret ptr %1 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @f(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - store ptr %0, ptr %b, align 8 - %1 = load ptr, ptr %b, align 8 - store i8 0, ptr %1, align 1 - %2 = load ptr, ptr %b, align 8 - %call = call ptr @g(ptr noundef %2) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %b = alloca [20 x i8], align 16 - %a = alloca [20 x i8], align 16 - %p1 = alloca ptr, align 8 - %p2 = alloca ptr, align 8 - %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - store ptr %arraydecay, ptr %p1, align 8 - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - store ptr %arraydecay1, ptr %p2, align 8 - %call = call i32 (ptr, ptr, ...) @swap(ptr noundef %p1, ptr noundef %p2) - %arraydecay2 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - store ptr %arraydecay2, ptr @c, align 8 - %0 = load ptr, ptr @c, align 8 - %call3 = call ptr @f(ptr noundef %0) - store ptr %call3, ptr @c, align 8 - %1 = load ptr, ptr @c, align 8 - %call4 = call ptr @g(ptr noundef %1) - ret i32 0 -} - -declare i32 @swap(...) #1 - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test2-path.c.bc b/test_cases_bc/complex_tests/test2-path.c.bc deleted file mode 100644 index 415bf2d2..00000000 --- a/test_cases_bc/complex_tests/test2-path.c.bc +++ /dev/null @@ -1,81 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test2-path.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test2-path.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @h(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - store i8 0, ptr %0, align 1 - %1 = load ptr, ptr %a.addr, align 8 - ret ptr %1 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @f(ptr noundef %a, ptr noundef %b, i32 noundef %flag) #0 { -entry: - %retval = alloca ptr, align 8 - %a.addr = alloca ptr, align 8 - %b.addr = alloca ptr, align 8 - %flag.addr = alloca i32, align 4 - store ptr %a, ptr %a.addr, align 8 - store ptr %b, ptr %b.addr, align 8 - store i32 %flag, ptr %flag.addr, align 4 - %0 = load i32, ptr %flag.addr, align 4 - %cmp = icmp eq i32 %0, 1 - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %1 = load ptr, ptr %a.addr, align 8 - %call = call ptr @h(ptr noundef %1) - store ptr %call, ptr %retval, align 8 - br label %return - -if.else: ; preds = %entry - %2 = load ptr, ptr %b.addr, align 8 - %call1 = call ptr @h(ptr noundef %2) - store ptr %call1, ptr %retval, align 8 - br label %return - -return: ; preds = %if.else, %if.then - %3 = load ptr, ptr %retval, align 8 - ret ptr %3 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %b = alloca [20 x i8], align 16 - %a = alloca [20 x i8], align 16 - %flag = alloca i32, align 4 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - %arrayidx = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - %0 = load i8, ptr %arrayidx, align 16 - %conv = sext i8 %0 to i32 - store i32 %conv, ptr %flag, align 4 - %arraydecay = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - %call = call ptr @f(ptr noundef %arraydecay, ptr noundef %arraydecay1, i32 noundef 0) - store ptr %call, ptr %pa, align 8 - %arraydecay2 = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - %arraydecay3 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - %call4 = call ptr @f(ptr noundef %arraydecay2, ptr noundef %arraydecay3, i32 noundef 1) - store ptr %call4, ptr %pb, align 8 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test2.c.bc b/test_cases_bc/complex_tests/test2.c.bc deleted file mode 100644 index 06f07682..00000000 --- a/test_cases_bc/complex_tests/test2.c.bc +++ /dev/null @@ -1,56 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test2.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test2.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @f(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - store ptr %0, ptr %b, align 8 - %1 = load ptr, ptr %b, align 8 - %incdec.ptr = getelementptr inbounds i8, ptr %1, i32 1 - store ptr %incdec.ptr, ptr %b, align 8 - store i8 1, ptr %1, align 1 - %2 = load ptr, ptr %b, align 8 - ret ptr %2 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @g(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - store i8 0, ptr %0, align 1 - %1 = load ptr, ptr %a.addr, align 8 - %call = call ptr @f(ptr noundef %1) - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %a = alloca [10 x i8], align 1 - %c = alloca ptr, align 8 - %arraydecay = getelementptr inbounds [10 x i8], ptr %a, i64 0, i64 0 - %call = call ptr @f(ptr noundef %arraydecay) - %arraydecay1 = getelementptr inbounds [10 x i8], ptr %a, i64 0, i64 0 - call void @g(ptr noundef %arraydecay1) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test3-path.c.bc b/test_cases_bc/complex_tests/test3-path.c.bc deleted file mode 100644 index e5910b7e..00000000 --- a/test_cases_bc/complex_tests/test3-path.c.bc +++ /dev/null @@ -1,104 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test3-path.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test3-path.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @h() #0 { -entry: - %a = alloca ptr, align 8 - %call = call ptr @malloc(i32 noundef 20) - store ptr %call, ptr %a, align 8 - %0 = load ptr, ptr %a, align 8 - ret ptr %0 -} - -declare ptr @malloc(i32 noundef) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @g() #0 { -entry: - %a = alloca ptr, align 8 - %call = call ptr @malloc(i32 noundef 10) - store ptr %call, ptr %a, align 8 - %0 = load ptr, ptr %a, align 8 - ret ptr %0 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @f(i32 noundef %flag) #0 { -entry: - %retval = alloca ptr, align 8 - %flag.addr = alloca i32, align 4 - store i32 %flag, ptr %flag.addr, align 4 - %0 = load i32, ptr %flag.addr, align 4 - %cmp = icmp eq i32 %0, 1 - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %call = call ptr @h() - store ptr %call, ptr %retval, align 8 - br label %return - -if.else: ; preds = %entry - %call1 = call ptr @g() - store ptr %call1, ptr %retval, align 8 - br label %return - -return: ; preds = %if.else, %if.then - %1 = load ptr, ptr %retval, align 8 - ret ptr %1 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %a = alloca [20 x i8], align 16 - %flag = alloca i32, align 4 - %pa = alloca ptr, align 8 - %pb = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - %arrayidx = getelementptr inbounds [20 x i8], ptr %a, i64 0, i64 0 - %0 = load i8, ptr %arrayidx, align 16 - %conv = sext i8 %0 to i32 - store i32 %conv, ptr %flag, align 4 - store ptr null, ptr %pa, align 8 - store ptr null, ptr %pb, align 8 - %1 = load i32, ptr %flag, align 4 - %cmp = icmp eq i32 %1, 1 - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %2 = load i32, ptr %flag, align 4 - %call = call ptr @f(i32 noundef %2) - store ptr %call, ptr %pa, align 8 - br label %if.end - -if.else: ; preds = %entry - %3 = load i32, ptr %flag, align 4 - %call2 = call ptr @f(i32 noundef %3) - store ptr %call2, ptr %pb, align 8 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %4 = load ptr, ptr %pa, align 8 - store i8 0, ptr %4, align 1 - %5 = load ptr, ptr %pb, align 8 - store i8 1, ptr %5, align 1 - %6 = load i32, ptr %retval, align 4 - ret i32 %6 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test3.c.bc b/test_cases_bc/complex_tests/test3.c.bc deleted file mode 100644 index 18d6e294..00000000 --- a/test_cases_bc/complex_tests/test3.c.bc +++ /dev/null @@ -1,95 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test3.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test3.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @f(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - %b = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - store ptr %0, ptr %b, align 8 - %1 = load ptr, ptr %b, align 8 - %incdec.ptr = getelementptr inbounds i8, ptr %1, i32 1 - store ptr %incdec.ptr, ptr %b, align 8 - store i8 1, ptr %1, align 1 - %2 = load ptr, ptr %b, align 8 - ret ptr %2 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @g(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - store i8 0, ptr %0, align 1 - %1 = load ptr, ptr %a.addr, align 8 - %call = call ptr @f(ptr noundef %1) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @h(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %call = call ptr @g(ptr noundef %0) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @i(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %call = call ptr @g(ptr noundef %0) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %a = alloca [10 x i8], align 1 - %c = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - %arrayidx = getelementptr inbounds [10 x i8], ptr %a, i64 0, i64 0 - %0 = load i8, ptr %arrayidx, align 1 - %conv = sext i8 %0 to i32 - %cmp = icmp eq i32 %conv, 1 - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %arraydecay = getelementptr inbounds [10 x i8], ptr %a, i64 0, i64 0 - %call = call ptr @h(ptr noundef %arraydecay) - store ptr %call, ptr %c, align 8 - br label %if.end - -if.else: ; preds = %entry - %arraydecay2 = getelementptr inbounds [10 x i8], ptr %a, i64 0, i64 0 - %call3 = call ptr @i(ptr noundef %arraydecay2) - store ptr %call3, ptr %c, align 8 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %1 = load i32, ptr %retval, align 4 - ret i32 %1 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test4.c.bc b/test_cases_bc/complex_tests/test4.c.bc deleted file mode 100644 index ee8f1ede..00000000 --- a/test_cases_bc/complex_tests/test4.c.bc +++ /dev/null @@ -1,99 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test4.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test4.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @f(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - %c = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - %call = call ptr @malloc(i32 noundef 10) - store ptr %call, ptr %c, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load i8, ptr %0, align 1 - %2 = load ptr, ptr %c, align 8 - %incdec.ptr = getelementptr inbounds i8, ptr %2, i32 1 - store ptr %incdec.ptr, ptr %c, align 8 - store i8 %1, ptr %2, align 1 - %3 = load ptr, ptr %c, align 8 - ret ptr %3 -} - -declare ptr @malloc(i32 noundef) #1 - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @g(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - store i8 0, ptr %0, align 1 - %1 = load ptr, ptr %a.addr, align 8 - %call = call ptr @f(ptr noundef %1) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @h(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %call = call ptr @g(ptr noundef %0) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @i(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %call = call ptr @g(ptr noundef %0) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %retval = alloca i32, align 4 - %a = alloca [10 x i8], align 1 - %c = alloca ptr, align 8 - store i32 0, ptr %retval, align 4 - %arrayidx = getelementptr inbounds [10 x i8], ptr %a, i64 0, i64 0 - %0 = load i8, ptr %arrayidx, align 1 - %conv = sext i8 %0 to i32 - %cmp = icmp eq i32 %conv, 1 - br i1 %cmp, label %if.then, label %if.else - -if.then: ; preds = %entry - %arraydecay = getelementptr inbounds [10 x i8], ptr %a, i64 0, i64 0 - %call = call ptr @h(ptr noundef %arraydecay) - store ptr %call, ptr %c, align 8 - br label %if.end - -if.else: ; preds = %entry - %arraydecay2 = getelementptr inbounds [10 x i8], ptr %a, i64 0, i64 0 - %call3 = call ptr @i(ptr noundef %arraydecay2) - store ptr %call3, ptr %c, align 8 - br label %if.end - -if.end: ; preds = %if.else, %if.then - %1 = load i32, ptr %retval, align 4 - ret i32 %1 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test5.c.bc b/test_cases_bc/complex_tests/test5.c.bc deleted file mode 100644 index 7a5d9565..00000000 --- a/test_cases_bc/complex_tests/test5.c.bc +++ /dev/null @@ -1,60 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test5.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test5.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @f(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - store ptr %0, ptr %b, align 8 - %1 = load ptr, ptr %b, align 8 - %incdec.ptr = getelementptr inbounds i8, ptr %1, i32 1 - store ptr %incdec.ptr, ptr %b, align 8 - store i8 1, ptr %1, align 1 - %2 = load ptr, ptr %b, align 8 - ret ptr %2 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @g(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - store i8 0, ptr %0, align 1 - %1 = load ptr, ptr %a.addr, align 8 - %call = call ptr @f(ptr noundef %1) - ret ptr %call -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %a = alloca [10 x i8], align 1 - %b = alloca [20 x i8], align 16 - %c = alloca ptr, align 8 - %arraydecay = getelementptr inbounds [10 x i8], ptr %a, i64 0, i64 0 - %call = call ptr @f(ptr noundef %arraydecay) - %arraydecay1 = getelementptr inbounds [20 x i8], ptr %b, i64 0, i64 0 - %call2 = call ptr @f(ptr noundef %arraydecay1) - store ptr %call2, ptr %c, align 8 - %0 = load ptr, ptr %c, align 8 - %call3 = call ptr @g(ptr noundef %0) - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test6.c.bc b/test_cases_bc/complex_tests/test6.c.bc deleted file mode 100644 index 786c21b9..00000000 --- a/test_cases_bc/complex_tests/test6.c.bc +++ /dev/null @@ -1,57 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test6.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test6.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local ptr @f(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b = alloca ptr, align 8 - store ptr %a, ptr %a.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - store ptr %0, ptr %b, align 8 - %1 = load ptr, ptr %b, align 8 - %incdec.ptr = getelementptr inbounds i8, ptr %1, i32 1 - store ptr %incdec.ptr, ptr %b, align 8 - store i8 1, ptr %1, align 1 - %2 = load ptr, ptr %b, align 8 - ret ptr %2 -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %a = alloca [10 x i8], align 1 - %c = alloca ptr, align 8 - %arraydecay = getelementptr inbounds [10 x i8], ptr %a, i64 0, i64 0 - %call = call ptr @f(ptr noundef %arraydecay) - store ptr %call, ptr %c, align 8 - %0 = load ptr, ptr %c, align 8 - %call1 = call ptr @f(ptr noundef %0) - store ptr %call1, ptr %c, align 8 - %1 = load ptr, ptr %c, align 8 - %call2 = call ptr @f(ptr noundef %1) - store ptr %call2, ptr %c, align 8 - %2 = load ptr, ptr %c, align 8 - %call3 = call ptr @f(ptr noundef %2) - store ptr %call3, ptr %c, align 8 - %3 = load ptr, ptr %c, align 8 - %arrayidx = getelementptr inbounds i8, ptr %3, i64 9 - store i8 0, ptr %arrayidx, align 1 - %4 = load ptr, ptr %c, align 8 - store i8 0, ptr %4, align 1 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/complex_tests/test8.c.bc b/test_cases_bc/complex_tests/test8.c.bc deleted file mode 100644 index 55f8c53b..00000000 --- a/test_cases_bc/complex_tests/test8.c.bc +++ /dev/null @@ -1,47 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/complex_tests/test8.c.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/complex_tests/test8.c" -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-unknown-linux-gnu" - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local void @f(ptr noundef %a) #0 { -entry: - %a.addr = alloca ptr, align 8 - %b = alloca [10 x i32], align 16 - store ptr %a, ptr %a.addr, align 8 - %0 = load ptr, ptr %a.addr, align 8 - %1 = load ptr, ptr %0, align 8 - %incdec.ptr = getelementptr inbounds i8, ptr %1, i32 1 - store ptr %incdec.ptr, ptr %0, align 8 - %arrayidx = getelementptr inbounds [10 x i32], ptr %b, i64 0, i64 10 - store i32 0, ptr %arrayidx, align 8 - ret void -} - -; Function Attrs: noinline nounwind optnone uwtable -define dso_local i32 @main() #0 { -entry: - %a = alloca [10 x i8], align 1 - %c = alloca ptr, align 8 - %arraydecay = getelementptr inbounds [10 x i8], ptr %a, i64 0, i64 0 - store ptr %arraydecay, ptr %c, align 8 - call void @f(ptr noundef %c) - call void @f(ptr noundef %c) - %0 = load ptr, ptr %c, align 8 - store i8 0, ptr %0, align 1 - %arrayidx = getelementptr inbounds [10 x i8], ptr %a, i64 0, i64 10 - store i8 0, ptr %arrayidx, align 1 - ret i32 0 -} - -attributes #0 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/cpp_types/broken.cpp.bc b/test_cases_bc/cpp_types/broken.cpp.bc deleted file mode 100644 index 2995ea26..00000000 --- a/test_cases_bc/cpp_types/broken.cpp.bc +++ /dev/null @@ -1,87 +0,0 @@ -; ModuleID = '/home/runner/work/Test-Suite/Test-Suite/test_cases_bc/cpp_types/broken.cpp.bc' -source_filename = "/home/runner/work/Test-Suite/Test-Suite/src/cpp_types/broken.cpp" -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-unknown-linux-gnu" - -$_ZN1AC2Ev = comdat any - -@.str = private unnamed_addr constant [2 x i8] c"A\00", align 1 - -; Function Attrs: mustprogress noinline nounwind optnone uwtable -define dso_local void @_Z9checkTypePvPc(ptr noundef %clz, ptr noundef %ty) #0 { -entry: - %clz.addr = alloca ptr, align 8 - %ty.addr = alloca ptr, align 8 - store ptr %clz, ptr %clz.addr, align 8 - store ptr %ty, ptr %ty.addr, align 8 - ret void -} - -; Function Attrs: mustprogress noinline norecurse optnone uwtable -define dso_local noundef i32 @main() #1 personality ptr @__gxx_personality_v0 { -entry: - %a = alloca ptr, align 8 - %exn.slot = alloca ptr, align 8 - %ehselector.slot = alloca i32, align 4 - %call = call noalias noundef nonnull ptr @_Znwm(i64 noundef 1) #5 - invoke void @_ZN1AC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %call) - to label %invoke.cont unwind label %lpad - -invoke.cont: ; preds = %entry - store ptr %call, ptr %a, align 8 - %0 = load ptr, ptr %a, align 8 - call void @_Z9checkTypePvPc(ptr noundef %0, ptr noundef @.str) - ret i32 0 - -lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } - cleanup - %2 = extractvalue { ptr, i32 } %1, 0 - store ptr %2, ptr %exn.slot, align 8 - %3 = extractvalue { ptr, i32 } %1, 1 - store i32 %3, ptr %ehselector.slot, align 4 - call void @_ZdlPv(ptr noundef %call) #6 - br label %eh.resume - -eh.resume: ; preds = %lpad - %exn = load ptr, ptr %exn.slot, align 8 - %sel = load i32, ptr %ehselector.slot, align 4 - %lpad.val = insertvalue { ptr, i32 } poison, ptr %exn, 0 - %lpad.val1 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1 - resume { ptr, i32 } %lpad.val1 -} - -; Function Attrs: nobuiltin allocsize(0) -declare noundef nonnull ptr @_Znwm(i64 noundef) #2 - -; Function Attrs: noinline nounwind optnone uwtable -define linkonce_odr dso_local void @_ZN1AC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %this) unnamed_addr #3 comdat align 2 { -entry: - %this.addr = alloca ptr, align 8 - store ptr %this, ptr %this.addr, align 8 - %this1 = load ptr, ptr %this.addr, align 8 - ret void -} - -declare i32 @__gxx_personality_v0(...) - -; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) #4 - -attributes #0 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { mustprogress noinline norecurse optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { builtin allocsize(0) } -attributes #6 = { builtin nounwind } - -!llvm.module.flags = !{!0, !1, !2, !3, !4} -!llvm.ident = !{!5} - -!0 = !{i32 1, !"wchar_size", i32 4} -!1 = !{i32 8, !"PIC Level", i32 2} -!2 = !{i32 7, !"PIE Level", i32 2} -!3 = !{i32 7, !"uwtable", i32 2} -!4 = !{i32 7, !"frame-pointer", i32 2} -!5 = !{!"clang version 16.0.0"} diff --git a/test_cases_bc/crux-bc/bash.bc b/test_cases_bc/crux-bc/bash.bc deleted file mode 100644 index 5856768c54c4560310109eada058f6360d116fa4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2754000 zcmeF4hg(xw_wP>%Nq_`G5kfT}L{QXFrKt&^QYU-=iWcy_uM=)NW#kApZ#5HuU*bQNkE|D zfu|{k>0lTZ!{j@JMxRSK__^V*{xr!X5_-*!iD4kZl>N0PMDtCp1k1XX1gIl#pZOx@Enm=O|8#z;>mvMjlh08BoJBpNc=$Z^s)?qrF)iX_3vDr1uAcExkBtN=RFxU&W)SwbkzhA9+??bw9`j5T`ccCLY*OiXY)O^#p6oXB9Ya&IOEI

yk0K*&>Z<>qY*pTt_la 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⩔%|VAK)5BoFXH-X3mO$ue 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

sG#QVkpm9|yt+M7e3?vX5MzXTK%6 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�|J=`kFL@!F(|tV3DyP!#bz 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

nBs7! zgBi_mMhkov_R)e#!64~)S_f%|Uo~sWpGAZ2Q(9gN4_siB=phT#oUl&Evat4kL(IdY(SQSEG&?8RPRwyf}*yqceBL7J_^R!sDzC zh{)v!>OJVDeJ}&G1UpE@&{R zDZ;!wc@>ua2>>#pNO93;g?VE;y()IqR?-I|?9@o7G^z^lL+GIOF+oRZh6w^o$7GG3 z@Hd^${cAv2I_zG;ekOhwsK-phgeoN2&S`;^@@#yj1ep^6{13pI^-Tw&0_capoRocp zejsTPp(09i;q;$5O&AZE@>)zY^}Hw9HxdPg>>=5JB?6P?N!OcmhK*I^=pVV#$AKT# zDzd3$Ei-WqttugYp3Qp&a?t@8iWWas6S>Mwf9per85E)k2f7J=ESu@jhyRiEI3I>+ z5m^(o@+kNvLhMGMT{MmbxCTyfH<`pQmp4unY}qIrm8c^VSnn9DbrFP7*bJdI(z>8I zhjkI*@iF_D%klgTwFOsXn zY2$pl(Ok01q6S-1j9|%$p_Q`~=f*Pa32Z+Jvu;>i3@0_x2@+59gwA$TodXLrjyiVZ z92HyynO-jI2Q3I%13Nkx19HGpknZ8XtOfoJMCX+w_{N0TrFHy9*n6Oy$()HiGcSf* z^x3!mm^M?}i^8&xX@%vcNpd~QAmeyPn(q|%7Gfg|Ip&A@L{x+0?o>$lC}yOi=u8B9y?vT-jSG#{Nc@#)FSlPpw0ZC+6kc` zIi{o#$%A;_!epO1@Imzw;JUC@@ZSkFrI8XZT&8F~J9>vOtso`vXo(~L`QNeg{tmcD z&kVnl=r5AYxnvW<6#nrYsfRrSBI^YZSr10Pv^l%FoONOd!eT4F8a8w=lSF33D2n_# zI)tG+W|8RySSyJpL|`UiDjT;IViBx#0nLFHr2%V&5y5piFL%;R+Rpv9AZydP3d(%C zA)x*^>_fk#1CaX7$xn}9Y$&dN&4kd$61o6;0~!My@OVA}irO^8T!yzTx56FSovUN9 z#hfpvui9X-j5|UnWA^r}4#KP0D3XIQ7{s;lAXuz4~JJaXJ zG7J~RI-+}!!6bZF6{cfLt)A)V_hkPvqT)W&ER%RAPFpBNu?mSemT_l8Y74g`??6g* zu_J%|9gsLx;qQ0CJ3~m;OeKao^aj`qpm1H9#~arJ?_rJq_T2JTs|y6(B{KsGd^x3^ zwxXDg@TxXw!Z(`>r~NOpIXxaJ*aE>ADZZPIm11FB*?5qkFv%N;Gi2FH%^$0Dp$AcR z1iXl_$_br_aICaTV7r->5Z7+C%WC}@!^!4czzW8X7ouUBD`f0vm^~fcykGD;5ORo; zDPUf5C3sS#D%Vxl-6y<{0*Lp6v_5`bEo^Qn3!C5Xcyd(@3GNEYt@JcmBJ)|;ci2Wi z*_UPUge+GuyxJMKPX$u;$GitGQUks#PlwM0a6Qk!=73;Id9F`R^))e;9SxO#BG-fT z=pT|?WT|!i9n|QNb@B-$bsY30c9a`(Olg-%7$QXnl6AN!WjgINI=kAeE)5*kXyQen zY@e&i*OqiveEoYIHLD5=lK$xUTAh@~xg`F}ag-DEyQ`$-&C&_KHU27M+3~-h@Px0cpj(pw4wCTy)CJzwPCV?45q#j^R5^jQh|i2;C6EfyI{sYo4rE=EkB| zO{2XgZuZWO_FwDl9PD^!KDE1l?}@rkXR(3@o#g}STs$u2b~D_K;9ov zOBl7ka4@|UtbEwQ=T@Vz#Y~mSqlA1RpixOE-K=-ESZNc1Y2ZTh+*$!y5^DUD9E422FZ?cZLe9N9MUoI=*pbtbJ`@vI&E$Yw`Vf6 zjD=gu)ZQxGMV#rxNUA@gdw?>sa3+;}8i2}Tu*%j0nfJw39?&bOkRTI*5&8df9#FzO zkYifuQ4EF~748Uxmr+s4WCXynv;oF#S3SSV@{kTxzu8l&#i+*(+&wz*4%EysmHRRK z^|Jg&3lr+1gw>jucqFRYjTQX*pHibUu;d$989^Dl%8M72X-!jPx~rO`1Sv6ORY_gh zD`o6l?Qrt!wl#1cT3i{t6lQo*teW8D=SWi%RRoxCAw?B91Nc3*$6>4(Wyl}D3efEI z_!X9eY}p}b&8pBCrxM;MUeub@`MoxJ2M_bW-jZRg`GO7&B^nLf^_3#AXIB5HfsjRp zbnuc~C@7PnT8>4Og+!c1N|@)M9@FLwOdk!*uH0oPH4QcUV)U{o7`96)Dn^SUQ9^@^ zm6K;?a@|5f9=wBTl)9Zd$%3ILUkM#ZkQtqn2+wRz9Ku*|?Pv2pPrIY8kB52dH=3dF5Ioi zhqAf=^_(X*KS+#@(lT5qB%x4{^_C(S(37;-tDK!|4FTN)toKgw8VgeIPw+-!=4GXG zW^pronV20(r+Ywe#Hb+L9@4wj9D7nI+=g}y#y&n z6o|*=&5MQUAR^LBnTK4GQUxWq^)z>^i@W{Klus$V-h`}2gVCEx;z)pyKyENZ53}6b zIsK4;qAf9!gwiNCgG!6TQ2j`PRcyqjAQl!}R#B3|T+Gry7vWwweN?O@wt|zYE|L+_ zZ3LF1rsB5FlO3w3Nrne18rXC*mJ6<7#S(@%FU$N@L4|CI?E6{ublvmi#6pVQq>2-2 zrLHZx2m=s}YQdZ{{`&JaR*K*^DUBk4Q|=Cg0G3_}EPvF_67g1hMd`z#cW0A{vZWBZ zAp3*sVuJuqW2wvKBu}LbB0UA~f?`Z=U8H&dzXq23WF8aYN60-cuc&EJlx7?o+e$bX zilpYr39pQP@Xa7oTTV7&vTLl55zm^+{cN^cvrel1BsfsG7Yy?G&~M#8frRJ>S3@A( zEbKavqG7^)CvkA9@scN zSn%U|InM74YNK zqh0kZ!$?vmRH}A0nf;qXI2>Q3IgI~UN#j&8;gTpm6Nr9dY!!{id|PAsV@0(vzmlS$ z8pMQbJ67$n&9HAF^c@N%5=092j~p%w&a5Ly;NWeef{Fe>!e(2`+uC*@IZCh!9|-8R z!4>rYQYC!WtnI)%{Rx!xe>7Y8Vz%hH*ZNC~(&lG2Ed4=_9Yg=*H?;0$^aH~{Y!rp( zEO8hTKwO-asC94Is8~)2M|c_>g{>%8)hTHTv4=+ukU$bIBGPdOcc5+XClY5SPcoLp zz7>B1n?vZ8yFyx+>d*AH2ueV@M3P;`hL8~-my`ILa1mwB6TZeaJiAFD?qop?c4An< zNST<$v$TPM6x;`9DAfxBGeG^L1N|uz7hg6L#cXV+CAngno>^g%Q@}|l;o{R*MXdkP zRQKOaS1$?RgcIxWp>t2Ys_ zwn@Z7t6#pe7(|&|+Pp(`BAp0qPz;ppWcljLcBJi<;B0q(ZE`1z!xM>&vc5dHtw}fi zpC%0tZcA>egu1cxB03`rvkh3Z+3KL86pfIBLI+w?Z7~yXx?MR$vZhusCENsw;f!=| zEIGb9x86e`X$Ga{XK(e>Er0XRqx z9HBTfH)g^Ye+B!ptc38swk2+FT5^sA_5~YxBsaCYZR?d;UR!>URk}IgG(2^g zqmHTo&jxJP!Yi{V6FxriH)p=d&zIi@fF=Xj(jdUQ^v$wWvPq#dhS_)#2cWKf47+c< z(%EdmCJ-$_gAgV~DKmQuhnpGPK$Rf8!Rmz#gaq~3F6LYrGxWfmehh<)(g(xfQmj_@ zx=qsuxLzY-H_;$q5c6-L`apLSdVDFHQ|*5p87q~N26ljK(U^!seRve8cHHZBOJ->h zbOKnFmNqk-=+m*o!J^r{yeZ%u6J>s31taM^*JoDCHz1ia&TnP5&)NQ26rA&wG7?~Xy<3BOm z6bSaEx5jUEauvx(fp8_%i3m~6x<)xwtQKALS-GM0wAHfQ$`HFCBF;%;2XJW+-PxhX z!bM5CqM4|BZT|Q7-#AVfm9F|d^J)hl_0x9ZlvgrkcSkHdss)Qru}JAFV_T2W1LK%G zb8dYAR2mLo2BSR+qIQ8%$%*=}!hA=KVRPhWV30a}$F$W+gCV zT>y7Jnd$g|z;l%D%8<;UiA95d16f1|`?^jLrg|g~nXHlN{~RlpC?*O1F>tPh8l`}z z5q_RIc7e4k=HX{nqpFVOy0%7Bnig0hWG4t61?MT?p~~!AXpa(Y|BMAmB+i14+tzkA zZ8gO?i2r-;8bb@_fF97rh5Q-Bvm;qK@cqu|Ofj^Id0&&%4t5bN-zb%rbbm^_UrYqF zqDx+Y2 z6lRWS%mCO2bt0BEcb6M&xwBx&2m{^t{eDJeJy9Gd8OU35xOl>pf-A(s3Xo{=cxWTQ zAILC!_lYOVW*Mu%+=rC-EK9GoowCPPkhY<`G{;j;iB?WuW7)m{HXi);;PQI`}>(KrKuir_z>UNX0zKMG2ZL#%vCl2LE^4I}$^}J=^payeZ zWa(g`GhBxjB{#jCTovrJW|LQ`>zf>sAIFukYas^SQbI#E3Y}elpYcD9Vh0NV7(!tC zMe=n~4(4C%CDkCda=XWUUP0!ZRKOI(gV^RXZrrX3rmsgX8?n=MkhQjguxDoyOG5Th zonuC*Gf;k->t<0xh1SP$CQsVJN1B(y&2wpA?z5}nxN$%aO70|QQeqDNA(f%nic%$< zO^)J8Q;lhaGXY*C5K%W>Sb!W4ag+EZ`LA88fNWh#^L!9m59}pMK3;#vyY0dPEz_Mk z$7Yx4cU!vnmfXDIJjvzB^7h!@3#4RLd*YftygE7Wn+KjER0}c5(fooHLvSnQI-G&z z)5;aLp!91y3i0c3y6WeS22d-8SL#S8qdX4Na;~C96DF+QrARjoKmowU5;FNa1tn6pRDDiN(< z7&5UDD;!kr0x$m2NI{<@IWS^i%PH0G4 ztD{n21Y8hKu|CpV63f(ceEm1wtO6nAhzn%b`NU?F(}7(s&%*9eYKh!1vCriiq$Iok z>oM+%HqPY6yB9ld-2!&*gPw*|rnJkI30o6>EoxM!HQk&|mhiah*oGx9;a8PcI*30I z!o3obLCBzy*y8Et#ey9gBdfr}X1WtOBM-yRaYwinWd9|peGb}@Ts8k40jmVO^Slb! z?wv)+<4IeN!$!i(SYcTzs77M^b1#;KCKE6wFRm_`04Xd^hQS8{20;+a3~HWlojzkF zf#-_9_fHjkbkyTkG7eM#HC3r7_YJO$*#=1GWF}i^#Fa4r{DZy{$@#glzrTv!QF1H( z;%+zyBC#umflb z>1OfX@-V8V;9+U$L8_DKH86Qh)xVy0?^YJ0T(3<^b#mNw2lKA}FZV;1e(%3Jp^or| zf}RXkN|-uI?X@=-*Vvw8a%87ijS$`%Rp8k```|MNj@x#xq=GBc&jT1IC zTW+^?+fvjiz(FZyadc#UM_$C$1~PZ?*Mp;?V5~xWcbcQx?Fb}?$wD$qbjOCLW;pRO zYD1tVz#wyM)ogzeSt57306;kAh`97U7%|nD$>}I`A{NIAw)USb{*C#I7CNbtnh_bN zAvzTpRUgt6&1$YSW`6`Em(Kpj>iEXDc9M(eOnw=ZhUuLr7*WqyI%`@&K^@p?n6%M9 zKEj0aKA7>OX$-rKwC%~)poZF=WG_TJJcX3=I1}Nfp~S&+0LV`o9-k_H-&bNL$!;1i z_;f+5ZT>CNAC^X@x?L?fr#a}{v4iIh1D^u{bM5=GPpn2wbD{&>iG@|gaHT%L%h3;( zv)!)oOhI&VR&oi63DF*f!qt-7&-3~sM7&sgY8iQDw`VgsMX)sZGUNtb?@5I1Mn#Q1 zC25@pFxWazkH;{#V^4zJk*naVg@CGd-(J_+Qvhz0>E%4qzz=@Q&HSgmJazBmr9{h#Eed}BsZi=~0HID+NnN`VXq-%9345|(@L7Y!f1KEhoAy>H zs&!biBPoviKT6&^?;5KZp$`4UTr@JDRsdA4I1wkw<81L#!EX#xICUGz6Xc{=>O`0c zw05LzFZDL!2zVo|$iouZT~5@|+5a0lh=lneDCm&{jYP1Vqj)4^h2|QjaMXuE(WyFh z9f~qGsf)R7TSxa|N>W{i9czNhgxz%7)CZ!5OfO$5`{LF8rwaIHq{1S#6{n7Hb^+Dt3<(Mi^yu5W+~tejr@l%PKMFqF*76{!<0I ztkf*FLu^GPT5*hN3KJ;>03CE-QkdgIdFv(wAK_7kwvfpsD1fAlexf*#7H67zvHOy2 zMEhBv`{8&JiybJAn%d**J#=E{=N=Ii5;&FEyNr17zJIAZIAzboUGZf_t9*5cl z^&CkiBisx{It2h*oTkd%_b4R+noh`L2^3P*o>@;s!c8j9qtoaA?O zde$I1(YfMCl3N1+iK|UeU&W$lWQC=3m&?=WRD__eT(+G#YfFxTO5KY{7U2K42u7*& zpfH6~$xNWZf!{~hA{mQ}VK*kBssWiHuagaslv3ObNvQzcw}L09q<10`bn@?*(zwwu zJz`;v)UT*(%h`$8sKduw8ngqAP{=2^CJww76qSM<8Vw;5zmTtQG_x_&cwAm=^=pUJ zWpX@de-zvH+>!ROw*uIULi$zTCn3Hu=zZRbF>JEMIxjVrwECnmXqOA8^+~HxUA2Sm z+FJ)E7j$_JeDWh<(-c67z!w5cA&l)#=X%5r+039gFW2HU-5dRAW20g%PAlZQ{Gc12N5Ji;1 zH^cteNyUFVp;y@20D*=M>vYM%*gIl+&FvA$VPG0lz65m%WEgk|DBw9f9+rpOlBd;^ z=ivHbLk6lK!M@SUXel$I(WfZnT9)t&oN`M+Fc7DfX-E=6E$bBmSD-tK$oPb<4rdL!OL;?xBh+&>*#K@f@+n+V<`=; z#Q>v>{W|`}!t+kug@v2htI%m{n}($l#{mzLcCU2t<4o!s-+~_i!;w?VfVh-alqk*L z$sQJyVKG+TKJ>`>@BWLLVi(hHRKZSF!ceV93XT_mkbMxMVMtE3{IS^e`OCAGyC}Ww zfk<%2?I`H*Q?8Xs90xJkDmxZMNmqlQHJX4r(wKz;4uTXyLx#a0uw&n6*QmN5s$qbO zpFhAJDzUHFQD}5a+zRH#5?+h8w-Q~lGM#ZtP^#)hwuSfSbLB3Ecm(1a#d3;ekV>0x_=}@A2#mjIzuKsTwqAFo-rPp+fG6 zIyZwi2%~o0AVdp5IRZvcyIfkCKm#h#VKN! zi`#YCX}wK<1L2Jx>;JBI_dq?`?Vteu;(8oQjTYON0AL&VS425o5)&9i>4HBOf}nFb zN(Ocu2#`~WX{6HC+lp7za9#G+kZD2w}7Ma_|DBgVK)lr?3K^ zBz4?1k46iVl%~~*b*oMSA4X9-NRI?=S3&0I~^Gb**h%X70TnHHHTO&X+Gd->2vJ6HE|>9KX3wMrc&Zs0u zo;$NM*ia;|CV?5L8nCc@(yxWwksAR5_=k19oU!KBvqBEoP>#}2>`*CX?(Xda;su^T z6x#AojK(L%Ah+>CK@wTEolVdS7(QNln?4Ynq90IfQ&fEP1M0zmlq`+%%P55q9$xCk z$E^^lBo3EQvJ>2IS&oQ?FhXK3(VbHKHV67cyP6rVh?G)jE#axKqT-j))BH0|qC}Ws z*`5E9W|b~|f@65$on*QIath>ALxw-3hH?(6KAs|^TJfst(D!{Uy`dAx0EB-k5=%$w zp9(o9|A)%Kjh5cjt+ve*M zgFtsy$OP)ElonrJn*elFAff$4MJ2#{aY+;)u~DEF-&&1)vL;h`fyBz=x5VSf#eC4Y zR}yEaW83R(k7IH@z>a8(r2i-b$&qWQRB*;#bUzHtRuTeT1sl5MjHCbRyGQ(d*k9DD zMv=QWOJ@p9pVWfl8o{aEj`GkqfRrax2ULKFs&Dj`BgvyQYo*Q>7d64YN$lRI<*a`?SES#a~6DVsdL2~fC6l~#ER3N+<*4{q zJX*FP;GY)3>2Y`}5jU5)|E?^uc-yU<}yq2<&s|qtiVA z9IQQ8HnH-!shL+{g#NLipP6QcwwjMaJ?g#1?U($oylBC|e_ z=21tIc@~4VgsBmtn&L9raIuOC?^&2bQMFYoZ^8xob1bxQ)dX9g$sFv30QXT?7<7pD zG7QKeq(R>UXqtO3!101Pm$u;j3_DkXioXN3lVH}<=a!d;B2B-VJqbFdgo8xu9Jacm z^(rig?d#tCIArqu{0)jd&n*u^6yWs*@A-Si1{^_vd4n9l8!;P zBAg#2sD}`5L|d3^2nH&7n!J*}SoE%+S6%}nr-6H5Oz4AK0ZXS+(fI#ydXyk>FfXEt z*Oj#ycG0JO!=YJa%eI!+lZNVMw$%X6Qy4A6tkrP^?+0d$_taU@61J+*}Uqvyid%2XbrrH>Ft zo#IE=XCKm7m=%7{9{{3&A3jXqh1qV=xfaR(=eGu`{36x+gb$)R9S=Y6lTE?7thOb1 z?b01}UO?%wJ`Qyx@iQoW1@#L&3GI9P?vV3^;Tb&_P8Gf%B_;559j3P=xW0cg=3gJcbm+>=P=n2C@4mr+c|Fr@|5s10>zfvmc_ z;0<(XI^J|AeyQ;22&{aTz{-2y>3hJkmVB8SB(zYZ^H_jy`fN4U#8W%}0C^Ap_+6#h z-Vb>w!7M|XGh#x-$hSmkO7feXEu#VUYzm>Sy1%N{=4Zs7oz&{p)yD0=WRAiN+d`QC zn9BrPr7oqeV~i0e($aC5=RZieOh{)-Y+E^VBh@tv>Y=QN$SYcWEQv&B8iCU5?3&x^ z1<=6B@@MW#{FSuV-<+dEA}Ik;BcGvALMt)?S!wqN2H<3QD}y4#%m@&3WOEB&Xq3Vz zS@aPc+SR3pwyFW@K$w11RSV|+HdYaJRK0GbYsVdxuqAt^;Vq3Lyvx4J7?oM2I`chf zhR}%r(1OVfYlv>rxcI4}9e8F%0ZxsBCm3$^;^x`4ISzhvVciX90AN*(cF>##!$qiJ z;aZS#`hrwW@sL?9*ml{JbRUkFf$$vlUxc-zy;))!RnEq?&{UGgC^Q~+UxAd>*p8hn zzsa3eYn|VSgy#8<{HDVMd6UDMHd}S>K*f%3(}9%)2-nl)RXu~>-%Nqu)uj{B7)0>& zRT=a<*B8_**&`q^ZPjg3E@A0fFKRH zH}RKdpd11i9ZMn$H;tc5oaB2!g$Dp+K?PqjRt$L&^ZN9w<;)6#RsA_>ly5t#-vc4T z*?M$ZbXo%cEs_}eaGUfUnmjK{Qz@vEx&ybCWA(z6f4Ob(h3OIH9V83bL6LcZU{u0w z((ORUJXv023xC$k(qOx8ziJkgz(F+J8>;cvdHuG>)1&Lg;2|vA$}WlOT>#vdO9$S6 zRM5<74NPuW{MSSelMc`T1ljeV?G74F=nN|$<5l(@TNU2!B=L$)P8p;Dc@cBk=)KuS z@Hb#%Sm19mS!c4m{}bk4S`5)uD0$VIJMuB5)U?hTtR|7GB4GZE76bElQK@@R@%rYT zkQrOt``rA23L|7x@IAx?pfMYd;*ZNV3! z>o)y0ri*neHFMn>CLNjDyW+Pc3)1}(D!%EJ8aw{gR!zZc_>^Ts5 zsrSRRlKfwfLC6TW!Qbs8I4MoCEkvrstXanJYOi05u;y@ReCmVF#>&3 zltR{dAXtk;U57>Gx$&;fS(8(RtOSVMZy~t?{)Cpbcy*R-?``$rF>2f6pYd)_iSSvdmR~URutgzj_DrcXX?cfsE{SH~S-zLhB z)Cw5a%`|=))-$|cNP@V>IC>A%jvf$)XNpXzj{Ntb(+{2Q? z$fYU8Qe-CR>^UERcq$WPS}V6r(8DMTaN<)`s_P}OZ3Pf!KkP^!$TdWjIt7+HZOW`< zlIsVt)4|V@N%+078aY9UL^2Q&O;UE;R_`bZ){Mp+liSCnJJQ^7GqjCtOjidD)OXo+ zryufqh|)X^5mbIis&`EMs6onIz`zVt^D!$~V)V8z2{%9}#`4FLYh{)o&IZy43BL26 zN~UDu(x8VnJp&NIIni#%@AxT`G_)1Vu?xj%+n7;s+VfZ1R@av6r)*ZTR>dMd$L|k_ za0NJ0kLL^LN!OW<(=&QifZL|&llpz1B(&}qZdp$G3W3zAf&FLOsk2@~OP7f6q#60T zhw5DoUKXn}F{9RS;a=NKzcqfdW%DGQreE1^_bDR9)NFFib-x=MB>x(jxkl== zg83TLRNau9}i)R<_SpdE0gI9Y5DujeYT^MfrbV!$-T- zA1gqR^R?{W;L7G;l%ySjXf7_UvAWw0 z#9sq%3(_V`7Q;Jv4FOfyDHPl)Khk#P*S)fyMsK^;n7iI@#3cFXl|>8RJv_4aU)eJb z-Zj~wc3{@Q>vEHCw8HX7X*`b@h*H=cS+7X8194THiZzH_rOA$^Z@d67dWx&Ah4*M^YySN6VMkv$K{&!Ih0h ziI+yp%kh)kRdq&-19`jaX#f=Lr#w{&&|4|$(d&P!vo`R-h~DooGrNRM&n3UuUvv>= z>EW4bIXu_QEuWouHY2dS9FQ9e(2b(BJ{n+`zc1mgEdE2fS3qpwlggE;0UoHf&9fXD zFB%Xwjz*Btn~|QDTL;HX{4%)A!)oIG^pbLs)eJK=agv9=ZLbZJ56+bzuBX03ZKG2B zWXG%S8p`qq+-fe}+qTboqWtBUgJo;1q6Y-u{5283u^p)X?!*R3|~&nWq=jGB*7pEFiJe)tG9*U*%o`uqJk_~(Gz-U1IapSG8p zzpzR|^SkfZ75T{Hl3X?{9~)dS+>L&uJ^SAiAB1nz#*g9)UnD1u@ZVdAA6Z%dv48f> z3VUmuL!=(lq$fXOA~o+hd*+s_D>wF}=2t}N(IaNeR7i_s&xN!hAFDl!)&pK>x5t@hEyu-CWj6`!aaX222 zc*D=Z^S`p&L%$g;AF5yZ>&C(Kn;R}^`>Z4O-oS6NZF&p}zFBpaPLaK#aIF3hb~)7C zV)i1(t4}vtQ1jxTv`r_X_7DK%dkkAKPuHE(_o=jafHMiXOwn^^?2PFBjqHDe>ho2gk?+ z>CacpD4F~5e#{y1grL3;)|}Z>5;XEb;+cI5f@eQS9g+DgIR3$&5eFB{+xy_qh{Mn3 z6+Flpadg4=H4n~@IR5N=`O3>9PHdb%r1IvOlNt-gSN?kD^u`6>S3W$GtFdr>W$l@B z8y6m~Y&nys5mH>)e&)i)kmkxyXMWKL?ef_Pg|o%jzR5wm21+Q1`0Mu4Ukl#qZj%RwIP8pPGH+t55RA&YRq|)cZQSm}vj2 zO#NSrwB?3tuUxsu6>-%5($-ujgaVQ@3O20IU{DXM7N{Bk{(VKPY43M%Sr2;cw_1AVv6IpIxZI1@hm?}LfX~{f_(4Ztkg4I#_q_9{6xmQdOX0{2KD|;eN4F zd)c-n^K+MZX_-EaPPs;rxV35R3JC<7#fskrtpcDT1fVY_YsiWu3+K6XUlh4%Vahd= z_=x@IG%qUBZfRPv%UpEDNr~%?A5eOum1Sz2x>hW*7D4x{2aH1! zprpzG8z}2{go1;WR)H$+h_@!x&k>qmpMTcND^uPlX!GQt+rizAB5qJI03o8CE#OdI z@pq;59u_jEu-@w^JrI|-NAc1_PF%ETJj=k@v7cDjXCYdtSDWYZQ;&^lrX@XVV>I_i z%}R*fY$~r2KbYJ&1RjEvdbY&jM^rD2tXy}`vKkGsU!hFnkY#Y-r`rezu|tB6aFnLp zR(Z!XT{<$tRkMS5F3+Gx{v1rx;| z*`jp%uK3O;BDg*QB@2Pcpx)NvF=K}hE$R7dtXG#eM1iVq*&bWv(=Kz+=X#&NxtjXi zVDT#Cs?D$y9Cs)xSaV)%mfVB`QyX*~CwTSzHO6qjZ~3<0ng+=Rthv%8N~J__W}I2s zoN4B9aW|VLxpp(1G_m9g$UZ&C57tF=T{JLh>ik~mzZwmHA8r=ZYk5zz^G-uK7hI~5 zfYRQ%`CfTc+M6)67%~7OVP2LM71>8&O!EB~Is{252K)uWWWcXf?HAWq1K3UXjZkwL zTpf%SKbS!11JOr|q4AfW0#ig;1A(`#bq{+-Z_ClhhQ*dIeAU+kLu3%1CG-a7l;wFT zp9b&C)Er}skZg>{gK#RnxHZQKJ~W3YYSqkhJ^ES|dGw3Hx$l?%?fE3Pg25>SoCJT& z(_Lpom?Brx$!fKhHDL0ggnq8znN8Mo%{)#tLJE-gggMyR8fTJ;JGcqDx-K)766GC} z?k&c^zjGGb0=aScpg37PHq!I%x$4F5)3LYGOQ?b#5~XsU<>mvWTmWJ#>Nq9hDfcXX znWV0^8@ff`0RZ;+l`V4FlVr~)&8xkm=aZUTua*<25W}ZlVe`aq8jW}0B+cHvBAR!d7=qQjo%tecfMURel#wkMTc=!!m}a0C`w0$KXp5SQ7I@vsud%x z)@b3qt9;=^w{snTr~Di^=}K3cXWCtOggMLVbi2;@pVpMwc;tbX3e!iv*>p^9BIK+@ zrH}eW!0xH%G%_2y_@lD@_*u~rzM68}l_cAoVO4hZ^}K{?Tz-pja*0B$F(z1d40`w2 zajkYtz0*j7U8YQr;_=ekbMRUZbW6hKSproPOj>?-waECW!9ko-`0B?jS?6&!HYz@; zItuGd`F{K?=(+#JTj;q)nU|js(#zCoDlXWv=VhQ*U`TCLRmM*)8ng(4KiAaW<^NHvYy~5 zT1#uDZQQL(;7!5-*Ga{EXnAwkTUA!Av=Zd<`(pGm=L%#gW=H9JWvY#k-M;Fq;h@y4 znCWpUS}ISYV*_;t6YI}hCliaW>}8r{wy!ext#jG8 z_N<|}Povy^Qcnf{u>4Kf_oz_Ah$T(`-dFvtir21o*2{DqIB1XBh~R!R7sbV_Sra>4 zKjEy(%#ByAdkr#DJQI|5#hU&$*G+AM{=L16vc?z>oHauuv%f;1kxH*9O;0z48B=Rr z4fn_-(ka&_s!dgi*K3UFX|__&wxpS#0a?BLTXB#?N%$RAC&rj+5 zHDmlGpJ&nM#4)q@=j>^qCu5dLelv?cH;#!Be)9sq5uRckee-V2YW~d_8PmSC zR`wbTIi$oV+kLt`BJnk^#Ro=v-#@O?cTT_9tXo%iWjDcl{pSd!bB z67)mD&%WVy5~GN+TG@Sdw->_&R1gToLUFL?;S!zw=i)SdF9lzZHAvedmJ3fwZW7;l zr-8U4{G!_M30SOQRT}*E+;1zk7Vo>*D`tvq_iw}#DS3#6Oiyr!m|zt|F*wiTFxT-x z>ZcZ6s1JzV;gw7ggN0cAoKs)|kW`0lmA{dXPO3*>tGNfK+gl#!7({%Q!q|BFK2bt#%5)saXF>)1M6$1jVJrB>7y-?DFsz+FZyhrU|T zzLjD8V(MQz@|<|C?2Brr39LOAk=!okXAhnRO?Fig%xqs4XjxEfy#ZL#Kb!`1QA zERbA$CA!a0N9bP$>n0?knB{n5PQ-eT=z#EN9I@Y&{==L8)YF5IN z)P>`E`0l|bhh@=FZ^7-*z6tDLEk~!X5&HWCXH3-U{-unr%Vs4lJKx$xcYVjNN-`Os z>(WQrM|M&C6~l(0my5;~O>~ph4ReuoLz{PtCjR!twItgCzM-Lae8<-%UG(uS47KR_ z#oHuv{BEo=+Ng)!@*S_Z?V=Cj75c0jW_j<6-rMk-Bca#seKCmsD?jw6@A%=YjcN~F zBe_NKtGXv&9~|a0cCwpnQl!kHc*QT@ZanQXr3jyOqwsmvmtW(vud3&0*(Ca`XrjFR z^P;I^C&ejhUYmH@XIjyexK$d-8&3Q9u{H{5qV;vr=S9=elR@fAAZ@pXl&S4zX5ZLriY!1u{ri_diui5 zCR%T-f)p$_dOIfCdm@!g-b4ef!nYMf>OWWzMi^hqi*cJ$z8>3 zm{MCnSQb2LOmfkZ z2;jM)B9iMgp>&dB>JAvCQmbH@O~0gPBfQ z(-(p>R)(`}RXmgrTU~OrZSaX5NLB=?nXdyT%(L#}k(Qa<5FR_Rtig7z;%R7*zVkzL zQU{F^wfWjJboy(v1vO%Q24oKeX8}Z5j3!u8{=vpod|l69nbZx3XD9F*jUD&Q%8=9$ zC2nR8+Tu;l7MU=k6XiWzQTz(Or*!a}o3yMVwDRKpDyb*@d$11wFP* z^7Oeh(C4I)x{bE{;Or}LR@dEUG)|GuILymanfY#DLxcj2Xum_ZU(Gg7GMeS0;d9v5 zD;BZkIEy~>HO-1}##BS9T!%C;YTJ8tpabKj<(d~^YWP}Ov1M8OgYsVmNT{#ek&s%#-+WU%y?o%(G` zqE^|Huhr(i^hlD|*3wrN=ClB&$Vy@XVEK`(fCkB@J9JqSJ}4zr6|Mt6r= z!lQlk;l%_M9ej9POCMysM$m^R3fB0b<>f>ls`m{)ksfN~<*QSvn()+Q1U^`K&7co8 zwe*dPmmhtob*FDcUZdzYbt`SprH9V&8b=@MP3UN$UcKl;!%F%P zc=|k%r+oJT)MlWOf z@Z6o6z4IEVQ>Ci>VkLc0@wTULUKY{^J#RDm&^BlI{q#^%Z%g{{s*sLm@2%7mAKFbq z@WI1dm%e#jOW*ir|L?6pI+0g2+4C4C@ZyZ(}+x4p94~G~_@m{%bET4^bX%q)2 zTrx&YAm~9(;YEF!;SQHwtmZ3tZ29t2;cJih-C9r$r-CUfTm{kz3J*1engm;F|XeLcSH-^UfLtO{a1bX>F7JhAF-RrT69uE6PH zc;$K(%~vuyUPF!TZ_0Z{USMBVzhPgle9XVxq@y@QRr8g3q5CJr)8<-ro(hw*i(=gA zT3ocu5%;%i6}xG)Sle$sVK3{Nt+GhlP1dNJcDCjsXP050F2>39=&!A?UaP`ZOEy3x z|ASV=9CI)H(9KWB-9hJshpf?h{BCCUglc!Wm%Z2Aw%2x*Z<%fGCF3C%=k79Fs|POm zgng{7toGFGb+<+T(jKii>}Z(L9R;WEx782#TVp#~!P=HIMK zmbX>u%FlAcKH+(Gv+nQpRj(s=?B$HKuRc}qxoElZOPL;*WVVKCDXh2sHAio~j(MB= zrvCOfzfw5ziv7nc`EGI^NNsx8T9x|XZCab_YTwcAf7xCAmvB5*z4>1ncvye#sjaxl zJyG$nhh|UJLU~VR*X--B_5RhrpC+&B3Prb0)E}yi2g?Rfe?r;bl_EaT?&06=p8V~l zV|x{o7F{4}!ompbyHVu6eeks0rMvc9_NUoAaB&U|UU4V(LDPGd-ej^55*d`W%Fgnk z!OQMQw!q}n$FcTYsGT!^5JVQcsLaovFS?`jd+hicX}w=)x9!{w+7x7}qNcpcx$e-H`f9P4U1PnAeqXa%Zg;4tanczylTk&xPf5qn&Is-P zRd*QeL@}3LWkssZV`Mz~d1g5t);wJP`&q~1nn!e+uR6|htGI}Z;6^au$ovJbCy6k( z%6_0I8=HM8X0j8KZr~T;>X)BdpPN7Ga7BoL->Bo2@#pup9*Y0{fa8%{S$%(BbH&6! z>^9!33v{5G#GYBIBFI!$Upc{a^wGR0p@|a@Ic`@=7(C$c?1Q1=iN_rEH51GN4p-KM zW>5Ut@n4z=Ljn%rn~M`KQ#14ZhijhT5x9#Ng_cchJg{%50 zWa10Q?d$NxMHzf!Ir=#NX1B}@hnTCEE{(5l{y+~;R?#$Ok0uWEZsH$~7wJGQa{9{3 zR-?1WSJRQ`94eDkMzTZENtCUxWXIRiR|>lqh3ZYx623CRS2m+h@UtkW<7cLm^n~wR zaHq<{u1LN#!I$=vj7Iilr*l!jm$svG`$LYk6#IbN%`At;dR+ z-#GqanccTVEw8}x#CI+FdDkp+cD9&~L{YrgH>;-Le_M=v71kKb9FAF|fA33|RM}v4 zR5WDQs>}>C-eBZA$Hm0RcTKGRz4)M*8U2;;RlIKoD!Q>ozO|wI4$A7q>E64%rr+=V zl_NaTVsL~#sY<~coK1`mp^4Jn#5F}x2Zoyz2F0vG-Xb-vp}*3&8LH!qjSsnO6$XYD z-gI-8Tk|2eZin2y$NwL8`##I9*h4)F@ZfQa6ZH?H*sc5xc17c618p;Ahze$)dD#Em z>F2K4(nIEswU(lbh0gHoYc9Gnr#-RO$@ds8^OXkzK2&!!E^74{p8a)=OVTiHtbQB6 zbhwQr?za6Mc@+grdnZMAV%)bFgM;!1l%LQ5^X$)9O^mHCn)LhGMJ?#%q@ywY&0Km{ zeE;Z=oW~(&zxS+r^3_2fv+Xzb#~qwwmU`pB<%8j788FESQG0xM^kOzx^1K7l4Mfi-3}U8ZI&7BQZJryNVL?%rB9-RX`0zx z167d+xHQ3-BGX5q^Kd}(xe-%`_?W=;4~4_}^A`ys*Y=w*DlA79QmoWIoc zq1khM*$-cyUAGKpSH{_oxjo)2qv(dSAHIjPuf^G0%-*4y37X}vTY+Y(XmWF}*%Dl$j2i|b<0tQ(qTyFJ0tzQV;E(Tg;3DMB;#Au4EQi)MxE;?PV3 z%}!iKvsGv|F)NI$f2M~l*R2{?gvO1#`Dxu-Y*nrR(fgJy%#%wvcNn$a67 zU$+*`bkOW{9GWSPt{01rW}(?wH1i!|j%Ge+R=K$~ z4e>&=Ff?mcOF}aPG|Mxt!_mI37ndCqp;L2+ku7)(S7AE7}xI>9bbb+P1NY#kN`Bwr$%pYq$J4w99EA5 z^+mr;Jf1~IQbwc3A@kAb4K@0>ZfAnrFHg~E)fZ?~cD#^|M2+4JS!}5GKR42Fq95r* z7iTr#NYqFx`$^Q7GU1wWUxnLMOC38R-#)Hd`o3yK#pBOQWgo?S`@|qp^-)~K6X!^+jFooPlOuZ>u1>CA5NYrzq4(2` zkpmvBO@4Yb(&Ev2<(i^MTmOx7YpNn0GB#bSc^&yL|3tgmo>5=>Z^^A49_8(yWLGyi z>RWit)GdknxBm{i`pr>+hA595jau+%r*cD4RJeco(uTUIXhVnWf~M^wvxCmcS6&?% zxgbA2;mpX$%=7VAHzRF!(al}QAp7#wiHbWFV#FTZjkFLL%^a`UVkIjJ7~lJ&FU}yr z@FpiM!!Y5#MYOM{@{t$Iu}81Z&9AaaE}nxu>%#rA?R^sJ+QQ%YEo6$y6O@l!+%qKG z*dhC?Z=*+s`(60z+WnE?5Ajd+$Ta zY?>CHE@&H$QUNn6J__{q-Bq6gPZqS@1t7Ov?#9L9wng_Rgp`!ewVRx+deO<d4wuE3}U8dWHuy^s7Rk6&ciKJpsIJGBap=JOID?WhoV|+I&3C$sz9A0WPLGFo)y6QOuymO zmAI4lU-<8|Y73l4`~mKH-A<0Z`v!|}*P*Vtj&0RT@|=cWmT*p#Y|0b6Yla!;ZY*}! zZ4~p;bh>=#<2q{ZO)Xila4)+!UY7$7dEw3rOAcwn+_W(%)-KCgI6e>#s&EfK>WtHcn1yC&4?jL)tui!Du)k?c|x?%r4*fy#QQB5tFCq z-uzLzYkcztI1nN7`RYj?qfgd7d%Al5!Pyj%n24PqI{NHLC8Q2SKKGvx1_z8W51_*f zZhv#}k!sDUVa2%@ANlO^2oEM*H8C5rEBM^P`X#R`Zu=d*+&_2qL^v4~Y>7Ezghg&( zMwz&;EYAJ&9(`Xk3N3@h<=VSGGxZi{mK{7At!lR^C!)-n_<7~{{5>y%^Dp!<+ z%RQ{TY!(YR1s9;z!q@eR=J0dgR(>{11e{I5LxM^dmewnth9CAe){}?0R+DYkZf3fR zzGrZB7jEw(HfF&DVypYy)jp*|6vBuXlZ^EWXcl6V0nMzT*_I2P&@6i?SsKgecUP}~ zX3_}uWUJ{m%LJUQ!45%^Mcwu8>LYMp5n(pjSf2#l=N4y~bBc#`2bC_eZ&xHm)cYCh zSHt}UHo4}Uk_+8Ik~mGhLKmTjS*hWET=52YodjO@&4D}cx;%JY+$ngS&)y-5vIrj- zRtL=ziwn&;I}a=lk}PJF!(8BDbHwDyR%te-CY;^bwR?$;8=>c7``0ibc=$BpQ|MU+ zJu`~GGUw=nYXT+lMP&-%JU0)k92=v2rn?usbMJwBL8b9apwlzxB%P<6Y_-Xz1STYf zhx-@Z-$#5}0BBnB9kg)W2XM|ygkc+D*y7@y(99Q_9bEJvsC3EAo9^luXpuB;9kl3x z7Q1cq&>{d@918A*fi}TFOC|q+{teA^^9m+g9kdacaK7i%>?JF!}wZ)0x4IdY*Uuyk2@nY;RqISea} ztcQMYP`@k1M>e<0lAgXgHz{d!hh<;=q!mARjOn{FDP{Dn*?re1rTu(sW#8>dt4H7d zs_%Z~+9$U!_r0pjc+zRo&z-FOxob?naB}wY?uGqB&gGil$?tcYyz$pNwf(-6H~oC~ zc|UnhH=}3h>uHm>j=neh_1wwDzux=ub2{E`39!O7qM`mpw&Bj^Fx_)2ksl!ZLKcPi3sJWkJ;smIdk0s2CY?y z#7tezpJm4x2LOhutnL%=Fngw+rSzz=4pc#xyod(Q=LmX@jU1r2%T^?D)Yt95aL=Ag zgyzHJL!6oDvC1X{9*1T}=vnBoG&=%6o>P)Nj)>n?o-?}yzZn|na0A_k1_8LiJZJ!{ zt%SFlpPTH?Q+L^aG>W&*j+e&IP2=;{hUTtH%JqxSP15D267IXpcdtH_yGoy%q|Z%R z&07_p32oMd^VB`|`N@bg!U${PGuMRXu1w-7J#rjxYn<8uIi;reB~DkWoe+|_2+8%O zjvX53-<8hSx*a?4+SQagb-{wFoNKC`8W{RD_48^N&bL+0y)x(94Cm%jM?$;!aGukp zYRBGE(=Ie78UgOZ$oCoIwe?$i;1vv~|MgVAw*J!^7z)OR#wsVYnjGi0Qs?^v69bA` z=y34}Eab)pfmeVu*QkdJS`lZbhmo5gp+Ua*aqM3&(XGDSf4A-A7KCE?w@tYaq zFYCu6C?rm|fkH6NJOm8DTQmp?)N7$LAml#7iCDVWBi0%4b4}xj282NZT>vw;8DiKG zw-II9({?FgLG>%@ zyPbY7bwVT{ajMZc{VsOwWr)|+?}gpmh$-SuDQs5fOQoiDGPIAcm!bwAHn+wJV;XHc zAOV0MNCq0;?*>A1YJeqW=pF07AE1T%66c4QSbisASrB`G-AR12`0ygfYlsY;f3HT2 z&Xw0s|p33K?bmNYEX8=>W; z#fLZ0lnZa{(KtQ(59st?)~`T-Xq>O991%{`6lW5zsgD@|gu=!pjH`j0|7$dHO1%&8 zur>{_KtxKRrB>k#eL4gIkh9SBn@hIwnni9g^K?1-c^?URAudVaE_8a?22$|UJ7hA}jThMdl?bvU>`bFd9xb$~To-4R!a!PjQ#;?;r z>LMz#NG=hq*!D-?$#tga4DP|z!4MyG`&f~;0bDXk-{c5~LtTNzjt;M)sdp`wh3uZq zI1_sDSHk#jqD5wNxCUQzn}GM(TXi!ogGW)PlgZN8+0LLG!b%= zt!x@}Z{SkRAoL>QAus#6`P-rEuel67VB+}Wr_VoM zGTrR4SaH?NR0WBZ=OM$APCu*bUb8(WJnyGJ9e#be>&fxLM`xEyPM=sl@y4oiJf=!) ztW_2jFm}g0sI#r zgprUT5ei5JA!D*d!YmT5g;u1{jTFjB^p(vLvSkdmOh?Gj9kv9%O5vK#feUmKda-3f zCR|h#aKX+-uW$*?5fMY;+3GZfPdxmJPhU9C;%MjHvAuu78E^NXq8m>7Tlgx{!wXK= zpA|Un?|vtUc;7u@<}2rZHGPhQ*Hlg5B!z?XKBujMAsf?5nld&+LSGb0_UnFq)&pXx ziEtPP{A5EUEg)+pV4>9gP{C zGWhX^i7>_lg~Qv_{O9n~o`dSzQnF5H&O)_*=R&7Le+}PuFYeX9a5Tps=trP#Yku!u zxwe3X&S`Rj6RZ9(31h*J5yCIrkH<$-q61py;4?*URdOLz564eV-_f*a+!B4FvUuC& z@u(~r@&%xX7tTNe;CAv52JPKofG-T^LYkH?`|q~DK??4_lhC=kx{|lfKO4d*t=To2 zhy`#)XR7}x5C5Z`tAwYf!I|ufo|(0VtiN?XqKj&FP%*JGrMkGRSPe)JHzGU=WvO3T)7=V)WGK$zS^;_+cD0HF)1%7 zAgi_@P|aJjnzynfS#X~)|5Ir8LTxri5QuapP(9+rj-7w*7 z=7i>;amQE_&t^`{Vohj#YL%wseHqX5j|aVh=dVUOVUm)U=FUs&=fJS5)Va~1L)u{- zqD15I*Hg2He%2vyLnLB^`UV;?lGA!u9){E}1#)h0Yvd zzhp4q3GU1wrE)YbRDz zk87v}7$-J{9!m!8O36zG1cv9@x7V9JR+|6W#eFI^zb7@nCpLejFiRAg-Ibcb*XLc_ zKf26%6lVR>p?4l*m7%TM_A#io5~n(l{1T^LiA$V#*Mze{lPXx_wq}lNgp{Qu9smnE z9Hr9RUw&ZrL~7pMW%dVY{)ZmkQp;eiJj4T7qDzqS2N+IihNaYG$;Nfn0_rBgN;Q&o zdZ$aEse_(c?HK2_P-@nV*4G>cxhD;hWTx8jR)*$A>vPwsp>O$C#>9f!iCb#}nuEpz zIW+>t1fdeJaGYVPU=PgFSj7b_R-4@unmxsMdm=S^t}}Z9YhmVF!dnAo$m-l=f>A!FFpf=pMBF@nbCMrlCZm|DWRQIHuU9V56@-6(bEj|tK>getYOR11%OvGS9l zAFbTyz!@gyYyUs|-zNsWbIF%Oe^~g@O7Ddx6LvV<%iF)<`@<#x8c_tijs>44o3wUW zgk1!>{toVqK=+JSxC39|tqo5q0a`|6IIg)?d*87h%yTdgsu9Uk`_;zxuF~v*0@#3g z4`K%94-{rE%G4U(8h6a4fR3m=8lJSXHsBaz!v4%jTWgtL0K;?a03%ckh6MVzSA(n$ zuqzv=jist)m_ueox56BFtw|mxa2`yJxC)$_3!l8kiTg7r>;$I8nxxO12nYh7dRi zH;*N1xmmMCRb`B;3br&x*~Z{&85`9xs*NFeCeY4OKzK6>x^t9u+0v3l{48aiz5;Zi zOe@ianv)!7Z!rP7k&P@lrcOd^USp+&9dvfcsuIN6+YA?b^ObN9PM1D;aKQkgH)Hp=2aRMQehKiCr`Xjp{ zv>Q4IgqbW?3n5X>AojDw>_kBG`nQtu9LT;7S0x9i^CYhVJF8W&(mK~C z;dQ5~tTu)a3)|Fo!9(qczz0kO#MZSUA)#RsSue!uPxc9`?7RbB0SsNiZRK`ZfcM@^ zCBMO@2q9bj03ll$L4G-(EtNK`WUzq*&UtAW`g2}PyM_mWLS`+uF50%5XtaoZaU+;m zSRr}3QX=r-ivb&x0Zg)}!ZA%`#6OM~Py7as{UarlJfVGVR!cI9mIB84FmZM8oAQ!j1nc+Th9V>$ z!mU*#m(dL{#!A%N8K&15!W=b|Xn+lI@ne$MdXa~yBp#1brxa*uT)&H5Wt1krE`nA4 z3kDVkD~~8wYK&}|C3X#`2>>-pkZAftR0U+SbUq@RvF@4bcm0GK zcK1=dyB$hoZnt|9{kzQ(6oY_+F)9^D`R)BzviokPhFoQ+FcE_+wA%ztjEn~ zs*-nX3m>gi9-bYjwy;u6z=X2sh)0~!QzgBXvpirc5 z$2%sZhff;5Hmt%8cEXDwlA!m_&R-T-dToI1`c^0eKC8iew&q6GRM%Rrd*=WKLH*YXe>0|`(dc9mqWLY4|Lfk_=i0sMyykVG; z@sl-7Mj)5Lf9>W>$;akbc@}l&bUolmONO~;Ym9v)+hz(wfhlW~&hwQ~ z;>Tr-(tm@cgxm&!r+6<_GXC*#M85NaEeYK3apH>1h|$-QVF2E0K`CZzQ!e}UziLRgd+2s$N#&fDQL z;apX*-kLkAp>EkMnKE0z%u}%f-HMdNAzws%vOf^mJwu#z-$T-xW4F(2lKXk9Wch#>A>xblq$V;TIfaVtj|k^ z<>6QFnk!Ty#Ku?{DV1V1Xer)bg-QwEuR;+!ElWrHIaXz(Rk31jo3z`)E>zmY8O3YX z4pol>(hrfc>kvC_QwujM3E|0J!XWLQIX1arRr6<=xQAbcVcFmA5LJhnBO0IoB?D;w0TDx_xF zElFTbDH3He5$(m)9XEO-2kG>7^zYGj>Im%uJ8x+}TDXs=Z7=(!t1er`(!S4sh47%a z&1=Mr6Yp|w?Y>~xs}*ZR0-{n6uksT=8;VpMCbzKPmaCoyGeKMnkxl04H-XZrNoIBJ zSb(V4BP3Tz9GMm(g8%on!z=~0;nS8CRP`$*P&v*xlV%>TqHI!yATo}^=kzCCb zqOk&WLF8zpdpT&|A?cuUY>?=!8EVA_w$!_SJ(jhWMv%5J1k?>7gM$^aX+>(nJ%kV+ zb7f513uEOmn8v``$38oFLChW=01V8_LQw4?8>c8F$lhRPN!CzCfr!Nhhn-+)?DTvY ze@+rW80%)IjnJ+r879q*(5}?m8!65F*`5Kgj;!&Ag223>Yl#6dvP3rCqDmYIE$sMWz+~6=A`lju@y(lE@h0cy!X^)g=ozi~RDHF3 z#4D@h*>&7pdhzDT?;A}Hjx%c0WMF~c)rDlwU(IHW?ozz=DM`R~nXBv$i7lgIc%@FD zUw~+t>v2;F&GG;g&4&0CkdW-1JDvhIQ08@Y&TG~ zR@UkJu?bN0o2&BE&)BfNgXXmq^=a|G%pUE+*h zsfyJu20^&=xOf{DgbXJ$*vQT1t|B3H&UIi;KMFi7T}&o&q&_GiNk6S}0+ z+fG8O#&AdPBQ1uDnkNoHI47-m@IH5=uLf}5paUAE#|Rfi4UaRL9s?H1)rD5M5CX%q zmW@PUsVzo{nmzC+T~=t;p+;ZBD8@)}>bJZ;Jl5LYPuyiKyMQ#yIod93tU-T=R=@Vs zGC8dxee~?x3wg4?k@O!q>*wGq3d%CqALccW8^UM=EgUhMSv?E#)wLSpDHyAtAM+r` z^vlPz`mbMLJgdJ&=9^a7$Rd{wY2q1{KP^{pZK z@5TgwUM$X@;hUM>KHPchwCP;|Q+GY^8yPDuRJOd_KGCFE@NPxuJFA&l=Q<;B-&ch$ z!Fc$lgvjO165{f#_Pz+W(C!($s~x9Gc~07vIjOhX51=P8EoZh zA@^9d!tJp_pK+SI9%s|zjAj7@ZG8z_Weq*-O-G-eir`AVvJALV^CZsU7%`KrY)JZT z?DCSpT*4zi?0LN)mS1(Gt-o+2ersD=;%?GNXsbD+(w$T9^U+b^T@m!m{e z*XZ1y8KU6FFTNWV+HKjSyn8}qG7P;S=I)tanAXfPj}uM!>yQg~Suk3FuFq9<5SS z_y}vcZ=Z#+zB&5Z5tylElj6aN`7C=F+&|$5(zu$?zL+7e3y-IeHEH=TWOmg=zl2(u zi7=SR5qzG|cad7a!bii+5MnycT;O5gW<5E!h-oUHy}g`9#_i}T4I+%faWwP~&d3Z` zZ%=&ynf-HQdb1=T?6W6*45xg{*RVG9_x^NhrF%}68{3BtZ99?JKxTFM{+3POKD~s8 z&@%R1`(X@odu6b(eU-G$H$9(0(c-GG=oka+Pk7rf>Fs)S(LlwgGn|{4zM1D8w@eAP zQawhiX_68B4MtXBVav&b;_N9-@`ZORvYDK`&*;fNsxUI9Ab$S3iCW=DFR#)UC$}?) zk+E+=#|Uq1pk~>7>=s_4SMxjPV3Hnt-sLmu;@9>{H18ERPTn*@fUKIo$L`nw{j{A( zmxgxB&vp4`?qY_0_56*=Owna?dHrTzR`N}EVUI`c47n&-(h}{VR{cn30U`d#wP!wW zO=8pk+RmkQ?|5+Agh=(v#_pe#N1JTI*N09o&V1zF)(hNLfp5uQM56QWyVb ztfMX_EPo_}Ej9JWP8)|GTu%T?LTtz4M!2)_%%)D{j2;<9dcjQVTCgU3^ipv1f4Bw!p8@9)39`z=n#{mDX zC&lI|;@X#Tvz755U{`hiTlxX$x(tU&3W;>af;~Ga*ne#K{9B3u9-S&>nOa!y+=?HB zH9fj+K8N4<)pM@%oPe3T?%voBa|A#ho!w5;$n!IQ;-Tmql48HP-zXsE6Q|DBw|F6+Hpq=tidBUSt zj&1=(f8ZVP^2#3TV*y1#$I(Q-ymeAW6s%C4tH|$G=PnAC%9hU$U|44N9ruQJmU)~> zER+GgUp^PTn{M*p!9fg%^1+Mw6tio6o0u&F1~7iT&&S>J$=CP?y)e_xztuUyPKRf9 ztNmlVo32WJ^G|G$0kAIGN|jFx)fg zV}VRSprj{eBV0^v>U(8AM_j0Hx6QPg-ov}1wvW}pW~phhu}6I8>G8LCudhy5Gn((n zL2P6&JS-zmUNW6Q~lc-P#Zp4{HC4-Gu4uktsh6Pm@AcF$&SB$&=D!ON1K zuAzBXT6Ftj1o5>;{&sqb4*M!p2)d_ljqI>wIfaPp)h?Iq6p-mHJS|$3piPlK=(K_x zmg5Q%o}Bmy!Pa^99uo_>SvPnJVUv~Wq+!)gC)AQy4z`{?fMFY-aDl#Yc00>7bZ7@3 zbE~xpkJ0KL-{fM1zyFh-K4>RBfAL!OL3%fJ_VGMHQ2=f-TQ2hZxzn5yHp-nc&NY5z z`g9uel{c;nusq7&wPRH?wUg&O=$k|@!^?9!jsRXa?`lsok`qM|y9|Wo$_IW!DAghC z#t9e1NuInNITEk-Z>KT>Ftcg(P50p8Es$eq`{-jk;=`QM&UdO~oFI8b+akDb6f3Wr z!^l@LMP%%pVpBY$%kv%lDIw^e*hAr?2nm)qWqp z;z{2&$kqvHi$-%d4qz%|XHG?rbacvaqJjHj6M*h+_y%@T&S=##Jh zz;8Vswr4JG;+O7H3>UydZauegOhH@zMoJ)swpSTJ)P>*je@J6WN{v$Coaqq z)Xe}bar?KF3`t9m{v6LQZN9@H`qqz;$rw?c$DFWc_i}z`Y5gul?XO#3zR zECq&tVf&Z5BQWi#*+2Gi-F=DLq+A9@bH|JH9QrCH;Uy(sJ5rYaCd=*e{j9J(%_#+h z!EgQP8|g;A>&>aDpGYXfQ=fm=wulx{exvcGxE%KAAO+3kO%7g&f6QvRPv5x0Vt7+= zs7S82?ucj5+Rz~c{!@twVmDk_vS)e-;nN=eV^=9Y&Lh4b&0aQ-?KNLPWPc(f1gTkk z{XcgNdvhgYzJ$3qmZ+Nyw|%bq+bv?DEvE;0vxUN2beZiz7i@??3jPN;X

hc6!_{yhJ_xL%S76f=F$H@6@VB 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 ruI&7>N?TN^EOYWK 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

    Bfs57;s9*lW_ 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±oDBOD$V7F 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

    a{%uINI98NC*M5;Z+ju`ba%1Wvm{twD3h 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


    J57V_|>DZ7wK!!G$1i&ywfZeWY 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�ZQI@eZwAp$;mcKK`_m;wj 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 z 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�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 R3-s3Jv7mDFZfW!)Y5tESK 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%0DPkTg!|2Q~$9u}K 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

    F`0}bzU3V4kh=5kIoj%>;Q<6j0glsH_6B*T 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

    ?X||_WBa`dasvuqD@hV>r)%`!Z>$DsH|y`bn02M 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⋙XbJ7HDP%szcD-ChgsF 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

    !wR-Ghzhz~Fl3jY8pIp>(0oRGmgKTn99L;UL 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ℑ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 diff --git a/test_cases_bc/crux-bc/bc.bc b/test_cases_bc/crux-bc/bc.bc deleted file mode 100644 index ab440413896d0ea5c2018e834222d2f7de4d523b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206256 zcmdqJ2~-o=w?0})AOQ>^0%8yX0Rd4F!aN9?03sqFqHQA%oiGVBA|fK-6bOT&(l`O) z&;b!}Y*4#ZY}*775gd>>Ac_Jq#YUx-c5eOeN&u^{fA`+^*8i=y)~!{>;?zESf9Ko# z>@%b)?jGXD_Sy)dj37t|m2Kj)_>YK_AJ6_WX1>6e0A)s01W7!NAY+I|2oe6)fq#_L zi95OVN^{6`8|PhwbgHScimrjuwh#ep7SVmz7QySWSsq?nSl0+PY3Yn9=2LR5H&iU$$*Qjhy<1rb(gy$A7^|qULc9>8sU`(1 zBUAX$okYzj$>pVmEoGTRrXka!bCCI&NQO#N7Q$2sNJVa_1ndwv6WLAaNKDD(;`D3l z4ymp#^h8V$lgR2cW2H#0V1iQlTtT%`hlpW&|}&5rxn?R-{Lm zFjh2<5It68GQO2A(j=@=5{U#v)rP5YMIB1x)hyzQ993Ha)I06|usCz_K+0sKX&(}< z8n74fQw=zPsH<}378?5$e3}%$U4^$vQdGEg%dXs9kttz{rpTNyMO!q3@Igz&AxzK~ zc@l!hiKY@h5Jh%`DLSG)WkQ6vH^Lw=RM?(-;TWr_>AMp_a^pgk5X5$&DZ(%!h*iE* zjX=B+HaAW6*oj<(M+SZ;E+n)V5fCxmQ5A8l108U%-9Z5o+oM8Uu#kW}Dp_nyXeWzR z9Ffd&B2*_KoV3ZYNNg-}JwO@Z5fNJidBiAILs$|z)OIW_C#syEW9yCxbdMpL+XKe& z()1=SY-1R)Bq|7s;JmdG!f{UkOhd!oCTh$ zyMJJf`OEPp$Ao}zc9JZ$okbMAW84FESJ}M9`bNrb=5irJmCaoH>U1YRcOnsOBZ4&T zD&3-KW?1uCFh$My!x7bjEwxbk$Ykg+Z&F{>tUbTFi&A|VAyj_y>I#^rX+s#;DX+C< z`(|#*WOY?lgrUITt;I6m?5Q%x8{v4%z0G-d1fp~@Qxy)->ysG%0i*j4h=j1-Dv?O@;KK>H{4>3eAHXP3S?#Pk?Z*K z1K~@Ww{#}K%NPhj>;&3+QQ7AFS35g?QZZrz&#L1Qq|X~A$I7q4aICu~+Ti&N1la^k z>UmFm_XQ3@9HMG2WKor>^}CGpTZ{Bt5rfA@%txsP4O|039FLNSY)SN{tcxTinrE$1 zp(I9<)|+Ro7GtRT#e=qjtb`_z96(roM*3YH`VFZD ztvvnqA_HWDm^3|-G+jgzfRfy-HRhC*NYWbftT<6tN^Vws0fnbtM=%@^sNWOo5AY4T zQq}K?n5_iE7M^+!-=G2h34wuVmQ!FL(&YMNtg{qP|M&M!6_>~4h4|FpzugW zO336G7MZ}xP#^mjN)RbdO<;&@M!Y#pWFx(WSi!f*M#~M6t!zrNN*2)KAjnz=6hWhM zDJ=b#RObI0HuzMO4H^;HP$DAN$Y;GjL(?}SCL#^ul5&+bxmj_MS@Gc0q^yKEN{Trp z8L3WXwh&m4I+(2j1Bj@0f`mEdPC+!lS=C&Fn??G4L;ey|Tq}eQ6(ko#B}Ijj4DJ(UIY0=hP*Tb% z$>v$f$UUC^06_!1f1P01!!>}5)*|M>a2O0l1(yaFAoc>{t;paJM7})O1Yms~0PxOQ zjX0!dyh43V;?rKyY0m>_D-n&CxwID?jc%3($Ekue9Z8@5yN6zr&^4XpD)w+WU*mk1 zJ3XD`CL(b(UIl1$BlOoCjSe>L&nEH!OXDR}WYY!*Xs?>codFs>JR0a($<~mGK(d{{ zY4UKYuW{Z(ayu(=5_`BI?*x>@CUPQlFs?=iOQSb{HrPb&37~awH2!9RDh=_3?W7s) z1icff&h0g>^(4I$-05dYGb$t#uGhHkfj=d#*FBu;L4Yu$UBX0^-0ldc@A1&vPIA3N zilcS6qX1-VnwT6i83}CR>0C#ft0B<7E|FiPJJ)+So%L`&OK|-iT1Rr*BXmVN#I$~d z{$hZ(652?o4Imn_c3N)}`8l07D4-#3^&W0}NSx~=xAYpP6CQeEq3iEZvBs&XW_rDc z-WCtH0--bLIV*835zg2{65v|*6w&w_X(t)9aP?XsT$J3>g{}uYoSQuK3Ot;F*gHbk zJvFY#k8B!{6H`I%5oo+-X~4zvCfYkO`A4?K>i`=3`I-$rLIpr<9YP-r(0BpvW77r# zG{j(iIshoCaYFP8d(ehb+O?6Hil}Bdu>27dF|kQP?iwpl3KB$<2xAe$81{}nxulq2 z%po?gR7k1+x%(G0A?8~J%!Uqq=nk!7g9g5SUk9_RNd1KovmVWg0+Jvu3z8~yhd2Qx z39^S%mO~^YG)e*jS@cFlFBKN<;1jBF|7}qOU3#PM$m~2x{CCB2tmTt(2saRdp2c50VNqOBC`_3 z6o(*TazR!+{8^BdY))~83lKYxCf*cCl99sIf~*t-IwSO#E+b|gp(Q}4Ssp4JCGY?J z(b5$10c|WHS1>~*hQPWG<6RLtj{k`D9( zgxqR!@pMSAoFo;Fn%)*Gf;Yd0Kt{!9B7tm*{36D@nx#Sv^DrX2(^d4ct?6mV15U0Y z4|C2+%!R0wp+F_q!6ae;y(X~;@(D?Ylj0UKxj=p~(?L6uu0*IT@+KLnY*Ejcpv0xe znBU{5q`~}e4$S{%!~a^D9EO=vtx^%)Ogn?kxSC$XNmq3@_N5c~)d4Cs>8t{}xt7wb z0=9WIJ2fC(Qou8>=IJ-4r*hL(J)gQZDHYSnp~SH&LhB;9>tv>~lg-UdSC!cDMd_en zaZ|d{c~B_uQ^{84I`F;I`R*XR+Lx6!mtn?81&cOCx$=sI?4l<0f;s`Lr}NV)RJF){ zfUP>+ov}T19~(>nc(Mo62g{p8*qU50ks@&nZ z&nKf5Gv_i8EjBvge5X8JBy=dJtP7&7OUhawm*v2NNlsRZILpC_vaUQ!y%YwNCR&Po zRuCUYf!w_YX2WbsJUZ4>*3sqH@uJkuSHcyJbXAUvGvkpYeG8vQ6S9z z(Z!jP64GCw63U313~LP)D1b#yqHi{rdSMSN!r(**1Z29Ix2n>z3Ful1K?DLsz}y|7 zU1MnqdjN29I0(XJAw=YSXd0=8k%ZHf$YXd|eH9evY}KHK4jeH-5EkfCQ9)X)x2Ex_ zmvPn>vbPfs>;h9D!eSx3t6gfD*69ndkRvc-WMoDGn^-Z`&WiziZHsBg{@$eSO08VC#p(&MIfz$KR z{3?ABmYfE|SyXZ*PDW*NH5(@rZ4}O^$Juf$arIb?BXIj3KKnQ}v`+2}p{~G@;}V!d zIEf=?cD8lNcbb^&7C1*&$i>On%~jK-{)p4FJg}C>!`V8xJCN+L1c&DkEhG*n(;?-P zYj85MpJ{AHJFZ=3YY#~1-(&fSK3b#Og_E&cE0VBrGOb5z7=1XIkhLX}0Gy1^aSwI! zMJ&%+OPN2iAK{w+;u%Ls_ytQ**Y^}XYBH|*%`S(yIGNhuEZcsZo`^r4$bVpM?T%%x zWDnwGs{b@6U&hL4r7&*};4r8BQlrb6icKkR)~a|!VtGD#ndZpw#L1W>7D(8^SPp|L zJs93N8Jk2Ek0`93$yaGB*e9{^lllPsg_Dt8&soL6$y|6qAbUh(^&GuPvt}&B+1ilE zsKLoZ-N|ua1mR?kB{DpI#Oj%Rj}{t-v(?ecr~ZO-#1GTA6Mn-wD=aq4x^@vZo?D-@ z$q#TOUt;pu*Ksm$K&BNdv%4N-?%-qsU$Ds!u`*iMLFN%oCKhBKVP$sT0+}wHOasWY zVP&))f=oY7rUzsmV`X+f2AM&ejQdMA`3Y7=>lt$u`x8!PImirPWp+Pj-lQ+b2F9~X zHH=!EBf8cxYLc*yi28?S@Ayjo}Hk&Km@`~`yN7hLf0;<%I9o1~c9xKE3G1(} zG)WOvhV$tJDlI$!r|K_W+<8d_PSu2(_BiqzT+=3yvuw|Pk9B<~+v$J=XD&TU(m{QR zGdGi(W6fyCwXT$*e}(=7mZj(`2$%dGYi_|bvbXhhoVgThPCHM8L%ugupzW~{OVm*& zsf$Yfh*RYTsvhA~eX!2YGPlZql;{RDP;OMqg^AfF!x*n0Qz=#|)c z#gz!b9SJ)GOKHOmq*9n#i*2L!A%Z*AG!HxC4^p?UWaCs_S|O;F#Nkv`-9qLF30JVH z27e}KQarM;;ANg9Pu+zUs+ftp)dadg_p1R3)62 z>>Y*eXLXBF^Yhy)d3}<0oT}!B?JdF%oGR_A)Jh6zJ9Z8!OArb*G8uZ9x#;dc$(aUJ z8wboZ(yUdT$_bbxz<`&<@=U6o2_$(Dhl7Z7R5y@3X_>ln0Xv)m0W6%fK9Ic(RqV(Z z9?agVYuhuTaejQKXMU9zij6MK4o;=8qYfJqwbiLaGARce64x?G-HdpgDxSXi8g^fh zCT2!-$0-2ZovCn`+&i9EC3$#COTVXS&txRxR9(H5KXA z?Ktq&y}UWXj;mPkcFhuFHBtc%{1IWdMkX6e*8+da7`rWtzk<&_%O|i9!SvE|v^+aT z9S&X!ld(0O5D}MaNYJ5t#mql zQ4C9=T)z5v$FvA%@4;Z}FYt0jiN&sT?sO7ts1Z0-6EyaOI-U8-SbLdJ(T~Cn%S6?KpG6 zZxJKqjvH9~b}tEh6eWIR9!GMzZ$m! z%jbkI9A~mC7S)1}6g8VJoVgb>1KN2_I6gB(BC(_brz)7sot%++3x`Trokrb=ZJ-%j zTgQp<35V)ObBj3kC!EFpfS@KG^6S@-XtB;Ht|+LcM`OW<%;N78a_?X*CTy#Q5v?4{ z!yNsLaBXrRu8q^x#^_Ox;DBw=&WmN^Ebb_&NT@lARdvlY#zqZ(XobO~vMHuqGyVr7Q@@ zk>JcF97@|ot~ri1H+hC~w;m5??&D;05xW+r%4cCfHuoM5d2w1G^$eD%QvGq-q3uVo zuGw)^v`51E5$l@h1zc`sFqU)aLA6Hf7MwZH?}Gm5z?r*qtooJud8|3JrQ>vdtjGK1 zc*S*z2xl(-dp<$PzmG+}=NE_s(l1yNwuWVd(=wOiP&KNJVNn0TSv)vSht1f8;VQ_5 z4_kv`rnFV9aWb_XCwy^So-LyqBb?}4G}Yn;D;CQ}$TGfB=4zbX=W5%S)GnN=zsBh- zU^L)VJ)de3$u3xeb@#ycK?gb>VOwffT^&d!Rbg9tEhFOyH8TNgaRF`2T#{w{CSz}^!lpQS$j5?TEZ8vgh~))} z-N)8&!kqLqMD&rGp`l;uG-lSQU9YCa0iz(9+#&{2YH+Qa^Ru$@IC3Jkby{=A_)MWb z$MKo3qx~J@5spu%Y39e-zvD=#4Gvhu7o5Y!bLFq1l4|-YtOrm3$XzVtKE~3n)S9+S zt>$+u?Q?!ro;8k~f&;d4%(f}izp=ndpXlf;V)WyHJ)356g8c{w?Ael_V7?d!EcJYa ztH&Q$i&0lHOvjNoVlD38F=p-*>PMVK_IRD|81HZvV=OI>vj=e&Un~s@VsC8;g;}ohnY980HZIpFqgpVWd##-Ec6SX)AXYn-J#sHkfI4g@|?2@I}?(=4O&?0`o1+2UG z{ZVngx&j9*dn12wMrt<}SnWp?SR)SDClpvd4%jCYm=zA#=ka;pGk7>)=1$=5S{$&5 zxS)mnTpY0X?La;`Sg^j110xOx ztlde!g4LyuUF+Rk9W-hRXYvzi*QhM9QU8Fa(CXD8 zqPZMJHN|%njYcr!VOM9;VA>p3pXSi|K)(F!i}xOtCGOG^Nc20ZEP06{ab0xQACm4~w^Wlk8qrhdU26;X56Wf4b3)aB{gqqZQ7pLEPg zuOMNE!cR061~mj{?jNSM6Qd5-KvP%qdQKv?fhiqaU13o_u7NeeK(g=wu7TULCeqT+ z;FjQMRtj1Z>k8s2vp1((3voi5xDO)(nh3@ zl)-ie^=N-GJC2|-v~+?X6d;)kKe_5(K$H-IA|{~|A|A(f8c>%ZMBZ=_!V(yL=cAEn zi4cae5Zs}QbDtfdgpY^ETZiOWhziepuaqPi!$F4T9dJj9UGhvukO4f}kenRe-oJV8 z0N!w2IlOx*k(&sJK#>ffIVij&H@kL3Nif_rIlN|r?QsBa1Tw(88?BMygb>6-Cgkwc ze#;8iM-Zo>GC90oACjzT9As!V1$O}6hvywE3JU`nW$!I-0N{-o(Fg3ctT%4}_7ouk zH&A$gxmoleN&>}x3X}nRQ$8DHuSNtNLsbQG_O@tTwSp&`hsro8dumrGz4`+A7u-yv;MrpCgEH zm{C~5dmLM6nEe9+40Pz@KcWt zY!-9^dm|1<*)#WceTpFBVL3TGJrnA3gvc9FhjtAO&8^@u`cRqNxeZj+Fav})%&45b z?o6fm;9R?ry1?Ep58`crhrX1cH~^l^sB$~7Hv$EP=d+WY1hJ?1wjU%>c*ni<2N5OC zFr)I=TWms0Mu_br-35hbsY!7`khmcOirCXvJ!&98#6xA^W}dg{PqlW?MS)cLA!l#O z9O4AZsGfV*guk5x?@$cM$=OTXRZs^#7mDSF+_|xHyxXBe3`0TLo6=;WpNz(m;t-%+ zWABfeIhLc~Wjk)I8y$Ol4=KF{N=%08%HbWGN8AcHaIyFIq@A^ZLv=__4$pT_z&DA7 z?PLDeXn0K1g5?O(K2%i!Z=Ys8WDp#C4Srj{iM_RDwXa6Q)BG;vo4ohyl-r+x5*)mQ zy-DA64VjPArO~ms-c)5hus6iA9NyhOG${aYIL_qG^$Am5F}iCgpYi+#Uc=(z3&7s6 zgA}92G=4kipMYhrCGT7I66Z4BBT8cOkQ{xKYu}ZA~cu*`qjKKFnpe zk9Mw>nLc=tH3UU~!W*ZqMf--m?OT;c!@FCT-VDygb&aafG{}4S*n4h0e-P-z!Q<>> zhzX+xwZpz9Pe(a-$|AGe)uUo>+%&Dm8Q|O@$a3dC%ik(A95twg-}ICMd&7x9&R*dP z<8NZ`FI&PtFsLcMG(ZW2#1d2(mohrBxcFIo6MLu4az}TK@0Mu!Kw8Fijc2D+OW^Gc zAXR?Io%{FwZ`t!%N&E)h6^Ej4*h}2cNdfkTLLQMPmZyFeZ^5}kCJ+J|dvCvGZ|_E} zn{Eg`EoaxN&Vm^W4qkVsXD5srIQFVm8{Zy1V@Y-1DHzpts6RE)cEza5>a#1pf+KBh%Uez zW?2sJg4yV-OxkF`g=VnvJbdB!0vof#z1w9v+Sb}Rh(F}qc)UNUWLi+%2)Nrrl ze3SQ%2ANNU7sZCm%Dcv~#TI#^6U$yJ9gWfOjxo1E*BEh{yys^8bj4=$lwiU&cU8cF zWAE3nj$9>#YA|G1F(o+d-48u?c&069FKn^-8(@z-Bu7Ad?m3G?uu^J=)}e=-z3+a| z$(#da*t{2QH>TTU)P(A8VMe?r!X6$;~_W%7nZ-!)zhJd20Q6shmGU=s@{>3d zuo`Xmz%=awz=w6*-4>l}%TY<=*vc{C!2EDm0C=1bA*bVE5F)UkgOMNrWMfcZt~=H@ zce|?D>^db6&6e<|n_h0%yi$4bgqBIO7F%0(|Lk%9?$co7pcPL)2fALmJm_DcKAEQ^ zP+O#;WYff{BveXHr=BHLq*icGb3G~9y3&4|ay!bAUQyNb7>%+AeCvz-f%LQpwS}#I zR*l_jo!peCbV>)$exz#tv`j59$kQoTdDn?-O)tbpppz>S`{vy=5sXEA%=?gFPBGC| zx^TCqj|<$Y5MQ@@;MqyEUE-ppO1+*g^EI(yzdm9+xu}H{Nl;b4?rZCB;=q<3v7L=< zA!ym%kCEPR?AWu$-{mM@L&7%*Gpgrr6$Tk-wkSuL857f0kE%qs2nnU3Tw+QKv6voW zoH46JHImGlP|p7;dy7eJR6SpH%$5mhO%CO^YI;x878VMBTjk{TPvWhMqLa=yEQL!g zzyE%IVSdk%^5EOO-SD8`?Ik6l}))t{^jm987~MbcdCS(llR;#)(O#u zLVI8EFX(COT>dj5_v7=}8#2D5v&AG~ZD`ZG=ZB=-e_L-n#Ts)38WT=Q4W71s@r-$w z+vN4+pu(&gdu8YJ_9X6q@+z_5(58!AzN7BKx-yxXPdTBQ(P-EHkH$OV<1a{fgzDoj zg127~_}ozaMFYy=6o1h`%SE5ja`ERctS{&VoSZLTc*ECFpg`_x7 z$1AjX6(5W^`e{f5$ct%mqbJH2AB%{}E3~PfnDj+>_Ck?Dm3W?_7Tg*-0SVk<{qu#T zUN1Otlc(Mnk@q1Yui@%Og{0!MNpJ!#mUd;1RKN2DeT7dYjTJGO35EV@kH561y`5Q3 zIt`z!sdA7)SGX3uoypj`G2jb&!TU0kb=;vv`GCwhbm57#^;nRte!m!#X(rJXclg@rI01ZJ_t>X{Ld zBxlC;c4`w#9o`*j<mb5JYldsX4%_bGam^AkP|F3!?E# zpx!Rfc+{@ZiEv4FAj42z;H13JTlu>nfzeY)cop+vohLwigxpeA!Pos&orH29OXi9>fN-!i80#EvDIt7u&u+R`*? zp0g9lQKY)Rfb>TsX;b-_t}kEOp>xqbf6;)mw)4vuG4&>*-pojLpNIlthnlC?@b5AHgV zo^muDB1t{!2PoMkTaST&rNzfDGh5)b9x;nr3pxcL~W2rfE z6n5b=4;c72yYhx(t-Kql0vAIBV#5ruiPcAXlS25B*eO>Ls{()>XJEd|>=-b7zM>x* z^3>%eNeHih0RS6?AvCT~_x%suaSLj3G|{@ep)ebAUnJV(uYQNfMD@#kZG@WZ86sb# za4SmwH@^OVs2tjhdTJypaBh<0QP}!__4(D6mAt9ybsY61cYRL+P3&%QPhi={L4OP3 zbEkHI(YS^DaY20b7SXtS;&JUo8lS|bKE;!sRnrDIR!v1?K-}8P?1i( zMBDqRPMy*C1cIFxNk7p@Jt9rVw|Wu`N(}^NGnaV}UU!x-{W~Z56UGH{$1O@7m(&42 z17O&hYVeM4peR{hZMd-5kk@I*F*XYeF^ldri+7*o9-^bNi=A`Od`y@{eYFK6&S}h9 z?`>POOST4XYp}`qt^P65vNJ@-Wx@F|zgWF6vKTP7`y;Pqn+f{sH*UN=p-Vc zYb6k9CyCKd4G1q1BDbp)Fv>2xEAL8V(>}lZVpTh z02Mn!10e;PqZ{60ZDiyE{`|@VQcb|{BQhA_3fwwSqz+1y1=>F7;)bm(RyRZUz3Sng z3o=6aq5wFfZ1U99~$c&M?C@`SH78)oRUNZtV`7r`Xw8KuFAb_&%XDpGz?dk$k z4S}ZMS37$|pqAsXLwk$^)FvPqThqo^lCqB)3C`G8Oh5!QGld>RFbys!L_wLkqCiku zVT%+SLnRX^5ZIj2**k8$l|W?=pg1<=_|y{?(-46bVy9<~92vXY+6GZkHJ?1`@R`G~ zFCy6g6G{F(g@7b5fp5G_U{MFZAA$(R3k(b)S`j*9*KS9B79uDiIU)O4MyQ3{0)3`H zsEds4tWSdNDmq;S{mM^;0iSdRouNWk89LCFAZ#{qV0VClFjN@u$R@&q{a_GA81OfX z#V}{H;V}jV!(3j-g4--QLver_28&K-ffPf9C07XsM6`pCx~ETnZYg}U%EkP8#O0Ua zHp$zOrqqz9>+}rr%6eBhnm;G+{VOgx8C?T}RS&C>zR0M9xmJGCIW_8QnKUDX*$n811!Jo44Nqm5=Mt*+p>%oV9l=!E2ky>$Lm5;Q_7cKKr?AQVN#G=C>sn-}YQ=tT1bQj4?NC zQPhhmH_k0ACi%9S64&;>w9^ecb@A%p;6t}bT9-2U4tgdxh5h_w7mJ8|F8_k-fuFUu z1Y_Np(cPPJvA~ z!}HQ{_N3%}%kwXOCChtx&VA{tSNcjCjSwDHuJdlG&brE3UV6VfHurb^U&^|>o$LQe zJcqVeoy@>0+G{?gbcvN5o zJe!ieTa(g}!E*O&R6WcCH;L00^?` zUg6_`)2_ao8?SLy`CCs+)VhRgj_^g4%Y@oqX_im5=3>eMFt=jsiEYkv!fLcBfDjq+8npL500+^$D0(=h2T2q zKXyhApaBhuG-H|O;;WWB*JkHJ$wesHHo-Gu>xr7(LQRS0;xbPVn!FS4`=IxC^hMx+ z?MW22gumUF<8`E*r(9&BbYnD_CRfX{!+{Gc(ke8!N8_oBa*UioJJVRMJ?;dnBB6N4 z@A_uK>ucYldnZSE%G?sd#xB0&`?ldAULa9(_qA%kbD7aAN?zt_*eH#2+1F>k>1!fu z`rY!-Pu)>Y2Sc>oOM3^;xoVt-Tv}1EtW;}dL5DLlOruc>n|r=CKI7WLnjTU^%G$ye zT`b(@M&zuGm$}a?rfW>OcujOpx7Pn+;~I1zDzB`(aN&YPat)5#^5emSj^RW0*Ly;z zYUkJqogGG0{3$bhvSal+%{l=y|Bb|Oe?Rq;C*55b9)5^W}B|rAl zc*+gG@M+p4y&c){@0Xk+?UcS=9pvwS@s_8^f4=4B#dbD{LZ=Ky)O5l;`yf{Iw zxT$>r8Ea(CoxeJDXQkwJ$6o|ZWB2&xSMj^g)aV zo89f~$BE9^iroV$c=2hwicc4d1p`X<_8IKEHg|38yF23p!tAyUmFVr z;*iy~wgUT!6JHDMM7Qm1wKATTbXD7mi%Ckt8V_r=UmKr8SWS6)yW_)w5QicgsV`;Jj>b!#_WzRyo^_AO;(WcJ6mEX(?nGvKIyDDmex{GB;LTU4W{Rk{S$ zfl7`NY?;AH&qO~lCx@jr(J7aun4f1Co1-TYb`)3@7LBJzohQaLo}Jb{v>dc%32jD} zs<6b56FLfnPPsyx0-=pa=u#oXTKWIvT6CcD9ehK;O%ghANVbU3L8Y2Stz!4NSW;UA z)LH?xRkVO)AMmfI(1D)Lr4zYy_??!2Iqg^^o_ei#D#-z97O1x%45964J$E?jqtAA& ze^K>SKaYg)NW-->{{t|R{lDQM1VSr>Ti~-?VU%j03m1&JfMK+}8mc)C?i%>1-x19h z&iX2FM-U(k-A^Af5g?qauEecpa}nu=p<=#$#mi|3|0DoN6}5bfIxt2|L%U zq4x-LOT(L>(T`}r552vE-#8O!zY}N- z%1=)tZLd@f_abf2j&XzO8k{2SMIGZl@W*|Sn0iS}IRx$h{_N0R3TtDdc?;pQLpzwD z6Ua9WHZogkWX4N1UD}}?AYUg38IMnba)M5L>UcO)I!sfzCd-RWdy2+;7Q<=cOEmL! zH}fer^Qkrot~TMNnMJ3W#dMm*8Ba|XdmcdALL>06KcQcu>H~+ zyQNRZh0b_fX@ zL1U|dPRssc%f1lHE@R8~&S{T|r`>a()=Zpsv)ZCA#4NDW#4E&bpu?cQ$N+wgt&?Ez zSi)>gW!^DjHg%xCy;jfHua%5XNYx25(g~7ie->+e;AuSL(Yo5zTY2iuVrqkcI^&n8 z4%2E*J&R(PI%m5**!_R`EIL@pf%WKgq}hANb?+S!=G*U>XC`^?SZ=N_Cg?ZtnM=1A z1ea$ms^8c?d()d0n;ugNloNuo{+Vz1dOjsC=;x$&OjhQd`pv<_K0|Hdn=%uBcaufM zrh`|_UQNn)L9uvKWEe;^@N{1{U~Kg!&C1t!o%>TuZ+E+hvh+LV>36($z?tHaey85C zX(IY3(mK}g(fflfTbU16AACXxf}cTKu`X;<;-ahev1JLtD-ssX-hsR!biudDEVnz9 zEgB!Z4SB1)2zDPr92bVzrwA?Yc&q|nHP_5|Oq$Vx#*W*E!!tgUD#pHkKbAfD=Rf8% zFA@&kCiHm4c9CP>nXP){6?@NX)vKPE$8|B!>SFFi_%5B~7o0UCD9kgycJ`(SuV|&& zi6y>CU9)d``u3IhZ|L!B4x9I=)?aXjt5-=tD(2|1R>alC#E_eG#Syh+q=6i>+-u%| z$-Jed;V;4#29-jrE%FQxUpOl~;L4&va(JTY_eg%F?jAx&X&Ax@4lfOoH{CYx&^77WhOA%z+XYLNM zmtkF9OdW9?Z(f?4?whcA=$S76R9s^}OXhv}59gcOd7r}Oed?O`2`>Ka{7?A^YW=IZ z|6~YTjv9ro_>H;$WD8r4+LfPJh5vr7(6990r__J1j$sT7;9sx*Rl|QPi4{OK$f3do zlndm&U8_^~Pnv*5|2mu*DW*IBGG?W*SO+VsRpILtbpCUI5)a>{9B8OAr>wE@csTSW z2|^X~sA7a#FQTHm=I|$c4TVq-*vGYq)E}W=lF+(%v_1jt8T|BPI}Ltu6n>ENjX>iA zN25=y(bulg0@GbCj9}>Zim(mnE71;=X#2|dX@e!`pUVk4zNxg3R9YNid=r0sJl8I; zS|`S6d^2}^OzQYeMdRT&eK&Q$a5Ns~$#>wVRrxyi_y(;-1}{3sKT6ecuQv1~8oH;M zEOj^e%s2U5WD-zq^4Z8VfN1JVH1#K%28Eagrx^xzng&)+3M85a8k@!$n?@R$ev;V1 z^?!4^%LRyLN$zHm#-_2bb!=>w&^ajv#x!I56k}6ynp{bzC922WqCu{(w%DSs+9IjL zE=6J$SZp^?JpNPl_|HT;AELdlyFEu}?_Og9`93hj9%=>G*e{n4agm1|hQM^X!9~nd zhq#HT^;+VL2)J;!2n?|ZG#=kzJR`8$D!#}fL4uB-pN&nsLT7L$&U6>f2rPzMGX_Ao za|To#go}`w?+mP;C=jmIGweIc}qJ$2u!RhGe8mKhOzt+>IYi3}vMQycP ztI+KpjIJcNn>9lNY&FSsQ;lPa&@s`&G5)YcEubnMUms%lA;{TPCN z1YaknLno$4CxWZ79d!#ug@x6Y8u&%Gd)wMLg+ofqsiWlNN>r$swWy-~? zFRS3O4|r|^_K(Oro;-&=vvrgEIMyrns!lju1CM_!&x75>rUS6&cgynh?Z|hr=W5o# z-dX(phn=T4__LyqJm`Pre4V`GHa|JZ*9z8$tD<}<+254LsyeKfZeJATaB&0e3^z0( z$iP6_7|$%Xn`F3`w5GryLU_I3#=y=ntL?>Uee}tb_;m&9QyRNhB_HqJB&-fif&G?! zPu4o_+mxXGcrCiEwe$6hxan?W#o`S%R^NYGXJM5k>;C0@tV4cxxi%qc!tZ}3z>a`% zZ(B!V3Nll;!u9Ypcqb1vP_g zy|9So($;s3EsVV!pomCH(<_TM6?|=6#HC(1>bpx!j zY0;@YPb(fSLzzxGNYlK3qvy2#;BWce5pO>F(_6_eU6_Lo!usTO=MNePTf5&ZIYc?q zCfe|My`}W>3!6iq$H^<~E!KYC)y>x3OFYuXvc0&Sa^ouh+(iq@zM81SeZJail>eaS zkN!jVyN6hN;_T+S9Cmq%J)%yD2pf0BrYwE|?m~A2*4<7GsjFJ=3;X1vX8o>BQf}92 z=jWEYm!*sL$#*STXFj!&f2~3HemDQz-SOMDOl@lEUnxP$;c=iO92-n2yjQ2t_3@;+MeWvos( zH@^Pn-iwH`hfyi}e7z=+xv-s2+1oR+1K20;kh$-ct=rveS$KQOu+74AH8Bq0)L(;x zFI@rOd2YVUeVtfvgACna5gKnjPuUl#6SCS^Z}-zQ^SMLu2A%m%bn2E_jmW`6(kHK6 z&D|&$8hhDpE3M9OUfVD|Hw&M|CRQCR&A)c12!84ks2O~#XX5`ebo9tyn`Oh+Ar?T> z*$2k9jCYXOB=&NZrcblyE_v1K@#mtPSU;Of9oOt z14BJ6YpBp?&G?h$x}2Ij4^0lb>5qu-X9hP~K zvP7OllBfF`9=4x&zoUQ9$=6CaEX`VXe%T@Ts^?yXD^ur8qo`u3!OfAIdy1JCXe-LD z@>6uRPf4G!)(0J;ZF>-&JN=R6Et!YuxcYxeh1D@{J}x&CHiake6WFN_f8i44==}-y z-v=sOA6Y_f4ruWsXZ$(nxCIF9T__^5Pr66>o4O#~YVJ)ZmaULV;}UgiEv2$>=Xz#r zK6hF`ls_eV{*zS!)BA48#)U^8y5(-h@h`8A;l`}&EgqW*XY)@zLe=MK<{4@=kNp5K&sd;6m5 zj_(-7Y+Qx&>@K!J_|~USnnb;FE(eNdBB)ib!++36bu}^qQ9mjId!@C|z8% zH}2iRz$0^d|AH-LE-OG|q487|&yx}KF;hA_R;_#BM@i*~49aWGrrwFa2ScGgWaxhW zdwr#6sXj5M({kVkwD>8C5$pnO@Pw4R%C>x2?B(v{-1pNczt+UOS>GSnwAG;;vXWU= zch{=cgT-VwpEUrIG&a@ch;zB;z0{!{*d1PqKLhSpJUW>8^8%JlGduTQ+hD>)Dmp+q ztAxY%WS5!`D68%6zNG1VgfuogC-v-$(z1u)P4G-)S=$PF!_sv>tv}*CM%%1$y=lA; z#h7Bc(9~v|PeQ=ndY3)*7E=O>JWD5p3uH&ArTZHb;zS2>?X(3^q1(S(^B~AkCueWy z72b)U?c;V=hS)CJUYC9Mx0r%h-8(zZS~K-Z_diJ(2oG?~lC}32#xg=B342O5vVXdr z5ckGUUdZs9w6-pxzmQfZZAhq0_AM2j`O)R=@1?@&;V!@VI{tJwVc>}0)ttKtQv(BM z231AcF)x-bIN4LVk9PBvtWMezZ7G!;w1vWL@6XyXr<0{u7QJTpQdZngn7i+V{V%fi zn0+~UgBl^nFZfcvznS1)n8VyJ>#^twz05^ND%tCB@O5eELqO_pe@@oo#GI}pJ=){c_TwR`?L2*_7|ENr+4IbKFzOa{&$u z0E^SdQhDL_(%mkhE{T4Whd+i_wb+oQmEkU{roP$bg5^F>wrI^h|9_A__Q-mmg|z)w zLtM_UDGfy#KK08HwArzffeW~Yx}-VTPeJs}#nQ?jT|xo_f~umcF5LqXcvVMy%L;)K zr;DX}b9?QXOBYL>SAzZVKUV%&)$+{#ryB`!mt2i-NsK975D;)9)P}jiS$ZSXn)zs} z^h&z(!B?egfZ;@o(j^TE$CE8eg;Q6%tnj~@b0eX@096h(fqgS(#(mc^;h8lqLG$#s zp%8PJhh+;D%A>0w7FJx1tZJG2Z2J`)!=Sp?Z?;CTxMZ2=z^=0zf~cnuCxPCcAwhc1|jSze0bT8?pJe#)YInql*!Jh}= z?jSwdVqJ&^_`;LG`--a(K=Jp@Hz7=Kx43(3CG>|AM^cWS)#!0% z9ylnKqy!&8Z9tbgz}zi6>x?435NdVQwhW>krMMR8F9ZcAd#np-{=_QtRW6hKD7zC= zvTXS;YnGKIyY~Kh=*jE0Q&GR4TmP|cy}{+T%dWnDRQK|qdv`U^e)M*i z%SxAC->au&d6xT5m0gmx*t7*Ml0N^{sjYcjV_U?9;FEbZx8t4k`xn*Rh-EXTt%KH) znA6RqmrDE()ktFPAN7-kx8og`Ov^jm7SCQB z>vgy-x~t@@DD-MrRsNlQkbkOEbayl%J42w_FdymembKWofyn!_mB6e}7IHk9iVjXyN9LCPctvsV=%Qbe{btYo zK#2?Yg}em0$Io#%huu$zP4t6=6yx$P9za0Ov|R)p%zD4S?qS)1%KbUaZL&cPv}+n{ zleISl`SospkkH@ado|}l!m;ESNE0DdUvpT^*TJG7XQlM^?qjLhkkJ+?oD~Ygk(ab` zP1RjjFBqyS_um8?yk^S)e_u5<@!8vT**6q%-T|46T9tOp^vp?6Mjj)4m~;a z6wCsS%NF)Cd{O6x_GE*FI_W)V%+;RC0@{n~vXE+qZ&@w)2?maBvSuhebsdK70!1P` zm<@&Ib3V3TLB}1)l_@vYxHwHO6aIbHTAp!-v!Nn%9>E}9mVK$@ChA>DLTz!lIOlf4 zF?9I3h97=HTqgO;Q)61SV{VjLVf1O4*@5`xs7Z%XUdbkj(ln#Zi?eN>nV0MejGkOt z82@Z?dGW63DaVeTem3RA>E`IEr>b5(J8n1Gr&o~ee~T+~uD7tt=e|C-ZxcLfB!BQk zIYT<>jL$TiGpt^%1a+Sy+)4I-2Igj`)Sc7!w3OCFz0vo)Rny2CaI?tIY8(7?O*xRh z)eNSXcHi&mQHx)E_>HXXmpSm8M(;9vyJfb8wCwKq%0(9WhbuXiOJCFxuf#j+k1-KS zcow--G8Eb{uGbN-@z`kLm9S~L7KtR??rxjN4-V3o{AAs*4for+*zoMq8P1%yEwfBr z%zf4rHop!Oz^gjr4jvM=zk0jaAQpY*ZSitTVb3bte+=^S*NHw|q@nA$%<)m*b+)2g~xZ z97xoK=>OKOLF;)XU!WHLabs{j>{IB%{t|3Z zTyC2l;OsX$zni6aHAtijyG^%mhtqA{EHA=Jd(2=SYF%YqsqodyD*eGssdUvkHSNS+ zZa@2y1?55GD|k34ak4gQVOCi$>%4q70iN3P^uHy0b@sf!)oxf>ZppC}Hmyq1^_-n0 z6WK8n=AC)KTCKbA=lmOM9p(~X!P4o%Oz;cbd27lz?Su&KebK@R34v#(qfcVNdrbik zmM6l}-Nw8v^Ncjyrq3X+u_iXfV9)_YR=#)-Z6|o$+}CFJ9gDtc6y4nmSFCnX*8Mp! zfUczObMzX2ukM~S(RY&vou^fCL{S&0#fKZ!U`6zwsDtMS?`&#pWX10@@ITXQnL&gV z)#;ZmkvW_0KM13{#8?Ttx>q}|gog2(-l^Y0chlgdFy_JUnkxG(8*5_dXDuVjuCgLh zmL}ek8&W&-?$ z-x+@Y-|zqV?`L;==Xu}vdB6AdTo37WFE;Fi+dtwQJ;?{r>%b1H+}X`WnH03^UhY?v3u9ocJ0=3KKTbqj}M^)*kxvW z%yXQX*aC({2;#aqLHq#|Y#liYtKvqh5Hp&4f~RXt(E$&9O5N6^&D@v7Ao7?qN3O?+ zLUgd5RftdzKc=>XBhTRMvjYtG((MP}IJ{kOIGs;?7@Uh2#)#M+AI6WjC^a#DtubyC z4w4H8HFdyYWX6uXV(aGut7?IDVc>`m;oj-F>gnZh;2L8_E;>|hdTECloF}zwJ=+Bx zw8wT)paT%Yr0fVgc0`{ZbQ`INUkyj;nZq%N@jH@~6X9I8w++VKa7LSuv8Dta6Gk2u zW>p)A&i^V_THg<3J=4IcaGq{(q#FD`v&i+Br)vUZ`mv%Z@X>zN^h(C`v?A`k4e?>i z;A}*7_?gx3Hc`V%)4TZi2Jz_{OgR3%;FoZ2>x`?}@+)&W@~Y zfCC(@|D}xxG52##^PF~CJ-t*innFYxAGw{qJ;`rgmu3*6z=)0bd^CYI46;Yl(D7uY z0_%=ImVd0;wX|q@nx{Juq`z=Rv*+{#_*rz|jsajA9|`clk$-mVElJ81O+4e*`Nl6K z#+|}Z1y96qV%o6kMr&9n72;ztJx%R?Q*8;S(H-z~gLCmR3*1VI0LK}nJ~ubxXWS$-hM%1cEI8+`Sz_EL9QDuZKypzt z0_&Fo>tca5aIjTi6T&|O2LifhGT@9kx6);~zC!Wl#6@vDjp8*L$C@Ny;f+9 z&ftS{14RI*r$D{UoW0d2esya6ZUwx1{TOY=0XY5-PTcdH2I5o-6yy2`hIj;y08k$m zST9tXg}AO$7{7qS`!Lgv$B$&Xa|co%wd_!^6Y2 zPMb1i-G=b>+ty588!DT!X;TFGze!7lF6GwL&GM^wrvduXx42B z-ntd=9>v-FcOrlE_bw_;S{=vZNyI45pKj0~hlbobu2@)<%6Y(LI666Ujo+0DMS6}! zsph3z^%kKc*PyVJH`>88Db>Ha`t{!{o|N3LZT0q}rZ3rza(2#fKAGY2`?L&)VU8JT zH?sT=!dkQY*~HIacgDiE4Gp%~fj+Z$E(=Qn8A9xLD=$*Lw7N?kty+LYtrhFZP^TuT zaf<}hZ%{K*LVPx4nnH=rzeLtydpt-s(v4+dr;A)~(xzWf!x4=1@4?Vm!Qrg6e5>X_ z^#4}nh{8atay+9233OlqZBQ3~P@@Em92+KJ!NSXE9>dZDSkytVOX1YU>8HV1Fx*q& zEJjaPO%Y6WAOiVtt}|Q=X0GKK!b~{$moSsik4Z$woarL{JAfkbPDpNuFo8KKK(NVz za5R~-#rH?y;KQR^oD3XIL|c3>2nW+fw|K!1`@^RfjVtvU4a6@@qXkyqC%Be8Jx8L5 z#k|hTPY?@Od=4v<=bhnD%d7p?ywri|DO@8-pm9{R$p;=^<+?DlOj$R$g*I-K6 z!~)SjdLnPG#-0!hOJW@i!e%XfyQUcS*5)x8EA2)-wshtnQxHBhevwhZwU~m541rz| zE9RdG4Cqz^-6|)a_IuS`qHHw04M#-M&k-T|23rV@9!;Q*F_&{nY`Gy82kiLz3JH(r z;FHi8CpA&bt=rZ5pnv1s}<|j3V`|aa(cqwgrbWO5T^ne z{}|EfNwx|=WurRg@u+y0zQlTSd*OY8Ss)#@WDX}pfAkOP81YsDD0jdCC|4c3#8hRX z_TY+m-0;TZ&q6Z={8PfD;H1maYDM3#M=cb~=^M3FO|b0&s=ns)iQgFn@agnC;FJGy z(RS3Gfg^O+ptsxr$g<0TrFc6o5D@rD0SF8oD*49tKw}&cQYbyqSf~nQtV!_-1mM$_ z(`D6)>al+2@EKXLf&eJ;17p0ou(wPBVI@geHh~YF%p44zSPna2ZoZCCNgE7rRT^YE z&CO3l>uFRp*UX0rG@62Mt|)o~!r?H)nI_yMs!Fi! z!%H{`q4$-QL{Zt{mV`9aj6(x{P&&O5!@`O1zREyTFO@u%^Ah z-c8vwvB!k()3|{BxcS5$DJTE;=39?p)>daj#w#0hdfLPt@*Z|<{*3MN=WK%~9EPCp zky)LW%Is4(uk1{{LTUERV{Y6o4RP4-eZJ7^C)~BCuMJy;Zn(*d+3NfmFLz5grHd+B z$eRz7y9$)ts=;mtENu89Gn%=>ii}+f-u!OHVL|m9G2JV!fl2KklXB7V&YucXLcMhalbsELkw?jNydLvHuSaD zB_4gM3hq?-3pSU+;I9ufGcU(kNoQ-1)z^ zUZSA$`|A_U0TC=q{+P{p!eOfr9o4H+7#P`}Xu|{B_=b(_hl;#eAfoQ3ea^}{&6VL2D5H6|KRU0eS$8gZdEr_qLgbg=8g zBUS6(O%yryJrKNK=1+McKcaFhA($KBv1W_h`M21DyFC>Qa+oyR7T*+b+fygb2A#MCt2 zCrVA3{-e3$iIN2I5#%vmiab3!BIL8-A#WiOG#adoVnM$2gxFlQTotd0v7dLGndoM+ zW$ERk1-|!c1>q+v&zLUQUuS=V`7n*9T$JZP++Z4yBQ7vF1*;_3jv-YxXImRkTHUIb zrGIiceOnFr8wnpa zkN!t0p`dJ$(AeEfXO^}(P6p5>iiLBD!_RHGM@;XAsd=g3M*Q_gvGj(6nM*Bt?hn?< zj7RtpF`p&}28E5X7Marx2+nfi!UAJuPA2#g6E50+=hab9VoJNiCK2bnfQKPbBB$c17TvVR1b6eGy+{v1{c73Xo+}nzU44hry~=)lkWVmm zr%4MoUu(gJ>2#%g1aEM`j9~?o?kroG;yH5pH}ClS*CxFM+vNQMY?HMf)}d~B8WP{a zsdh(R4DzB$9t0I4Yj>BlcC4r{eo?oV@!C6V4sR9_$2}Q{4Ob>83#ipMLhj*rBkcB9 zn9qE|Ee?LnHoy-pjjAsOn|j@+SZs%6eTr+Dw1lls-rJ)W7xZ2%Nl^-xNAs#9r9LNY zn78gAE%lGbKl-p$tDa)^d#l{1s5TW*A2#{G{)R<1c6?0{H~qvK5vCU|mDH6u!tw z8+!q(i--f}AY>}3#MrKQe9%~(Xw7UIKin9_aVP*}OL%2wfvjCZpM=2Q*$FY`h&E*- zc;I~CF8Q5*;qPFkukJgb#W?2s|IpvB;ysA!Mr7S5Bop*v8sk!zg4-AH!0i_%90&PX z?{g8P+LJ#aQ20Q|r~S23RKgd;S*pI%S1)JL^+E4YWKynY^Gl8i<3|*kc+o>t>x)zQ zIJP53U?69*I|RL87VxLaMtEQVqu;)lG;G9qi_cg1?xe zcvpkgD?|wyA8ITJ)JvDg6zC<8asDiwp6W#KqqcC~-dSZwK-dx!pvM$#!mp#y*ql8B zMPx1|ClTe>-y}E%Ly%p_pVIF^BP{G)D;o2X@%Yy8i*#VJCmK{#tbyA7o?+{1>+?4EtPJ4*Om+^Wcr@h~3De zR%TjY$J;G?!uDbaW0oUztiI`o8@GiPVFj3P`A!MCv9RhHHYle$l`5w~5$BWRtYKl; z({5#g*9QOFt8b1xd>CsV=);+$zb0_xGif(!Hy~!|2bkK5<4x5`3wIzPsTxoWE}Lw5{E;-C;vx= zFx#RHNdKP^Wr)L&>dbdoC8^zv*mShN-_Tv2B7}6#z{doRllYI zy}$I|0f&7JX6BfpymUIe8@@=xI402xU&NRtq3hkZkeIy?Z5Rd3yknAc^w@clvxavh zrWgI}E-sw-VxiD>kyG#@*Ncm0yjUc%_4f+)_qpgl?}fj_cJX(27E5O>35i{@@y?Pk z+oj>bOSfNKy8Fda1q=~+mQ(1I-_NwkX=lGC&o7LxO{S;Hll zXtBd3ztHXsmt3RiSxSDV&9ana&|)nm*|a;BlG`*rD@h@3mK6$(tR(kocdR52X|t>) z&rqcFH|>tKq=BaA;nFS9Pxmvtv&dwspT%Mc`@e^K0PFL7b8TmZwN0%7q>{N%5NRCRq{zr$k#PTX3j5`d8+FZWmq|hOg_#0VD z6AoQuO`Llj*JUW?z(d7MCD=MSPvwvlY<@veOelC@N6q98vB@(89B!D3F3i{GfezeO z5SO{~k}ywSX0Y&q$gE&u!LQ{OwHm{n9$-YBI2^^3hB&TEmzM}^`dt$M_xpyy@bNI7 z71ks!oz8d86b$Q+SA;!Dx8DQcm9oh`fL);08eycIumI;Pk)`M?uhVv=z6c}ZRCdIW9 zitxDt9=NIL9B@-ou-hfZ1SghG2;2dV{MZBLd^yAdsm42Iag{4HBQTg|;5GclS#26poN!!uUM{%^QI}n?+b=Lv0WKw8N-J>`Se)+B7#4P z6>AQF9#DU;cY`^oj82^M&lC)J@Kn(P=1=y(Ee{dlWk|$)*BI9|Ld@BDh>SfKzxV=09I!LMMV_}5ZX z{~%-iQEJOq=AN#sPo|PEfrAhDKMyMvjlbE)yvRtoNl`FSy$yg_FKRJIc|fWQq? zDl#JP)2kcq%&)ZPu%svWqqcF;2hzMZ2p^=%z_o2Q-sA+5#+=TAzc-jR*Vk%2r_scN3J9J%f`m9!4jBn7?%?l2pf;O8Jg+v75sUgXAhL(A*|)CMIMVcnjZ`zw zMWH7=cpzSDgsg&zwBhA5M<3wIFMQACTPWs>3Svw6V&L`>4ol%P5>;3(AA@IuBrMt~ zuR_sc0}oIt(OxM;AkP$1{J<46cpxNwF&^QJogO@s8!KdJ4_4R2oNx3@O5|4Vee z=6Agnb#+L){!?^)O6?LAbon%PNod^*1>OGQ?j?cU%aq+A=eolRy7L>m3u!$if}Z>0 zp3=acC(546b3M-rda4_H{-*Ud2zvh!_cjOizEt+Mp6mU$p!aoS?^{}bhoJvIaer4} ze~+@i?_B?fg8u%-{!g?4(Z~T0j{&bW1HP&O$@zir3I|sFGq8&ODQM)U-5#Gx)_kg^ zzkaUz^z!_t*1}I6|9tA9fA$~sd4=captYYjsXvGR_<48H=i;W%_hBJ+7pFkkPmf8^l&fTih97XhGvgoLEi-l~_GFL2eKZ#^G+yKg!E@5hEF*+VEoF0SLoQ1SOJgA3H)zcbm{xg`QUaoTIXX3tBK;K&mX1ogXlq`TuBA*?_(X=J01TnHNEg>8jUur$BUqn=>v>aKL?Ap;ZK(u>k&az47|DeS49V1(KSMl zW^I7tU|gSWN?ixm=m$v&s%EC9fPE2|c?opz`A(P&@cE_YG59wlk+l*WoohadRe}uV z74;bt`bri}IRb)iTpyHL&6|*9YaR>KqFNekmi;=JF)b?w3dP6FAQ3pG8posn?JxTN zuV8RA22MMP81E@4>o4A-zqXjLKq33K4o8oM2Yh}d0}L~+5|D=ZC*fSp7^oTUQ4}~mDWBMv6{9Ses|1^7zqJ6>W1Pow^Wjb2 zCPMRk6!VgYn4XotI6PBu`DgHK>-CmuE24eu`r&2L6Zu0fI}<+bCaT5f_{tT;glVEkjU=BMJz~b_~lckTxchCh3Ec`ya??Yj)uFT!7KSUUU}~!mW3g@i#hhI0Iku zn}$`066HJbvyB*^6@ZW8SHLGV_Pa0m4EzoFqz>hLgYcnmMfhk&0zQ?C0iWu^Nm_gk zFro(lpD@FiNGP7<(4lzZ(XOJUe#D~tHOi z0=e6=_?^@Db#Y@9p9X2;cA>HDP|Yjb1CUG4gjl0uuDQ8pCATQO>6E!O>syng{}J;*b)dYHKk$;Zu+h~(lDL~jK0FOWI4jLGLA-^bLN_Q zvs^rSP73Wlo8CW@lZxfO(5S{qPuL-Cr4Y=C5lfhmNQ@AiP4oyCA& zL4Z2*MM4};%uiT={c?PRaIVleNF^@h`_Yhb><9rV zV9`?tb4^(+TNWLBt^o_{*93D8Lv+EM;ElY)N1EOYFX{OB=^*cKCyw2audvJg4qV2U1r zpbhGg>y6YgO7Ra!*&oM2c@;u6D^?-Fn+Bp@ZjVL13|^v!1DD0W8x^z6h`#aOS2fno zpv(`eWO@?#j)+~K>7wE|-)}JWmzM}pxr05#UL)2ydRbi)|o{iyF1OwdgSv%m6 z<~Amf&=bpm2N_e&2g2-r=Lo}ZUtDBCbM(}&e&3}v@1B|(jhP>@kN!mu53CUJ8OZzf znPC@%1~Ju}c?En#x8W9uZu~2VZhePw$f;S0@-S~+F zctTrc%H~BvC?4oYqiL!!fm3Jcgh({(-^q}ZY#GBRo>(BlC85k}`fDj~#dD@;217dl zDP`MmRhIM;KJ82S-te*v+nLAbkT{qJgP8J7Hx9e}7(B-<5T>pZU=?nWdJ_o;9ery_ zcx*sDn!(}I!ewk{E_Y3cTFfb#{FTaetQ76QEV~Q=%V;%`8U^|gE5`wS^f<2g4=eg% z!z>uI719-6Y(&w^WFSEn)OfpS$Bi-JR^ieJ>DrV%^zZ)U2TK0M=w~@%1q95H%NtkFIZ z_~nUZ2QlMTU|9LKz?L*x!89}?eL?>Y1~u$k02LDVZD@?yXYhGzB$uMwP<0%|^0ojC zO7MEE=jyU1>@vz3W?o1s({pp#Br5mC!JkJKCfDgfNW$~&P$~CtTArfCn`=B3$lSs1 zt;x!70kCWJA(7?JFNwqg+VeHja)!m!B@~=P2K$q6k91f9q+X5FX*4Q?=@|6--Yx9N z`!E6Dc_R72qu-*@`BQ{BCTdSqg6gMzzCYPD2LjjKQ28RQRD;bwQ^Fy7a}so6{d^ry zCp_9P$QR7N0$KD&!y6sQJnlZ?Er8rjg3O7=a%Os-P?Yy$2n1eVLC`QI?F$5Y>XG>f zf@qSMg*J$o(pVto&6(IR8~C9bE*_-k>GvD<%ZnQ%h-iBh1*x1*au_yGQGDU48Fz~d zVhUY=`-y{ooIG$p+^_rLap@J7WX(6TO8m)!AN(Ma5RHRKB4`Rk60o6-E|O5P z)m_m4yfs>E%!`PgkkB45p2MIZ1bnyi22*4|9Gjv|9Hcn>QOHIp{Sezn+N;HyU75SY z9G$}vTJXL5S+rN{zm&|`LN0ufJ{r^U zU+~#v{u=N}HFfgFB)p99=|K3DBYc*qY<2jEjn$t4pJl3Y3~Cw%m6Fi>cyWI8YtVqx zexwF$98T~SR$!0bMfPm-HFKP~^!J`03_YaUpx);JVejwCS?~Lm-DwWwX{>1|?EV$Y z7Ovmt+xXja{#)=FL~$BPMRcXI{UY4n_S+jNrJwfqOl`Z=>Vq(>QSreQ6&+~pN|+@x z4=U+YcsMg@O-CW9(>!DX-kBh4mHIsj=(@g*w^TtTS9&54Hg3=q74M z@3;}JNw)d=TVC){z2glV`f@w>rLVC4G;`?7T|5EEyAK|MfN5Z%xhmR?>0n+gg`xw@ z@F)~=ApShluva_Cv8UsX^niLf{cMtL>s}-k-(jg}PE-*`@YI_bD72kvKa}>u6k*=+ z9bgVgADiKn6in<-b7JEc$$*0LT1sQ z5VJ@O$B)Cl;S!3OjKt$v>xB=}hHf$`{}bXhUuQBkF+*h4EHWF-i@C$+D0R`Qm-@$& z7tqUk!<~PDA$`EY3DOUkJ%#(Ap0Gx7096sDrLC9p{;*=+V9LbKmR~|Pya#_`$ol|H5h1A8y%ABRCTcMm>_f(-NLLB6vMsfS>4!$^KQhFo$8%#HXI zn46A+V#p1OV^`>M1J6~gE~`@DRl1B2U6x@X(X7Bik_tj{E*tmYy&vJO$;G(e+@P`Q zx8l+2;0+2x^Z46b`jZKW@C`SC@RdsuY6Wk>cpc>Q(4Rel@a#A2ZFD7^z^UpZ#+QR2 zwl45t@u3iWdJ~UJ93F~siH3Yc#3K&N2~k2ghDov!!_+eSE5Y@cD&(9rrhixWRj7U4 z0+_PF;~J*m>!C!@pMfnzAF>b)8^J;}1R)C%v3Z!zLh#RueL<@u z#nT}o<8E;vQ2w!w%s-x)vJ_!1kVfW^Y2+>3TlaasQnSgHYcK_qAP-0o1oO0trF(IO zr2MIL&i!dZ0|EcPuM{lxtXR~7;Vd7fryo;kh!j~=pa5ohr44I7X>7^+cL+@DgW|w0 zjQk{XlqO4Dz!|hUAe)j~zW<9&c_h6CHYJb$0dp)!m%dy83(*rnWyd`%MS{sZp*cEf(f2Mkp;hKhC@M2P}N$= zmzwt7fdpxFzc(>@4eE_{8~h7duNKZVy>Pd0U{;$lt}mAL{x~GQWF(q;Ub!9!{j-z%@ia|1upUuA8ReNdAzxi@AM>FexkNQBk*Qa zfF1H#dxAf;LD}X_&4lu=!1segd%l30M z!~NG{S-y|mr2!t-j!!m%(twk|ilK{63QAFQl8k7Rc6TGQl6+|d3n^uoFDT_Zq?F33 z-;L7wtZJvsH&D=-s?#9{qfOKK_PEamh!8x2S;!0=SR)eC-9}a$w$6(;N^mg5mc^$G zqc#Icu_OYdICmYA;M{Hl8qMWey4CI7@;b@Ahtkhd{4g=he z0M1ghgP#ySMt%Y|K+^dM+7k6g;Lpaj+CqoV)BM{EhpDJf#WU#h*hWllH$=Hnsyw19 zyjtOtt{@WxBcvh?Q;~1^`6uu#2as=3Sl%)zzk&gNhczV39Yi?H2{eRNTau{L5MEV7 zF+|z56a%DI5mSZl6k)hep$quWH^Z@8ID{ydAe{n==FE?nLOU~$+$|_ppG2&#Cs{qx4YPV80}=c)5M2BVBDiow^A~6C zXj!rY;_ngK@($wxYx4*gU`Ao$I@IapOgEsTWHP2B)U71f7BlFnCot~M9KcFJV0C>s z8kX8|dbVhaHNo5Y3I|eNTM=QED}b=P;-_D`=~(rTeVyQ@MT4?mft#Ms#%}s7?y?JY zsSD7Ztjw7?Y#7Vhsae2=w>GA zCJ`@(^N6|?g%HR+oJxR5bxRK^%8ijA3d*yY{A-+StNpx zT7zUZ@SD~zGP}gZt`|b;Z|u5oKhwEL;WeAmhV=!efqQO61K*l4K|8VZzy2zj*!$Rs zzK{!9Rh}VBA(;kQB_5D?b+VAx^+2%wul!(!0lhHHv*89(q3U~4Fn^udc5w|#RQh1} zHf>cY3;I^rnC-%Sk7GgZ-xwzfL9$&kXn=FM2Sc=�*yzTRq;hpn#*?Nu%-prNP{& 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

    (2$@L==`yye{=E6Zm$X`;?wT+PxhqG*KFlT=NVZ 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

    M-t}Er0 zi9E(4>1~k-TR;ooF~_xxJ|4U>D-sCph_s+Gs9M_^39ijqSto8IZvfTE*c;K+#xUQ9 zS&=#8hn4^6xo@RG6B%8Dxkvw2HuD(rKW86D9SD*Dpm-rt}HBGc(Zoix*ItZ8S^d)>?&9QZ&{ZV}=mMHLd<3t-Jx;97p zc5Q8*__O>3o0`&)P&!NwF+NOH`;9l)Du z?+e?i2FjgSy6%*%Hsky?#~lP)YGTaqf^k(4C~R1g+azp2^$Q}(Eh11JZeYU)QoEML zH;b1nh<_}83r=8VCcgFZhq4CM^Njscz`);O1%$2ywZvcC*Bd-71TNxVEYESpn5f*9 z@y~GgCn_*48Jv1X1GFUj#{tK-VtZ56GYUc*2><=Jd8-Wx$SZE09 zNYk5UB&N600qvm^1pG->xB!#Do5BqBbK8{`nH5-R-x=$PHyEqlLH4FB)d@3z-jvN- zd7SNKJ$Hx&X?{BgBAMnFcA^zlOm$@dSpc9YqLqFureZu%3A}GkPLYV`HT(oT&+`jq znPFtAHq>hUk_@b96|6QdKh4lIoAEV*rfdYax%lye=uoG8V+l&yVV?L=D}~Y`_9Seg zw>b^5Cl@!>2|^CFa!{j8?^37M|GHCSsPK6SVsuE`1onQPeWiy zOH8hAN@5zDa5x~VIDk3U#q#elwJB`&ILx9iLI)TiSa~m)0$onySHL6D@Xs9y*9iDR z*0Pdo-iivg%6w&eE*)Ev@ZTida7{fZgqJlM)y+KboH`O z3;6rC{+KF%WK(5b#ZXL@8C|6#_$84{C{dekcT`)4;ZfcOTDUE&#Qr+rdZAhvEm@s_ z+-XAB0x;xhVbD%S`MK~rS^5Rt@Oaa-gpY+g_;p}_9_^mF-a#fuH10yVZOp`?ib2VRbeIkN_IiA?>cv?e35~fOECvGhLKIK`~{Go z!p4y%@@k>)(>Xo`0*LjDT=o~ZZvoapW3wvUkl4kB^u4<-0G7jjW3l4VA`b4CX)Nox z>xvgKNC&J#@dFOeS~&(SS!mcF{ut*dj(Cm)E9DQU1n8&Ekv(yXVU`!;07$lXxF7xv>10DQR}KaM#023_8xLky}>C zDT->&Y+rC4FS|?n78mc>#IZ{odLr8i!i+eV`NZ!xhkwl5~{%|D0r!T4T5|vpr@>e!c zQISK~r|e9tSk?yeiOLbk)s*+e^SMLMM>!q6a)r;!!s5Q&+C@1DynGCiKhXZ=uJn9$ zX*T{?q^G}<&oVNWK8Tsf`fiq6Oj0H4L3nSjYbvP{^;7v;mE|vSpIS4ehjM@#IU0M^ zaGLn`=&`DX-Jq04Dtz0sPF#(9IZtBScFlgU_!Gmp2*CDvs)btZYf}HnysT~dCr|c` zs&$oq!8Q{ll!Hl+I`Zu8xhG2O#A@$K4@oib`!%79Xfc?DYb)M^JcPa9oBGQJ+Y_h?ovao&CPDTDe%G7lgIX22?NctR&4p`o(o<;8+G(af0Y zUlHb8O~zHW*dx~uHTCEU=Xg+5jJbrMit~jsA5XVa@WY=IAgrL(ZY^-5q_@&=w0$r3 zs{`J_p)$?MnK3WY^Sbb`*G9ziLxYCKf6d0gd$s#AP29=6+D;oJpw#uOcVBs0P>DhP z*T9i07X3wt-=G=SO*0|X;Yw#F0>Q3^Xz$DVmZ z!6_e#?fUkNzc zdSlskGeCq(`GLNEMS38FmyZsYz8wc~%I(xs#cY1d+$^=w$YqO;I&Ko)2f`7q3J7q; zm)`e`zR_pMo9pVtE;l^>OSMMyMt?fe*M~}jtrHy3sB7~}M1XDTu9(~~e#P1Wo6+!}c0N*4DusCqX9RtyGZ++^c z5G&S{IF6d=SQ8$3aTV-*a;o9u3jlGlLNt`u5C}Q-cVTmQd>zeXD-+TYGoY!hIer}* z&vR}p+tf0US9|jUxNMtID}9UKWud1<=DFaDletSZHV*bpn+BXw)*pI1Sw7I);oUzZ zypR6H^5BT!4|io!OWppuf4K`p0%b7{}%Fi;V26_F=q4{sk!Qf07*k1|U)$w-!NKyh1pxRlw$zrL=5 zVf{O^npZ@V)!bqa2QhnCcA`**_}O!A`Y;b7>un2^^96yNwCoi-iJ3n|$8)n$kmKVP+uq)Xf04nh7f>&v{D3urf!?< zJY}!IqEAJLp2t(IfmK@yiy6IqccT)<{}Y{H^LxtMt!rcR??*D|{SGqn*#63TL1B1~ z#d7OiqVVj>{h0YpA?$pIo6P7fzIRjU;AETPEB23&@Gw2ejrxc8LH`sTvb-W^fagy1 zPfxj=*YQ~}i_xwRVQm+I;fI$(uLKz)q8~!bQ(0))Orhn}f904p3wpCoY98VYtmG#$ zY$+dTPcO;`s@va-EH!=voPoT=O>!beX4VDu#sIa)#Z8dKYqX`%3Ob zoKp!!sm*$3{o0xJdj$e@INbtcDEtir z@YZhm@|+u);Kn3&3x%+=V>?S`en6_$&J15lI=X^uBz30l-LJ!m^l1at{{3M?@0Y=b zE}h9di^fy!+Y>batw^?pp%oU@q0W#Z;`mBN4rm5BK$~gdVDiQybdVavSE3ghwA2fG z7^}d`^cp;{Oy+@sIFP4WqSgM(PxDHq=&mYX!-d8cscc=SCH_6|pcg2HsLKb@Ev33c zb;jI7x~0#u^(MvwSdnSw>IcyitBgS9)jHK8t!W_~i6R9d=a{ z>QfxjFu`zBW)Q+k+$z}S`&QZkcCldQ8b3ib^v@xBap_xJo3o=*g2R(*bEFXey{~r* z(c8NarX!m^ss$=4h(GK&YR(@(yW`f`#h+$_@k}B6@Ayn7is)$uCtRoX?|2K^vn=6D zaWNj6+)>bpX%u5CulkA%fj{#p777zMe@0ADXrQ(vVOIo;be~K?CFnqYWNbr=xzTjI zsfTBgzPb^@Uc^$ElS{Gq@tL_Vkjb+vrZ<2!=c>9!L78WpD3AXqf|J5}{0K69Bj>;* z_?RurX%B+8BUjhFM-1^lihn4C_{l7dHb!0hU=RAk9j3|QkrWEj2)N(1QM4Hbb>rb} z%#nDS03i{I`kxX4OPfTK{4kV7zP5Or8aT4E1nf}=9VmVA?Kp&NiQJccJAI=ma+3YF zBP?#R=dTcgccH~n-?=N2^#&}d0KsespXm(?y_%SC1wENt(UkBv(G3R2ZzJy_zv5aM zkk8K}ZI>m6TyNCPd3*eH_n9$6(ZiwRb9EFA-RVsM_U|f?b1UrLlsil?$JbJPKPW8f z;l=fW|6zOhHr;cNOw*-;Uwe3hZ4s2xNr>J)iNDA!ZfM$-<6hwiJ|}t^w#->d(L679 zjHnCGo^zR(6N9lx?C&?@Pl?}#rt}tq@PjI1=2G9s-?+FkQ6EYEpdcdIaI~+lV6gAp zD0E2j?SdUdez;cnCv!!XMj@-0-N?j*+~I;#lK+$Ful#iMzVz+*(jLg(X*iV3KJu@3 z4-p43VCJOu8wBTR@ufJyrZ24O5hMnPC!Igkw-?>}($zhf6VX`k9GT=bK_XdT(=N$4 zztdSHH(Yzj@J+;-2E}hyr-eH-Z%>3nc%eCdqx#?M@e}zyJc{&rKS_2pR;VWWK|#VX)(2%60R}ed4|t8=2bLB`7qyLyz9vN z^b9fV^|lj{J(4d0RY$iIs-C`%jP8MgH+MM2L$JR0G3)zYL<)1*n&KJr=V*LAAm9Gs z6Yn%{lPwO*zSCNP3+j?T+w;Pm6bO*` ziCDr3?*1`a6mPyIHfihmhoYBt)*F{-nuWjd>v0LFugTxp@`y_x z1WQL=+b4ay*PES?7zs_HYx&cO;R5hN3*s{8Qc4naQn-K$B#dgkRkyYP1d^ zEe~r2WnK`zS=CLP;E|I{G0(!E*lJOL6;xOOPW;y(D5AP-8DV_0_mG^-2x!MDB>vc; z%hI=I7ABQJy^M*K{d@egHSXEY;F;Pc?zxT4Ia3)IgXU?>+y5TV6abq4%ENdDtwAkS z7xIB4iIh=V%(55)D0c|%cNPkV8B2JULsr*u15^OQDXLTIrs0M&2fOeo=KD0r&V$Q8 zeJDn@n~XfGXgF>Rqq*%y7|m%0gs{k_cmRT$C_wh3o60J@mk=W}%5{P4oxSyb`?gWi zN?{6l=!PjIYg(!m8W&hJDmxE_;}3OcMMoz$bxGn$cOep5szLyiCy5KZ{f3ARIFlbk zT#CyZ2@FEA1p+6K;W)~skh-~{6fs0e?(S@&>J!$Et|Fgn_cdy+3z5*bv`~%5yMi2z z-SS@$Hr>r8gwiv802D0nVE6Vvi(5gSlO;+U%RFEj?*Mu1y2-3L%YeTSE29D+Pk?;j zl?ICV)eV#7ha%>>-Cvv_F5^sU%mwIvL-3dA7D^3((`ngbNo1IZ!Fw^g^~k->^bCr> z->M)e$P(cA>pY-I?ieL}R4 ztiA9XWn-?m1gfneSmIuHu`kmzv7?kF$;;3~1 zg^&&SE9(xM%LvSm5YZ;O$GOkf3Q}%$fUkxzG@z(1$zZv~z$NZF!*+^>eoWKfNiJ(R zqQmTRbxSAAuCb_9a#9NGp>iM^&c?Jql{Y(Z$TupdVpuEdc0tXK+XX&Y-lvvO02OC- z`*%{ERCz7QB5oKXmn2^FF8&_c(U9Ph)VzfJq*A;yt!5OY=b2qr^GBdGSuL(D%fQ5! z1|G7&ich(wkXRFg7Zr#O@Raq!&QEK3cuN(Dw+CA=Re-DkSq6p<+bX<&YaxgAW=zuX zfpt%2Fn!5HcVUiGoXx!}yB~hm43L@GmbXMNd@)RLyGQjw^4)C?@RBJWaOL3;(Wxpu zajit08?PLSXYPkibU&`vqQaDGGwmh|l!IB?v_L=(Y-WKwIFE^4IJXj#HX@XlEhC!^Us zqzD^=Lu;7@3{Ff_Ptl)fj(?BBQ(^Ds_M|(>s%>$zb5F<_8zS=@E}8(~F>mwbv7KcjGXRW;JTk?0!JFEwz8^+rI%Dm{17{D9oH zw9Hu|KPd5rNEcTJu81NvaGFo|1lINH>8kouZ;uJna)Fb*5u!FqjQ-h-8-E&p$ft&%>-cF*&gp_Ltgby@j zYuA{~dHwms;%>m|?t@Uc5TOn11ardhasm38!J_d8i>89Dd!_-) z0B?H*hE#+8#`ip%9yLkEB&FlCzN%sXBL&1R!#*VnjIbCz2|Sm8MI zLY>jTDIJ~C{$j^uctztFlfQ)Q8~HD)QyH0WYEiOVHFnjwl8j7PQo53p_JLOoP_KG7at(`U%kNK=-%7D zgpM599Scv*$tOyt&8;6A3-ewBiprZosauSpXu?n6#7I{&jQCkE0kD-FhE~47Y1fl{ zlcgMMt95kITiQ<)zf=xoYwL$;C?38MYh$-mnH^D$AX?bCY+Bg1?Dx^FSbK5za%L+` z|6nPF##G@iC>4f#EQPR!=C|+xx0Ylw{~(;jOwAaisdsV`DSM5OuCQQ ze%%p{zu5^4W#N%-TkxJyJ$*rr<-Oyib*kNigI=eu(GEe^nAU}Ku^H0$_ouXaTLbkD z|2lfd?v~`I95g9R*@e>ULs#Lx5cRmvG6L;kL&ISxf5pbgoBP)ahO$j563V!UzsF@)I3d-GH6Ls+PE(epkv>yI`o5T0D9zNmK*2BZw9G+Pg zVEo{^0RRcdT}&~FszBG7-L$w#2qTzE83O!E6f z)Ll5~SYqL>DpYx65DKnx7MM5;- zcA0SX5Wx2GiMfx+f=MWLl+UTXZ!NC&avgGU9o^WK!%jZxGx666MoPQiUF{Kn!cjgs zx0irDpN~RjfRTy;1+QmEAKA%n;&6%rTw8R*t<@0O`Dw5%_A@ohLIJ^I!1RmQm1XdP+g{OhSaHu(aRY)UDJs-T%FbOIey+Y-hw7JK>a&dscU12-(A)P&-8)<-IBF?DYln5U-Ct{GeUz+=eNQWtt zm@l zjA{4&HI8e+E1WY7T#*Yl;9o4yaT75&xGPP}rX*8SMX|77T8KKRcmT^El|t%M`?!}7Np`TE^@hj2rLkoj?IAI zwF7nfD|$jC%w1)VjU`2vxKMof4^F)eh$d7t2cT9ILIKtQH{*_Z=Krxwg_XkT{C7Yjyd#1D zIv%zFX>>ZOWkhlQoKc)Xfi3dY%HCWfGKs?jC=8!v0%yf}Rq+5dR|0l6a>2kDSI=l+ zEyqN9cHXFfm{B1kEr%U}07{-WMa-8mWl&2JxFA|i2?G!~gN>sMllL+9av+&VL8Prn z;SlB;6kvB`gvw4S!mjFCiO|}&HR1htk;a-&Rcf&|wfE6R4xAnVw=;X7CofK0CvqE% zRW;!Qr;?)`wX}8_){mDaUM&<7Vh=-k5~*EfR84N;wJ9k?(tAt}@X|$)r4Dyk8h=il zqW}#s7UWijf|^5v2+>7pTQ;*yrMU82SFfFn4#@_LTfyf0_OUf!yGC1Q_@t6Mjxf%( z+ah=GZ|X&?eFZ5BiL|<-CD?!U$nX}5WzwZ7s}j+*aFIn)UnUEa2TD<$W$h^Y)2G|! zQ{6qHFyXSa`GZKCkGUsJo>yCdhJs{yQ2#JLKJWW71bqp7EHrb>`P&d)wHZpgl%@`ZH5s8`m6$ zb2cOW@HFeG9c5YGGT@s06xg>qtvs~{nY~(MKrj~6mD6D?qqp9l-tyU{b~CvsNh@@5 zDEEMOR!OBZ3z5gEQMhjO)N%k3LkcSbWPxK%SuB6Fam;6Um93v?x#3P}T?ilMrl%n4 zr%spI{bQlths>9aV+XT5uq^i1)(!O6PXoAc0Xg5!)ztO}l3mzw1Z90( z*UUZWI1-ESVufJ*2BXb@xjE84az4jFE7O0YV)WKEufF5Be($=EK5_o`Q0ATE9W*5d zO&Kx>_3%Um_=r7{XU)X{^ z+vSxwuHJ>%V08mXpJ^P#S&Yb$(px&y($v6vT0roO!<#6Jm7l|@v92MEszxT1g)&`I zDSrwYd3F=rNXnsCDtudVJS^j|1XETB-ezuLCEn&}THZa1;<(6;jCPj|aD1vx|vskfUT0k2^KD2!R@B8 z!+UBeUj|nkspXI}#YB=)F;P7se(}YQ*zurfsDg2ye#vt}+iCPY` z2Zb(vk6os+JYuGb9emdklq}iavnbAK|1^1KvkvrNWdSv6&V#iAyyE=B$?JdsU;w0=i+JdOsC^S~07oh;B%H8G+hQQ=9~z*I_8( zz_tj1SE3P95}F#Fgqm4ZVhrQrN&}bL;MrfO!>}sZmC>Yb9=Xg~`bT^rIW!mEt?f-Y z0SRKc)RFLZK94N@)W<=p-#cV=2jQA47F~2yVsV|!G8KG66#FizHd1HYKRge#8d4Z) z=p}48(oq!PL1k7@@uccfy#(c*Wh5mHr+cv%D-7&jk@qmYRf7j=j#jx^&h!Iw*2BWG z-&nRI((EUV>@Wa-I&miyEwn7vWny<6^Z z2#O$Pggelx_o|flRCK=6M)XY44b?i(k(QBnC(s9DLGIp)2 zM;SNn9Y^NNCL`HbjS{Bm8t9u-p^D0T!K@(OHPOWVK+qUkd~eEni3ygSkb6%SE&F!P zw>0ifz|KNHcTDjSvSr#|V?m#&HMet^Rek*^Rb|wU+}=@I+=a#dSRlzZY!4vA^oN+g zjd++lYoCZ-`+*oF!be+A)RNRfhZJ>7ars9$00ENlsN6pU4%@Lz0h-uzKB6ThsVX7Y zpXii7#+nJ;+$b1oHR zpl119JJA83G3jp*=WDE#Ct~n+W2}K# zp5q#DfV=V|mLEdL3S2K3046z;jPd9xV>STod&UMRkn*L41^%C6Isbi68}m~NApMge z(Z+W8H~aN}agT5vSHIgH?Zgu-G%ScCwte^%6&WGsx%5ZrAeF-4Md0=C2)7h>2ybBqd_RfP5WXB}mOh#^+o7R&#xsP6lcp+9qepV4+;YhhJvjZ%% zu8WWuJG5iT%$E7nt!U|f_M@lc0*KNCBLU6)oQO$cfX5X46$~rg%Pm>MWv*KI-P7c@ z1uVcYHTQMKK;S{Xn5}l~CsQK>qlYTe2T_y#VMC%!S{KrA5CUHiAKzt3KtTzlR#O@) z@=p03Jxx?W1D8Fz7)pqQtsvW^5_QqQKUluS1z0)8F04ZX@ec$bWw+YDGv$r|f1u=R zZ3jHi5DEq4nGiR+o^DPm#UpuD-UmNKCiz12)e*ZJ0Qs8B;i_;AoB@Lj|h6U9yFe0+L<>00(U+~-Lo=T=2vd%wR zYcu}E@@y!`X!qx{B0aZufFa5g%l}O^PHRAZz%SP2^v!pRfZDHJjtguR5~&~6Bd0{U zj#Fm%xRp7{rZ>2QW&x;uA(v{lxC|$gr7tpq^OaNq@(if}_Ua=EEmNhA^)nH4iDKP$ z_Y2CrE@2^&y5w_IvIAtDLvC~<{Suv_DKCwPwK=mR{6n0-$Ds;aQ9vY%nxsCRMitDq ziNb?_gaJc3#2Wlp@BRogL?RctI1?d?WHin0vf`AVY=$<5UD+=v6jyGy!M2#n1u3T~ z6^6Ol`hEr-yJov!7~zJsmF>`*g*4{nrHTe#b>MJ^AzWCtVC*oO7WttV`+FJ`nThb-Ny;e=$XF>KOkI&W?3E7a ziVG29S1^HW$M3sLdM>fU=}g;VqmNNF7;&0B;_(cvc^OxzjDX0tHwlbC>Vf;`()1`~ zE0hd=?X?_Uvp-mlg2CFcL*7`w}zXT zZtXpPS?6gp=U6m&RFBHvm)W00dM5dRENoQc#oetr!}G2(Vr{+o^GL9S5BVUAC%2x` z)K-%d_M@RUIbi@&V|^*!`Ht*!H93KaFAWK0P{jm4f+|2eHYnuTHe>J2`p5|CcGG(H z#wO^2L(Yp#o1pfO5X^EL-&MvR@|7+lW!Cqg8n%O`rr|MITnAF!!eG0PjQ8vD%zMdCh@PSiUpULoj~2 zS^tvSmf~Q^`h4v;2mF)@_c4?gqmTCvV`Bb~Tje)_> zS1y))rM}?I>5@i!cFxnxO>`e_;N|QZizB&{?Pt-;f`TKm6JybDpP`d8-ZsMn{DIP+ z(6SYm56J8*ScTd}Yd~-AdedlVkmL2vFrScH{&KKXe(9$<__od12$;#DEj=TKJ^S9D zq3<)ne4nnYy<^FRy0q`QgVF)cg!23}b|kKSR-CSX)>KaZn? zyC=?A4(jbL@*j7=o2?~p_WD40v)6DF>>191fv6e zY4(V7inLDcP58g<1r}|17q0eEcVfKiG%~~ITlD=Z2cms(3~z$iuijyR4_P7h@1AS~ z(Y&4|Fk8Cpk7hE}oMu4bx}Q}Oya!n?I+BH;A2boTL8_J8pG*{uY|_bU<`)$whME6` z$u_awey#Q?TQNT_cnu?<=rvd`mUez4Fn=$Ppw*2DQ%3u7ullD(ed(=myBvd{^ zeT%eES}4k{JEU3evO{NMLDswIJ(Y9WiL|7Rwm74hDTB3^qSiV{;)_Dzqw%bBx z%bZJ19pQtajKa9{oqstUT1ekyP&(>-R#pJ3zivQJ#l8JUcC|i|iP>}M$7c9cQHO-Lqqy_YVxaJSk&CE9TPhU{-L%}Ry?U_b~9_yfg9vn zA=;W&TY#_&g1f<=*_p#V_r|gIJ&4@b{$14fs;U7*FDO3bCwMnnWnLb-(Q)tCSsZ23 zwfvsF{h4;eg@^G++c`78_U))Uw|24AuAz&*ZP$)Pkd|HDwO&wb*omNk0TG1l|DwB` z@omwckzb$p7bGKJ-my=-PKDn^7%8t8Qcsc_Z2*f{%jW331zsJ1s2w_`@u_KI2%Dq8Pecqj?ONDTD~ zkgj$A$YTbd92(u5#^&VzF3f)yN7PbVlLs0_l{-i!>c!E87*5|DP3uJ6}{+9JRob`~uhF-tgj^=bYUZa8=xi8gx;v5$S>6H-3 zpZe0oww$7``W-2>)_8wE1Sy796}EB4c*!@>rEQ0D*2LE%6`C(Z`PlP;C;*nA!5eeov8lVsirx^o7stdM>=aH+E2*zn-R_$X~_y#Et+y~e_G z_MqpHp$j&;Xha2{gg>VwJYEb>STyCMSJG_=w;-$6VZqDes7ShJy!iW!H@se zZ+@~J!+qBUhqv<{CnI9Aa^Zfho6@*xKRo`g0}R8ePWI$9e|-{2w(!r<4c@F)a&-3hT^*iKFY*wizkCoKuL-Zjn7+OQ{Do zC}JDWkyTX=VSj^8g)$?5E!twEk3u`e4_r4 z2Gj?v&f&i1hv?<)V1$0XHtRE(h~aJXqi$g*{9)>?J@hL!LzWxsHCT+}+g*593g0?q z!gndXvoITnD2Q4t+s)lZ_~PU1-*)W6O+VHBqwloEG(ML}p~gK4e7Yw-b5ZY@i)dM0 z6jR?08of!7yTdovIeTjXT(BEveTJ`TWTA^dmZ#UF`7BS3`7psjaP{cM6Lr*Y{_`Jv zWNh`@=$&Mwo^bnCL;*e=kB{HuzM)UdCj5rIlH~b*G>uN)?OVUlZ};|ecXXh6b$ohP znU3AHPth4|VHQe=hG15Hn2)*NR>!|PpBKvflo}$+oAak&FmJ<|>6|D$(G8x1>Vl|4 zddtB?c>7k~A&fguYYVAsAn#RM%qu@4YZ3Wk+ipdyCLZ>W%^?aI)ZKYeB!ASSwlKAf zYH*u>XqpZQicHsolh2zP{0m zl##b!?*v-yU>_8JW&Mg>Wm|pTcD{>`eSGR02R`ti;p4a5#m#;EW-B<6%{KujHpmp! zh+{GYh~IfjeyQJdh=%5_UsILeqV#^s=beqCdiSE{H=J`>mD5&kZ1aq{LmtNu2}1${ zhL5|Jc^6OS;4QCxzTk$%y~+rfqMiVE&Sdh$=V4!{(#YQ&B4`_VdQJRLifwDs3TI$@%+C}c-rK-S_I0!z^ zpNn2;6PrX=f`&t#rvU$+dGBo%{D^11pPK|cqcXmn)Z&<(Bs6>wABG?GxSVhHDw^gt z@{Za|!lM^P6-gyfy|b4S29M_t;l!C0U155MQU6*()HSYmjkNt28Fv~#X!+INwO-M` zwdI#ducNYlA*X%&u`>yPzHz#{GruCeMs>qbR948(Y&YH(lV9G|S#$GX z4W!`*KgQRExBljp=lMCV*!}y()S};89_RN~gOTSD)$uyfutn=0Spsf>W2#QQaNr$9 zpBDa(=Jr>=kr3S}CY*%`X4-zycd#$KnQ|wcUtmSuDnF3TujFnW?@!lMc~Ny-v#49g zlX){oRQ;QiEgkjJEibekcvR<&#(byNV%|R`wi7=aoVcAelRKjuCqkULHObnnh1^23 z{`Aal2=Xq;J9F!c>N6%zG#yykV{g#;qf1}bBWQg|{noQpd^Wokb@l0}t6u~0*+C;A zKD*YLi_b>?0QCFNGsSw{y;ldJa~%AHC>Z8XkY?*=!KzKm`c(1XZ9sq;4~ zb!;9*PTb6F?KBY_=t>Q=hrx0WE@)+paWbQ;A`L%4LuJRfbeVYeCS^`rP36WfZg0tR zAlv~|a_uz6t)1awsx`S>-Wm6WsFP1FNYxha=eE(19==9VvF-2vG6Szg%_iM4Vyv&zI5)xvcYT)5$coRT9aFhMG)*Dui2Jn>OEG7 z$;H=0W?XKAu;mrcO=7B~y4;Qg!hKv!>_%T~fXNannwj(;8~!_3EIm6!S4-*EizXib z22EGh??iM`>J@!ddQKxd4|zu5IeKje&mHXIu6?wmUQiLGXqo(@6K|Exmy-Hk_iQ@j zE)3HsACab}hL@S(m=2{spb!dr%IxKARQ|WK-axvw5#K=JV|1>$E`?bRBZP5#a4GnG zF?dJS**KbRK+l@>T3cAb|Hwztrf%bc%T9iW)~(5WqI}4caD8bk|3ubEVR|$NFL6kG zk>9GK+ifwwu#CDQ)#YZ=k2EKK$|aaL;3`Sb#)XeTFgu3JOODToIlR^zDbh`?Q>K@w zt(-@1`gb21jsArq{mYEORi(jojlrKq27fVzca?_sHHMFh44*MZFO^1bG)5najQ(cY z`>EOoYTFOZc?QSDpAZGZoB(Mixi~yv!;e*+NsThT7@y#UagU+kyD_=Pdb2l|ZedNh1-8sH+w^J$;~rmBt^at}o>c&rSx zXZc61jQyeq(PU|^frG64i^&LlSQ-@J@PI1qz_k?%*^PjE6Uh&;#~{uShuCWAZ@7|w zz%PEFdIpruz~v}?lJ40kOp4#Zq`nZcX2QZHNf+jQOg;#ugjT}rU55dG&s5^km+`s0 ztt4@SKk@~{ov4S`8EIL7+rK(-E25xVP@fN$3U&b=;4Nk{L=1Vzx#uPqr+5fGH#Rs| zy;mIoMIqK)vVn(X;tN}FE7(4rr)iTGKpna+}ec`8n%wB?bg<(3t@!2Ix&-Rc) z6c#(HiA!pJ%N4%KYXLH!e#r%J#m3R#9H$ca1ApV{_`Tq&A37~jW8!o(I4JytC>W+U ze1@5195)Bze76w-6u+MP{+mVmt0+cdk^ah7%^hHlva<<(@wNf*#p%?D*8`?TV==^@ zt?UPOsa)yzZAqS_jB%BNVPLdOJ-H+mmhodS%%L{Wu0 zf!1*=1O|#*LY+z~F#Uv?G4tN!OS@Uv?nezn!`_x}{q8)MNU?IDJ{Jk3Jq3@Fe+Ui# z`Q%@ndeud%;+)otTqD4!3ueR`99|3^p|C6_-LJL1khW1*N3n4zJbirF(xzBTyUM%M z!TH+=)tZ@`y?9eNS7u{{DTxGXGMck<=rKvVWnd`u;0%RL12MlMN$03%mSG7dE9iV4zNBmJYTE_lFi0S|bHOxH57y!fVi3ncQ(oY8^kViTb6 zLhfWxKVHj+zz{5bg>}SD8B-jFrii!|tpSuN(XH3VsrKm?{c539cW(cY{+?CD@#->h zyn3@lIb715`CR*gF>w!Jm#PDBT!AsD>~(K4yI%_aAUfiCc^*b%1$bO5P;s&2@3oll z<5nP~_<#hqI~{2-*KebL+8zgPh#Qx6 zXffDGewdCqCgtib+*XlQ{vAIuGEes7N#UIoT9?Nuf!{Qbu6mQmJ8vD7f8YnoH&Hif z0ujhkO^P4H9F^+S>wAZABQ!q}m-Qn4-i<9ASXvCNlplIY9NC&e@V4XCDO2Q6L?(=B zNC_$yFLJp|5+S|pTvMW2j3pkx-d}PFvGZHjGPt(U(^cxe(S={&Cq%(8kGOFztaVOT z@YR_&7Te-@hm!Zz`4Thp)nN9YhPj0qKbm!^2&jQ_P`li|$^$}QaD}4gDBa9(>|2Fn zUn=L$yI!fI)I*DFZ8sSv(y(K2ZJ^sSp(hns`fTlF{6IvkDY1E zv}e5~vmJCH&8DBeSgi2CklR!lTH2Ig8?wCsTZUo-IKp{_f|5DcLuQ9f& z$uJY!c@LKH2}VS}zx$G4BqT(<72?Lhfwm)O@af{gbEeMj8*h?9|I?SuYMb5gdxML}a*G;#EV?51<3BU*Tohf;3#u>IvxnPGr z!MKeD|KT8r#hwLkefZ_AZC_bR7U@Q`^_sO@9;fYJ3!h<#{sijdhN2M2G`bCX>4P(x zvUZxF{)}-6yt%pM&FZ$V?N~c9ajLEVcDBW&sNfz%uC1G)qCGgP7(asWZ-`|Oi!yw{ zD$lub+?lH0>OQObuF6u!4{Y|qUK->dBPuO68Qqc5Z-x%Jx-QfTqJm>+ag z<^^y%I~UWOTjS9|)1wAuzpIx<8fXvo70qhj)H`AAKA5jwhm?a9hZjGtzVQ69d8 zSoNZ}m+SjVUBT!AfjY{TBMF+E9V8Nqe+>SubP*|OZ-Ev8W>3PQuCx|%W^#7J! z;IO0C-g;ZC7_GJB3}wBeilr+Umt@pzR+6lH{G^-`eFlxNeZkRn**uq%Q5R4baiR|@ z>Z-?MowN99WNu!weHopb7jOm8=$sj_EekzxaW7P8+tQ&IBpHzH&NkG>Rk!Sirlb`WA`gWoR+R7))n8u>*&a2%vC-gUe?jEF#!Bm z`HcuScf;(NgKC4GMQuo2*0q(qv(riq^MG4($KD&y<%uXmS2mS$5W1f%I0rLJs$KRy zoFzwFaY?csDp;+e!reGfdD);?X)1zxL=esr3sc(;J`ABoV$P-R`UW@lZAP@!Nf|4` z?9=VgfgrmpI$Aso+fAn+C9*7^wr!E~Xd~>U9nCKrHLcxlBy?a~UMo zsxdyJ2eXLFaOEAGM#~@`2DSu6wQ1S2C79wlLxmq_0F&%Zg*B{w`oXo?%#U$9<}U7r&QVEtX*{s^Hkk^?iRkm3-buzx!Z0XfS4fI&tP9S3CM&SO zeE2oagLg70nL`xf4J}K!dbNk>^H&>S&=kW*XqB)mEt~HO>ollJ)IMBCO-M5+d2XBwcHpLL-bj(B9zAtPnxj?eq9`j*y4Q|a)IjfDy23SrSB#T<+@al5? zmVIGfmlUdc(?*r6Y4UzeR^me}lL@O(QmsIlW(aPOkSz5PsIhe)K{$~Ceix-XT)JF0 z(R=*1+zwu8@d)(-e<>8qFZ6se+;`$;-%IfTV#^@7ihRrxCaX`a&IQ`4(%l8ze2HIr zte;#cFa#uAX#<+U8Y;tV7eixh6#b5T$Ny_Y&y>n$7uvHmA zE)QKz5QMhD{v0>bepHR9>GUSTc(`5mSVl3g9o$foJ*RU=yTQwHbH+jWK-jfUY}vJ| zP4{}}9x$fKIbkvD<^}=b^vu=EWs~f($HQJ9>Kv36>9zsqsSTMO?O+&f!i+%K-LfZv zi>n@thj}7xU7DQ|{9*UC16OpGeWVaKz#nu@a({sO4D8Hyovq;y^L50>B<;2SB}EFG z0C4<-%zXMoGT}ST+>BmxfA&q_Sx1=H}8`TG%l;=&}_>f!yw{?ROEwcf} zf6T}_HuQRu(q)auO->gOS``S3&Z48$CpvP*(6^{i7$JAW zg-9sGKaqvVmJi4i!n~EDeYj5Zflxg%zeJ@AXg9?9V@uVsOryT z0SPNiZUM>15EYKL2jgn>$xdAGFJ#rgh1+L4N3d}~F{RY$++WWOyF7@3i5pBHl@s+@wQoED+cZ3#PIzG$I{V(511w z?G)q6F{G|^3gn(KF&W#&r96rEA>rpAf6f{XYb`zr&YCs0%gBnV{{D&}w`*~CEZ{nV z#WL*qcy3iXIT`dUxMt%bTrLI7EVgE}ZpO>z zDpnkIThpvu?>YL1`O`D==5BktqF9!pvdk>D%vM=xRI+`=R=Fy9L9x6@Wqtg1vO%k` zXy;#ctw@Hj==;$sv1IvZNNGj;n!yQs2GlK(wY%^d7R$Y+2ist4h=S&Kq|CHy z8Zo}_M{bR#yG2z}q@I8_Rb`5rNs~(wp^RTz02k&2;m*_GL@_eDomhN=v$8VoFh$F$ zm9@fDfl0lC;2zyynoEmLM4yt1$!RM?wK_N?Uq?Yr=hws6Z?mOF_;K}{xaHq8zJ~K9USAq3Y4J69SL|k-4E|(j z#b2rnki<_DbIt`=h$89)wVd9zk%_)(9{|;7VZ(Tx%Q;OWgt_VMWq* z-~#Feb^30;C z^R-%ixA}fPK za`leb9iR}Q>cm%mL02}yJb58dHIC*F;P zrl+>UmxCQ-&Cp{?h~E9Abmc2XjOzN1Ep_1|xP8P;+;12~b9VOB7dDXdY2r(M0}eib zvS%uLJ4<}q&1c%43f6sy`O<9MgX`EanIouEkW&H#D}$$DybjecWP;(WzeZX8R5V7k z3N`2F(A2jo>Q|zaR;oP5rrvxax*Js0!&(_$CPimf?2vyf#JnTmyShz8b{{vSI#+dZ zYgBY}vWn;)GM}mHxp$)RQ}ktT%=UzSrqhw`jj`|PnX8S(JKPK%b9~?xzyD2wKbT44 zTE&=7YBRq5xuD6g;g~m8u`x)&_d(nn|K}LfR$Je%_Q8S|U+qx7vfKUNdI7uYGR#l$ zVh(oX-dt|c5nhahPdgF^MRqZh!W7=&<;z~A(0JZ4iTE2>ags#Dxm&V;Z9mN69G=|H(zQeb*K;Pe80=P8-Yw1^Vuw9eOO)qI7T=vKWAqqjRFBqGmczR?bjtRGH813@fNTrr;hCHT znq97fXi=@9l3LrjZojNr5u(<(Vwr^k?l|Wmi)IXjf@+L+fkn;)3iVc)dOAvRl2dPi z?-iS^d4>r`i5+v1S$KvqWO%3ma~ouM*eJzop~P^5sk(t7n;826oJxYPWd<%ZmoW4r zybWl#zqA_)JBZqpEOcvF@lFwv!E3ksc-t~wr|A;xOtei&Qp zmeB@Q?%bv)+hR2=taprsVovE?mD-<;K>?!m9HzcxS|mCMyM<`o3%G!H>#msi#a`(D zgiq<2;RTaz#!L~Yz{xHu+d@1wvr{EZsNzmlTtXg|7bT%zvyE$XsQamw}v%s1LU zeUw{`app+aWEu9mSd<`oDrW4a;1%Ha5oJ$xwXUx&rK^f@Kz^Vc^$5Cy#$UM{)jV{=hRT14A^FI!akBA@X$EJ@F6aWl*~LsCiOCWg(|z=9jo9g zBx{+@9kH7q0lj)qUj{RYlVqr(VcC!jwe(Si>6`}0z*S%ugxYon>UyCby;g*Qp$9Oj zMyQ$<{SFyi!RNzH!EA+y-ciey3qqH3>yc_W*=t7FNtqR}5|in;>z=m-Z383~-|MgO zDex~g_+25wL@XZ1JNzUV{s$+2o9wR0U=*L{=@vcWU`0)ZN%E! zWcp#O?me>#(~Y8Su<+~IxeW9eYU>MKGdt;mg5Dz=)_!msD+jsomiG_P*>$YWsFWTe zYL9xbOz8~wc(Z!DDEn&5JoZ3r1X)Z|hoaddgWbi~mit(MpT2<0W}ac2$JyJBRbZ*w zrTk1Sc{_V&@de0m&hH>aK2W7lC5BrQ0?AF6wWP7D zwTU?IEPe!ON__GB$nM_LGF4<)cH`JahnHQ0JFt#mU>4j`D z3)PTdE=oCPJ^1jMbk##upL*H2bV$h)yWZ`*E6o2QdyISP(KE1Ifi4V_3o2n|ujykZfBBQdf^K(HIv1X!+g-)bXb64f zGn%HG23MFCfkodMXLC1Ei>)L+xJj#-ypZ3w9J}>Si#xg|K7Yu=Ggr7x@QLU$&X@hK z;1AklPrkS;l%56Gb;z|%6H$y#xb;FcCP35VtMuH)djxGtBA)8!q~H;>?gcF-)5z`N z{1fG_$ybbT?7FjHEgY+=igV<3F+EbXncrun+~Cb1d26}Z|9tFguoEcI5nxPXU`t+- z^|!(0o_F*~vZEfz4TYWT^#?ors7qI?r=ZN~8vhZ$#xm=1WpGe8z<=`hmbQw)9-obj zN91uS)NfqpcHcE;+F$@n^@lAa|3~TCtlr76mOl5Egc!w}K>!OTMnjuFUa!oqez;D7 zwZ$>xB8_MHc9Zq-?T2vs)%=8x#GVobe!UP7aF8=R%;%~JgKt%znAcKt9W30QO4c6r z3zJcYQ2Ns}zP#b&)zh#%5NFm z)_?S^{2bgffSD>~ianHCvI|V9-^AzdH~489U-7C}g1if=8j|1MUxAzV+7G`^p*OhcL?4Ym<4cg5LW5_Yhk4HqnB=A`7FplPs&J z4Qw4p1$?@yqg$rp%yR0g@qF6XGf=MhH}Fs0^*n72?~74<=RW=I`FK3~&Z;yB^5D{w zp61O+&rk=SPZav?c-4IbYEZ(0FzM71tL>$v;ByZptz)5UgL!atudV7*&bq{V}?VUwdcv_2a`)k}xSONZP9xibUl!X1UGY_vlcY}9t}j(%%pL0gQNJPu z8O)Bu^>=^p6|ZvzU-4Qw_=;DXwD^i=LmNE^jc0K^4(2M$-EG1dNr|$3xz_PQiRWdV zfmfG(b3I`CpXKxalCmKRcE&OFaE(%yUeY@w;M>gd@3IGP-Pi8ofnm1_E`Kaipkd*B zwtht|6qh%sRTws?4Iz~INv+{EwLx{ZK~1eelfvkg+UQ-j(WhD?rCs}gkoJRf+7GX5 zA7s~ITu6tBIUOd~bx_-xhliNY$T6Q&XC7;3F)zeoQI5sZI*TGZ>#`8*^EuWPb=H-3 z9j}FStj_6JQ`fQ9&ZZ&6=0T3llRBFwJKI+ww(oLmBa)p${hY>ycAB`O)8xCI)b@@6 zp^k%hI1az-7-Zi`xx;DBU8h)k=Xs&di*`6Kz3W_L?@|`(a(;(P#a)+5`|j65yI1e% zUURp5t-WhQsOy6ru21f|Hre-h724z7jvk-x_E0)_284MI-sw5K-ZRLd*SN4=6L>Ti*&P}=?pV4pKXB3C)y}FmW!jZe&b$|{CKOqVRs{Y^}a7>H-p?%OKFg>*i6rF4H zAM_9Z^LDM(77x}CN5EGS7irpq)lhB-){R9S+#oB$9{IdZ6H>vx06AJ@xDw%9q|ZZ^ zy>5`k)>v1h!Z(Td8bzGjQA>>?HNz^DV@s5Fj8;Dyb|-v#OJ*miA*wOYn=GBHW>!6Y z3RqWV$Mtk8H=z%;0wW(fSHnt>=~#)W@5?!Zrna2HrRxh!6%^2t5A(;%E-KY@2F*(D zV9O}OlG2j5=muJDf<=uWo!vW7ukBKyF)I~PBDf8Ut+e9ScpqP~kV_Y0c2-fHHF5ys>$nINlGVBs{QkCK0e%c2yBoSkdNma)9EXOA#A(c$eYZMnC*!P`^)xVJ0Y ziD1X@Nn3#iXaA%OH`uLVCZCoPNZH_vqtj*_m(aHu^Z)H_*^w4?!0dPmFt>nRYjH%i zCUzOoZGsMSIT&r!O&;9#)DO40m%u$Um%DzoQDRNFh)?^;Xc&fZO5h^aPeSU=OCAH? zB(&%T4S0(#t){anv1Rpkdm88&F&?Q!tp`=U&;}6HxQEuMwBcqdYCHuH9i_A$IUjWa>KibzM5UIiwx z%Lf+;@W>8KfQy-(^%@kyrI2SH)=epY;0INoTt*U?)s*nrbC1}f(c#1tPAPSU&ry2G zgv5O0nQ*oU8X4XI%2F)9Nm7c9t=~&B?54IP>$`oXzb$Gz-)3+Dv9WLWEKv_mzoNVR zeamUjgDi7c^Rq3ntmbtutb+-P%mqneu(!kNXwy=tfP|hQx1NgZAb_RC0)Cx@ zu5yd2i3&7H9NeD5RU;EIhiGURbCH#c9|p(PyyMflfwEw$3XIThDdZZm5(}N|+|0%EP*D)b5pZ)n?V?v7Cj}&znqv|kT+hJ01 zhgrqu(ISgDmBj+B#o}U%M3Hq#%Y>)0F4tOLD7L;V>UdSv@w&F-pT!;j64~5U+1%IK zJSw(%CbE60vVEhq{ZMTCx5&}Y&oMCBacGI-NO7kzex1fAcbZhvX{s2fJ(&Dvl{iI< zo#XtR7bH6`E^$s2yOj93lqb7fC~>(g?tay;`}O4Rf0lIrOYC~r&-H$?>!T9aXW||& z{d&Af?(w0d$KPU4KY!1_6wje4y(a1O8spzu)33z8UwKNu3#I)or#yvA$^C>VU|ffVh?!(|E8X7s-QTF&=#H7pSzPq7 zA?lY|kV4(w(GDe>VOnU(>rQ+IS`G0u>sxDY0y7g#=LWhudoGu30OxpL$vfV+!^$Eu z>E^b&A_eG&Ot`4Ecbt_b?J$?*_`onG2Ox@*u$gONNHUge1g`|FJPw=P$$ZgL zh^7Ip*-03qMxh@{sf$Qu#N==}L_p6ag%NO>NhM?_))?o4g=BOa*s?3ZM&iJxb_DP9 zvXu8=oqizZGyT{@%2*3Olb~2T_rd9UmzB%q;-zS4acrxr&zW+Tf;s~nU>N%ph-N#B z+GpMe-Z}tGF3FksX#^n=?i2ms zSE3l#k|yqI`;4xbCT`^zyO0XgAaM1!Yg+}1pmxQKF_%bIGY9pdN0Y%nqCH&s;tE`*a8k!S0cU&4yl|A2ICzI zS4$G>&p_@uxUH%hxUHwKR8Vo?uaLBsn?)b(L9JU6Xx$cnIh3X&9Llar+>Xl}r;LFX zb1|2gGOJT{MBCn0-~&oh`-vBUb7tCQy$9BKN5z$JN3UWYeDT^E&Qk%BT4#*x2b}`G z*#bD<>vjsbr^ivHWh;|_&I`^<^a#$Y3C;^Fi!~$Biqf3j7w!k#cu9y7oK3+(_Xn8P zSj@V09~5hhoq8L1hSJT1lYn51z&|c%vOWIxbqvjKQ4y%|cjA)ahSUWJB>E=s1fa zA=AzZlB8C`_QWK$Ob#Ub75OO!KrccK7Rk+%EjkhaiphCs9gJOpwi!5-(!dj4x)>=u z{E?hOMCa_CVrmX6Jc(ssAU3(Wpx2kGy^uJjs9(S6+Lqb%kNg*3+*6%-t%U4wu)CNB zLnc7YX*w1E@tL3gV~zPO;lh|x)Q>9%=jg!>ukvhWB zkC2fcPUA$P6MP=}y(Vq{jhILteB$$e&$rcAdQ9dspBfy3SZIxB3BSk7uFB`WYs%DV z(iYuJbh<9i@O*CCelZuM5b5~?xK<7h47j|`^LrIHx4*|Mv-pXH-nn z-@I*m0QI!sKXyd4E&l;9bDoMS$0fuMA)M-^S5%D@H7-+bxno|^q+6eO^^sT1J&td) z)#X+~rxPss>(mG9w7?ri1uK$KJyNxK1Ls&*S-*TPr(Fs8h!?~g;!e3TcWbz9@#S0p zfSbm@3T;~=J$Z|!9j_rt;VNv8djmNoFe1W|q^V6g$DLzd^jm40tGWxLs-$`(jqr=j z)au&{Rzw&++kwlok{8A6bH1Y*S%<3-iWu2^b6)g5qP-Z9sUYN zm)mt~v${g~IJ%!a#q1^4zjG_U(w;QwuKI>|9Jg9iA8z@Crzg7O(ywL$7ovi?IhNkIisHKhsL}mn!#hy@V8BuC_f6N z<)FlI-0}}7KT1ave-m@m-W|o6|x(%%Fu0zbP zR**OUE8T_rC4JCW{JWasKL-M9+7JDDeK%EP9;z~r(3<~;gUd4tu|{OmptX4-vVEns{Uqv~n%sG{ zxXZ@mE@@K-}$ka$v{TJr{p@HbWaF@WuJ&`Z9KAHaokBjjCm180lPvG+rs4ua+*b=I18$uaF#Y}&ofw1>#7r=6LH%B)w2nYY%gkIH=d5%W1$%%fkJ$C_Bg z^#o;-d8F2SW{&xQ7iK=iX8lK7ESPJtsMsQ*<-i-;=WKXNc{En z=PNoKtjCHDpihG!bOq6&wN|YCdq@3BpQbVgW!lvLC(1O~WWZJfHXNW;YuRlmzi7{F z8;W5cqklo8U#`@T13#^=ltMv{BgRdiGI3AT|D+Ux^o_hyXkL(XL9BF9hIDbRbZMm& zu4lG!JIKVhE2!Nb$aa^}?w8zl2P)egYHF8jtasE+?|6`2UaVe0hTf@My)%`1XPfkD zjScU*88!qN-j6kWkYV^J*YHWD;j<>gCS#+QZbq+yjNZf=y~{BAkZbg*(&+CdBZY~n zeNR)z(WXvwO*^kQ?Rv!2<%+563sW}}Gxwfmo}9=5V9K zN1I2?HJ`EGe3qai@jYj~#o{9tORrcYzOcwPvD(qoYS(D1J#(%24s+mzyw=3#Zcm$r z(Kh$z+B{fq^XQ1plPfmQUf495*uLxus!DmjR(>)^e!5s*SSLTo^*X-GofvKVX0GkK z^|l|5*nYZV`}Yf5g{i&0yS?KWd#5=2&KvBz9<_J5YVZ2e-p$m(-QB@+jDuI4L+=d^ zeUCcyyXr9DrGwhkDb(F5e2h~>oYRaAPP2|W&AI9n{n9Dc)H%-GdEOZ31#!-cHaIUn z>b&%-bK*zH9dc51vnY+D*yW?1Qr+D|y-@A7`=I&DE?%M3`X6E7U;o&*f z!zu66dV^?t7RLR}k^T_5gneO%)D^sei3 zagP`FJ(~S`gnD>|kM)X(_nPs&*Q{e+bE>?eo4sPqyyHB)=Z*DV5bwR{d+)`^yq8va zCpLR$oAuq{(RbI_zI)>P?)$#)FUR^GsOo#Dxo@tS&ruJb<70jD;(ZFf_c?XU=S-E) z*=C%Y<8~wT-_j9@C=laUet-Zgyr@!Yof3JD|y*K*zJ?`J{n*V@T z{_6IDp`L-^;{uZ;LvtL5?hF{ZJACNg)S*A`8oIx1=)s1ehb6;~I1W1&FziJ5u>90v zCwC1yT{f(+Vc4&dk#&wE>jOsK3m@5-I`ZMJk&nwpK5ZEJTr%o~Cy-gkU ze%GjvWurbfjQU41#;(&Chk;`{O&{aDY)qHkW4fIi)BWC<9&N_<>@?P6;MiW%$9gXt z+h_M!pL1jT-y7@OW_(De@nHkUPoF+Ma@qKqyT{KyH$Lj#_?R{m=60G8KXAhQ=@S+% zoABN42}{mRNVqp4sm-LEPLp;HoV0uTq`k`~{k(h9{&SNK-kWr|P4JOU!N&#$pO_w; zzbyFV?%>nsf(!2j|Jr71U8kw_1E=1bKDBY#)Q7vLK0Y_~>Ak7X+e~}WXwiDYmyHNv-knHDi~PsHrK^qr^xug$oUbG3)3RM z+Y`B@JTl>aWD+|o$7$Biz*)N^X6;Rz_4A%t`^#q?yg%zOJNt;!>|=qmPejblPn&&m z&+OCXvkULf{*{fcbBeAHjJ_8U-Ix~ra8LB(^601cqo1=eFPvhU17luC#Jo+5dA}#- zV|mQy`!WBpadyse4uj%4MaDTVkL$8GuG?>M-5cY2NaK4t$9oKl?-d#Ey*$3p-guwi z;`=wo`$`vtI4=krv|xJVg2?3yX6{`u`?m#AjSFI=3+Fm7j32ace&oW1%NKsPcj1!X z7A7<Zi}x;H{PW($`+r+}uyOHW>5?PPOO6d%aw2j`{_-U!_bxg8 z+mgb@CBI4&>zoto2PNK%Ol(}9_;7FHfEGHHyQLRZzG z%M6WOsj^`g%btW3EmzsHiLy^2%qo=&dsJ2ts$8Y&&gRK#LN%*YuIwqV{l)S?MA25&Z1#}lnFuCJHHSTF zSrMVkQbnQI;x(J!|O1zn<&Tk?pHz$4 zN0tX7i+)lqVV_x^iDb5`ma;D`DuaT%X}m}D6Z@UjgPFN|Mcdg%tL)hshqR~I$5y$sD-UT;v(K%H zW*Z;Yo?)AS*6c*JEYpiF0iVcS-Yn=i;cA^o2l5V+RDzdIxw?nk7x@!-70ft>>klp_Py1E z*|~>Bzp|gL-py`0EIQBH$|6+aRnkeHuZ8aMv&xi`j)81qw<=IggdD=hO z+49_|$~^5YHb!0)Wt^|AVdLeMQ9=3I+w4MlZB$0S_AhpcyeXQpH8I9#weQ$^c}7goS?znaQJx)>aaQ|*eJsz7sXVLw$Uc`B#Tfsp z{lqrQD`SFw)qZB*%4=gXe%1cXev~)GRQ{^{hy6#ci8U_K>Pj7~Gh%~Ev~8u%*4eQ| zr79!o0P9b&Ou0%X4Ygi9S6QyIl=@g##41Zw22wBUnpjP#%23+ZI&*GpxyVX7(|X_B z+;Wjz8f9HDx2arYEuCw9AhxJPr6+Z@J_9+URQghP>wU2qC8`QG)N1w2$~~eAHr^^@ zcI;klI-7WH(9+|B7H=H1Xx^X&;|9(192D1nQ0%L~=xc#XNQANi9`Rp4!&Zi5PPRE zKd0%TPLat@Gj}-6E^&&w>l7n)o@?(M@8>)})OlgD^LIO(my|ds+;vV8cg?Zyy3?=g z?$EA#le_*r#`S)j>w^uhkB+)Nx$64trE8OEkC*N}Ui}|d#XGz1FX?*lZr8)&Zb$69 z9rNpUBD7n6a<`K^x(SxS&MEF)cDi>fb?;v9-b2Tur-O%wzeley5API@K07^pNjg*bSH`Fl+d^NLLInz_?!cBxlXy;qEm_gn|>cz^HtVcrW+Z5mTJAFTv`hKqW{YS^o zF5J&K)vt@ApF@COr(J&C%KW-F`1O$Z_jL642=MO}?(d!I-)EPjuX$92t*bGZ@c z`ZmtZBHrCQ-g82{*TVSTo8$ZD$M?GtKj3Y=+G0Vd_k!>V3-~4XORtz$<73|BML)S7 z{p?M2lX*vJFc!xE{5E?vNE+IrC6W!lwDJ+Q;H4P-m(UDc1p1! z+fVjNU7J#D#HwYfA&RtO85=I!7@|%qwq$3>c7cifXWroEr7um4i$sUB{ zE-!w!tx95V%=7|fEBwq=KutlA?uN$psate1`@ies)-E+i=WkW-zM3wndv#I+s{5*k zrXJEc8!*_1d7O4arzU!a4|92WzD{#Ox=+#5B}@{boM8Us(sXhWty`( zyH<+c`M4dBX^M1qt`c?bmwQ^KDbu;QS~R1dx<;n?P3P_!(Sv@*f6FwLI&apAWc`he zEHzhkF0B{!?%&kWQgcn``3BL%{+a=nn(I3Ie-JI|A3NDnQ?2uSlPI&lCdN|pr;c{B zsGxuLB1=t;&i9)|)%`OTTWbE&Dcmf2*S~40rKVQrE)>xokeg@;g=;=<7WE!byT($} zpmSu4XyO3HkCvMII!#+diw4AgveG=z`TeLUbAYD1T=Ph0WuB;DfMSkZ^IRvRK&0!d zSt-}N(7AY0)Y&(?K(1-l*>pxU*w<}{wdS=>MVV-ZZ{=)j&0C$O-$d!Ym0PVf?{zL* z5bg6VI&7`^sI&i~=)A9@&|33ZM^hns;G2EHTJw)i$|aHR;Gi07jaE`}RWx|8+w6{- zWs>F_q8Wp;*LKt_m%P3yN*}B~*-^7Xl3gR(H#qioN6jk9y}v}~2M7J#QL{$UR4aNg zIM>BSvrbZZU!*&vc9D%{y=2uxQRgAbEE~;6$<2qNi9@n~ve9gke0nHaG$eb!jV4o4 z_eivFNbCh0O_rqmsp$NW>^nA^ZIa7Pq6b5AEp0VBBqv{rdJnDaZL8TOxzH?{I8-sj zRZtT`&VrWN-drnc#{7Ec`3)Tgs1Px2~7yl9waXlG47QY*&e%4u2B>8!xST1^@D;mnk-nsUkRed0yKjkCIHewQ3MDBd^RZEH8pMae&>#OH^rFLu*hk~EwV zKNw#7zMJM>l9i=m-4T^TT{KrDjlYRIkI3EXqN$QxxF8-pBGER3g`PfxL0R(bs}XjzjyUz`<3cMN*zZ+EYpS z3c{(Rd>wGifkGv6M!_&!fa7^mN!xD&jy4=Bx%O~AyUFpXr0w?uM;})zY5M}gsif`C zk>gNF`9{&T71I9xYf;P93f$sGsoyE$+?A1XNx?X7`BH*1l!eNW(cU#O(* z`;g;MNx3g@yzf*Z$MYNl9KSD>9EZ;x2^>F{O4>dQIQCmAY5REK?SWHC+b<`_r;_s3 z!14Q1iCh;xcLQ+zTqJz6Ut=A1Wz70363jDk;w+?WshLlJ zUJ4vPmrBYjf#Z2ni5#Dco8&lDQeI2iQ%U(l;CO$jr2GYGPbK9afMY+Ql5!Rv3cN2= zQr@0$Dk--Ij{Ss6%DV%{>qaHz-oWwxQc1ZFaGZCjq+AIc*J4ys?hhQV8OX@CY+hBFFx)8aQ50Dkq}+mVD(P_)gi}d*7vT6@Q;8h!OAp|9f2pMH z`vJ%PKqck=gi}fRP{OICd^B);zNqB5f?=ir$Mc~QIi61#aJ=tS(&Nkqj@N-o%IA^e zQ%Si7IG#V1lrJZoO3K#)$Ll~Pa@==h0mt*9lH+imJAvbUr;@fm1RTeCDv{$jR!ELR zCFSP`r;_qZgi}fRAB0m$`EB6%eW^r_*RugQUN?!k3%Kp=7dv8xixUS&QwzF2pqo`m6UfQoJz{wf#db3l5$81&mEsi z%7*~Q=Z;Fs#{$RuOC{w~$?>VAJc_iZlJZ4_Q%QLWaQs{#2RL3&D!KN+0|=** z9%lsMRMPh238#|sX~6M3sib@saO~$)QXWUzQ%QLOaP0q7Ql1JN`wx|ruO-K!lJYI2 zJ(ZO2B%Dgh4-!r#tQy9wHNC)`WGdl8O#S6iP?f5QC)d?4Y21$+eIBL(~$;MlLm z!GFAO^g2u>JXpXZ2@e(USi)xtIlRX6jwO;_hwn)H1%mcia{-?tD!KE4*DK&Z-YY68 zPbSA%1Al9M{;LSzDBv3j&l2!$gzpgWJ%s-(;D-s%74QPW^98(^@UsGbf$(zzUPX9? zfY%USCE)i6|5L!95ndc}eSsU*M#SF_Dk;|o zj{Sj3%1sHUlHOk#a2%JYq}+iVpGwNR5>6%MJ%QtSQb~Cq;MlLIq}-Hz-~Qxy9EWj3 z4jj)X0C-!FlsgeVLcn_xK3>545k5`82N6C)z{e0iSHPzbzF5F#5S}97@r17y@I>JF z-2DI?$2t1FRuaBlz&8>8vw-g){Fs0rBD_$*PZ9o`fR__~MZm8TeoMgrBK)3!KO+3O zfWIO9y?~419^-Y;0lk0g>tIN@fq+{PZXw`Kgxd+YJK@~~d;sCS1bisrz5+g;@F4;o zN;noFX?_0DgijIh#e_!+cp7l*-*bVt9#_{9zDU3`2~QI69KzEC{1?I@i`ZAkKSuaQ z0Y5`{mVlole20KvCj4gszd?AefY%b9FW?UeKP%ub2|p*`9|^Aza0w({#p_um;0A>M zDd6UW*9o{S;SU77GvUt#yeHvr1iUZdp9S2Xa0w`HTHp8KgzE|TH-wuC_*B9z1w4{) zg@DHr?kwQn5$-DB$%OY3@KuEO6Y!0M`wRFs!iNg@9>PZp_+i2)3U~qG(*(Sj@CX6F zKzNjZR}nr>z-tI!BH;H3hXfN}-LGeauMqIJgl7mi0}EK}pPL1|E#W^2xGCYg1zb+} z0ReX;{Fs1uC;XIvdl6nN;J$>P7jVokfam`&0Uu5HbpfA5_-z3XBfLSt=Mer_z~>YG zQos`le=p$63CBf8>*p(jaH)WAAskZke${>l;T;5gKjGE_ew=Uz0WT!HtALji-c!K; zMR;!kuO{4A!0QMP6!1sDaef*B9M@%Zz440hZv^~r!lwwhuAD#4bOARdJW9Z=37;?E zPJ|~2xEtZi1iUZdYXm%i@E-(xB;k;%@T>1Tk?`FD9!mH@0iQ$o2>~yJ*YJ;_lDnSp zx)>n#Gb$-R4;-HtDk)z;j(-LI-uk|12)`-dD+#X?@Q3gk*ZEY^<8LJGp9|XmMEF|) z-$(dA0)CWmDHtDGpQjPLhNcXa+~)!?0}lUMB;_*lekv(f07pFxm6Ue}j@Oe)j>BtD zavUlt?*|bt0XM<7@-X1|yiiGb6mVRxQc3xDz~LW5CFO|# z@xD_@`EuZ}Bxb0j{3qbBRb;57{5WvDzf@8ViB7reLnY{co=VEE z5l$t?;d=f_IF*#2A^oHl{@%KuJRt3465C4MeGFY%=PVL|&-@EZOxRMP8E1Q72x zm6U79an1{lQw6W_xu%k~UqjmeDQJHWUgL90C2hZzw0|dPuLB3i{y`{~)}NfY%Z3FW^rJA0goH z37;U~Z94MjA0pth;Wd6wD(Q8IC!9*kmyq{UN%=D1V47s8lL-;NMpGNp$0iQ$oDFHtR zui+mj-ZY@GQb#2>4#YKMMFU!rQ4OL?+W;@gg+JV3c}wB_)Ws0(85>u@jl^(0^UrxrGP`_Z|?d~$@PD@ zK3xf?l5#ilekv*V0glfLm6Q(x4qcz2lJZfcJ(ZLPllD|n9tIqij0}~O&j1ep7%C}e z6g-b3$KyE6U+sY7c`hdJquiWusHyhV^Jq`_S^;+@JX65?623#g0|`GM;A05S6Y!~o z7YX<*!Y>H;0^s;uUjyFyxlSScj(}$n{z$;L5&ruBYUJ!fX34HHd=L^41tCJj8%>M^ zluXf8)xV$-lnfY#QFI3MLTc*kuKvE_ba!>CtG{#l+zEn$pdxysf+z_7fQSlSgm@KH z%vB(Ip%P&b3}*4}&VwcnXJ6Z{W_oAOun|Ap{x znc$xn{^1G!Md2Tv;9nO0i3$Ey;j0P$AHsilf`8zn%2yNoL&AS*f`7O0?F9dX@Y4j} z2)|A6H-+<8^1T+HpA`Pf6Z}2lzcIm&!hdgqzYzW>6a43ee|CcZn()7x;J+jMixd2h zh5yq8|E%zTo#1~X{2LSe?}Y!)1b<&Re?{bL@%g&&Z=c}*E&RJC_&0x#&+qq5@DB^0 zPwTqqYeCzghw0rp9_yR@Xtwqw1IzKc(j3kL3*MM{7ZU1 z+Q9!&c(j4P4{qmmw1Iy`&qo{h*M&zL_`ic&{G$#0e}zXI_y!T%Hd-K5`q=8fyk3-6WP zd1y~N@5~R~>Ao_gJ6#U-WpLQ_=B_w*&AF@2U3cNS3;FE2i!!}lxO0VTDO^k8S_;=v zxR!FZz4q1qdfMJ@r>5^Ox7+ri?r*nqy&Z11p|8!Wp)t7GJ_V`o4)k`-K0VO8-BMqe zmGUDi-IFpa-IsY*x;Klgbbppv=^m}J(tTQIrF*r>=8D`bn@e?`%@w~Qo4fM7%;v5= zpJ#K0Y>~|swPiL};8xjOv0G zY@x8OvV|hM&K8=YO}2C!`gnc0K3m_c57yV}Q}vztNPVF`Pv52wTlyC*{fm|!v!y28qqX!;v57Npb zwDP#DT+7O}tX#{=wXC#oT+7O}tX<36wX9vs+O@1*%i6W9UCY|FtX<36wQO9=#HK7ga; z+y{CSlxEw3WA8fu{IfNr9R~})z<;ouHxLkRG zBRp4b;26&%KdiGNQp5()zlS5eP$J-1FO&;dr-jl13$;)&z)CH&by=!KzN!2BLwgwt zwVo%6I6bpMbA&R@2fE@&K=KucrpWABp>)0i^SI!&vN=90&LpNn$(aZhO3*~8Q22>Z zq4*P_Lcu0Ng`!P_iU>EhBHS2@aAR$~WEE1M_$tI^lsMRoa~zwoM6elWIyU1dH=F*Q z?CCi;XRd8CSVfr%NKe5fp-Fo^E0wAXBwq^DO)CByw2wD`g}gtSJNGN~z_I zE2VM}u9QkbxKhTd$C{Qsu9RB$xKe5v;Yz8sgDa($KCYBnMz~UHo#9HUT!bs7DkWSg zRW0F4xmX|CJ6jibB=4u3Wp~Y?-Fr*s<0^1%ym#Wna*2FfZM*AvF=-|&@Yb;KRR6ZeSN#sj@6EFpr_M%fAY4i?l?-j^n2OXtn=!D zgwpl5EibV7aHl;s6}zzO&v<7p9@3@g(!SuE>~_@IL6V+GACv4R$^1PA8!zItriOW`K-FzR&Sz}laDImMbmc`d#|ag;aOK5 zuZQ$yoZ9#8;2UtR8k4JqvKf|@%&@Ezf~&=P(Kmadc@ZLQ}4X< z)76{rzWpQb{OFIpT~(R6a(QU?6f?Ws<;wK8r^Dg#nCS4HDn&FYU z=)M`6(<2sk*YmmV$t2`)9_U)jDrAp=)A>{%x--*qYM!Or>Gfhok|ycgla}^-d%(sy z?rqWRiN{_;+e3G0p7rg}V2vARWmnJZrM{gow5nXs?e?s%sW5x|p*H1#eLd6%Uy#l7RJB_18m`&E zsl$_PZF|X{KU^;l8n*aZ@r&OUiBy5%A>Ez*V+)?yjri}=tHj|%sPxM1_F4>?YXuNX z7cUtHHe4#5fp*P-Wia+_?wFaE4n-Kw-8sG>0>g$qjW1TIhbt@(vy{fDhl!X))f~6) zGTCZ(Yg4tK2C0`F^7WgiGv`Eq*OJLU>@!4(?RmJK%6FZyCG{v^O zm>x62-N4go;##-@jJ0NZ(sCS|;MlQd$F!PyV>V4aPompHgE@O{&phnSMOt}!_USrZ zkBKhv#A;zhlQl_2#jx3I488KbEw`&!M$?`>mflJ}^FnG9LLTW&MQRh$o*YSSLh36E zjAv{uRdq_bwt7G=M0wj>E)`q9K3=xm(cDmyEITuUCU<+1nI{870Lc8^p1T%NxiMxN z%QhjO$RA6S$NFhXU?$r;^}u;zmlXLyYV-KGZ8C`86Z2Ai;nGsgwV8O85%lsmxkh_?C zG?B*{NfDlm7!L@8BmdOgyI_Y}K&(P_IbigbBJ99r%1Y_ffZslZEn;?=XPs@RDZwSCse_9NouGrhgW`BivSY_c?FqJ#DVvu4i^y*)^63a$2$ z)%I?m*W6q3MKRlQlgaCvTCLpd3+^DR#eTjk>)n3&e7&re^Ea-ir>E}O=?${r_4yn3 zr>iY3>pjihN(HO`=IRw{OSN;g3$;tNE46F28?}_+QWzS!8wm-Wl-@!@E1xDL^iuf? z3C+~~j!Su{o@=B!S4I32L zVTA%a>`-8br9||)EdoVlEjf|Bk`vu4IT5~+6Xh#8k-m}>?JGGEzmgO6D>;$BE)zz| zeaVRcmYgVH$%zD(oM>Rli3paQs9?#743?beV9ALPc9|eUn@Ucku;d8z%P>cf#}JPJ z9>Y5ZcML5z7FRe%mD`Gtm_TkSLSpi`FbRo?W-doU zLNn}*kkAaB?8q1yI0zx38CqFLXogxA5}Kixg@k4(W=9~IC4^=!0YXAER{$ZQ87@Oe zXog5~gj<4y&PB3|BX%MaVjc2gji<$GztyuH$^7 z(YWehdE9+Q5sqn;Z#6Pkk0m-cI#?g~IY}SpHb$^NZgY}99Bqt@I~#-J=EmN*zcB|L z;pVV5?sAMlNH~tIaj#_IKSC_E_=OKLD!}tORJ3hgE+GTthHxItR z1Uil{;}*h~aTnnW6rn$ZFXLV!?2v?xTiC}fC0EOWvl_uX z46QoYf4NPZrPYY@wBBLe8B?o{bG7O?TdR)qwdy!yt4`u_Ia|k_wRPEfTbGHVF}LbCcdL%Gx9T{5tBy0c>Ntn1jNvCO9kwXku8bNV z>oDccn3bUT#=Hc_H&$j;JY#O6yP20@wV#V!59$|sd2X&!Gkd)iNDnd z9*k*F9Ii(2U`$uyaW&#hu6JBKVAR1-po3S~ly zbqHCVP>n;GXebm#p%j%iS*PqipX;t{_l!Q!74UR-`vbRdGeM#&%NA=3Yd307sH;wyVV#Pox5r_W<0?pjcaTQF9ts|;!h-t zV%K2eNrH#cjwwxG$EUxk>D^mc)2^ zdNSdHH&1VGZ;|!S{HeqgM=oDV>>a~jOVk_7wow*Z5Ut1X2^!4WpZOAE3VhUL){f)*5Nn%D8B{7Z79$Z7#5;EEup-t<3@|2E z1*{WMfNE3N7^YvQQA!rh78COn1Watq#4yh!7A7LXFt&a(R!XB%XNz}Oxj=WZ0kG4p znb`D#C`yn@NzQDz>YA~pQkD>-Qk}8cLQ>jTnj1j_Yby7nO@(VLR-jM7N?9=4@}v!B zV`IZBlNe(dlUWslg@_VKVkv1g+=PkJh;$65(ieiXU>HS0#BAUO#)B`VWrR}6cz}j6 z(c~B=N+tmuDPRbLE%cAZnqah^5F=OyCBR4<9!ZZcHjrb?Bs3%>M8qW-VKylA0`VPWLtF_~o1 zSe$_qrtROI(?l>1*kR_=Bkf2%nTVy`Ky%~&!+0|}UreX7bFEjScXF;I+fZm;CZW^U ztm>cPwtK0|i7ALO&>P<|d>pvajyMc_lAk$Ka^psAEnh;4rwRGVSiFr;N(#c|>Rp{? zS|XW_Q3>!Ly82(|P>&peDe;#58T&Jj9ypMimX;>R8-9F&j&-g}Tr~HOUNib4s~rAeXaW8MB{cv7cZ@ z&x|<@5~Di;BXNj`8i6H7xKbniNfBnUFd8+&pS0ObwoxvNOqNY6kcD%pF?=eBWI5+q zmUf%KsGMNb1jC!zPvo3(iIIvRr$*<>Lb1eXxhzCqw#lCql`M;t%R=?3F;UcLf6~TW zY8X!z3bUoj!d1|-8{@VavtKo{??{ZEh}cb8M%b28lD$94UQQCjB+0TcGir=KDa=e3 zBA3M^%R!*vLXd5P)!fs)%Gv#>NM6DFkl3_OQPYfk+{A@n~!t=E~<_zq9Iy zc|I09Q2S_XJC7PolL1+#iDi*MBG^P$>mMU_lk8fRPKY?JS7 zn@?~kakeWUIi^S*u;x-`2gd5^W(MHrNFj--m_VnQtMgjO>{U@-VmcqN zCX!K|U{oD}gOMHMqz*@%ZB@>r(wuGMNRG8qhZKbawvNaAB&G)CQCh`1@3}hgp;N{D zR7zRL(|Ips!q@jaofa+{MC(?~O_qz>>Q-`T#2H0n&5 zLzS~Fe63PAq)6HD0lGC1_$p_|0uatJn^I>-4CDt`+>^|Fi3M@@A$2~P)rak2u@pIghGywoM{AmLMs0JVCNW6bSi0BlC$G*bNbB1rHa7 zeoe>z?`wKu0_N)D{IXvpju4xuVsfuQq@|#|(iD@IV|I07J~0{75(aa}5Syghe#YN$ z;c+cv<3spqQinKa`xG!}3VToum9uRHiN)+FWn#_DcPa`fNHeC>oy_bCVFs(1&3v6U zOeJ-wb+*NBIH;U$k`#7eMJp6&;DBgJY-**pVAjAYRyo_XLC>h6s(~9TY(|rWlP}?@ zkhI%WC~Q+mj`M_`0lI}C zWBZ{A={|00!L)(~RXE!vk@6&I7`L7;)Zo)cCEfvAk$gDd8U4>8GK>~4!TPXd@eEp! zpiU$r~BxR0!Rc3x-%2IpJ2lH2R?1XOyoMmmDn`BRV=a~FH4_fOpDc~8uYVlkP#5~U~?g+ zLE-K21it<_@(r>vYaAn<=cdo_N#p95$8poR?D9CmumsIGV@4%8i#3k6gXcpV>El%D z#$x$6$=%FiXX)?LbjhPB;)uf%PNeho%9Gu=L?732tb3$c!zlr}Ag}{4{cbKGFDaGPyk2dZ}-~@ExLhtMx=(3-ooWPg|T%ESE8y zvQU2Xh(Sxm?xbd1*_=C8K-l@%gF>roTkgqjLJAJV;pTKFAHCYv6JVJQO&6 z(y*6Hr{z*3ms2C7WSc`|(?qiH5LryAY?=)KuP&qY%PmKZ7t)jHUEB+NscN9jAVNpZH)Ziv&l$^RzG%yf42lKQx za;Z`BUNOtqc1?xr-eLT)ag_n(eovoHjCgYO*)RZK` zvVCwDMsT^9=(aT_fpW4cSWEa5_;^D<7(=aAR-gumJGyW%8-{V5&SH>E!G(j-v`%r( z9U;OS`oWyKH9{TC$?hM)oG_w{siQ;UhAtdTlfpG&r5bsEXD5m#@P|<5jSh8KkcL_R zARNquSgiaE*1v5WOu%f$s?q}{7{-NOIAvNAjTwbQ`FL`4^beGIH7>!bO^r=$uWaI0 z5KzK9K$)6MeVK4VDc;ae8TtXKeuSF9~Jn{UYlKH4*c|wR9WlGppT+6wz3gE$I=1%HygIj7~xM4P=LNzdJcCR%{ z9ZH$Ps=bU>H86*4_cePC1#@G{?J06KFt=Kx62jHMJYlQkYG8I8CK*0b0}~bILMm1R zvw<1luLdUlp0Re98kk1_#%m}T7yCI@rD|XzUW*f=)WCdVS8^u}rOdpes|{P#z;uTR zNmtdtY-PISjga^A7MGdN)r+)0sDaV7J5%O86wD2$+fy6V!1%S5QnsjpVRGt|)xgk? zJCEvB1LGeaq`0OAW*2jPlNx2}@88${rUqt)T}jz*L&3PryFI;64a~B3OiEZYw2#UB zIr1lUE#7ZA35|Wz96h(y^o+Hd)u3DeM8Ue+*a%i7ZnY*p@-Np?y zo_*mC3bj4~CzyVGwRuj}`cRzj44r5E$=y@*m#WQUvq@f-XEl_eUrxPbP!6im*@F|n z%XiZqV$7esDWIed?K9kqQ`4SZtYJFPY$|*#w4{q%R39ClAximt=CaUF?`ivd)ar3c!!5d zWBgMAW35`BaQlOV;Gy&MuAgJX2vF;@*}hjKRGa4m%(G6d&p!JKkw~r2*@g>L=cj5U zYGuyQZ%`wVZDem*_q3rTA{ILvHmUVl8~Le>HGOEG(BjnwuhjZ%iexAnhOV{!9cWOS zTA$;QJms!;FqF?ptbx7s`}WS-8?)aLn?JWan>txu0kT%MM8-^^l8jSXeT;dE4P$@mx$T;W|l`&K!($_W} ziN)-P21UoJF+sd>#86Z>j!HtcFAkk*+;HubrTTtqsCb5E^?duGg8JY-f37r3Z7P?O z5-Y}^YEwB2DJ^kOclENl&XQh5GZ$b?ixy~%4Jdw!*DfJ&4%35 zybiUg9!wSPlSB^Pp!IpdMY_|w|6*_K^9Tk;#0pmH)?=E|GPTYpE=tPjig!cT-R?*7 z)uD8&vAdeGgTrW6+iAYGo`e1kHF%+;%z}7H3x`U@r)k1E5%;JXo7T(o%Y`$B(l)k{ zUq*Sawqh40ZUXJ~6nHL%F7U|C=Fhbgf9;Q5QIifJe_J%>sC8)HAIqoBSiZ zJMD56P_I7=KH5x%jiv{;mKoJ5m%! z`T^cEdz&BvO-vq~4>9*|4x^P40R z`v-U*UP$f(^{fZ_;mke#7Y@&8a1BJg&ZwqDfcKqgh0ok+rSgHcq zQ-gPTvrr81biVfkc&{9J-ak_Blaa|wV6GaxWF5vz1b*;B)T^Wlf27`cy}T9MOTrjnd+-a_+?bi&|DzgTN9%#+V&54FvS-fHOA5t^qVJSP zhDDS9%;E>t*ul_n2HA@m+y!n}5}XzR_1wO<0rg^>36%hkJJ5!!Mq?JQ1q=&opbdw& zbde1(H-R+JhO5Q}GyT>d;GJHnmlOun8w&52Npy-GMo1nQiW`hu>N}+sK$Za zPQw76!}m6T7dof80GK-{Q&73kU;OZRGCTrSr(WNpkiZ}9p2c{#c3>`gW{fUe_Kxbw zH~nB(9KU7Jum7mIdL#Z<_IA>5*<*x|??QkK%WMsj(GQw?`MA?dFf29$P{1GX zPB<-TP6Wd;P-lTV0PpH4;a%X)AR}?+y8a>tc;dk}oVoetu01e4+f)lU26v0Yd$TMm z2B}fYzux9hLsMsA?lr8F*5&0cn|HhJbr{n&yLrG zA2#R@jK!&Uxu!e}jMo3}E#7s#nS(1ydi zGSTKMz#H5e4zFiq<_Zks4s^qrJK}dO`b-QH4`uG1>l)cWJ^z7zIK225<+T7$G|+~_ zd$N)69^egn5**&$Lismjg$ z-Zd?)iC|6!TKYBjmBuU+49gwth3wvkp7JqZYnKkR;qV?r`w)I)?t!a$Z9l3;llSuf zfwy^*1Nhw1f$1u&BX1 zwC#UYV{elR;4ua%fKzW(i2wh1jTts(08gO?&zj8+`Hw+3yaOEOj{ga$^klPt`a$*{ z?jSAE#dvD6cjqQyvL>dl#@zUq@*`x7G3bYJc#k%QxDzqTpdZF%@3W1b839uO@$n0% z-Zu8`6c97UKpQSpzwDD9hjm2*Z8+BsRSFivx@t0iphb9!{2yj~-QLi|WkgIoI3K?5 zAGRV35VRper8|mDkNks-t&w0nDCAoirI{EEb4yOr95?3{*;#jaxsKIgN<_CbiS}oA z4)@Yrk>)nKl{uft#|Wef5m`(=*!?s27}12T#}kRM*_au$F=t~mAF^1tmS6b1D|83# z&pN-!m*T+Jy#`m&v#M%SN)L`To~nfl9$vwsz9r>4FR zi%}haXm!2irIl&!{lNRmup+~=kBU4KYNSSIAC++YE`9L7{Nh7+x;yJo{))dZZpqwQ zJT>5QUHis*$4N`#rk!18ptG%5xjx3OYMkb-6%(Tkyiew|2W&1hwXAM8yu6~vs>E$! zP0in-N_J+=c)_k^=>4Jpgt%N@RjpJ1X`!?PocsuF7AG6ezWNSANP^A0lt z?+ae$J^gl4dc#-vyZ1P0+q1oxX*!?2|Hq-{)fO)5Vp|5uZHANn2Yc zJAR9(7HpW}-*-^?HY6sUVU<(gQaC?LPM7GTj7WANwp+WgV@z zEJto{cQ>;}@G^3g<)rG@0UztLgDXgGP3`xtMEi=Sbc4JUA-D`=C_SY@6G4FtxrtFU^Z`S=o8TK_^Bjc-gJ* zMafcx_BdKhn!x9>Xk=nmxjfp7nVJLZrDwqK&cB~(!){ka6ka9WZ;2M_ySN{|>lz#hdZjra!h?CbTDgYxP1{hZ^ocQWnUnKc zZgtJ!T#aH?ga?5rLF@ezd8y{Dm3=ia`>wpNm^mh=vTHb}f4G6kqnu_d;Xhuf)ykkt z6S6T0Ki7k|DSfa$dHK-#F_Skwz`ot&FvC2S%TK3Sv+r7O{wT~70$*%zE)WB2rD&Jplm}pszXq^&q__>^y zJ7dz}w?QyY_i;5h+TfpqHG;6-;(OzyDxb~u8bs5(T)QGhpseu&Z&XUAwEXXoL!6P9 zl=3U1U}G&n9_#Ar_LgZ{mS1mk)l#`eE zogs&`15*V)k^dOoE7qf5RJ~u4(rTyTdColEF6a3la&X@{X9Cb{!Tvcuo9IQyYdUN> zE|z2V$}A+nSL201(r+KGXb@EcZMP0}3L+ z470gwxgT^o(eq^L?QkSn#eD8*2OTuPAa~Z4r-IJD$4C59y;fbVLV{`LL3f!2;tl5R ze2p@cW#>SB*w|xbj}tkf@Y})Hf(^F*Y@_2!ZuoNdYqA#KfrXapTc1}p_w+h+&bag* zhBt047KD6WS!H=8l3V1ULzh+rTq?AfRNO9)h)QxVR-Q{Cf{OZ$7qU#w9TfyjPuy)O zz4dOI!(B@yh<7>?u+`DFZj(Utd)Z5GrQY5Yv%Jc3P_^Hz$EoBY&&LJ&m395^#|DN= zZ-8~9+`0a?Cpta2U#DjwosPDxqHKS=R`^7_fA0^8rh>NVC5&UoYr<6QZ|5#mawF@( zzTCiV+AeXod$pk5){FsiEzci?n}m@dA@LxQjgIG) zN_pNVuNO5wNi$Pase0XWOd{ev+n+ z&?s*TGOBe8C}7sC%ob3$D_g-51lN4*yF&yjLhY@UlMd$nRVQIu82-`68vOG*?wY_caF3w zAi|)QbfDEjRqQT%+|CU<|^=h-WpyjzNGtEPft6%pVVUD?8(>2Ac1FU#&k4NUo*MeSXbV5d% zQG4v^5-_|eCyVu7WpxgLE&p8XMS%_Wu;Z9dmE4bqnYyXU^(@bSjBwaFW_LG%@mV@X z+S=V?6YQQ^2{sn|*;AkC1~))|Eri<{q1W5F1$~Z|)vtZ6%zlFv=wF1NgeL9sUN(6f z`1#4jpj`^EI$jj;-pKT&Rw5?NzPp4QUgu5Ou6!9;%rLy((qnhT8|Yde$+2b@gZkrQ zH?gRZ8KXe_0K?nXV#`U1s8OzsK9otldRHF(dlC-5A^ZRP;D*b(N=44Go!@F*%m|e| z_0=e_o;m(On5txkEa!H6t)*uR?ZmolJ-uVTa-cjI(0k*G7lsSd?rz^+M%!<2ba_rM5hQBFI=TTJt(paHOY_S2AvA~#B- zA~d>gLACUmA2_+dk=f2`RCBfI`>RZ*YQb)AnLPA3;x4$Aqo+p}NEZi&F88HmbNzpz z|L(rilI6bwMQs;>o|E@0j)kotBU@6@cToCd1Bka}jUwRh2HZ~=-hafn0WRwnF-NWdGb4w?m?&DH!)Jee}rcff^3MkfdU_*KY2cq%nMUJg5(8)=fnRQme=53 z^dgX-F0^=O4tvgxr(9mqW;Kf0AE|;RYU;^9%tVe)SnP0AR*igk;9kMmk%bNr@AmX; z!F#@6Im1#~(J~-Wy-$&wnCO`M(6B!%qT*rinyt#)zN$}+2}=GBdPko_b56r_raad-&^%#NiJYqOl^7b5ptP$fz@<_+KbYA0h^h>cPb%2ROK#v&3(U;8F&+k+e6*d*Wv$7MwFCyghw$UYnCr_N3uJ2idpBM*B^t= zaG>J3Xv8W>g>P8Fy_3@N)iGeQvR`w*AYX$-u?qlx=QK?(Q(F3>XeDGz?iQ>>&uOx^ zL3U<%L?(=Z&`9vAr(YBcQSA18oG^+>-1*@p@7oRHUS(@Y#sX?Qo|Ay>K#}o4noqs| zT#hIIUUU$fd4~jD({Wkq3MqC#VVcS|cv7(k9(+k4QbnSn41>UBOzQ2yZ!peE`8-&4 z#3*9FA{6X<0!STfB}dlyD(^^tc+jXp^zBc_!6$Bf;)PVk_6uZERUO^Y_lS3&b3>HO z!29m<2-}WKWX}AJ)~5;})b!1fJPQ@>^jj-&TMbc=AsvMkOAjFfUE+2QBzZb`NNI=f zX9tv{^M1Ye3n{*Fjc|G2pQ$5Ujs@XvrTOWC)a&(UjUn*7ThnQ6Z$aIKGWL7Kn{NZ` zK-G%%mL97eAR*HPvZl`Ig$}=}q(-^68Al>=5(UF*aa9^`wP*?o5X_4pS%l1`;#+?x zQOm5k-3IXmZHs^w4=+P6L`g9)V#Uts{# zN%mToR1>8T*@{T;V(NP>@7zPeBwTLNP6S^)?wgsv4nG5Vl2<=hyL zXYR#{pw!sq)`$`npP+o57Tr>Dn_3^-knD>75a2fcHlL6?rh{ zu9gW~~rMz%U!q6h^vabt67={Z;Ag*cB6nPZms4 zHbP3+7g1dk7E|wdPkJZx^U8BeOy-5nirq1oku2L|$)eq{l)d&%E@410A-CqZYfZ7eN|~^51B;wU8-aVWWx+*T&v$`t_F1v9x-CM;4grIJa zbaYY5S~f&^+`D&)53w#JK=1LKrC3ihw{IeIXMHrP8SGN5Pqy7fy??*m*7XP#tV+H; zII6a`P_SFdmX^sG8EePu!f+EPvjs;T%7{4X#ZBh@#vGqJTOe2joT_|0y!W8=8RR-l zb7jj0TP+i2PJMr};>Bh4Iv&lr*?|fd)z8-_f4=K?{asjUY*6j#;sIN;iMuh45qQ0_ zr7#vsqnyBFBX&taKnxQgiE8tNBAfh*!|zD;lI$-h8)4$7g?n9GK| zN2nXV4T4NO&lobA!}>x+4z2e<#5T!S67P9$TbcC=OFV%H3wu;z36uqodY%dPfK0T zEL8ZSxHw|G>zt{f(E}3x^P~AnpPmbD=ZoIHw@RnwqpBfmuh}RwP^Mg%psgnakyh|J z&yzg^$}v-}T2MzEoh|&*u~n&DqtV$md$8v6_Dz?S5m*c58li{fHs$s?jeNv~8z8## zirZT*IY5|)RD)S`974dsI4Bd?Mt`&DHz7(AyZeJ2yyodEtY44`RkDFOBev$amMTNT z^=D8a817{w8Q5fV)$Jb%-+Z9TIpPOinphtLFL~)dBb&S@0!)}S0~n$jC(UGuB_L^fgp9UtK2Lz8EsSbHm?ex9~nMKly7TR8HI&I}mHZ zUfz%2O+d_ius-H91TgQpwL&{L3BF5+#6fG%0N+p!y)jMwTk7DF8_rbTYz{Nf zn+A0w;a>sd?CP#7C2q@vJC`Ahe-taDqN3d(*z>k3p0g1104fA0TYN^Ma0>?mJNl8|(`h;}kDuwQ`_R7+{z9 z&m#$nrXP(-?ev`%^3OTt?Uv2Uy(6x+to;cUWKcCJj;Uz&jZ8mN0IWv3+z7?J+!+gt ztMQb$tmWM$hXzXH{r1U*OQA5$9RLVH1bqT%NnfXBak~W?clZ7~yTc6nrPp9IklEzg zL75s#Oi(C3c3deB$=JPBx#)cgvNHF5>}ZzTjN_yQG_eRIGhd|d!e z`vsnmwfh#@S5XeM^ju;0bJ~m|ZRDFDn3rYtqS-gPsKY1~%Eg~Op;`jlbEC#X5x@9b zg!ESPml8(IVL`yJ^%^_MMAK)*K+4zR8)0VwRhG`suM;6_3RNA3ClG?Rydzt5luAoh z;top`Nowms;1mjR-m=`cVRkf5feHt0X%Aza?s6|~_nlto=J$Guyqm2@x!VpN z`J5ay4XQIxeS+W}rO@)|t?rYqc+qF+TAx2!4W$KC=4zdO_}ew8&2muHc)%P&Sp^l# zkdo-lkkza|Nc<vd79;p68WOs@GIg(S$d<|s1%Alha>~sQCpKgdY!Yki@Lg2dyJ>00Zyz;zf%TAOU zg?#>Mp>qWaaJs0{BmV-fbAJ_Qgi81Vs8&Mu z+76YzY0|D9Ym|dQ%`Ap#rBwQ|-q3vaErFUst;LmgAl+ILJO=y1#@BPm^%{K~e*$sr z`178~Z&mkz5_x!Op6k5f8?C0k4H@a2?E5%VcKTl{HRbCSo*J>+s~U-tYoE8jaQ z-Eu`T^eIb8#BjDC@7x)!exEVxZv)HJ>``}Z_Te)bXFZ( zp!vY^b5p00v_`9E%BcDXub00TD5rbvElyWF36k0GImLZ)-23^pnU!V5jtPDtPd3)= zljyuyYe@$@DshOyPh4BNUa zx3?4|m1nMeY+ikKlk1D&dk&A|9O%-DO?5anX64nc`s122VrLe{Z91gbwX4|v->L%d z)oU7`=d1RFGjvbeSD)GV;?3b6g6Easc51upxyeSKy3+oR$t(Vt{+M82?)y7+Q^p=2 zc4EQkKf}5oUpRV=u;b~Lddh{bZ~rn(8@u~s0B`r1jKhS^bKwgp6D{v#>9=jtydnyz z`Rnu(V%pPFbG1Hyy?)W6V9c{Gd3ifJa{nd%doHU{%hxjVg=Iy!M^RyS>*;d`iSAbl zqUl+#Uqa35-c@`(&bxl)%q8OZ^1M#EW5&}l=DCFni%*AK`?;u`WD)yjyw3QHi&Gpw z6~6uF@4VM`1+Pi-KfbuCbJ=zO>Y0h}g0B7By>rX8-J~yFUk#WWEkC}uO$-0_Zwv2% zPstyojKlADF+0CLI&R-KCgyraQ)U#iMsV&Q`wdj?hL2|KhK+suL%Fwo8Gj2ZcTV|A zEh%~wWpw7}%{7}ve~hIc6-4bb|BVvWaIsClq~y&$A9>FVT9IJ%>oH3B8|3{3hE;EZ zANV)DKW8*Q;K&O{@=^KG6*)0IrlzMavDbf?s|dbz>uSa}`|~xM*53MHNS!<>=bQNS z*TW$kt+- zH0&v|t-5OTH78?@~UVza=*mhuUBA7v729lPT%@I@5!)F6MQ&ez!@MpLlVz>fbRtA4tqoEd!`iDv$Bl$?d0mLX-cwm@)R6XU*l%eI;zGkRrv|B{}Dh zQpRlWX~|P&8U56;;l;OM%J%dPt?v$Q`a9>f{#G;1gy6^fdJoTwvAbew{m&P}mH7=h zjt8nwo!KdUTb!rOoF4P!n622C8XQf9y`j!kXeMITki-<^ITU2*KxDV_K1YgRLpuhoC~C;8a6lKrv2y?7r?f6ab8 z)~xi}@7IqBzplFWXRJ-?*U$9Lm4Ans=e2$L_YYR8Nx}2j?Ym!iX*!*HHVZbVC%R2C97(m(T2s=yI?%C$HosIFP%;EDbEoi$xn2G%LeLAQW@A~5$0 znwm^JPywY@e1(y@E|mDYy%*WFCkzGSgl9}iyPm(w{|ae%#RLQY%nc~WfMv_Or!DQ5V}+|)7mv@D>&-%t zps?KhnZ0z(TmJj}YYeEanObRuA5=i~J(@{ZD!GQLEEmfCBtIP6_V>L#p432Db2rqB z%=db5$1Gm!?FSjil`Ty4b)U+=Z(ORNxM&7ev`?@->^2`B%-WSbni*GJSLSgzTgGXe({+E@y0m-e&n}FvoYPo8 zdqd}wKa!W(e_mu>kg~q{UY%;!uF~p)%3DhLh)-3L;+yvlWzQP|Bi#J@|zo6i@QHR#b%PSqSZ@OknSM=%9_cjLqO70G^(U3xZ`im8pp9?7IiX^| zWBRZ2+Y`559lqjbd3EKIT^|(pP9#6MFgK&H{A`JaYnyCEn*Q6n6`#M=d@Udrd~!bb zS4QEP;p6{uj;dVz+ukJ$%cOJb9u|pzJCyO$iUOmCMy<{F36^J5UF+k|-z1((F?hG@ z@xLW0hYROzO%hgga@-$!&$}sod)EE>-Z>2^D-16rR+q_a3u@m~Nmf>-rZ@lkwW_K* zw`%2I2O2)>xozJcmBrZlt?ugOl#Y11S@wR1`aRb(9&TyUUUBuXfA=ug`v(;KqMGYCh9O@{W*yIt|s8?Nk;OwV;bMq8N7nF|o6ILea9XWC5Y@GCI z$*+BFm7VoFGbEh(1+&eM&^jeQ6@T9S^v3oTiL7GPFGnlO&$e(p>gSZ?W~LWBPVY=# zP^X{P!A@^i26r1+w77E4?hU9UR(z}1KS0webWgvr`&*M>!9#zJcQeR457f;# zQ02c@>hRgiqe4xR;b!_w}K zl-*vZf}i)GAIhZtzExQh9==jwUo=os-~RUHrgY|^>n**Yx}k-h^oxtM1|G%0PvP#% z_w8ap)s$O)|Bp3erEk_pNB`sZRJle4Pw9%Q!!$1V>kpLlE0r&=Y<5q5d>hT9d+GVh zsTD1u#;Yw2&PDbTroO@YpKb{8OO*#q=T7nao z;7F0GsHE@^>Sh`>+Eo@3LX8O_MMTL$xH5yPVa$$XW;0J`Jx}LlHynY)oWi=nd1lP6 zGv<{082RzG+n3-6n&gul;K&;|38<=DFG57!>`$HUFAIfNu?!C3LPvv{Q6oNSz_gKK z*>5!2MtwMnOBS6bv4GQ{x|*0D;AAKsX;lRryp_eS!e1MF*msQCHzb@pK9onv=%|tY z6Hjal6gF^(Ng~NUMKK8$?TfXqg%gMrjN1XSkmYbbmo(g;8YO}wx@6&UnZdm!I$dz& zkdXNb&iCQ#G;^69unVpkr=iTKTwwITm<{KbH8jB?Vw^VwBR~B`aEOoH5vhHZ&}3jE zB3Wbsz|y?hn>nI0S}EDV@3^4lX$+w&wpuwqlqV4Lx1KW>J737myQ zf|IRmtCp7l_hGX!fYVhL86q=KzGlAT=`=Sn+xa@}a#%${AcevCAo{Z3(m+%Yh0#H5 zX_7dBZIc2>=Lnpt;@^x^cR_<1yi^C^$n3 z!=kwuwi0w8)X0_VoX9ZH47GCQj+G?s-Fx3f&N5r$Fxkp!ce3&EH0}k$E0ycKee7Kt ztAl*jujNMghK2=fSkIk2&5~z1jceu~9v%{AH)+z^fN=j!t1MS<2%Z!a6w&`OF(hNJZSy@e=K7Fd6^_nR@Yy75-cZu`~ z_2VwEi53$S2)+1>*gEb8zh`NtN+8M$Z(%kLB4*W zKEb{dLpB7g5BCj4NGyXkYzVOo-V_!NXx4`MhK0et$I@oPa&r%8Kf!JQy9#@s(5^jDGIrM6+;@zo5G-%SFud2bkpQZ>*_k5cs{7O z)6h0sz@^2)KdV)%FRcp;*gW=+)f2)duhz0ZJgOz}#P-u?;P2;7f!+BT*4Cnjnt?u3 zW0r@cfeaz`+o}|?t?XO<$NQBbQR~-}k=8Fo%-2FtKb==d3Gp-A^28EqG@Q%_)*(s; zl8tm@dB_okO+Eq6NrHpli0i=6u;GBf1}^)R4|;8r7?u05Raxwceu4HWBj}*>lY}~O zfSgt$E?D>v&F{k>37}toQ>*aP$iP^T9OY66FdWGW^!t1tF8pF1dJZR_7^VfrbU3u> z35nrC-J45BzOo|nsV%cCP5IR9Uv3fN*}`7JO}4O&;L8!V5=@PRt7a|pi(eLabJ=>0 zUqf#i3eyNTjf5(~O}^zU7>MTo3x2YW&Wf2pp19IDsGcrSE~9z<>C}C3M0x62Rw;L- zah%{!CzdoQo<~7{y)k9j?F%!G^M-F^znwy#GOYB%j1%9#^xq+{-#UN4Gw`MC!i+55 zaQusc61U2b#0%n^1o1Ehg?y1hhA$PYKvroUVVHByFx1G%n2j+;u_lEZ65wV*vLP96 z-gi1V8Qs*%E<-mb^xw=?1)!UI2X4~SZ=st%$5GH4Y5g}B_1}#1!53!3G-D~V^~GF$ zRe8Y?LSd4=z7G~F;%mKfqPAGA5+xF7v4V-oJ2ele5+%kIE{$@TZ)vjB=>(R{LLlaIW2GcMMLbS%y-5lhgf-HfA&4sy8~Vj+uVWs}^TP&&0-bWp$}hGH}g zg0Ylju%7k;WB3_R#&9*oy_j*b)Q9vUo=8kH<@#yTk72Gltk{|Q)3|5En4cz^_>MMF ze{ii=*|Ax}NX`sCixDXBKK+y7G%io5FZPI)=1B!l%S!orPND)I+5^!+!Xn}wj24Z> zl}PtWc7|g+7A0)Pg9MBeWaOltuSumMw*J`h%a#qEzwY3 zK^9pzu+C8RtE{Zufe&)QW^$)?=D1W4fzQ$=+X}PHX3(uL0k2f!kfxQ5xS2AR zFZG}V&=Ykq*GM*zMHoiMDiQ?(#KZ#m6aj?_XgU`0U>`LwcNRWVN}@f?1pHe}1OADO zf3ee7XcKmb%PgduG(cWQS1Pb7T@m_pci@u?YEzjJl82F2BZdSS2gS}XTu)nJ0{h6f z;4UEoy>VjH5$nm@fEcB&Kn(wtuzb?K8H`ekve~D|fIew5pwElHr0En;V4Sv>m*)Ga zK)hU23^KVIWKyIRI6Ub=h_h%c(4%`3;i@i@y;~rAr6Zq=Gs|vH;LZUNYkp7MXNrO7 zCV}WmCYCM;nFl-A6IW)Tpi+R_f6W^=8GALKy1Kx)X&A4f)b!*i_c5k%KBU-#i0c^X zjRsGwN?wSy; zLR;VlSfvJWPC%bp=|V&wgJcIRxyyzevFc|%j8!f}qTGu_8Hq?mh_mWvAc>eFXQ^i3 z{kHX>e)R3?{dmD4Uvc>Bs z4|YxYKC8t;-2njP`FH>88vMQM(iQluN%|}d44Gy3JpeA8&tWi{h-A?3R60d;uvEwO z1k#K}NHdC>?8_1bKIr2mmHnx5mzh|cD_zW*hZFWpxw#$&g8m8#dW7+o9lwtu&KnQX zCQL!nW|^{(w+cK9Ew;=ed7*c=McHVU8=JxCMT^nWX|Pxm!%x%6=OACN%@pUqN3#~F zWgfwJI5I+Ugu7(SU>etN3|H(yTr5w=kU*RRfp8xG$(cWufNaLAdFOC#$MvN^Htt+GW?l&XFe8 zBF#H9G8)XZ#8LPg&UoYDRygBv3%6b(Bj$sJbESZV3u+#Tywhd3ap0%kNL)yW^gM(8 zLrL$Wm-jHlIoS%4UaOEbD2?L#76eCC0KUM4OG6hZOClD)0-k7raG#%IhmnY28!O_i z4wpbG6^QZH^hmTg0_?;s4q7nr&P&b}D5(d!Aji6yW= z2wGrE^H0Q!_?-N;;rN^b(p<2JH=m`GG73qDpt_eaL^?{3H=PIR$V1W*LX(NN;M-=6 zx`1z6&ll{qTq{DaO1G30Petq(PV;ph!hZgE-dSLOFtA_1zJ=KTZ2oMd9-ImXoc)&< zjT*v!;XFwous@gt?1%IS*f02PvK6qui~km9f63jaL)rfe-E&=maq=jn6L74x>vblD z;z%TdP;S!zkykNIMx#wh8tb%&Y$`EZ{3jUu611ssSDCm?3vB$rUh?$dqaSRGr*%Gm zy4xpw)o$(Q_^M26;7(Kguk^N^E-=A$G{L6jGVvo#v1%)U^+g9UOcXv_h8QM3g6xB3 z(_-V_T=-lHIKCaoZL2iA>EOYqz{j+Buh`+4rXra~Y($!A2)sq6nTp{pD$O(*-lEe? z9s9`8ao!6P;$pmG935s#yD^t+vKWh7!vIRM1Au&aS{){; zU%y+)f|^|3ReZRc1`HQEnG(PBufv4lC*tP8IyaIs?!Y>^{h zBnny2D9ub-;%(+FFp?8MQ?cQbhka-Nr~Db0$o7+i_$hPYk5Mx;k&(V> z>8~ilaBFkn2N3bVZsFIV0+~X;6I5U<9u3RLw;w`upSJfX*rN)~(BVip_*-9ra6BNz ziI)vJbv^;N5+VV)@>L!NvwB10KH9(>hu`7C}8PKGlo z`XUsW4*04|^x44$#v#VA57y2Lhz!3-vVaUWTB}CjMlC^y%ie-cMI&qJ1*{&TuzBpYK7bRJ$~Nzh2p3ch#&7=$7$rICfkC z`zmg|GjsTLoJjG5p(>kfio|`BxFqc375q!Eo>k0P&(~F2=wP31ag>4*7cDJezz&jU z!E<;Mejm!}sguTdvr?*I)#hUMDh59M`lW`Ri=&Hk+}7 zQO!O)7uD?D3U2|b*-NZp;jDJc(#;d$F1p&C!{ z4GZ_@ZyQYJ&yjWSkOrM0de{qS5Ie+qGR_4RnG4Lnb!rioHQ5O}W3{SkXr^ts9?W>= zLjhnT2idgHp%L4kjGAR&4ld{^lSLfasuo}0-qo2V@=bH<(N9(vedzv;-b;4l-V+zR z$g3MJ+UTC^Jg;R$maguS#?hId=UXszm`8HW;@~RNPUB5R5?j-`Vx;o^e9N0n7Y@35 z*p^8HtK2u?nFXfO@0_H`HImc2;>Gh8-7nB|2_prvil0tICOf~}A&uG}?Zfj5j#~e# z#Y}-LHKzH&tMUF!czwd|qrBPoBc|UH@0@2EsnEH3D-7A^jBsT_bN(MrZt#e=leF}T z&L5)B(=)|a$ioX`qF*NuZ|<~Up;hqs4Xa79g>fGUQyJfVgPh!;`iXHpYeeQUGV z>yssQP9bxn9=(6lcV5fHJuR+f!yOW7nIUmEvCP|9$95A@H5Py82-eKBgO`_&GqMZx zJ?<#4;HX9=Dc5$l`&Lr-NBLPpP{x5bOaXdmcUn#0F05oze$oo-h20gy9Rg!axunSE zd<)XyD4< z`XM?G3wxun^C<1gjthfHsZZlp9~i#krQDe*m@C>$%IVR@&?+QqO`nh|v|budFaE*g z4a2RIR`qGzRS|S+g|_|3T=m>}O~LyDTtMFORAVPZR5iPvX4B^T zI>wqV<1i`e}6-^uhuEFpcL;IG7k*rD}Zf8GGm#OGQ-I(iqZZ(=;Dh!tKJO<{<9& z#x8GKbZw93G(FdTnqFL*w4Td0k#oQ*??vcR_3KSyFaP&9}+QBc8&9 znAJAJS0qVm3$zn5*7Yb18i&(hIsQ=><8a z@kX70`FI~X76alMiB!%$s^gygs3(V$Msb|Z0!GWAZ&t61|c+C8VpLbWY3?y2<~trd_lZd!gZl zb`iZlV7I3Mx@x|ExVACq6f7D}&}Yw=aF2O=_i-M*Zs-2!(LCA#3CrkD2`3sia&10a zw=tgF8?Ufh*c~ysHYll#w>N>cxo`P{ZYYd#SUIwyYCeT3!g98@=GjmYj9I6u_?ph4 z-guyDem=(hQ?H&ZZLkOw#T{E~H1~RbjEk?_nddfXRX}Ou8{%A>*+YBoz{ zx_FeHx_2TLS_c)cimKU3)>Ee{ovGt1kq?;%4O*=lbm6Xf5yCyvl-~<0aeHmAAC4+mx1T1R;}Kys?TEW8tVs6XJIKX{Hn3Flk;NXy zcaFAZ=}N3qW8qm+r^K8SuX7T=*D8uqi_6Y6biD(81q*q7kyc6TlMvUqhO2pusm@%J zx(nlnjeOTB_=n`WqQOp3llluQoKR*vchBbT`=PN+Pa1ri)>&8AlfzAc-ng?OsL{2k zx@Ch6FwXohYo7$Jj)w}=7i!nh`#Y;luN$#jn!7fO@VWuzVgZ4*SvZbML2YsD{AVxf+EJf$vw+0ZZA55)l4~C^DTE!SH~TgTDgP9F7BXt*`NItnWl{=-BSNn z(i`;PLfk=%^s=b|n#NTy#cxUqe{j#mhOTKW`Nai?QNo9&v-rcdx=Z(m;14_Rd9Gpd znW`q(TIM^QNb5(3sd|i--VY%fwDU|@p79oiRbHh@=5w87|rVDo|D{=eN%Ip zjPtWku5Kb@DR_4RmD4NQB-9mdN&@FMa`lKa{i2u@qHp#s&T8bI|E1?@TD7kmH^|A+ z&ZO0GoG9WNPZLo+EPe+Y-BOt2;$d^k=jqwT_1x^pdUS_g@nQit;u?yQ7E>_<-0*x& zM;6A*Rgad=gCY0slhGcuH3tnMDp+-U@xdWva;<4EUBXQ>Q|ByB%9k{iq?x6S zfm^Vd4PBa_aXsUYqsj){FaU3XTI+48U5c4Ayl>k9`B;}*Z* z(i43xY~5q-?7DQU;>UFx>4LbZtN1K7`e9Fkxn(^`MsALDm##K0z->CYgj`ell{=~X zwkM@Iu5Pd}1ZY#~sHmTo^f5PF|D|;xHEHNL$?2T|S?>P=z4JiKqfs%WvTrAy=T-Cl zQ@-&y6gtCMUss@ThekC7Z~Y%^?9+SE53sSxre{{Dr=XCv=`mR+CF}Elv_~SpT5Jbq_1r46n)ns+<(4d>ehdY;8{Uh zQvw->T?IEui#oMVr1nh(Mi*#dZE(_&0abmYx#$hDz9xL*DI&wDJLxm7-7n(4A|;+Z zv56Zsr8TFqW|!-NxD{({SCNGaRITmBS*~hb9S&}|tEpdL%R8f@H6W<@IW>W=qwZdp ze|rd2q9Gtok41N$Jr+k!KXQp9qvKhUJE?3-&wFOUOw}B+{5IL&`qi%VWqeGEqYY=2RR)WmqAY7GyNM*-+<+K6*+w=08iKN z+N~cTkJ$E$?>Rc7j#*%?z_cW5R3>gpo@#y@qb*qora??^xI zH=V*7cK`Cv@c>b>{|jSCZ%EfotXSq_n?X`8>vhY`Dt{j9;-? z+gb}0E~x(o#F$#~hvdetUXjloy>BY0o9d$$dz$>0M74L~vlk5h6t7tGq;!R&hkV`P z4F9|5u=QDW4@m3VJG@5Hkysjq!=(07(nuotw&H|g@V#lLrXHJ=u+_Z~@5^b8d<&$O z(pd72qlDj{O@C~^6N94cdeMu+Q8}V^r^bjTQ>yj^YF3~PYg^N2$1|6kLKp2AM5WlR zeHVAZq$WwdwytwC+`qQ{=_k&hDC-l5FrR5o;@Aj0ajY1he760;Ts7)#g$sx&6|}Wo z1mofRs@9zb(7SBrO@6pxwj8Q#yFQMnJ_as7H$RpE z{C`!wLwOD&g24#CID=2*E8-I=8zDWwIa6}MXJY=*VUK`^2^U>LWias=i<@&DHuMNm zVba->2^uei{su{OSpM`w#a8ng9bPJJYgIC*7ga;aBj*Q}?^sudXI8bZ5+{JlM~t5*o<3{y7qmE{R|E zdU2|56*#7OAQA)Ot@RdD9a=`2f!OS{kT=h~-H-d^jpi-l%YAr&aag(orcn{D6)VC4 zjo^i~fwUFTLS4Fm2X(;rsBXaauk9ht&{8q{E+}uQf6gq3uv`0=Kui~1E4pg63uZZl zWZFx@cW|v86&gQxKYU-;izV#SJQaXVZccw3%YqExK~BPDLL`Rmn?5F9(ZR*a-Oic1#hQuyXGy!h+GCNgyucHs`BjE^91omNf z@_s;P#kP#Nz-X*2oAH)TCM0m$NP+9G2l$SvHlIns88+SWJ?{K_;uM=_x{X$c_11~i zmJ!MggIz|k(}LaHj`PJ(^|z%^bza!p@iOp-w8>Idq^Da~+S^?Pl7^*`QF(e~0=DRU zU46v(CW!B6du1%3Y9Gc5_|BDU;fUp@r6_Xo=2XUZ!{Cp`uquX)u(lil72%ajfjuD} zL>l9e?sN#faAJ6askdR%An<6EFyPUM7$*de2IDZ!BU7^K)Ch_14)l&W)Xrq8eZdEe zE;KKkxrNMRqs_tbi~%5CDfsqvA9zbQSozvo@;`*JvQdv(ui%G9#hRg&VW0@DGLi$Z z4U5MhD$`RDu);@=DrftV*#`FVQy9*sQD*!5enF|d#~^7A6TW^%tf&j-0bXZG1bRSJ?K38k%mFwJI$_>k3%5$^P zu)c9NdJK2+9)MMTXaf|6N~b=U!@(@~O7GgsNH^o!{a|`LZ2iM;?HIHVI}wcbC+V}X zW_O<|IB@Y!s2mhew{ZxZtZ$x42icd63^n&5-7W5a$cv3m4}twJ1@}MRuv4~-7yOQE zm`#S9dAPB>FN=9B%P@Q4cPHUYvIgS1+p^G_ta*40Yo6e5d%^$qWs6)Y##QICf{8## zKG&CQl$@8f&Eh#=<$HBZB?C*o#b8)2nvzcli-ZOvkMjq$**tSFQ2)l2l~9mT&QuU5 ztLCN)5HFH((h(0-Au~Ko?tm-g=Ln`tJ|eDu3vk8B3_^4hRnM47;Ow^Hus&uCXKfJo zF54%|CAjwr1jhyI5tcW;YJk@yr%pwmHIlOQPH4U_y<-Lrb-+?&Tc0gsM`ou`y6mc8G(CR;{B-9^H%;I zu-^dhP$jK$js;2KkbNP?wGM|MDPsuycM=-s3gf@99|O|X%b6Wx!MmVipp>`oPu+xL zr4q-=2iG2F!s*N@b2fip{(?cxr=7@%B!G@(Y4YlS zJ}))SQdf=cG)`>^8C)GHhT1bE`MUX824@>JeTp28>Ph*WI7nMiPrDDcsKfu3sLT5K`8gG~HBUS;V-Jl8zOzSlVz@TbOd7nu_}1vSNQnd~XJ^tDg?JVp z^$yNJ9gq02YWbg^nJ>3Rx(X#XF7(#I@-Tw%+fL5BH9B>JmEBu?duu`7*x#IhrnZJj zR;z6O=iKxiljp=sdvNP#ZNR0KY6YJCAb8Y6i)nA3Aimt}ec-fHX6w2~v*5W-bO6uw z_l~M!M!MItpCjmo_yQ5*eBR+geVOK^P>DSkkNOj2t5uv>-gu3A#m#eAH-XbiiXX z77nVGpnotI37@ea@ylJAFdv~j!Z$G|!- zouCC)lJ$9^%N3)stjt~xT2FS08kMD$C($HH<%90GZn=E?4%E38;t0sJ0UxsrBwU=f z+UWJlL%+*IA4iT+#mgs%Er!O4!;n*%Kc0P$$DRV6wt@*kj#EsotK#is&mm@q?@#Lo z0hu87i0)%|q&+Ie0huOzw1`)*Kn^0fjx5iLGI$W}%CwbUACs<>9{`DWSFpLk)?)C0 zzXh76z%5lF4;08NGeJhYZK!`;WG00@7ryR4M=CP+X8G3*<rnak;x4D^n`Wu1C;d#Nx=9{KE`nW%z!+bknIM8 zV)l%_K~*i83WJLO$4wkcE!Y=7mf6C%{RrpN4&$ryHXkXotvq0NRrZ}jM)|W#if5Jj zXDz(DV4ViCcf45U+)#8De-RF=?kjyh-S~{7>I&lCO~J!ruU*I))ujZBH*ICaXOSMt znYQ0Y#-G%^5a|r#c+$6!9LjNUPE|?6!}@AzuvOyF_ci)(Q(0{jvS^MU2%!lc>^~hh z*Rnl2CgW}BRK-amq^8LrFLHPv4&%eiMu3l8W|=6J{s)Mf_^9|(WSCcG<%RRk+A$|% z_-w_T{vnum%(y32r{wFP3pP4J7wk}3@{R%tkPb@5<0{zdXHqy>Z8#aXX3Y`ZAh9_J!#Mltx~+xfT23^pbC0Pj*f+^|m*#}+&qxHC5n&uy_gSeyKO zYGJlCxh@{<=BNCLAQ|zW%DvZ|;*Yh#yHCxA#o`6eN4UcUM-E}e#QWr^k1)=Caxfj; zXO=_C8m#dSePY-h+*`0ncobj2!h_Aqp<~`-dNF>0V_JI#}&+z;Bp6lB}EHIv*K6}{Gox|`|JNdiHKBu%HDhNq>`-uUD-H5*7X z>I*(|A$a`4*5_%^K&L80*ByGMB!svSyLzdAthQToN@zuF&>-zB;y9^&rX6#m4}<^e z(Wi&e>Iy&GyfjoDTw5{k;2@&RKBJoL6-SAD^73`0UX7ibsS(^%q;OM^SV0;e zv^ASFPTO^4whUZV!wE?GFh9$QTz9Ma&Pqf;A9akUzT8JWpG^gm5Zpd5oflO6U>bwX z+h&@{`J-C%*E=D@BpvL|>uVdkwxLsAtBs`MNcggmbED?8cg~Ji*4zjdyuqia+mTRp zL`4Vx+IJpEDQH}6N1W+_8bEzP_E|M|Xnlj@sLlE&ZO58NmWRj)diRNFHW^#{syI?e z)Q62$q(3ieeMqAo7nKl=K3F?9GGgxH+Ew!NeO^4bsnq`zpr!8T`ht@vHS-z*eX)oDFi=-s-ZF2>VUV$D}nm zCUlQnUsUtlY_-m$t@!xKGVY+uMTtg1{cEHHTYJAEqowT8={YzZS_;3zXE!~)OMC)Ht#fAaG3~WAKJM%xC7>N6j<2`CL=_3+V zmraSwvCXEgX{2zqDLph^=_J!Ej{TbA4lNh{;O=Rjslstn$KBc0N$)Hzv6lip2k0vx zg2(xOq^1AT262Nc$0UQL;lQh&^GOq*Y8$VBD-8U^Gw6j|9|>_NMb&JiXh{6f{@JAO zLfimq_X?4BO<|Q2Iz0n&+`V|P+$7o22_LYviKr)kp1x(2w&L{nBNm6SJe|Deb_I9*rPisaoTuyKjQK^a4%Q$L|$)(>rYJbm#D#?VbHxJ}f8 z%QjnZiY4`X`Ybq$B@0fJ9QEGxu-}3!|2%)bT-v|eE>F_}{`!%AAF!QeXF^cFPX~4D zTgU3{2v)x;GpJku6W%n18aT7h*!ZAL|1IvKnU_DPpYH&bd>fTyrQ>zS;PXQ3^$;&M z8RNy)*kBY1fJT%2#5%K;XpHI@t=V8Tgb(pz<~X{xy??>R%vqTKZkzw>bw~g6Lc7~H zP%o}!K`;JrOrQF{)FPFr|GIUI(rrfvcBW!aayr4O+$KVm>k z^)6g6VZ2T0n(%GaYtut2vliqw=~gva0)XGmgNCeIDfbb`#e4c2!cOFO3#a*;&C&ch zpu0Q}PC37Se&VvhDp5br3r(WmvA5T#M7+Di z0Bk}7@TyM2{}GCL9g8`H(yUKA2$kXU-`gWC79&Sge4BBY_>!9=*o}HhCuB4 zA7YQFT{l?W(LEqC{}pAvrA@^9WFcCs5g2{jp!6E?-rhd#yz(f79@JY{ ze}Wokg8=%VOyL0on^1lqmVcdh%U9u1?K2dC7q_&h2U9ve6Fj{s_>mZKWnfF?gArG+ z)9ukQXLk16QtEzN3JyW@9zkrW9a8B-z*Gm=QfIQ5FkTkeQY-ju!~k0={+Ka6wXc@S zV~3!YX%I%mg^iZEydC-emQBEHh6jta2*uvC=kW}ohyk;6!TdJb{mJIu=CS!$sBRNl zKdY7Q*60g7i3ZL$xq&eJ|HQ+Kx}X_04$aPnS>*00n4|aY+F155E*eA-y70Tezuwhn zUN%(CB}17vrq8_Gk}_`{n3rEf$Qf=~s4uTN?lc&b{&5ac<}8?jz|F_Fiq0~7{`W(f zuwMtv(~AS==`O&ZxOsYd(H9PX%;Vi8cmIy#pgY%|e-3OZI;(iW*P|c?#?lN!g#DU& z#n(7NIuBc-o)2=kZy({6`zMcGJilKKZbJviK|ZBV4(uywJ`TOk)$_^Si*c=T4)e;* z>zBjjMv%kFJ~>p(i|&(y^Xo8eb8WsnA31ki0t`QXQ83KZg|al=&jZlN3r-yiW^oH! zuFYp_7y5@ny*N`&38q|`v(I?!&NmhjZ{oP8Ef6IW}QG2yk>>UD;FYDPH$jnKStFclb^uP}6M8;HzcQ*imb@Eo`iY#^p-{?plv z^i^z5*)nL3-X+c}_Z&8d_u6rQipJN6$;aWiA!uhk1PmhHg6mwY+1}oD;!bWpx#M-X zLolHwOg?eI9WSgFZ$2V-^+{*MX@g)(mH$B2h0dAkPs+a7V6_8RA_7A*d0_>t=iLi2x*(~ch+Hc;Ze&`-c z)In3hV8R6~(3rR%x?-u`)=)g2o+({TIrLRk(cYki&W~~@uFExzk>H;KJ^sQ`VtaJP zeTo+2zN*z`K51(aXU5fi%N>~NxP!*4p$4>x=A3Q+c7SpF%2oqW+q8|Nz{&!W6>vM? zU+vDgL-hCNMDB;J52@bSaY2jbLVd?jjby#@X95YCStXY`5+ZI)D^_XSv-%ePRo>FJjzuA{xv(KUmbiBGy_aR=RRQc1OR zL~+0LXt`esV;sR&TwF+NTbwkUs--<~nL;b#^jwxSg8ua8)*RBbtS6i$wQD!8s?QXT z{S1x$AT7srEtqE-3tezS<30hqKKV&vsFW3}xO)H{n9NvifBVoHSHJ4Owx znnWc8Y=b9!`x4G5n;$(1EA!E#JzOo?FL)CLJuqnked5%(XM#Qcyqd^C8%bd)_l`Yh zFi@mKi0t+sj!nh_&Y4_@J@L56i!cYf#&{6Q)AF?_0&R`uyTs0}sas0PzHe*Z!|DU& zaxNV*-!vM`kqKA1OSYB}c~(8yiSh)x_)&^ zGikrBrifHo@M`o1tVUMjX)ylgE&BE1QDW0giz7JCB~2^AVNSRcdg}?(EBKgOUCRi? zJ|M=uSFZPe?7SivhJ}5jX$m>p9;8OwHRU}btr9Iu%$b&M4wq>?O@NQqOZV;lC2F>O zmLJdIWJ`!-#gP@gy89}pS7uP>SNbdhJIv9V#-VF}Gl#FVergUk7|yx*;|>Z1x5P7( z$wOaVO|gj!nlDg_1s|RO4m1RdM4W9dq(I2NG!Eft?j#j?((xG)NnUdiDdO^nrY$Iv z()O;lep56->rcm3_8D~(pKA2C|=7PAt=p|3? z&}LqncZ?u|3r%Pn_uJ1QefBf@e{C`usVHoPOsIRy*Nv}pb&>FN!)(%-`ZSAh=J>bC zUd)zQqm(JigSRTTFP91BVxJ)(7CR5Mwyxy$7y;bj-phmSva^c!&e6B{+ZpegjTj8Gryj za-R3!d3Arc?jZ)7MT0)$#&RL!fCjw}XV7mW2K_uxg9aG%W#3h{WpF8E*s(uPo}LdJ z#q1XG{-<8GpDI1qQg1`bO1Jm^+6D7ufwt7>aX2 zH`2*KA-#`^d8vH#ukRWaV7_V4e6w;g^b$pH0%%5x75pE84EYGjkkkZBTj=n3l1a;CQGAhC|5JfKbBXrSdMm{2@XK#)HJLkxnSTCxlqg)Wu?5 zHR#FaY!@e2rQdNdJMA{`R&@i{Px5dh>fH-0F_?CX*@j6zTWNR%iY|D;n7f4D5|0XQ zo-ccl$Bsn*D`#6Vt^;fe>4ZL;qHTi3uhJl28sUpQPCZSQZ@|d808G5B?^BozXEZSoSI4 z`h{6>eSt6Lk8s-*EX{>E^*-G>fAGA5%V|R==U{nwggRJy#=v$0DqPzg`u&nEb+DW> zjlk`3VOP;t$|LiqR{rd^YwPEzUlnWqG?RGN6_V|CKUJ^}J&L5DbWxSPv-0x1n;iev zh9b-zepHpI+iBnmN{YkGiKbIOTuy6cp>v!H}WC5V6M(`XN#5K`or zi*0Bqu;4bN)=y6=kAzAsqv|31e|>aT>-*AsUZ8)5UI3FvU3 z2|ubEpeh8!<&l$LbFPYwL{TWR;B>KpP;-}=M&8^-oA9y8mD}LjJE{J2EoU{2na%pr z^cT{L_+G$`@`Q0{Blco8Kxzk}ZX#|@LtUIx7-0$QSh|GeDhXd&ag`q?)~#4B7xS1< z8<&w@*3Aq*Ha^S3=8!b)4Ms1^zsgUMidc1)MXHp^%hO5u>HrsM7*kx%-@Ezvx50*p z6*{?F27m9!OW8VSk)N2yiUt7Bu`I)2?zI0GZquen2&)%^rOCR+fw{k&c!u*F(k|-< za*=?2r0kroR-)lpMfgZiJo&`3lw1E_&oVjPmovzohp-9oR(cRB=-ub?Ta4ts;Ib4p zL-@q93=;zXasMTpuj>&E;UPuDe=#3P_5uZL)vz{_9AsO(<|ZEpXKx0O1JK27T%HQ) zwGJv6xNxSFNkwR+$rm;tVB;^u6^Ak`WTT9}diflAJ&P1B243n8{CTz1b$HYv>Ree$ zSg=5fhfoX66Z3>Olf?@|(co+nh05k4& zSdEl7@`+^`WhLoy#IFwkq#kHbszYLLfaX9=0ew z%E4$MMN9@V zD~$IwT;NqXb-$L_3vY2kd4X~&2BAO!4~PIC266VK8w;_>$)Fz{LI(byeboCteNYtj zJyfTUXXup9$nZOUVp)c{2ZD1FZX1mqNXr=f~^42x`61o9I|PA58)rVmO9m69umisI)hQMqcZl7sVnWSX6PM} z=JmX6*t-iPh@&m$@l+N_zxxJBM9Jbx0-mjg?JqnQR5i8ywy{iZi#=J4JsGTg1;MpV z2(FzI*76K?A?nw1fd@sHN^RlVU17PR4rD>8ZIOz*AQ|>lxXnj`S{Q2y3Rjsw5Z~OS zgK^Ha;D~zW6@{Z* zxGNOmYIw>Ad}{#{wlTgxRzZKKNxiOV_|R?31)<2z(7{s3f2W~It(IG3ijgt}X3LY_ z#-I|87`XD39shGuhi}jHtM02M?H)Xj>Kksg_JivW3~snFxXFG<#rz?C=;R;e=Y{KK zYvh%vZB8h&dAGj5Cb8?2>tLw|X?0LfBDmr*Vkki?c-M$uqgG zji`v2QMF=#%0m>yhWtP5ofVN02TSZd2EQ^xSmrh!+HfPwG)|%SPrm2QDs5 zF*Xq}BwK<;g~WY__s{vsG!cQOuTRXTqMzrH3Pc>2Z(40OAEI z<&ZJqQ7Z);&$qkGl7ZS;Bm|`HcB%VVj(_oqnSXJWa3LNRSs;+sQV>GwaRK-SAmNfE z$f=0|#vL5vqB&?GVnKn*c>g%)5p@mL_S&nM(gg6oM;k$Dg|;Mdp(BM94lJEP;J{12 z+RKPQk!p1(G*39#Va8u_KS`n$?Wu&gcZIOcbx{gFCTo#!CqPAp6E9{_IB^xFM09Co zd)M^{7BIDwVz{7@#8IgC=bGOCiVKzBrS&1dv>usNhCw(2FJ^hn>hIB-d3bRNK@Pie zkS(O&@A)11wZMy0UOBo(rzTk_x~+2b^Pr)>!J4~N`j4M$h@f??%Wg>*>|m<$q&E)) zQyd2Mm1xlvjEx+x1P}&w7~DHy?}d!U^b^Z64D$b-gb^er1kdkK36N_3-+L>ely8xX zMLYx2=sAmUh!w02UT(|~+--EQNrkhRc1#ZjoKb$om@5EkAK`YlSqBftluXH(%Ti`= zlm?0|`HUkxj~Yt?LS^DK$`^9>IGyFALeZcAKcEr-|lK3))^p#bVwy3ku*v zIrxcX8B(S>W`XQ9YS)I5%A;oQuUC}hN5DSJxh5-SmED&UuDv-1Kn|KAmW7{Kmc}O1 z@=pGUYS&EUfj=%kCLZHd{TuE&l!~i}>`OH`1XfpE_tY+%TAJdahymq`NLUa2L_V?X z!214I`J2EmNpo*jgWmfUA`ItcBSa7``hP5s#wZBhnUB8gT^Jn0_sU&_HK*ie{&C^< z^RJXlp2LEH4Yja>Kic-u6iB{8BEWDdlCLLLa-y92O9#h`MSC``Tgf*`ZQw zT!GroS3+SZFSgiAg{*v^OxSRDEO@S926`&FSI?Y zl2KGLf_4V zAU8<4@ouyiE|&|Nm(lO%k5LL_>m3NB#jHwkd&wqHWf}#Wz=3<_yelF7_;hNO`wN|e zLye8^PDna|X*}wdQuf*NGKCnY?QbxY+8ag>;Fxs|rWRHgT3ENe>E2QM+>7oPjiV6Q zu8AH+G4swODP4SnlB_8RQyM^axIj(2AO%9tDelra05PbTK}w2$w1J)jq9_6_iJCpQ zl_VtDP;bJ6>8!MTT7Oe2Vxq?wA#v85xYsun-nXZY92$nK6GB9>&DK9S@6)#+FxX$R zRtt#20SUj*-q{yRpo+q{R3bKw0M}b@khhKV8nG}}W_M~OD;j)Sv#K@V2f>V65lik2 z5(^f%SswDS5xlLAA7ZmV%uUR8XITt8vbpZG@7(68s*zEP*Yor;Ko3}}J>xeyruk$F zc>LJqXDkjeLhjz0V0)p+=0~KFtIf5eO|YUYcSTwE(SvudO+a|T&#!&tn2 zHg#vHOu0CoixIy{_YT-paPQb>OAxlAUub8qc}W7txzO_`f_KhKe3v*^CQv_s+e-w4 z)^rH=)1Q9%)&s+~ z@_2r%P%c1osT|g?CYP5Zq_BPgS7JCW7b+C9RE%Qwg&kGZk$qBTlaVag#`_o+LrnH6 zZ~)u&`byY|6_9mOHXr)Jxk8vqGWU5vJ&q8B1cDGDm)al_k+@w5lOtksLnQc_`z3f9 z=&gj{+!tt1rS}x)b}ijGu7=8(s(31?9v$r~eAcT?|WZwZ|a;1-4@#_H4B+E#HF}IN=f^!zt!ytiZ-F9xF zz{Qa25(CCY*}$>kL)zYllW}ZMFNsi&CK}iAS4SF-0#i~f(xs!7rX$${fM&y)h!4fD zlYJcb@<`IBPXw9HR-*|af|AF1H~ zz%jf-l`OE>q#{d+8Ft}b(l7u=;d*h4TxyLtN_ZFpF~eLONVPs9SqOW6x|-R9!B7fJ zK&!{p+V8ByYy^rcMpkHE3gk9ExD-SZ&^Hg%iJ<_hf$Bi;5$X|7fQ&{tAbRR zwi!N4AX4G_1Ke?l(+3i0t}8@**$yl zmDpsm6F?L&Xsd(rsJ1#7P;c1*E$1%m)v2Z)A>wW557mYmP&tkSi8%@L3C@MMWgpH3 zgP!W$Eej3vcBq_gtE>`K_Jl`_{qldryEwtqN%FtpU4J|Ce*?ezI&JDO?6i3^f%O&f zu`90l(p`S=MVRa=fQ7nGulgNxgLF_mGuzt-_9j^DPvTkf|Hgq7Ddr5_sDIFx7c-y6j`OR6r1_`Fz$E1G~=fU|j5Rs7^$R zTP?zE0&qe_=+C9-jUGA#=`bs`p?W8tzk_JbdTXVGQSR{w4l$%~%3`-M^r~Fk0_BQR z)C{D!Kn2heBEa%wP_3bc!6YU$5NV8?`C$Z->OhWduu2XX7ielGOip2GJ*7o0db`Z> zln8T7oD9aTkLc8g1)oW^ENEcTDv~sXDxAB#K`=?kd>uXp1e3NRIrU)^a(q8SAZGEP z>y8+m{2QTI>utFfL*aj8wqFWOH;5WBX91*YtB$ zUhHBrDUok0sI%yc3a)Iid)Ehr)ifQ2B}mb|%7aPDQHVPo*AbR(5~|{sA`q<`^f`WN=3ADf~+lIwiN1wsyCK*dRuQPUUri^Z<}V<>(S>~S}(jf@J?bU$;07GV^uTyhaq&<_+|yU_U4jsN zGew_^f}IQ%KWInZGShr`gi!t~7QlZS$7pZ{DPV&Yj!B?YiG{W|m+)2r^G9w^O15EjDsf6hnAfM|fpIbD6uYggNtxY)(A&z_Zqe9s8QS(#Q3%*vA_JTW>g2miK1zUmC(*W+%Tq zUj8yS`NgU744xMP>m^Lk)Hy2a5$2dZQ=9oj?&PWFEwb1a5-(BmXUOGRMIAc_Q&*lZe&>jb`r-1P&ACD7(zJ_7P zn#F+2s$G%-Z z*snLj?AJ;FH3@v3ed&KYH3x;?lH4Ys*9up}eoSnQvyD9Jf!#_20Cz*M&+sS*p6t`@ z9F_2C)#}B>SV@SB4na)s-|pjhf(QqlZ7QQq+?r}Z;sP5f0C0H*waOYwIJRhx8GF4K z9ZU_gOB$VpEl?W~UA>*C9ZHO|mLfe`Pqm$X9DA@^bEFT0jj7}k&O9uHylrsR#gmA9 zb>xE*9u>h{4&m+z-fF--c8=yT+H2F|vdOn3s%5!QYp`4MJD${T-B0SR?Rqc^LjKh6 z2(1w#%fH?}j6%6@X^3a|T8t-0Qj0r>^17xqjX{$(=GbsWSis>3$@uo=NVGhVb;1x9 zag*nNIV{3Vg>20~i?ywP#^Fr$=HxYBbGUI-oQcLJHWx2(M9)8p4Yc6MO4&!Ru@0gLom6RmaLVZLJ$b>7_kCujB0l;whKnG~ns;o25pDg}r$fDv zKBsNmNUzYCd})UUB`HZ--^T7N+W8NAVmZ+GeR^rm>RDuvW&IRAf(M0dbK=s8#E<1r zWG=L?xs_7!8lyuMg!z_`vw9vKd{NPaqIn1sNh9I3wNS}Ar~K-KsqzxErsp~@9JEEW ztuaq_)*yfi`RA5LJ&Np0h;->bc1Y7x4l$_N$RW&)4@d%?dmUqB2xgP4e;cd&r_TG_ zbzPk#WU=l=m6_EC91Oq`Hku>;N_x3e+HNu)&Fj1VI~;By8pyc~c7D<^KfvJmKb??} zMors#jhs#LBVy>dXyt;1lTN-?HbDwBeb{`EMso~ddnZRP{HaleSh3r1Nj(=S&m8ge2_WWQlgC+5I>H9 z`14XaU^+S#6nQaSB~gxz&y3uO3$r-RNAqans=0jDOl#~ka}fiza*{g=Tn47z^<3cK z145Dg<&vH>;B74zi(F88;;@;Zdj#8XzAliYI&JIWVtbqO-*J>dTxY#p%q(qf{iA=% zmBjsoo%K9!zmTAs%PE7ht}}o#sGCdvpwWj}ruDR=0)B!xLS5+wQVL4TPTN zr%OnCbv23etNUR6x~25wvlx1^d0A~gF3*|5+XaLtiN;g3Xa(T&m#3QXd3X5DW-l-r zSFVs+yLwzwcvKoasue@)jre-Wheinf_w42!+3a5Trl(t~-Yt_i_^^KPao&(q`XOKN z-1GJBz%xO-=$&)2takZ9{{`z|br z{ilzDrce5Zj{@606zXB)xF$FgsKSlN#$r8f?7Vz3cn`BIK3A=%eNO~F@GaG%xHeI| z)N-Rvv`sDAF1JijTf)md-_))D@oK_PmZDfzv{o)!FL%DGANhT`KSH+tVtKCRzsfAN zO_sYE>yxbY$B^4XZT+dvdI&s{d}3LKL2S)Q_)j@-6wk-te|g>PeEEO%yWFltbw1%CzfTH&2VJKXb>|%Y=P(f4?o^N-?a&by%p;HFnb9;Ls>_9 zWF4V(lFVb#i|4!!I!9--8*DrP0V*6MjF)AK0gM(_xQRm|@8=`n>s-r7*O-$?vaQGp z*=TW7ARNwGLowuigz+|C0-j^5j{!f=WjP`{rvcT+SHTR%5 zC?7!E?Bhlq8sx~543GB%Ln)E&K0!U9-hFe>C6={r7BeI7(`=-%&@MmdASdBgf&E;c?j$s+3ZO~BYgZkh)YS61sZ;2SS^vW=`89|SrM4hl%HcN) zUNwfkQHGS|R50|DOVQ9rhSZO`u{iCi4fuE#*nr&#WJ)3+o>G)bQ6ZllvQ4SLnWAx` zT{=%^KSa2V7D8Y}fe|_z!4&He+1^UQYb2djr4j6952d`F50B+y^j@{<+;D_B>aEO> zpviV0k*HGLSVW?RfJK%Ik%anMFUv_8DZ#A&00<{XyiICJU+sBZA!G6(BVYx615Ui| zJxGz1odxKG`U5~LY?ZbIf_DdxUDH%v3A|LukmCN>ILzRVP!{n|ww;_&tCoVbyr-66 zJ{OQtuY$L_odVl2Y&#n4E>nQKQ*G(GIYk%rGh_Etne7=;ZnZlCW((lDA=N_>Fr~Dn zlgohC#2~HdbJfV()>|4G=`h@;)YAZ4A)F~F98;c=!msns3fEbqFet2|dLLGWwiF14w#}Hf z*PhRY5~#=*eYSNL=Y<-0S0%)KYW+Qh^8e|_eJpq3aOlBG*h@(Lm-VA8;g@g`7z6eH zgn%TgkQ*nHB1mHU5RzK~lg$ot3CTp8q}2olQip=st(RP9+2!QvyW#1W*h{_{DSF&U zIBM0j@ko>8jEkM_qFX1Itx}lZM77-V)i=}N z4QYdb0LKNl4}I&GLEwB@CKl&zmz>YF`;W{_|LUI2+T^UwPJ?&WnbRxWU&ddNTf$>U z+Ps#!PLXw7D!rLJq$E+C8b`j|PafhGqZ%<tly1hmy=+#m3$2kkQMjeP{U~g zJ(QZp_TdPDNlw%c1n?y-AJaU%akvLNZC- zH2CuZ9c~@)=eC{g9<AHf2H{@%bB!Y!^S%m`_S$Ch89sCM7 zZkZfsD`^xp`j-;3z8KAvom-oQS9FX2we_W7#t6~kH@xVRro`n__D@5P*;v060^3`j z@92XZ%TSy_6?R-wmuW=^9N!Zs*$y zW;a`;$q>R&+1;#qcc`NWZ^;YWTlN0fu5-;Z2?I<3udG41=gVl;SR<^DP<|60_1Di0 zg#m;J2BC4#Cl3pM8^8yPRQB`1tZ8cl;_68uA0C_1SN9iM5%g8WTkbve z&TFG2KmntlSe9YVz@d{+LHyfjXzWnQehHON7{UAk`EbG}Tv1u4sYEk?SO6chzB15D zwM8y*K=qUFkDjJB31eZ|oNPI9mwyTa^s$agFP%;CL;G-c2Aq`(LF;VhTTRS^v#cea zE#7w#&Kg$Gv(w;SS((k0Dwa9JXQyowzbK#h?6OqH3j)FdXtxQn32p*7xk-R0l_~yk zGF#yWkLNiswL>#)YMF^Dya0Vj2RxE*FVA`@6Kdi`wD^NYV{xu+TXJxy|lxHBzU@400Rq3e;Nm=w|7K9&T=VKBT^|9K2XY)Gfzc(nX$5D zTm|2YGCw&$lPwHaH3CIjSfn{h;NW!0vMl%Uditz{MgReY#ac&+qUzXld9|AlcVbD` zsM#vz%yl(^vsKXgIu|8S4Ac-Izat_s?meMJwIl)HUHBKoF*c6lmjYOYp)v1iOk?%v zihqKmj@tQ@>oS9kQ?$EI1)4SL_8OY z>k(%ze>MFS`bLQf#Sgpp-r2wCgUYwyCv4b%T3lVO7!zGpEoDY?R zJ3*fMNvd%xYaxmdZSLamjFDkbpg*Kn`8aZd0kggE`4G|p+5g?PAeDYDG8lx;pBJ0ZsV+AXJCTZe@H9!{svX5b(AMDfIUM(hdjV%g{z-sZ)i5@bT29 z-vC@0=e0W0fdDGt*x12?*bztspE4Lzy+aag2gVTu!h>}LCv>!EK8fpqLxQDz0RNqY zN+M&lS6dcJD+2kj4n)FwP_Yyt2_jRxx8JAzPs)H3w?H%ujL`6dunn9edq^JRn}ms! zdxbIZK;tu@F1=~bU()3Cquypkj0~-vDef5A|A1Fl z%o}ojlJiVCeEm(GD@|oUSLH*(-&VI^KYZIfymchCoWw{>le;BDUP~YF6_v4*;B5#% zWzoAROTl1GdAd{R9mHWFd$@Wsfmb=gdQ@5T=*fwewssP;r z-VREi+b0y0{EzTHlayw7pPrB#QiI5l8pWj**xE}ltv4K<;q^563(%~F*I7QKV+{vR zbo#vS3ng!|h;!g4mSvbV@ZU*D=QLtdK&%oHPQ{D`c+3B3{th5T0H@)gdCKCj@COKj z2Weo7z1V&5wr6REZg0vP#^Df)26K0l-h~dLP|0O7cY`y+F;M2XnyCzNbDjIHf&nA= ztrqF^E2|7-(7cpMR^sLmNw%MQ$WBv9VzeH@gpS7vy^c)ieD1BPK2UEupI^Xye#y<} z$WU2?u?>jhxCbkZ=c-a3A$->pU&IA`M{ll68lZmt^M5jl^G8|7 zvJ4Xi|IPCs=eQYz`ujTix0o%`4}@2aqF)YEN+BnqKT>}XeWp&#+#0b*?RzzOZ^}Xa zzK%Vy%lX!P`mWwn9Do3e%bWCdYMEcDATADGy7Z}H1T_vH*! zk&B75Bz*JwUb%Gn%QBh_@>hE<8RTd#%g5apa$UpUW8@$mK=mr_&13@!aArEX`JGw> zbNcST)=)s2lp_YnZtmaKPQ)$EdKB(CJ5;P$U*b3p6Z7}LXc5E4z~IXZx>M(a$P~+^ zuqflJo0pG-y+`IEl#7_V5EdzhGJxncFisQlmm??+EXE3WQ5T%YPb|wYBjA5uzJ&je zuYZAyIeq`f@i{e32bvBlB2zi7W2odj9XC`atVLmRh_yRYY|d(DrjVuNuw-)>%UX7^ zp|i3@Y>R9ZWv3KHS#}*tVcGZZx~}^*VL#vhzsJKv&D^j1bsw(#y063Yx-KqW6L6lE zLiu^D@d75D(ZF9gQ-3jVMkX%I9 zJE7zfBjk+oEmBvo(#}Dci4+YqH#))T{8$3G2+13)N|fTFZ$v;77}3vInp#8cB3N&C z#7Z5KEJnYMcCj8Typf_x@`6}GDWAJ?xclb0CO~Lob2Byh3{5xRVfWL-07cS6On82y zR3F$)!GkbK!gOs|Zzd7SW-pV>IMfNOPMSb0!sF6O6Z@M>OtPn*2Vf4-X#|QT+hSdh zMrr9KCp;P{fF#uVDdDsO#Lq2iU_)riZSEI;k7OX~jKagtX z@kNlE(_*pDFmDZKI4vnx#GM?>SH$E)m z1oOoXyr8=7f^MIg!lFZ%kQ?v~_oe)|0$fjxo6HArZ4j!02&1F@WwEp_t9tc>b;;~Z z>$3H+5TNXPL~2agnep|i2$Nl%;N=<7pP=&+gs6@~E`)Ez9*F=5aQHg(x)XaxzPT+_7OiJ6oKl z_Q%SLAcIz4!srT~%9<28%7Pzp=i0KKiPAVEr+LgtOTwCpN^!)r(sPAQc+=8!&pnm^!b%GuF zjvmy{UJOZjBw~T=EKgSAfP2p`sKNFyx_Dal(n-7NFg1a`-~N&4K`b=^NE=q6w+|EB7SrsuodF3r`x*{DO;;*O;)s3pd#~ z`b_s1MgCx7;x}kaG-a^ZtV+jd8px_QTFdtj+xKXCh>{n!pstYOPAYR&+d5tpi2&au zO!NrYvJI_twt@_9$Fp(}ZxzmTu~n}w)+Q;5!D)kRM9E!Q z_3?R|M4K0p-(F`*pPFU8l#Y?#q=&vK$!adIO zp++m!sR(RZ5sur|o}Fbskgb4YU3xT9Uu~V&45Yp%nG>jeyZTQNSe;)%_P_*xlMO*K zlg)1Z25z_Z3>kpqqC&ilXP?>I&C~>Mw|3}$Llo@4HT<(;oPS18V5P^2r)P)S(%_di zOb=Ix;PEETvTL-vNB3k2VOFT02tzWwb?05XhE-(FdnyV_?PBfIoT;^!0^U9wi`O1% zx;0rNnrUsFc&+Dof-=1|hKprsZ5Yi~=1o9*Yh?}>f7TE<0TZL8_vXVPi|0y+dPb*- z0H}1<#KH1+yFFg~dt-S1)~i&%;(onQr7!Ya%M;QulzR<+I8e!`H$O{lBqxjF$%)6yo8nr-=RE@?v~v;i_NtX zaJNIyUk|V(6$s-%s!D`xxLtV*5@KY~XBYU_Hclb4Ee>L@v>%`0ZN&@2ie?L1gqso< z&~L3mpM_964D4v&6+o5{`Baz)-(mWnjDdZ|>#+l*iCQa5%Pi;^E1 zScU7tDg6Sb3Sk5T$w2YF@I#&WJy-_pSrI~B;I=HD>5f;sy--e~K&pKi+-*n6<^|(E zzJ552`wJh;k^@4E>KWdQXdLsuXAhFJR6+8%DWr@6@P!zKrzDG{Z%K{*Eix74aMz5@ zkkr9Z0)~inXov_RLxcw(ds`J27US;jC`9Af1|`rJ>XW_TpH~p*Nb|L#AUwV&_Cm3a zpoWQwF2+cHV`9(wTSOm2i)EuA%aiOD=%IGQ)7|)54`0>)gvq#cqbpm-r^E`t7=$H; zJ2AK+3#r-jk6hM+nH??|jS<;krYOEA`T8TY8ae)}aY0gm;k>6$e`t$53ir3ID2gx^ zZ2wI>75x?p{-64hHA}(IsYFr>REZLXAsz;N?g;UAk-~c2n*l}zy=5tr-0vL(#RDq6 z%6SX0nI4-(%AlD}OU)#F6tw^NZcsm-tPxr;5Bzz|j&igc!1#wjnwF!~rg7e(dX43o z?)+Syx=5E?Gp;uXgCeIn&eGfAXcTIHMF zON)9Rak|X2Oa%J}Cf3(mE~e};T|vbXR)`w;C<5!ZiS4>epOc(-eQ^Sl^NPTiQRdRG z(+JpYfj0(FC6p3wVHxJoyJm~Z4m^9z#T1?$B_!eB^DzJcKv>gzkPsNr&>3b{-x+kX zdg$ejvNMfL8c$7Q-DzGbI&G!mo{AVbI!Zw7{NrdRbEcp1Ow2o%#w1vS z>UqK61Wtr=E7Imp{(TCtsey<{y~CPb@Sf)~3GX}&NIxP}s}q7Y@@4~QBN3m-*Ae=F zrR^Vz=!0j#dBl&*o2~F|g6Hn=63HggLSmeclGRBj0IO4O224z`ewHI{l58r??pA_5 z&dy!}Unz}WeS+8n{$SLPvvH6EO3u?Dk5Qjbo%7_y{Daf!`9{BSKn9@jH6L<-1cetm z1!53Tgahnhj@|-Jt3tehVpn1iC^x5k2fQa^y^L3CkFf+9Jz@Etu7>41WpR!zA5*oS zZX5~AhXFNGnA%WYf@Z~gksk+bKrwd3$Pa+C@n6xX++FYEsA6bT!HwOaw%vtJ{;0su za~Go++_{Cl;6Clo(b6$6ME+Q`kDlVb0#0%K!q;f2>smgF1yaH}yaNCF5T>}{QzkYa z3a9)b>Yk!#Uj0iK@{&&=G==g> z+c+f-s4R~D)*BW*dnfa+Ql+Ad4elJ2vjPdzz`4sWsIth@UF$U1#|Zz;vYJd%fAy6YRn#37LK)2Cx2x}0((s^s6sHpv+A1+3efy!DW?{k9m&DTD@G8? z;lh5W|H)B=>t2FuUETf-E3bM2_hMxn7w~_Hkm3d}N}v6t3PwG7piNlQtqFQw7tO%& zH!2ISbJbNjXn6GyZLzmd`^YO;%BL1@N?u6M?=&t|jrl^nx=2=tp?fNVY<>7?EL>7kTmyW+ z@O9V{1c2SF9OT{4*f*}8o5CLKnX1%us1 z<^i@yz;ZD*queS>NRaiBEr^jiSf*3bJ%yClO5((q+OQaTkO1$n$G(T~GLWK+3juqn z+e}byYQE^mn9ndYmkG>*gxL6v05h-xU&Nec30k~$jBd3^f54Q^1Gfr7>AX{6fNn!k z3M8Cav+ipVl;K6G=d)70D6T@xAG5L1wS!k|XS|6c1rr&+_xxK!{Jua8{JvkX9Bve_ zR5O0x)r>NYD80ad6B!A3voCh(F=7)2xI}12Oi$Yn2bf?o&Gg-Z6m7!=87q-MiZPQ5 zQB?Avr-+YN2?~lI_ooT#rlSbk*IZ)9E|M6!t^AbEu)w?k{ER=jCIKzQK2fE3LPGH+?N&c-WvHr_p(Bj}^lt+Vv?O2t6h zl^07b?7D+2;flFiKQo8eNvPAX6d_}7+uXGAsZgaHgtymWok0qecZPdKX+4-edQ;pJ z2m|i$f0uT~9yaj&5kmJPEltt4y>p|?GG^*DMJ`AT5Z#xASML#%UY+?a2?-#91cQ0b zEE@{BYm$S@VQno1N~Tlf1ICPHy^#r!jYJqP5`C-;eGM&g*~yK`2OKrP!%{nHE3!HssmzVoeAwtjQxDs z@Uaq+y%)Hspr%{Y`CplNG@u;yznCsW%%BWs!Q23&Tp9g6^1IFZ(mnVBx^W;00GeG? zHl*5~F!Y6+X>u9lTYc`IVr{*>)h&6#2W))LaHt|sJ=CyI2o zx3O^hRu#z5uriTkO}etrAVUw}!fn@~`9j#p^z!kJ%f|4@Y zykd>MLYN|Clz#;`sW#S*G3+&QTv(G=GyougVJ|f1MC)za3x_;!31A*v;2-j6$nl}y zVdlpZ!SDDJDFeL-{x|A;jE|GP`G0e1!O4ul=o{n+GrHTMYlP8vkr(q7w*i`t^wA;RnPv~pw4h6LC#V0* zqx(FlWr+WmLWVMQcrOm|V+MPN`wz9)SdLV{EsRN0Py=T3`-SE=f$k}sH{Mgee8|qZ zFidz6{x)K}=&k}`I2Era>r@O05cMJ!w7|!nv7jgyxLQDH#R}BoNC1aJh8UE{vsS^) zkx6Y;)}VfFa7wBNy(h^vtv4igkSsFitsy-jHw|RzUZkeRZiBAC(cvt!jSr)`mq>@0j}=oqi{Vm3Z_AL|2(|D>(hEmO0AgZ znn$^tvM2IFIt;Tbk_`hP64AG8E{pWbd1d8+X9&=d|MT7s&V3Mb0a*)|tyBl03n~H! za2D52WHwvG32%=^Fz#t$jPZ*~L76yM4S+2aJx5oTIJs)y359pjE)H=Nwc)@bL#!*D z{#QhJ67P4fhwM=dh;#((HXuL2G0YCqFi6tO0mvrzIYERL$cg|ghF8G>N6B$&-HHhc zV3&`h#uts*Hs3$77vOwR28FMlOb=2l;18Q%KdHkyt*v2sd($94+;$%uS*N8T@S?T} zdXExMc<^TCCxkKisKW#fptb2-pvFEznzXra=lp^-NN5mMQVpa`=NxSYkSh<(9`q9_ zgSZVi*tVi29r-)Jt`k6K;QO%d0aM+{vU72Y&HeF!Ljm#a!!uztJaEDs1E3gBiw{On zgcStv0L}z-T3`}b%m=5KHwa3SqmV9MW`dGjn#C4ff=?%Oz$hKMp)8@5TqCQ)Ox-5e z|Iq$rCLO&r0qMvt5VG!pO<|X#h&LOl4x}?ib=t*A@Jpf&lhy*OiE!tY^sszQ$FWiY zhv8C;khJh^oN&hfJQJ`nAjITi-8%Vp%{4L|XgZAqAq5atAeeRof$4J+n99XH;J6KL zPB=7zjzWyk3Qo8~Bj2VwCW^neK{GsNQ@lrGa8D8N!Eiwzh-rWmb7{UE^C#V7g5DT^ zErc<^{JpnM!?)Di#4YQma6v)oQwdM7UL!wDuge7aj3;kqQrXL+Ae9A*2j37Txv2-(V7##S_sNvM3ettXhTz-274-33b;QDg&J zy(L6~KuI?cAQw*Q!&vnqS6jNFWFaVeZzoSEc=$qYB@&0#hp2U!bSl(1Kv|iM`6M+U@y2m-(<_c5_sljq194|iUt9#5&wa9v%KCrjOKe)+|1kV=P)3q0)c6t! z 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%0A|FDaF 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 z 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 BuciP1 diff --git a/test_cases_bc/crux-bc/bzip2recover.bc b/test_cases_bc/crux-bc/bzip2recover.bc deleted file mode 100644 index 3d099ca541c5ea58b83589f20ee57c00b0cdf429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17416 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 MH{~c?v%;VM1JVIkumAu6 diff --git a/test_cases_bc/crux-bc/curl.bc b/test_cases_bc/crux-bc/curl.bc deleted file mode 100644 index 1de7b64c5cf213fa3f52331308044cb6422a7e0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 586424 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≫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

    e4Sk=pC8z_YTI1JVUOE;zBWG=Fu$VT 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

    2+iz$Os4|eG@7|)wG5Rc$`(OUY$|06u@>Hmj+ zk|>V6!||Kwgbm0vNe7&PqNT4mRArvr+_MO)Tr0gl{P>0drvvxek{dEv$!*|7qD3D*W zt_d5Uihkm;9>jaC;INwWnKfflPOxH1v!Kxb1!AFwnj3{CO-q%sG8iVgb|n{lf~WzY zs*{Bd;!p@D$r5YNQ*dnnr`~$J&rcr9L6XU@o-q9Q7?O}N2LU)GLsxOY2I zJOetuT~fb^{muyLRx=yPCzzso<6=L=hD8@xID|)?EBHPb!wF{}(d0cWi6ZN9{Dzf1 z?VLkZe$w9I0sVgq&a*A-?-S-St1H&Ju;GhudUM-a%Ppm310u3Zr#c29yJ=-+mi3EhDcj@ zzG-a{vJ9gxx+last)zUXJG2aS3X_{PIY6=eD#C>3CDM1g5GK^RLHbn4598^vl=nr> ziM;I~3Z~}Sxb%a5je<)r=4a1bo-Sv;#hsYgb>n$>R7b1HzlS8Ordwr7#JEO!Yzl|; zf@o#nWj+aOl26hOk4p?V%k(jwXq^DS2FaAeZ+Uks@i`Gm=B>fJDFv znT%*7p8y9S2GUshNxcvq6-r`+@)m3b#r{7-0e2>=G!R2;l3DC=Jme?T75t$0;qoOK z6xc?l$q#qqPo6z(C3Cn0V30g#*HL%+y1nc14k=3DGcb4n{o`^Z>v}^5I4Hs&w7P2} zC1x+ULHiLCMw$>oQ7YO2lIHcxEn#UpL%cv>3^qI|Q`xu+AzmOo4QyprAx)l1q@qlo&nkKKlz{6`fB-=*9aI~qETmi$;aGl?%+8G>%Nfq_xk0Tyo9J;sb zqDXAL%x4l=wB$+WZextu|O_&h^wUYy76Bs2-+Avc|AK1l}cb8t3t zL)W&8Q9gm-c;vnBVAq7vz4uv|%Gf$hTFV0~3R9OF@t2Wy^?i>8F5UJ~r4vd5VqHB% z35FBD@~)q~#gO?Wnn?`l#8DI^hlwSvy|;n%u1BR(3cXvYKg!K=8M=aBU|gCZHW{4n zhRJJrWMeDS(eRGI2-Dp6d8l-Ip=BotomDa2T8=1-ke-bK%C?iHpkHBxn`~%}#&S}V z%z7xAjk3L1G=z1HvudXfMTtzQYy(nZib@HEqA-Ua;$;{?DiQ7xmcWb|&I5286C@>w z3xbY7&t$2ifpKuT!^uoXQcwOgd!gBY7^pTcK80wcD?^PjZ>NGpcC8GtW^8XptYs0; zp&qQP4LyoXD}lCPR)2aHB)~kik>J~2@ceWNHTd694-1Vp;%foivlkMnL6{_?cG+=G z0pZn>id{bQXU`BValVl*zYC>rt{7*An1~@$dRut&?d)kNPkxu?RP!LqS$=bJwONqX z`oX-==zL$XCV{<-nPe)X|M3E)-GvQBnD*THf{8uBhdZmx+CHy_T@gh4xDNe*hZ>Cz za;q!Uil(kWz+pC|xk7=0LZh0Xu(e73$6zi^>@gghm+4Y7q53z=E~5#Gl>UrFvr(@? z|4vK$12t>grMavevtlPpupVXRC11j6E14?Wg>_L*o_1DX51s6)Y*v)95uRW<{^kq}8Erz@G2D}mT0D>MX`TY)P-C8iQopIZdaRDX5zvt` zsL5R@j7%r}CMx(aI!tDodj#YywQ(EPMR=Ins+laPC!MqsX{Svu(V_8G#IBWK%WjiZ zA}G_|LT4`J2hA+fq>ZkQhoH%}fUZ4LysHuSA7OlJ1N~=#av|hPuP8lO~;X&)dfpt_2?ZmS2B2gnLm+mSfcv(og>CKOxU0 z7>op;n?t%M8rQ;8_~4$3X)P)#!c!EcatGG@MlugcNu4YSK~l;y8@|FrrHW`r#%U{7 zy^l3&?VOF}oRQWrgF748Om*}a0Z&m;4w(&x$S(vWi%V%Q#(`uxt=PXhhKDbsnhWIl z0{+lBBXoN?80bw*WWW1Jka|Oq9-L@SFg@|}jRq&?-oy-WQOBo? z>D+i^5T>%CGv0mHiH{HeC(;F`VJixW!(0_n?$#my3%v+{hg$XJ0 zdx!}!k6DHkZ)tNKj8NUOIzKgx*S8Ro|KKbfBTK5W={8$5&-vKbGu5)@4{Q@{MgBEV z9$Shep-2IR2KW4<1I~@`Y3weddf_hGr1TV2p_o2ih6WsKci>@ACZn_d4|`hT+5cgW z(XOB%tYz$weTS4ER;*eM_u9esw7tmae&}NS1?%9gg2;XiOCKS|o6QlG=u(GffsFY9 zo=FE|J^XLTR~kKt#(W9$B;`;ZReA<-Sf%j44|%Op77$JuwMki_V$=k=vCAhZviFKJ zldc$JDX}4=>x-y7L31f_13q9f|IJTKvlO)LFv41l;iM9e@;ucS*ubq-;|jcIyM>%^ zzM*?i&CN<%()?au11a$z8Cui*d6!pAcV*#{BMU1&OR95@I+NO_;x)>#GQsEhQg zM5Q806)H8SK7hP+DOIDk@fMx|BDj+vGjhF&oq(0NG0p#f5IqT#(O0SRap zIF$K+hAUXy6OnCOD`%Vy07v)tCm0u7ptSSpxE-IDFzH;LamcA$_6zEx`yf=D5UWO>ynBf0DqC`(=B}m7n z4jooTl>9errVKL^IylNyBeJBFf+xt%>ga&@3och*4c>QgX_nKvs-%jE*SKAnK(7_w z%&dR7w5HYj(u+wR+v9u6c^5Lgh#CAb>ecM%^*)@#tgX@?5Y3&$3#T!#?Qwni^tN*r z`wUP3_}jh8W7Rycd%;q5o5kx_3p<#EA<-IYgX}qqS2Gf+pzparv1tS8zYeLn+L}8) z2gvnqbXvjvJ+8qA7WEplkGG5M22BT4cD->)yiLi%SOgPV}#3NeP;;*)Vb- zl<-D5i+fEqt;HN#OOxFufOP)+u%^u_Nji*QGZNYGjWfZ*cn{N5XZRLL2k7J!bPn}& z+vq_&YDt>PLrvU{csN0ySjtP$rnGAF@1wOf2LyMwkxNdAVp+9FrY;T0*C z`RRIr0r|-VBy5MQ4O5*)84#xod$0h7w@n}oV_Ymeo6(M=cb(oZ6LFGiobxXT2s9fU z(O8+81QW?cF=D1GdN71(jih{=2Q=_#`EV$*sU*`A?o@`8KvB5MDsn4_$#8*Cj3IP-8czk($bq?z-_JTnL?NCj=Mu;2v`Lo(rM7b31dh^1!rxUpCA+q+b% zmGnP<7p1O&NPI+%e;iMLpHx*eq;e@qw<_VNc;Of~5rvDSlz!d&qKg6C-4GZ!blq-D zyUKD0({Aj@#;V#R9|x5|%3fk+fQ^C=kKh|>ieLw=4%b0wCy~{wD$xv*XwcMc;z00R$9+DX~y}sts>FjytpnJRv>$cLnal<$G^%~>i z_i~o{O!ny;rqm&_Q<;o$h#YgpvtI(>WfpgOpXKfbkb{)r)!Rn*9PQ)gJv7tV^|ZA8 zGa)jjlNB7@dscX7QgrvwE|7|FLXKyiEkqY2&!}7L(|A5)HH(%M~XnThgBMAQ5Tqe9Sqn00F!&AS=1x2|zJI zLb4L7B8%8PftQv^)59*{u%AGm{W(H?pAjg^*}$a!=yC>JJpjPX>~OG&mcSouw0ebg zSWoW8qr+>Vpr#Q=pr9=3F#K*Nksr~!VMy$(Tb)GeLqxucdLrl7fO*O0@T{ZWifn;M z$8?2Ggi#P1DZc@MJa8S{WH7G4zF=5do&Xs6Jd*7U!_~6V4n!>w#S91(zv(V=54{_q zEEt_Xz{h)bEH&MA-;8*>*qn(4!L*LXo@m-h`Y6J7ZfYW9&gzW;QqTC)BL7-!Q}b{RE9hX3Nu1} z2rD#^9`hlLGV>(nT5s1o$?x+XCb-Mb!MhCejUBF|!Qjx(H+FuC|0~nI9tC2xoFY@X z9+z|qM3|{Gix1+%6DdPEvTL^VB>uO2S;sJtBiT1BIf<7QxR>M+#7l>iSk|b%;C3nO zG95xh!&}UYI}eD!4xR>V@(u;f0nc+i#rnLD247S&lY#8MnhDws`7fg8I;&Roxs2SK zFeUXw$6r38DfV9g6(vnY1#nYQKT7EO(E!nEV|1DZ>AOSviU*JMhR*XmG&LiISsZ&5 z94MH}ogw)M1-$ocs7)$4!CkEZR*>`F)B`Wm*Zg4985Zw>RO&1ddpX|& z+*~yH8~7iak+vUR(sVbdkP9pCZAj}1>g7G#CD-d)SviWzG-A_sPLBikaI7$INvlJpDrxo%Zo$wqn$bt0Fa}Qee=y3Ai(EN2W2`o6I%JEkkg;WtW*jXz> zdSV(}pfVKxM|gzgQJb_FKWk=2!7Zc=(lGcv)UmO3M}M>(J}24Kz6&d4qx5J@?5vLu z=uDb#YD6H3Wx;E|{oSLkGTs+vB8kJ(z=?Z}*s!J&hRFo*UAes}Zok~F z^G`>SqLOm->djy2QE18CJku*@)V=>eTq-QZl%f0)XES{BmMC+(5)+jryMoP#q@N7U z;r#ll6#75jTym>*lXTa3u+LYkFr09Tq>S9&jXQ+6*IcUjn@hXQ5KE@Ra4kK79#n;h zWjdB&rm__N0<2M^?in_NOyb3aI^cKQ@y?wRcuv&xm*N$-t79v+tl4~&yH<3m&fG;J zJjPHiV-Rc=USe7N$Jqdd$YYVHEANY65x%Ld^ZOs9dNb+h^)`uZg;^*)3oYDIS)>J+ z?_U}6KM>xOE~SG$IKc1cbQ2xKv>VldcObrCvXPBgK1$;iE?J(7bxj&si?apx@=_S# zDh*X(7G&c>Iputhy^Q&>Xxm%H^1Ei1X|mJZ(FwdHLzk=salsaVAOC^xCK&LU@p7G@HzV0EuXtEQyd z19AJA(q9lMS$Tc|=zUSj2+#A+K;)!YGA#Z3@Ha=!%K;Y;Z1>WB$vdkV$)-$9sG(xGvwdkp z=vVx?);Et1wLzwJ3e__RhUml$E+tDk(7(<834!1w`Nsl8jgr>lhUvC+6b+l~vbrAd zpw`BEzb^QyLy>BR4LeA`*XS8=!|MC{?3v>8CMV=l5*FZ8@-|{llj6S-F(+dNryyA~ zZS7bYSt|e0aDUfEsPf=71thb?S<`VI3D{`+9hWq&7ohl!owxBb-KWJvx>@g65PxCS z<@;|!J%izh+cS0~kKp~VWMiq`fMzCA-rfse^JUh`X2EkgVJ(utc;1C0rG6t(soGC| z9p3!;1=IQ%b#AJ7{6^6DV5w+8Cocqm{fR_T{GcK#I4@fOlQJ& zI{zxP5+^cCQjx~Y4h2@OgN%m)QWw*aAW^GsM^b;E=sU}mA-pT!+DV>=Kws--;%EF! z_B(!-c1W;S)B_w!0;eXcU1F(YNFSE6lP5;O1pb`!h;FOqE-rQU7|LI$dlj`4CEMcx z!I_L?^I`y3fz|eBtQs>rp&##L-?Zu+e{ykO24U2ez?r0(WQG8$Q&lq^iuBD$j^8Xrv9#xffCJ6ut{JFlwkocXYdS1}()^0Rp?lNhoml0m1*i4k zLhoycKi1~Jb`dQcAD@7$zY6*(X4!#6#25@zcM2T#xtPw=POzIt!GNZ;2KI9Q{ zMDq2FcHp~}rRT<@i%P)$$cKDzyD{1S0a9naVGVkw^V4!k^eYV;<%h5o6^1eYMq$4( zOsbx&aHf&2KE+3f3RQ-!u^k7 ziXXEfZQC@?e^0h*Z`*}C&IaeHh26jj|5Z0oZCxD2YrNRFM$GqAR-BrKX*ZYdfd5uA zV@lwxooHHMM!yTyj^ zJl@ydEjIT&$gNS^#il{A>t~}g_EyhD1AO$0m?-J1nIJg1EjFr)U?{QDpl(0T?Qhsy zn5BI5kU{z{g9U{o8U|4rdcWvCzy=l=qsd>ndrZMrk4{II#EnQg&)>WvgTbFjW;A?^ z?ZP4Lfbma)_2fZXRw%8UG|xD; z`%4$k1wMu};6!k@=U9cZ4i5!5F%52!S;3S^6{sa4@ii)Kl%>O_gfcDSnoRLKdxKAh zdMEvxE{(1QH;02f{I}WNnq+$2ZVp83u{Foz@?oePCAE0MdLB-7j+aHWMrxQ0t_TD7 z**dS1P!j-~McXpB!ixPIfR*B?cK0X+#k+O43kf+KD(hi4n zSV$40oo(gfJ$sSKgj~e!RFx9x)~tEJf zngf6$Mke|_tX+UEdEGYQIzl4SiwuLFg4=FZnbL{Vh?Gup8@z(IX&Ui#axZX8(QhCXxdV#qA(M*Jq$6yc1Ge-)s8=*LU3kyHfGO8*zpL;qpKi9 z9HF4+=A#IN0k;ES10al7#=}9BAklb_6zW3)z1C6b@|~W@=g2qp9FA0BtQ^{#%dN>! zF?Z-QV52;uE+*Jz&9yKu9$i`jt}t?a4}uN1ri$tHeNaxJX|wdFD2Rw?lT(j?p$b$Z zE~3g0V~Xv>-M5W69%IX5bp`Ju?GP4w(^)|s5Z4-`O{RuMY0@b@L&5Y9u>S~xHSB>a zFJWxYhPdYElz=!ku@Ab6{COvN8wIEvTl{|FBU845%;mC6!5)`7h0ctGGfO?a_C1#g z&O5j=Q|QrsMkQsxiRVJ>NiK~WzH+`}z4O_EMdxPvT<*eO7}!^2)jmfKw^<-Fpf1bu z{GQaF4#gzYaztD)y?i*Keuy)RlcWXD( zau{-|Qw&%B1NFJkY$qL9pGqd976xymu~b~lh5j3>Q;%Yq(^Y|gz*xWxE*3&ciOBOi z&7~13&5m|B$yQsB|BnK9GjS(m)PXLvUFGg? zGZQcAn2b;PSLYScoyU-?&a_Hv5i^-BlF7(slot2ToLm&sLGS!vo+w@kft=+rEPi&0fvRc99vx=E2XORAcsdVIZBe;p9%hgpRT1`2!@z9QvJ;Zft{MLAl zbmj^Fi6YC$>Vg_@aL+BD&HNOrtc}b?SN7U*D`)H5H3UZg>1s}O*%3^c`fxM*0r z8cR$qdxi%C<2Pb2$evA{aKg!V6jA&>0P#HQ=!5@7(l*+&Fm0O({UVTzb+M|!b&ZYpnEvy|qlKCjW@rjar||BEFx zmE4OZ)ofUc*2Mk!vd3XNBMd(?zC0w=Z1G9LeS-q)xEx+|4h1 z8ZmR(`HmxLjPolzrY!P+vtxG5e_(uAL{$tm;x#ytv0pWcoI5d;5(}t9>USEMda-dQ ze$~)^%vqt@e-d0XGl+sHB+F)NCKiU(_INNnHEse~H^ArMJONqu+wTl%rL^NKaA-e| zIpLI474ZvqCk6cSl1OjqobVoxBh5Ew5Lc0MI#TGfh_Y()ov*m7GQczhZkM^$Rp);S zk2$L&()p_VzfgD@A~h6}tZAkL^uFjO?06DfFTme@0T1+r)iaBCzte0~zGUSd-s$Y` z^U;?vUEs@0VM^2GA^a(U8j)z=2yeMth)8UzuzeT2jT-Rf1MuOB!)LF<0~s6GwrEUA z1Yy7yma1}+%9iQw2=YgYd&~^pp0hd!-0Q}jg;-#YlApy^(ZY^V;;-^V7Bb(%3-?I& z;Jb8gNi10Xf9WhT%o+NB=``DyVS+Xi4-r9|*~25$ly@~qbx zZ*XgFcv?pUr*Qrto=DHwKE=&N5{`fTqZ$2b*yV@a6O!(&M0D!G*E~2i!BZc%x^$92 z?xGaIxT2rb+#m;N&5Di=sK+fQg{5q0%&k0LuV5L|8 zfx{wT-*#Dn_T3)R6a32l@jFHGsNX9v$|HT(fzPVLuP7ul?v-4;+oVZmenHZyW3J%N zzPkcTGn0@D5YT1C-;cS{=;F14KJhhw<4TcHbLfoozF=w+ zccbX~6{NVpw!4vgZE323-GkyYx=nfyS12lAaRtkuWqjx5WPyzbb?7XaOOJ+lpEbEt zdjA%`VDv3}isa#*Zd@XnT1VT3M_p=1eKeD>RL-s&dv0>vH}mOfY2QL>nbwzsIcu1q zWbNY7{P*9iYMX_-FG`~~&JnM7xj5grNoMQ;^_?y==c+&s;FNpeX-8lSM*BMW9$U5V zkFnhXyc-soGt-X4KTW0Us>gcv_gGZ=Vj7{EbbVX*ZUZNDrO=;2p|wljK*d-qzQOe> zr6+K`>VmQG%zu5uX)!Nj~Rq~BVvQP_P- zqACeh=-#(0goV9}$%{<%mmxGt382$|w8<`h&n-^0D6reh2$xy6TI=Xf-)(bq+EW+> z-%}G0g67Ox3a$m-3@OjlsXl>}XDS$6Qu;-Eb4g_o`L%|n9f|(-zQDI3{>|3d{E>m+ zNOQQ1Hl#w!U2Jj?Pp2oK%X05d(@RL$w6=&@1Dn>85*d2dToC3p%C(V$5LaKFPlZYE zhV1Pg%iTV*FAyZul&5zD^H~me+jV}O`4ku>L%``FdkSTLb{5^b9onZwj?bx9w*+bFFb{tF+Pe!)1hVIcWAQ+4}Q2>c9{9o#ux zdl6+1uq6F+J-8UkGXH?ms8wQOB8%yWcgYSX{y)aP1TM;|?fagEVPFOr77+q+P{*_e z8x#0#1uob(ZmJKtez(o7Zw)`gbZ^-A;C~V@d*nH z4HVb?cVMx#p7)EvL{n1ZkhF2Zp*RJ z?4d2ClfO`B1|q({Bq=}mN4-}i1Oz5`b>*_Uv^-kJe>?iHyH>d!_kZKx_;BK(*JO|t zD=c#9ww8o8{_sQdr>r4{C;l>o;dOw7FJez_eY%4c-1^90Mp98ts$DsPxO-tqjT_a( z2OgQ4zn6dIwnM!-_-5JK@)f&aPvgGs3rcqIdr-lIT)L;ec&~`SV;ne6my67?$D9cp z5k*6M{UdY72)gkT%+yb3wLRIx+=rV%=4#qbZ6#J#+qV1r`Lii2&JvTqu>RhD_6BWF zhtoHh-O?K~zat*l^ZTDYiq+IU4oyA+%CUgmcRG8ljbvQV3s8w*Vl*) z1Cz}@-XXSAh_)E=wzdJulQ)GT~9EbMWZ8PM7fb){wO0BC=+*^GI4g->K#n z&&zyqPu}PK_0p?8=I(wymUvvZrkB6_^{7wJc0BR-j2*>%Kp6k(VW;t-36B=ZX8Xqq0-dtrL?mirXFUt`@Ko+ zm-euvme*5~PIuR#>v1lf1l!t*`MNhgS;vlbUFvz*`PkzVfIqh+|2zCBYAk}t2tm1a z@~^+PcG`DjoR_8^<)1sd@fW_>rhA{!V)r)w@GkR8+wYnGV7C9rJ&g-k!>6^*A55pj zwx+}MRUVoD#a{2h)y6ow7#aA#4Rfg#f3>a4)scdRH;*K4=*~>Q z?DVp8`SboqDP7}ErGrL*#4KBPusOcB{iQw6q>&H#r1pn>&3tO+tBs|1|3YN@$Z?;e z%+tzjeBj{2z`LWl`R}q>H9GNh87=h{b4h0(77!m5>L@%UE@EeK1ObBXD`0U$GQ2< z)NQ?IZraTk+1mNm0LqkTNlD$ryb9PyrN{xdVO%wg;t@yBHYT&T+18qHg;l5ZX)b~5 zAtm9%EdE>3-Q9|amWd&LnKVU*_rmi-low#bidyw1yKTPZ8rad$Zx?IgbFJf#5C~yd zWc#?k_=PAVbGI+#+oZj75dQ)r*T&vtFOb$WKA(T<56wUFqkr4>gUtOdYbkr{8g*ma zmnB``FSypUo3-k;`uXh1vuc;|-(Eh(XfLvMi7T@5hY1bW}VK;R=PHY%X zGk{Z!F9gz{Z5>Lq7tIA>svTx7Q3C=Lajt%PcWps_U@#yAW&t_9h@ss2=}k{N#gshtMdZ$q1uB|i`W*yBWE?ur@nJYTJ5wC*vq$; zEZWQRUX&j98G>18)^{CQ)kUGF7D(AEpzz7CS+Q;Gows$^CL9c(3VBR#Mocxfvi^mQ zGLQGXZ~h0li`ll=Cug+4TCrZz{qiYWTaWm)|D!2d zI&=GjBW@Ua`^h~1{>QVo@1+jwz1g+HHnXYLQuHNX<-kRX zc<9%&`E}a|Nv$JugG{nOAoz~1i~o}~&+_klN=|8m(jET7-5VPW!A|=dj!YO5c)kxL z^zr(GHSO_QdowShf%Cv5z~gP(OZmCg@x;l8qGIj$)BeR|#`5Dn2Pa$%g@tC4z?q{c zE>IE~o7_{~=U)tX44I>?*9!s0*LhZ{2bWUcnG5vi)-(h>sjM|cs>?XDjo|?y7Q7F*@ikeHU9~tsH}&jNBlb; zPA%bubkg=jHkr=V4;YNmyeo&c&WRx@X_szo?3mQQJI})9rIYeIpZh)A=l*lQ_vSzU z`?!yi@|+g_W8}x-w?5A9o?^{tt9b>0V3D2FTG9Vc~M%+F#cQX z%0x0n!phppTt$Pz-vq_d{@DD3*6|`F`e=B3&gX9#=C`t6-PhmSls=HYe^F%9@DmJX ztS!EGz-#KEo1>CesVOWKv8`?QyC;IGf(7dc*x8S-Y-`!u#8LOy_HFTMOR7-jVy#Jlg(AB!J5!X7V zt?2-uNp$)~G({IEHW30_It1AABmr(2gjlHb#Rgzq^X?aq`fbT^H zw?(Vit}sQj+iV}~q#o?mqOm_C@=;`NS$c+mb<6h7=`5$w$H>~w9WMt_J3phW^}%7* z2px}{=!WLT_Indtm^~D<)hF?+KpwWW_1I6BzzV2)|61%&T7wS~OIWRX?~Q#*^7Mdh zc!|Dl+tYb`5hflKVw2CX z9CEfT*AZOKBPZ z=&r=3p}^l5qjZqQ-DgkhJnOULtSIVJce-g(J-AD(*FG{|pxxa55DD$ad=h&ji`jOikQwd!Ow!&GX zmG=t3?c2(l9{x(5S4(YCBK6qQYah?*$1}|08y}?}qg<5c6!R}^hD=Xte8eX9Pi@Q0 zihyqL{vIqF?ylnq^Ga67l(eQ!Ft%a+MsQ@?_|a6bMAjZ1ev)<3@T3bpRsC>IV@K|L zp%*)&1VeA$yH+cKjly7c@%xdn_ntZ2F4;@4583Scu6G!0*Y?ER_8RN}JR)(gL+bED>F+|B8Q?`Xd#8g|g^uLfgZ%ddB(zf9D8=2}={3lC`7_N+TPO zvSWLi{sp!w(*DZY4xKGg0~%{lhE5&2wfo5(MQ`(sG&1!nCQE}QaEEfYcd_GZcJG#X1&(SKNnH$5K2A3OZ}X3YkJ zTpRxYb~D{L^BKo8_*|Qfe^5tf1@3}?EV##M+m*~Bi|i_SYCl$}igb3zg?FD`Z8_%P z_}uTOPJI1R&d+(sULdvoQg^vWo%RycD81#;a8{+32V?nfW&Y0<2MMg6|9$uZ-%@3% zw^&O-k~ z*~U`qc@}!U2V9%OvR{GIly0>-XV8T{~9q<~CH*S2DU=bfhHh$=Gk*rHgaVPa@ zE>6t%&FKUfY|9hYnvf5A469n(qxbo$Eivz4ukvBy+1FNwMFRG;6n6Ig8;NJ__Y!~X zKGvGOmb_)StL;uU8l6JE~j;38@uUG=! zD@cx!iA~>IQQ%a$c3-?=FRSf{wXuDj*b>pE)YL-$@U{F`Nn#2JaBLcdp7GA6;z0iS zA*r{Rn;HB@OKW!&)D!Lif^7Mg zr^dyuS^Ud~CbqItK1%IV##f^8=x5y*nA`aa&NeOKE8kkSpTA)FifYz1kIT02WrOK> zQ*nMboJcY;XGYc@d)S@v6hcdol-*RDvf@79_A6?CS)jEn@TSCG5+wqdgzC zW(N(}_3mj+duC>$clG|f0|8+lc&;y=SAAFiGu-13_YQ+kSvJQ_Fj;kSJ$HL&VSyLe z13FWMf(sg`_7ZZEEW1nvH)x<*naSnoOafPFc{m>LGe9ngDz3=vtB`0HW;ld#hY~a< zspX)2K!2-7k+q2XSCGIV(>hSDTst5~uap~1zTrF76I(__^^cr7Z&vi~#F?$BMuj9! zBZ-faBqU1~JOOx%F=h=TyX#Y`-ecB!S0xt7{IGBTC z*N7%;$a;H={l~jj{p(xV=|j0~$6VwmwDOY{`H$uDbDWdVPXOp zKAquT{{mmpkHZUsM6Zu5P>X&XQII1VsD1c1{COzhPfx!7?E*iH^zh$*uYlXQp|0tQ z?I#AFF>v~i9CvBl1=72N@=idXptm{PofgVt8|lZ^MXD7}u^&5`MS z+$stM6_zC$?x5JikCWPoP9%p#RqDOY3{iwZ=>r2_SCp$ObdKDRxTxC#X}WcE=@A7K zIc$LBpghYJ9_{4gF4jaC&$#*4aY_%l)LWWo8sMK7zFGVFX6?ky(UUeuM{Q1?vN?I` z=A4v8Ikz0N**@uK_kkS&9zG^oYU+RDBjL~L& zJKZFTljRCFsS3V!)N1Y+j187jp>UIG(=A6V=sXnk;y@_q_(f9C0VrsgyA^Me8g0hS zs!dWkr+CEWxn_LftX0Ub#TDC`JXS#|UKvN7B}SWN=U~oX!)f8!TBXG#+9|&iO-lMv zTi&4bm2%Udf2PIgqnw6(KL1qUaBGXY$YfK1k22jtrhmrvN?b)(_gDqG7>LZB<6>?g z-xUI|h;Mnr_N4A-^O`C^Ib4uGvZK3|dKp)laDUn#z%D@%(jtkSqN$5(42fRP?tRIK zIzMBb4fd0tnlM8zJ#%ookcgh(RCieTP?e!xYg(sTy+2e?h&E+C)CSisZqMw?%=3g8 z!n^gHfh!DMS7Nr>rU5bO9EDWgnE>3l#6DOpFp>}3JcJ!}PbL$cHaAZ-&M>i8VRQoQ zB?j*+nK1>?r|cO+GNz1{+xbFv{o!Mx`5nB{@gB%tJ{e)gU+*= z@aZo8;r}uro|`R|5`$GyUMSG{;_Q%11W^LZ8ZX}^T)I)?c{D(rp@~qyp(qZHdL+Y9 zrOUp-;uKB^Hx?Wf3eLDm<2fbF6!@)FaDH5Ma#+n#oDlMHnh0%;@VQ%y2a93U!=;Mj zc&kShr|e|6maDBgH=H)daN3O8bx5%w6y-!e_~#joNpO7ybd6(ThH4_&$rZ-SI#*kN zupx2e^n#o{XseW4(GEIm2S0%%^|{HRui`=-B-!PAq8b7K|1ng0d*MJcexf>wJ3(x* z1ct(RlSD5jD4J=d>PJ!d#rF&rL$ql^2ifbZ8EAwc%urs7piVM*oI+S&X9r)&pGnDa z(Qw{f98KgKUemuIS@iK*iHBKxL2y?CdIFBUB7R5sPZ7m>#K7d2^*Q-PPZkOmg<=nR zIidW5{)R5-C;9$GkW39>+hrh@OkzB*IQ|NDXW)aqS}v0`?H%YP0M_9y!2?IJHk=!B zMRBE&19@asoN=28{lO&MlZ=1K1m12h551zeS*U>XRSJa|y4~wNF5P&?`PTq(LO6)B z)>lwE>cl|;xG`%WRN#szUnZE$RTqL<0@;>)!NW3BJ697IRSI1x7`5rB0v`URmV-Mg zohlwXnlz`Ay(-idV|#IWA8yD(7{`Jrd#quM76hww9uut1M6mXMOX~~c!gvP9MdZyA z#TEa+h1!n%VCdLu}5mv*5C-s8Mo*Sa1Fe1=>Y{C-Iy(c0lgl^^mr!P zW8Yl`M){N`Tg+lyXnQ(ULPb|umdzJQv?qMb-Ft<3MyCU<1@eP$F%ZY)?5zAa2Z)`O zKLG+&t*J~UXR9oJdg4H)YO+0%mUV~xZMZrBqTM*_bwIjvcR3Jx(kZBW3(d?(n_Sqj z#V#<^$@E=!IhPOFZPYN>Ilg{c3<~MGZ1T}CZRQDOu11j#3o>#W7dh~2yq20z_uPJ@ z!ban@mlGynP_BGVJzgSaZ6^Xh`n~SQ-8WbEJg#JPPi?!#&5A>nazDVAPz?Jp6&g%_UY+wl zlqFQDbBtE3sWKQg7T|JIaNsvxCc1GLagHlf8_lbLz3^6BR{@_7Y_gg)WiD0G4fkhJ z{kBSVo(V%#OT8DNS_(z3y5rHmV50r&DFxy7+<%q3Qm`Ap=(Za( zLGEh6Zp=_@*Y_Be{$Mw*=`kvwKN$!oGx?J+qcU7!V(y3(Tn1A&1r3p4v<9s2Fp4f_bZp_U%+wRA19R{Mmz%|HQq_dZ z#qyU$0+HxKFTJtUB&{*p{3i=Xh`7vi+Vb-96gx$=(vkv%Q7{P3xTz0{PiyUz{f9&k z1asOOq{_RT1!Zf0drrDv08%@z0i?Dr`c|n{zECNKi+sc)O++~emW6jtpa~E(6+{@c z&X?*9pi5D>fY{6Pm3mb=S?5?lFuiF9&Fi=8fQAc#E9*nV|596oaAk5>GEonsrfQdQ zmXyS><{yQFpjMrW!?@GJc1I6Teoi_U87LcWaz&2rx&#EXEiG74&;F> zG-wo@6+~l^Q$>L6-&&~i6-6F2{6YCT55*vI;q3!=ur$!NKA>c(MaN`Y&WPau}Bc5hW3$>D}GgX!WH;Z zZR$=`B_3jJF)6I(oIVtah4K!ASXWmBE!5shPm|-f2<=(7_+2vL$>cEZJQ`ZYY1$(i zWxUot!F#Z}AX%Z&a3%pd2aBX&uygsU>I8>FF~YSc1l*4IIPE}RwC=0Wx<7H_C%eT1 zvgatkYe@G^2d|+y$5*`OdbW0Z7K|D$WAG-`9VqBM%{(iY;BY(!#*#`Zdfgrdh=->Z zyn^VJMmQnV+Y9EF`rnz4s4>IRtSk32OJ5%azq9f8P52!+@ERwsFb>epl0pTRfhPVQp=Ed03wU8ppJ!a3b9RDVtH3LAN^oc}+6tVYBI^|Mu_dlp40`JB zaQ8v}WX~Y_E+SP)R8;d*KkD1ulEl&z=5+(4u45k~Eg7v($WEMfXBG_WeeAct0<* zL%JLmU{6fCs4_sFs0lXU2v0tpBB}-&E;v}fqY{xXjfpdemBY`Xw+5A)sRssJGrYv6 zCA9eB#DA$+hA{ATG69SZw5gGicmt{wV{{N0vXfyq0RRGTckL&bY+=jv8g=&q$!T*? zBf!Q}O0?-M9V?TeEg%~BxoWJ{a54T9m0+>U`EFkDkS_M1c;x1)nb2y-*zlxhtuuG1V5v_D`0cEGAsc2;7Ufi{9IO_$`|+B+S;vdo6GP25J0ORYv(JP}<;3TrOH?^Q}%E z4Y_pRc3?s12Guxd+FYMyt1jSAw;6oUn@?kU22|D7#uezM?)8~>>MpllY{*t^#sM-S=`pS6&7w$~7cPlf z^df}xA#K3}^FtMEcR4)qH>^=@vd;8cCue>Djma59# z^|L{niFvTIYbCWyuJ#eoMa)b4^>pyM#-*`CxXNT1gf(zW_jNt*Y}nQ~pSs=C|Lhq* z!;@?(vC6e_EbX&~u6bmTS!%x`PZ7<|U*bF3FoO(_@sqIY(CRSl=~8m>Po!wBlI!I4b43{>F^+jGo5=G&+eW zuEC;B=adp|$F|-e#YA5?fr$Te$4_?t%CY4I_S}w_KwyUchGJFKInyf>#J5E#R1QS3 z`cbq71gBM+Bh)Sc+-P|p1sDbYvT%<$6UyK6Y_tvrN=4d7oWF9eslg&mj+O%Sl)hKs zFB+jaZS)lsl_5spl?XM;b155K?(dp6pr?v|24w2MHB`I=R?fHk72tA+){AdCc=1}b z>T6krTBncaEDIIRVAgR4_&1FD6`%STSKT!@cTAj5e^>g%opOu%ULS-2z&AD=;=$(C zDt+KgY6w4Os8RI%QyRqye>w*0x~Llg7#9rC2PmN-fn>d821{=E>qaOX5utn|Y^ni; z{}K&A(A;$@nj?Aj4g&cUzi(4g3d(pUl2)n4y1SMevsI_vho2ex5Da7qbuGqG*MfQ& zR|d?8BQBA^!!UI0COeywZtOjdU`3s~qtoS>yDG5ZS+v1>t^+t4al6TQjD+!se^a$5RDz?6W7T`~^6`pz)3Oy}&@Pm=R8{HhE47B)-2rM#dyB=zd8 z9qy3w4KAryJH>vADXr_X?Io$0?i?>P$PE^!sFiJ%PRkJlCQpqe)Y)_P41G zBC!k^PnS)rTwUL^Q`<)=&U%<^(ThDY(D}+!iE8988L?k8h7;)y4}?FHlH-=cr@MF} zX+y+i`WHCr=dRR>+2}9$exdBN+Nwv`*mwvn=GQiq zD9$Ls38*4SOqS~!F9iqBh^#BtMC3(@ph#A&q5yHFlfVh>++-!#x%ANmjVGL->%>rV zt^47CGj7U*;!|qtkch%4gmf5^S2|ey0#3Fdcz-t6GV5aERep5ALGaB#B2)BMaMI9Xcuw zh$trgyqNU!_)&8B?7`ny{D2q3(n=0G)9QedRS~5$#w(N`tT+9=(!(=-_FUuwG+21j!RkCrJd|~Cr_{?^oU<)H zTz4ZotDxR1-N(}$T>zf#>$HFjncFB*z@0)16aZtVVlqY}-oD!?l)E8<3MlC=2e00R zdr(F61`j}2fK!LWj3f+aNnE4)n6!t~KjzuqxypLS+n11bXI4zc6?p01Hu<@sepZ68 z7f18ST|;8nxBq1G-|k8Pq$xLeP0I8(owA}?xTY5`|6XDnB7bh2VDXygaDCLL<{a8t zz62P#JoglAxI4(EB(_f-AnD4=dj{u>Zo6xvN=m4mN0->Z?rcaPvhH(Ll@=^=_!BVS zKQ?>FbGnzxzOnzUKcNc+&vxOF4W>0K-ANZtiVkI6SU|h5FYUsVL18br1dtv$R9JHY zdO#W|948U%jPSm)JkR8RD>z%5ZMVG_xCZ0oYe#T8P5A1cJ)4(n(qq!C{RJ(;{k=eq z7NF}S4T9(g$MuDO1ELp`mz|rTl2U@B6Kw59OiGU12%qla@c-6^-C;8de*l80KpaE-k{XAe)(X&r<<=C* z&=;phOFzi&2Qs||eIkkdgMdD8hMGp93ovkA0Hiij$u`K%-D&@{d%1?VsI ze2Q3tPK_7eDf4{hvF`aYHi3Qn$;ar>mk7|M_7FFkTIaQ375zP}X&OIpviX7YzO6r< zKt;i12;GliyuzP~oowQqxA5Ta{9KFy(*@O_jcUl#)Yu5%=U@n%gP(TK!7o&zi_&a% zxY8${%)u?x-pEgI2vn?pW(DQq8z3y`796nc*Dj^*-y=9>*;PehVc|sq0f+KP3`#tXDQDe`^5U9wam8-{5G@T; zR0=2BBS0jnatCz9s&(P?1o^S-L(LxMnkS}VE2_3V4+qpKUC+2FrV5mP7R9DLFd=3l zt}bQz`+;b=Y*_diH?OLHi@1x82s^#z7p1g-rXNETfj@v)nVu(wyfu;Mc|G7Z+DZ#d zIIjfy%{Z?Bz$mwXepx?2x!8}(yJnXD7_Diu2nCttTB0ucReHI-qZVJSR(!qRSOWT{ z+8dQkB0eMIfH*}$CPE+Yy1X2i2;;JqYqLT<2XawgI|=h-=j33>50gp@j`}p0ueC!P zUJ8NX=mZC^4@82N^b07-axxIl$@{~+DPxr9pV0-wr7(*WDEFdPKlaR2p1TtZv*s7= zCs`ozk{39O*T{w9%Q~=%l;U{J={p9&RVpI>$Q~`7=U)H-WuWF~#ApJ>&1?wkyGdoq zaS^YP8K*<+_=F3}&15!B@7VY1tzWlEl~)~a&+RJlNq^HbVLB~CLq3ljdf59r60cC27EqXm}hmn3Te85aZ9NU`0@yA@5X;8)yD05S+^#~r=Yq`xUhw_|V*e$#x3W4m9QG%VTAnJR z`fro#M&Dkpu!UuG(kiORmeh{}HF8bU!7wOL`&{r^3Nv} z%%^pP`z6tRM?t_}`Ux{-(^Wsb`53&$km$vuiqUDw!IzN1mGqhK!YAlz;-{ct)W2Y% zK;Xdr_qYb-!^CMhc(7XVGX^0^ut9p@6$LPqcK#U)xRWXU} z8pQ|2LK4Zh&`ADRtpj&)zf*-w_9}wiygTE0AYc=bi=f*58Wm>>?;J!Ewoo9jgAk_@ zC@$TPFv|vkeDw9em@$RXGxo{^k=?%1pNd93wQKvqJMQLv4>m{|2rFc@VUzKc4z~%p z$UFEZoEcN{$wyotX5J1bbFFj&`FKclV1plx_A?7L+UVdPbzw1@U>Ldzv?)Xy!E~z6 zjTy|3z#Z_QF5PyhgxXO4pyV**fjcSs=3^Sy4PRjxYS&lVJKsfBYfQ&pT~zuXOP*$3^{YFYzbpLu)rvaJ z1-Qqq-5DD94t)Fm5B^(L_qVa#-|V`-egAv+b=}{_c7L<${`URt?(4e0jqUzs*ZuAL zHgX+|7#!C9;a$6ohAP9@vosu;=wm#ka9!_Y^MItz7aY7WVwq^A6d7MDa$K%VH)06! zfj2ovQ?4wv&j!X#LB7$!&2>FmS&sO-rcXNFaC;-U;fWL8U`-Wd!Kq~DkK-STCUbQ| zuAU%-qRv1P4Mp4z|4d4bi-%8l@z`#h&ZD3JaT14t5Rd;ShwLBWzPZpDQ5Y-VPv{f_ zF|sFh0R64}H~7?1E_()x_l{KBnEuu@RaD^GQn@oD|JEyXl^oq24D{Zr;H~)_-k>RglH-8lYmj0~izRLtY5F zbOeY?M)H!02M;{=CWElJbscL4f$^NH7o&ihocGc3#(VTqv{wZ=fWmt0Z9) zR}P&C=m>C^oRYSven3{z?d<3SnyQpg1hY~Y7Pge{7jM>G^9jCH$pFpTl@w{21?B?P zr&-;YOSWn?_8$iEf8iaCPne@o?|{U+)rM%Cym=~{B5eP}Ut$(}t#;=kl2$+G*b_Ts zr;ic&16Hr4%zJn*7KQ~Z+U#Mg^~CRiqt?6(odEbVDLJkYKHbH2-SY8y#9TlKn-lq{ zJUNNtP6wS$bjOv9IkFui;m}wuHxy+*(gT)(w1qDbBiRwmJ@+3WQ z+>ODYcoC(efMUhyy5gv#l|VSP6C(xcilUUbCo=auLY6Yo$Z(vtPzZ=&WOFg|bt)z{ z7b7+~Tg%-fjH@U3jy2%|E3lB7oUAX%-qwM)vrxN9r{&@$7)rN%hk@kKDD4759pZlA z=>z_Ggd_0cz=9A&KpZE-%qg{>+#CGq8&1e8%|WMvGg-lF*cl^Sb&W6*ZYl{a^(Mz% zMoK6*8~Xbs)#(wbVrq;ZexI0WMdnZFSZ|&V0~dr+W#ikc?nXl{ws8#HN@F7m{9VP$ zO2xG3z8;lK|8LQ;wU@DPv$$ibkXY|m^z_8p{CDVy5aI*Cx`X@v6p?J&Nasl|V~H*? z?t z-^7mYf!Hq2vwY$eT=ZE$pM1}}6781LbYYOO<0WDoXIvFQ(~~(jlFYfP|L2?oa}gK_ zfN}E!@X%o#NMS(T!^vVL(@ZG_vZ3_~@CyOSNB%V9j1{)vgi*qTLBN}!(@K{`Fy7%- zi5UIt3ay+w0P2eC4RsktY=&Grh%X1eRZe-bOKI*-?Om5B zi_k?mq933Ww9fY$QxAbU>9|-Wr$;ScJz5v9 z#C}`My|r&-6m$t8 zxM&o>rX0%iE!P}1&H<^^OToq9+%7+kbK7GQkj_(c8qwrD*JaWICNSlwMY|DNOKUTX&VfaqGZvE3?N294GBJGBERIm;Hq7i*Fnn}EfPGQOyj_BH#j6XY>p8o*a|*ZX$CqW z-9m`h-rR95%V;b2ro@l(KIO5Y88PYOE3MEU$Y&l##X|<0uf?fy5@Kj5@wa(h6i?g` zzY!hu*A_*B)*_KM^LkYlq-0OrfFGZwiUGAV486%q8Aes?VB_gMDT`>Q(IL3S8s}H7 z#}N6+XxPv7&8xbDJ=-CfPAQ_Y_FyD^>b*1mosi9Kiwa{XX%6(&mZmz> z7AqZO6MwF=dBnK7X1-0};(C5pvjH?5iE{w`9P~HcvpEg^#y^vil>vd8nI8Nh~R=yo@ewFrF%s>VFpe#(Yo|A+$0Bo~evgRXKDlgeOVuoNUVT9vJP#XW^eo$#Gx6 zr@J_c;Of|R6z6pRAHD{)a9FHvsGwf|8noG0BY;2m72ud)&)i0hO$4nea}O>yIS-=w z-x-cFvGyB^bbei!$B@os>Z4E6?xAN&3v0+3up7`2(keuVWx}*ABPPrRVBuwk9T5S1 z>2;G+KK&73cx@&6?a5&ZA}V|%wC;$9>OHuN`{Y(<*@$PIewVueiVEQP6Y`yMg4P=^ zs&J9L`%09;Qgg&vP;Ga@*+=m^ybT0D&$tZ)8|3N7igE-^Ejm;hC)I*56R_Mky%L2? zAn>sPTRkW~2gbc*KDtL0Vev{M!%V`V9U-8LQ#t~$rF3@)ERkgvrGB>lZ`_=?wpqPC zlHz(hV;6MedL;~7@%FB1nE=zFmqzocIw}F#_S~f$%-^pxQYdM1dYYOZl#!7*Km5Mtsb8V=USP2 z+zW9lkSH*Oi01Frt@$hFZl(mCx=x-S;DN6;kEpk&t_<*6h6N(=D+FW`z;+z96PyS} zA%b>_%^nWx&qObVd%zF)Gbv$B0(|m5uo%936f}znSwQ1d@Bk)Yw;%kxzr|bMNByf{ zO%+V$3nxyX%asW{97$Ck;h`TY)PPBzgVg&?;;k~BR8}1rN3f@$$@M34tggr<57gDC zPXNECLTzRCsdY?EkrIkBXgFXSK=4{FLmON!@E1z_yKV4!6_-xmXvb^hqv3}Yt3Y7~DFiFrf{rV4%_j3>`%J-2RhOx&}s z?sy|%2n5sqSS&n=D^!7rAvBEp57=X$$2p)V&Z1tj7h$g%bKqBa-4K*uw4G^8Et1$8 zIQI?n#o$u@6Q{ci&8czhCkcNA8_kd}v;O7yH2930c=R>JmcnERKq8u8Ie}<`ufC?m zDbrE*vKk`NFn@=k+N}(POOt7=5-&9tlS>V7siR!hcbpZ~bro6OG2XRvdDzfO{i@02 zb|bmn1h;dS3oUUT*z`clFoHWPud5Ng;ITkkP+^e>Ul6AUp0=oUpA3r{p}tiJomLJu zhjq-YB3#HeQe6P6KX!tnaz?F#hfa5qjmG-%79V;zqpuZM_bcbZ6L_$%YAdjN1Yca& zavaX*;uwUT>yA(tAUG)ZCLuf?)eOO!H@CD1+srh8*0fqBS-$3K&jgAJW=E>qqaVvzj{ zBnz|-QI@{1EO&H^+KD3IpSCNYR#Mc+6^=5ImN1b8GMO5gWjZ})=l~wG9nzBl+ST~s zWm;TVl-dYGsN5YUUyYbk5q|bib#n?xaIrInu*_V#k#i{>98^WFZ74Llz_oyX4=2}# zsyo4JMKZI3P@kP;e``s2Z42>V1#WDxG<&86Y&i{5AI!`RIBuVifN-{g&Tw7ix5ebHxGoyD4ZO&O(s~vN#7?GSfD-xRD0xAzoX6pZw0EN ziHOSc!pn*8ek|*4neJETATVHod!DGShReIn0InTqJ5hjEqi@Vi;-nov>n%q_Tfu`a zankw9LePU|GhCv^fH+Brop;sTZ0&TIi#f zm@VtWR!DX^fyw|L?d|*2c3qvugFQ3i5P<S(Lu9jC!%D z5Yd{fTo?2c^J=%|n@+)YT~;q-$Yt5Q?A#`}Cw-|J2jtnh{J9hQMK&* z{c^oGKLLG3s=cGE9fxW$#60}Sm1=b%4#;NkSqb0C9iBVP zLeij3qb9Vs$zeaFu(I|bWT2%9ZmF_)0Jjy$gM>f4k`Rzn#Gp(-Mf6T4WuTZR?}K05 z#a6N|3UvUrA@M9dZ-Y;F@#*K@7f2OkPyzX<@3Vty*Aaz6VChT@%R8Z;fYbGNSWpt7 z%p=DNPo%#drLhpse|BG`9pSoX*==$Ld^6iec&!(>rPhJM#a!O;L}@~F!LJseFI5#R z2lBgUMZqF};BtlwwU3JZOHG2WGQjEdnq%d1$dPI|B65`E5k8<*oJl5IXCdbfeE|OE zBeYDDm4Zd2VNL29I&&!NO!*7U9E$?x8BEX(`z!S=|@{nkLYvE5! z)CgS9PpZd=h{B}0GoIQ5?=cHN60?}36$Ho79!KT%jgVFf65>s3nojJ1N`?^C&u{J_ z6d$p(b?+r{Rolbb_j>yj-GXNjn-@0KS=A-l))GD-NhKUEMccE^_Na3G%Zs@gQHgz6oi3w3iM6p!? zD@WnK&i6z@r17voM0r-MEaNf&q!G%__rlyN^?1e(l!DSFm{AG|w{sd*ts;L87_V}> zp^Pn<%VS;{s_=@5D56|#((<`0Rj1&!A)f?Ys>{G2So%$H=1b8BP~T%&KzEY?tttd6 z_7ga0&xIFAJ7CfQckvWri;193JPJk;n-{*4xGB!f9^dT0qR(Q8|6ncwwicI>QW!M- z+(~HHQ$TW(h;N`#yeNn)`;z05TTpW!LZcX6(gus`#lZFea16XLnA66}^ae){xtDj1 zH70wYv|6Br|HjElU}CwwrZ;l4jlj*8AUC^aI`SQKuv(=rOla4PI2V9RZtH%^f{XIt zA}KBc+hqX+R=QaTOf2IXyTDEJ1{PR`aG4?8t|XuIA)aSO6!cIr`g|};DZD6D+<>bk z{t8%6Q|VAG(++;HA8@KtEXes!PVt*C?=`JL=m^wcaTT+`hgcy=!WG3CvOvng4VT)2 zOz;EyJt7ZRslDne9CErqE%;o=Ev|5Y>1-v=oo}W@P@P=)qD%m0ttL`yR#;}M9`0Zv|J5@-b?JnfBqB>tzh$|c+ z#2l8Ct2*QEf40+p>SV<_z&zhDcvLSD5#x4?knF|)j^Vvjn%=4In1C(pc_w0WKL%MS zRRms6jD5$!f3hIyTb?C$l^B|(W65pz(-f)woubp^eO@B%AvzHOy#iB zf%G9-z}zueRQWA=;GyCVCob75YV3{a|8i`_BhIsSjiOdufs;5f9=oX zV>v*BhjaL6QgX1^6J^goI3i~Z|4SLH2Qhr!NsJ~sgql;(&hGtAfZQ}vsv9%RBR~x< zHb6K&7P(VYK}97SL4f1^); z_X6mVmQwEYHRqiw9c8b;3wQu!-8!nOQ~_2?cf54xV9W3SL#+@#XLHpISij%-UPj-_ z^d5~8f>AMHaJMP`sQfp*u{Z+_gg#Ker9C>v0Tu+n7$iY!VkN<1Y8 z{4(MC^uHbYbS}W;xCB4$Ii33+q0|5GG;Kn(UQ>q@9Nw{T zg{RT?cLs&ZugAuD(!W3>`Z2|FYYlvVe*HB=iz!dZosX+9UHe~88raF_wDdx4e^_Gg zqo^K=Xw-F7yrwgNMx_7|$)ece1#SUdXB}tE#Ng<}(juk%{E-S=V=ay+K!`$osM{U9 zS^1&N`m;0OAL`(2L@)9f-eXOcr+%lltrZg_i{AzR)FKN!FkB$=?AS zdUxGk1bk1bD*_`d@QT--qTQcYLn1GP=^5rTP_Pa(CSarru$@`7)KA?I?5 z4M)}VX-_yfU;D!eF3Ow0ZLUs71a^{p1-F{?9v2VAU0@17{T!J6@U50l{;+ zj^sA1BZ;q)AnbI<6UZ&x*b3&Y8CHO|=5?4nwQ~u^iY|KaFx{;ZK$u*~if-L(eDqsn zMfV}{nwP-)w?B+r7RWG>eAdl)P<&Z!4T&h1q|kNYJJnUm6g)UaEYg|1d2pcM2sn8+ zb=X*b{~=G_asb)8?=)liFYY=3;cr^TH|kQlwj5Jxuxdr*l)&w`bXsngJqj-i!LxHJ zdgG#R@LrA`Xs*QWf%q9YW6^oBc8GF6IQWcPCRhnO9ODAv>1OQ?WO|UCIh@;X0pjLY z3ioNhc;?vc0N@XNy-)k)Gspf25Z`>|=2Gof&m6lGApYf*o02bq#1fZWhii($t4kCG z`z$^O#d9$sN8T%7QYJ^#Az;;;DzA<15Hgc5A5YC^p(c?HN59Sn=8t z0s;Pq5QV)r=(I&7BCr^LTfNb8Taagsg2tPhED=1VmeB~=J{^p*8^j>1IhQ`do?<-f zM4TR$`qhLYyhr5rt;|&*x1k3Aff`u5!^hS!TR`$dPy(8>?x6NZ+MG(*r02|#0^JMU z&G~R}&Bz`bD}&frFPw4vR#1UOF*v2JRI%$01Qa9(#S1kNHIkdo!jlj?aH)W`W~G9& z83YJ!0eRCq9l>1DH3-F#FhN%@<_1oqi?mOtNhuNxa-3i*qir4+1%@h`4=CA}2Fps) zUZ$AF2T7}d=j8nvGI075%jD*v0LVGyHlfzVkp0a@UtzDYhN0eZ02Y(=)}Jq&0D$Ax z#zg!mYa~JXDftN#5J8Tek00qgCn1)aFYz{qhYbP`}f0 zpJlknBXuK^6L&)#A=41>DVS!$j)u-J;XU2Y7Ie%{M~ey22{TmTlT@F?3GXRRcgV;x zp3jq4A=KD@DRv4NlWmuPuI&8NL>@3dsTvOeQD*(gnd{Zz%BTzJtxKa1kT$}%XX~{) z*?MgtFaVP7KT}4Q^BzqdOyZzhp7o6v%srV#oIgR;_dTj!phG1%te-TmJOfYIwzeZXj-|RkVL*{8^=yuZ6vg#xUVS06qAC_ zTwfnT5~kcNev4Sd4-@P0p%H6imy*-1m+0xoxIP%O$KH=*Uk-2GhzQuHv*(N@5LV{d ze70i#LE@jxn;&65M|-UKkzG&HnX0X1t$IQ2G-9Z)<9SucO$M6C9hjnSl@X0AvgKGbwpK zSj0cpBR!|_d0U|h%z1ZvtOqwSgRO(ryY^@+I55kqjas<-4F%`nfNGE!1yN$bTf}-Bg=n$JAW1RWbY8+A zImM4Xi>-Z>e_KS7=mh{%N|+IXiwpDSAQRD9 zr3~b>)gmpVVp+rTblgbam!*@wmegRmlP*vWA=xuR2=zoK6p93M8!Vw2Sgu=N$X>PD zM;PiEHN61+eUd~&`{Jb;(pz#aZ?IYVOLX)sD-ay(y3aPhI58HMcuOJK70@q~!@Mw) zOb}I^AE>MM=2hZK;Y=kL?u?6sx$DFSujnH?_{vR<5^nTYa6dvFGLn^qZ##}U!x6kQ zeAwGIYEq`x3Vsi}c~mTyBvQC8JvM386oWHbrnTd!gq8u1KLUem=$lPP;Sp5H1L7on z3u)U{s#Zf*hEKxFgG}Ir%d3ROkXRB^Dg|eUY<;yFxUNvfW#ATs+bdkhQ_DWsHZZrt zu-4UeeLO7OHcWI~%2uitzh&z`_NE5X_Z45YY1lPW+klL~3&8kH)yF9up}G3;@!JEUl-Bu=3H;n@uWsOyWl503Qm`EwcbdVo`y`VK^v;Faa9{KUE{sD@pri5x2S3ia zz(QVFq5duymefMsB^fO9yIf=0&z(H6ARVvKYdOEmcXIYO7oS)l#KfF%06>K2yNeTw*<`XGaaI1$f&duMkV2AR9vkD3uJ>Jk(0j7Nf&`VuZu%6iE00( z6H4*M;Dy?S5WgCLeg`q$VbM3({|r!ikP#~rq@p1+S%QYl20)i|CSs})(=04b>_NJZopNWRK{>;#2G7l0nYeD|5a9j zQ>Wzyp>P?<(ksn^bdyN$^ao~u5U#w{4JYSw>oMQ7c zl{F^nq+i3aBO)$y9OeoNzs-p&l!MR2LQ)HtPN=}ZEF%~0f-iBy3Atqzd$KIm%cNRO zXg^GBaR%}U!Bw1Hw3K_4As`tnxXFU2Alkln61*x)1ZYycUoGZV>5+E(g!mQfz@s7S z=8Z0+U;TQ&_DjGNlVzD1=;j$Dg1Zg%?cah9`Bt+7c zjQ&;BS-0qe;@)7aV>ST-raF5@sUaCG;K49bfoK~FEW$$jqTYW*Lw#raE4d?CT&B?< z@L)wcv}jE+)W0NQzOBH=I*Wb>^g7(T--B zxEe|{Qfp|YXjP>p5AlaP$DyFmm2RH6_%&Yz3_U1bH82O(AMzt0y*R7c_c!Y$lBMYZ z83BRH49m~tcYHLLAs1GqRK8o60aLC#4E?cq?Vsq?unYzMgT?(_aFAPxwZ1`com%T0 zcY*8X^?i!@=ztg7vYROZa~Uz&_QVpCbxPNLUODVn5pI0v$!JIcJH&q}mHYRGv+PL; z69N@73!g-ZNq>gxOtwkaCBML1_}=u(u(bZvt}hNCHd%4vIehZ!)O=z~#aOYajnI(Nc~rr<;QhzI<;;dtmPT1$T&-$w>c-@X>&-0WM;O1!V*YXL=sjt9}9p)OacR;2i{fz!DHDX`C24qJXXOf#^H(URW2HN z)txt7Yr^eZCji2Sy_gWQUTW_@aE-ew#L*|_6htq<95Jp)%RF1y#PoXV_HM#SJ#SM_ zXEybAJL2#xOO+t<4ZINljktQOgq|+zV^2;GOZrSD>gNp(mL`3u;{GgPO&QmzoLdZ4 zW5#Ox^)mFoN?9crBXRd4$UHla<%bzfP5Op=EQ3qMS!(-(a8+?q73fQv@FMhXZMwn>5C%6n zr$U5DOJEmRQFV$6Dz8kSMT4cAhZ^dZ)DN<`HCU2y34#)0XOK?rPYinRC-A00R&ym%5V)RXe3JI=wfhnT$Ai+8v2yBv6M)!8-K_HhXHauen z7$#{K62jF!uuL?)VQJAp`33hp9|G>ZhyW%xL2!za3SN}Gr>o%BqomK-1r3la8ii?_ zKE4fA8QGoFqTJyUG>uEO)e-Halq&ckxvu>b#%~DoHxf5ez0fcp zC^6s#f6DU!9$-8lc>pIVli;wGdL9R0p$XAA#nge|@gSAWqg0|{jI>K0HbEVB0`kLN%U9)aN;QBvx#6viyPVc4jwGpp+Zt)(q85V9QmH9kFN1V0A*Zlq!3U2Qi=}M z`VrAqu$?XBHnCJNya&^VE-Q&Fl?{le6_tS+kmCk93gD6TWm(Hn>a!HKI{X}ABlnRLv zr_)s~lUtMf4r7|HVM3Bi6fsRg6rxas3`2-Q_V+_U`Px*IMsd z?|Rp}-u1qpR}5TZc4=~qN#lV*2{)I^xW~_*u zee^dYShVCk3TGdB27ff_0DX210-*z^sQ8vG0)5%s#0@$^OO|>GmvB zaNY|)jb}Z1JYxfW)cs%a{2$ryG{I{#b ze@gf_rnwY*!8K@!59woCz&Bn&fW5y;b@$)1hUdRnDBNCqhFli8E?W{B@q^PG~Obqs{q zB{AE{E-7HA>J^HpO_gs?c}YCE0!)QQ_c@Es!mcg5(`@*Qx>inRAz$T$w7;n}|FF;z zViUwab5@No9VC42TzCWsyW(CQ-nSLWD~b25TQJW$BTsXx%$k1h;yKLQotL8~hgZ1* zY%kr%k|PEjUIkxKCve^u)LF98uhww3Hx6Mh6Nd<9eIK&WD29=RCVDvU06lRi8D{tr zwlliWWFAz_0{ZIR)cRdIVpAD4C>=4X>Jr?Sk=&^jugRAh{rpzNxG<)6l#CGBs)Rv}Xnj9&X??Lju zb&{({M*mjPzr{)YiITE8em#%PqU@OWL&IeO!p~#%d9zFFbBU{9Lgq?^^-UZvTPIEC z4`8z?^Vj^4ctv199F2Bg67jt_pcjd6HF(_hChkz^UnT!rT*y1yU+uUg=YXs=DjjykfjvA_9GS@E_C*)z4$v=FW`!A7O4wt>LNcFhgHs0v zB&qKELg%a5%wXEykQ?*28e$sf97v*ntBj#)&g%PoGC`0UFDaz8G7F?0T8@tt>+v3@ zV0uOOA%0JVNU?$8o|=6ORwSzq#a9xOYWLPS=efXQvAoJ#f}|tB({az_!9X zo&S-P!`}5Jj~7YwcrW4U3jBZ{4NoXaIQ=+VFjSQ5P6m7up(fF!MS@;#@jb1>XRmf> zdd#Z+w(5H|hWA$!RoBx8qm-BAEh=*%<5}O14@*p5N!aQyK5(~HN1KdD3iz7o_DG*U zB>lVlCgEEPleYADuG+V1a4!Cwk3WIt^Y;um)z_uTz`-)f1ycml2XuV^Qn&()jV(qk{((l|BM#pn6^nI*G0s!^`ig-GpsF1 zHREgMxN_*cLTMWzp*hKijO;DfE!Z2hfmee8$CfggKOUT`^S3dPz490$djlFQ`TwJT z2h+dD=2-IY8#8-@%W7)25M~*A!8jDhh?&O=YWf zuI11t;pB<#R6HrhliF0t^_1IPW!A0~62CCokhh+m{3!Mt9<)b4WoA=pUVNh18`4~R zhJ7y3MEDWQ0!BC?I#H194|KHHE``HH2kM;u&a^^_&9|X|GowF(u}pL@FApffLU_; z;#g5|e6~{!2@0O*KNt2rrTQ%;U2;dKg^LG0HSAjT0v&NHz2OH!E_(W~u9TYN&fsF4#`d1=V+73KBNj0nfLCq$P zeW-TQ-tXB;t%4xYTSBJmc-~S7;7LRPXIcSSevV8pj;sSAVT%))d6USBMsrZfXZ1@{ zr3R*q)*);#V>%h^g`sJxVEoPXK)ro)tf)M`?N8u&crGOzbUDn9f2|Ab+uTByS$R>K z`GWnX>>DCgB-0_1cy`rNNhry##b2xs##$7drYeUc{r%MXhbf=HrRpX6jIR|PnQW`@ zV2q4(F=cOdX~RlrXWm89yrqf?pdX5t;WccFw_8;X#cMe;^|2z+NmiM5+tzYucLOY; z!D*A#i?f~P>FuU3^LJT=&O;n{yA#tigN{$}43S?VChaTQ2<0;!tKHBBTT)nkI!9Qlzmd>YY z=t3TPs9w>X?~5lmEM35Ggvw4I`&Z0BZV2rXbKo2Hsi3t(DwrVtura~bh&R0?@} z&8j$+1SQY`N;*`tGDo7G%wNWCM;{-PdM5C?=n&Uqpc4BHZSs>36%hR}@4dSBcxdZ` zgq|)$Y?3Eo^hxu3bss$GFgoXXVX+ln5(?z=sMFUG^1k1&IzPDw{rf2STQIEA4?;E1 z*w&ai4n!WrLH%P`D1(fstnKt}Ik(1yKgtwGGs7y(n*`_AlEt9;G?~+%^GtcYt{}k~;=0p@jrQ2atCHqtll{%FuPx)w~B#6Eh)J z=?2cg0dJxEFxtw#o@Eoz%6^`O^%xc52^Y9vD@IkAXA8HO zk`j1ECVge#0&!B(Xn4=l(~{JU0jpFu^az)-x_aF#!8>^+Is3qCSbknwk%{gU;vi|G zGq}|+QC6PzfXNbsj?jKZXZs|*D z{lT-n=u0D4_G7VF#3Q?m!Unb#@GAkt!Jx!xhJ(bMPi92sIfaQHZL|h1VFnsq?=&xk zHu~>qi2}kSyp&ZD#eHe$E{t51rVB5I#FFujnB3fPiJj*obT`K+iQqB#4;lma(k~72Y*~MWR zjajgxmsy_kx@IH^1~5upTa>z&N$20$k5-ig2OW5kx@|*1sldOu(SPK6YQ|f5?_15y zYmaq@kp+%?oFBDDX684#SnXbZ4^Rgqlf$p}T;)DoSX`4Id0lho9@Ww_Ks6>gy!Pa8 zKX-(6?*CUKycQhpsq5GG&E0L@(o;OHYjH}aK#sbv^~`;c6ANP>j3Z=FbR#tobZilWkb!L;a)aPx$!Z>^Q| z_+-p(XC%G@m{;74+F9Dx-+Q}?tGcOZ%+JJG*=i5xNL6)eRmb~xr$+w8VOxgW%Wv4@ zc+Jv`S$MOEx7C{7d1|sH#_%q6TFQ3y3d_{2I9$aar({FEgTJN??p`GY>it0$8ScwO>Sgw z5L+nQ&4bOdR;xqJ2AG))+%ms>fL(gagsZVnkLmBCHBV?QFw3$O9AdJ6$&!%^;e^>p z5{|nj|H;)edSrRb8 z2oZHz3BD5J0o~e1aZw)$Hf>xszw`fIK0&@@_V&Egf-odhO6 z{#MX;Y@g@2K=fU4FxovB5Hmum+H(wde;-kU^^_2Sm<(o_`r;E|@H z$eUf)(JC*Fx%cxgw6A7Yor3SZso5PcGJN93M7B=SzVhPO7k&ONGNmUsGHok-INA#n zW^&DqTcO~7@m%4{-NZ-b!Y^vH*;@i~pqEAbqLLz?>TM!7erxZ=#nV;-?#HFn?+9$uNU?tbv2{#Kg)$h1@Q_~4Ii>~i+B!>sFH;)h8N$)})zxzlTBl_ks zo!#`OS@+uQ=ug3q+fq6^KlyZR3mKAGRmU2BwzP5`vwr$6TL?6d9aD?wP}LrfjyOW2$TUtl?$;p4H(mKD^@!sdHbD+>0yZZB%M6t`#3QchXt9bC*(1JO0>?ZKo+^ z_l~~YMo4`VIdcMia`f^p&COk#ceGP(9?PM`#}(DS=6Wf=7e`3K%^sSApY<9tjzy;R zz!Ck$9X7jHp+jSz&fUvV`nYwo_LUU@T#Ea}2W`SR@>+My+`uvKj@F*=!9&-~KB!^V zlPkXGc=TQ5VW$B9fS;-YN)K@J{c&3_t!F`(trEJPJm|49mUOj8)P8cJbg`Q*6;#pp zj_ue($Q*R1wuixau|=L_?W;kh13#KcZyjGTj$`@3kr#Rj{l=8Ok#}Ux@=tiZZ#k7s zA$MLsqM4KG^A$ADQG9~vQb$s#u)-d}WU>shw7?Q1zP3X{YhgklN9)n3sdG452aUa_ zq4mJyLDnoKc42M%FPbmn7i{lk)Sq|3h1VtK!HMbnTuX)4XM__=*Vf+TCfb2}7k=dC z-lf-Fqh^UJCRDYI;&}S?yD^%Z_eVPi-T&UylF-w{S{JUXhQ-3hO| zeoucZOzHS-$4%Yk90_--F8pwoa+9rQaMV9N zQj3Qy-Z9hci+Sx8xn8Dw1oN+ENJfaK=~eN$=?}UtAbowa$apuE3}fw;0Cm(#g1R?R z)tdSLG4hv=0esxLrL%jI6IyRt!@&a%F*}~7X?yU&(W8`|maQ1iamv7zwb6gkAmr99 zLpq>5N>6X=uMq{~cFp3l$X{C9x^E3f*`)`qnxYTX-dG(gf(~;s>en9WL``kVS8$SX z*6X56+pGacQV_Xc^Qg^>9w;kswnBj>65d|O^=IT38TxMZj@mTcz8#6uJPz8d{A)bz zkE`7Hyf}4>w*JS27_Rki$0E&K2Y6ZY`^g+zR}WpWQ1imhZAXY?INZ8KGuW*sKhiP= zuk6)%T3XVYwU#68&WnA^1{ftP?`TFWVdYXz9wbEN(l#ErnUz6D^+e<+GL~-=cFmwf z#QiaI7ANfn?X;;UQy}5#qwL+5Bw9ZDUg3B9s6bd}(?o;rr02eQ@zzeabMBWWyzq!8 zV}7sbBb6P;*6y0E>G=ayzrN}`%q@z%rfpn897m?dE}QSm3GDOZlMPvx>w{a5-=Tc- zHcI2tQR~!@f=By@ z-{iaznmr;BX>smm+OM1lZ7uj_8=^Iu3#Ze|2Q%IOB>hv;K|cydHRVaC;f^(@qCWOS z558Tyt&w!sju+qRbdLVwnKLOb3SY*y=cF9T(RlTO_QXe)-2M5s;Yfcd_Aij zZxxI}F)M51v;ZI7=KsaBPW9>k(;V)=Jf!Ld=K>Zqy>_WSRoUJ|Uh5(7>zlfibp6v~ z(%s(dj)M8_UpGrPcPRlc~?O==XD*K;hPF33t+9TY(U?BPn){>;MCu_ zr``)5I2mgD?N1ePLxY=MpYm7Kk=~M7|8SQC3#8#S*}fm>rx(|4`-A)Rq=^*1X)p&M zU%Eu18&;Qun2dTJ{wDvzBn+d()k1jbzuw(kU5EA2;clPWhjZc7?CKo-I2gEi&ZonYD7K}&=Bg6g#{-}glWb_eM zjB}QCe)JCneIl}vMls8RNKOzl@AEXI(quEw0R5;L0F|Z3W?A ze9|M-+`S-_+p6klx2hhY=9)AZzmmzDY)xB!>e{!hA=_>Hld zrT^03f3YE&g1zccG?V@dlQ7I;+*t@mQolex?nwq^T>j%5`2Xla!g-0n+?q(v#QI~) z0MsenFHom&CMJ|PBR{%=L+DW$8uqq@4G?x*3ecRSBq*_a>3Kw1Uh`R;M~M29|H{&N zzQnYqyjrF1FM^5mDh#^R09#L^LC=#6^;|GdL^lHmq;SLW51XcAN8BfH2;3GX-2=P5 zG4-lglVT4Sw{#`JCPt_WJDO&29RM0NzET^J#gjTa*=S-1kM+vp;`_dYe3`}}FIj2v z1(fK_)pbx&&JZN}3SuL7qX?AJTm+n;E zvSh>=4F-nrl#cKdU?C7iURMJc1|TwjziDt)>WsHab^BMW$2?3p3t=c7TV1^8$Yy@8 z(%l3ge0hD+fP(G>0hj#yzxWSn9ekcpEWrP~gdCQpWT;bUtd-d?I`{*S^|}k4rEbor zV6eu#Vkowx&=(Vt*x8K@Jqhjx;7~Ac*>mc?oz`pC^k_fvelHUBub^cNbFSygK(IBA zQ;q!PK&HfjtF_@NYC`2w=1s{v>bec!>~b++ZDSC3?fYfiwO^P{DS+AG>T)Ppmpj%Y z5Pa3=Lk)3`Fo$B;RAxH12N2LJG5^aI~KU4)iX&rFpwuY_9c750WJNC#xv(y~;C^Ei(i z&PN3q6HD)z@UGK}OJs&i6*R!PT>Sxw)#lRQ}i(`B!v7bXNKNs);s8&{)Zg!y}aH{@Vc$#AX+M`jQ2<` z`p(xQ{w})7y@ZHCugvU4d|G(jQqW@)bT)BrN5`B`{lST0)|W`pD}ah2xQ`1JH~7vK z14akS575@;T|E1N$Yx7JMsySoKZnFP0&vb_)JpkR^ZSYmTt)r7>wFb(!EKBVk#Pa(q8{ z_UM+nkaXkGS6w*lwO!!xg3$ZHSMD=@0PzEM>|)J~uZ<)caLD5kleyLYe3ms#PH!TA z;ncWilcvs+jOkxph&U{4S&v3O1Y%*$cYpZ~T`e%e8r(iqqsA>AmFR9dP#b+vFj;HO z?n(8!a~h}ax_4gOl3e$eM4&==)V14nhLR><$}-}=&W<5Xn)LvVrKq|le{Ghm`iN(7 zu*5K|)JgZ6Wm1Ao>?&9cm5<{l-|sXC9!;SUV_e>oYzIpNsFRdWD}=P^l;84whsA}-OXPzX0BdW$N8^!>a>{e z;5I%>7F=;kbN^_*!R*Tn(M!Te%8|9Beug$(cQheO#uZ@}1(aSt|AHxJHG>Qcx_Ht{ zs@e;%ZL3Zt(dt7roBkyUvPCtA@ zcWSDeb2$&w6*i0YDK2iOBVh|S#{V{QC z#kqOJ7ks#!naD_n)*^eGoaVrc_T#iRksk@!J)#NO?Ks?(m=-zALFr6%YRMy2)aMn`4>Bpr+Q=zj* zDTc3324ZreJ1nBdI0dmt6J#@RL8g;Vm%brLeAtmP!~=n}7OrNgQ`C~RhddPrrp_64 zKX?Mf=w6$-tF(eJE7Ujms>9^(^wp%)#ZkMQj5K!B>NnjGAWzVXCvmFmMLWn$i%XT< z=?AbOrDKZyt39UB9Yj!qjgs5%#7(|tTh(G+I#E(OAmCei_I1t)B@xi&o@g};lMBgQ zA^*Z840DX?Iy0%Rql4ezk1fdXV50>F!`OUe&H`ZS|4q*kY8;vW?Fy}larw_fEoVDg z66L4NAHK?^QZs@><4-goOQiW>x{MK~&trx6jeoii7AYC0uTlMBS9|DYCS0!2<4gdkWi1k_BXkf#yO z@mOY|a8O>$Gvj@yK|)O?noYD{G|lxff4ICmbzHD94A;5@)T~jKsu;vehR!O2)6rQ& z5+vF5{#*EEb~@vz>rxowQ;7dGQu8E8mWg9_Z{p(DAm=;KP;_|n!BuI9IUJW)+VF>T zZH7BEaVmM`O`J;n5!^_6ly*kcxW01M6{|&kSK?8xinyjlpWIHs}gVcvMayV z4(k8V!c{n|ZjR7DsPSWXo_I&+7J1@@;FU-4s)`bQPosl+8sySASYJzY$#ccc6jeL* z@Gjn*5`uQC6Bz`i61P|7WKS*!Dw{?eCsaFC?}>AkCiwo@bWs`JLyXb)lk@(8>rS{P z==NCl0;%jCoVJ2>ju6L5g!fBQz9BKSKX61O{aCYvw>%AfZOP|@bqJ{gNM9@d$9K>n zq>6PAq4XmmbrS88ra3uX=@y4srbGK|X4fd<7EmZv(mXD?y(D;1>$je^!HWMsQVtgc ze5`qaG?TQaFy%OHPZqn?DKA35Uo74!l&WY6dCrp1FG|=%Jm2SM$@fhD;zw8V^4O%dP5AY&p?xmXRB2tD-LpowG=T;4W&72inEpPasF_jpKh zMz&|z>JbPTO{|bPjG@@IFIgd?Ho5AfJD@Z+GgV<4h>!YrU&aUlkw6o~xX6yP;T0n0 zhA$Cco%rHHC%9$!F(+7yCeeJ2H3d#o1&do@Nx!H+%KMr7;#1qm8e)S z`p=pECa*2VEY^g~cxoVLG(nk-`6X0YY!BnK(E1ZkG~q-KIEz8j^r;##+=GiC4Z5=} zPTzsyn~iCWszVBIk-z($Q$R2}~qN&DF6n&rAMjpDeG zBy!OlDlOFGdTU^UCQSukO}SqdM{Rc!bm<$X30+OF=K^ZS%&7hTFSWb5G}!Fr;PNh> z9fu_TQCGP7YY-UfOiuak0};sTLibaKc>+Tt2_`(rjq+tY4rG-!pWL&qXz`Kh8&i)7EDu<5lA~Q zbs>7p)Ya~7)Lo6{_;EVNiVwc!G)Jukx-Ef&VyQ>69-=FfblqAYe-~s-VC!@Y zd{`r$dGdGbRj+#cd=)&}krfJ{U}mazo61@)s|IwHy;J#im9-?AKQxk6T~Qsr&_y=+ zvg#}@@mEx_bzNkkK!#8i8#%J+f{aaW?C%Eqjr0sYxUs=rf{X*31my=py##>=S~3s{ ztPqqBX4?gU!K~0nU~te;zdV-BNAS};g&=SUTWIjRwIJhnM?v}TGC}zO)_SPGpxup~ z=p`uM?8atiWVx~PbwoFk(tH9yr|_HCjA{vZA{aW_hOq;k+PmOW++f|ZW!UNr1B>J?LV zg1~&VPLN^d4$UI)lpDK9P>%a}LEv3CcDcZyi#r^#GCsPoO$tHAKvpR*@M5P40zKF@ zg21hAtS5dw?#2#52jL=D2nuRwrYN8+!^PQs~CI z>SWme$hzwo;BlcK5dZfaEGR$X#uf|8SA5Gl4i*IdZ;g*2dTlQD@6*9rWV zU9Mvg$~xNZ0?b7$_P96AeC*Cf@BoI-~~PC61qM}VAJ$|MQmcG3q{cHu+)s+QEHkT{}B)g?r@45A@S z;w6eRoY$~iSNlaebU5f~>!2W;|Ls#o&ktjgw)%-1SLhIe;Hit47v zeI5*!hD;LDaEHwkW`?=?;ju%nK$^;f8)>|T{W;@xhi7T-;Y%TX3nXJ651 z`Et7B{e{GLoEsoahPmvfhp@e0g$ePt*Cb6V-ry$(QXn>o%qw3J$+O~0s8$#d;1F>m z_l<)~BlivGW*UssheI%fAyDrX{{?zX@w*{RUcte=iQ1p|yCJp?(bl|M1VxaVMoXry zX%N@7p;OEF&q>_1FRW;led*@o_fz5loGUFw@z`QGxSy!nkT$iyOLm1OI)Bdk48H+F z>?tZp;VMUBi8q|z4`nF^1hEz7&PRl%DF|`9Pn)HDeYRZVi5%SZpr?_i44?8YlTRx> z@u}1#hJ2dn7Sx;x6hX9^K4XUSayr2ShiqyP2YV4Co^UWV;@wBco__=FtNPdKD~8-A z=L9KLK8AN3v2$?4t}*oR1889reJ%K{?=9qKM3*wZ;W2jYw+v^yV^cl28#dLvfkDCJ zhtf{iTO{^?aUi#deajh|qhAoqW9Zl2g_fptJ09iIbeywtmg49KZ5onUBxb7d5MvtS zvUd!&?6EFo)TI|eig>3K&s>lz&7~$sPOPijbiM1u_0-$@XM)K2uGoVIKyY#f;^ac? z$5}eb=CruwE``Qm5k!EQlgvor6V1sV4W>Bd8pTL<+!d=%Gw(?|^LXp=MsNWAan0%I zr`(VI>1XrN$Wg_oNMlO_$n}WO<|xpGFB&I4F+AK4))Ca~M!n*#qv6~>vOh8l#QL%C z)rF*MHBd-peydGz=t4eIJT-jSk8s;%!fo}J%$J8-P!j)eSwqn#wV3{8P2%9OjHIYe zTy|RdoS0|YX!T0@U|NOzgKuBL>A@fPyx?*4#hTN~4`{q-GYxA~JU2X41*6P!!xJP5 zg{NRzP!oFil*_4Wq`1?Bnl9vJQ1im@t%jN(XiR{0wn9D!6~PwsNnNC2lUl+iO5NGw z;Hk92>@)Q*NN;K9p>mg>Jd%FIeo~*&FijCEfRW~dp~QvjuBEiQx@9Wl2_1mO&0TwY z2|tkpUQ1t>6I`@M$;k3|dX;8B9@bEUkDv@jS|Hm1ly7X}#A6c_yh|@yVWZ#7q*` z;vS!*YN3AzlD|_21th87^BHL+BVSe^ZCWYal|GQlvrjYIRwnX!*q4b)NWe?A(wMJC zBpcA)VU7)98D@)<5|MBo*13#uAoF3Cu?9w%G5pqc?Cep9UF3UU2Tz0a_?EWVRpuDi zNf0piQZ-S)9@E(&WBncqm>WyU{R7y^Z7WJaRo)X(g`u>Sgh(WuRs?tr{vYT$P&r?8D>alU7o zK7_XOY&6TYQ)NWj*@QUBGCVO$;`a4nW7AaCw90xTy(3@IeSP{+`sKA~c^@k0i$4*H z>XU|w0(|hLU=IP6x_jR}P5A=5^RvU+zJtZ1O_{}-M(DSri%iRgktP-!lM0!XV06R? zghh&Vwj!i%F7Wwm?}o4vLiVF*GRogtr>Gvy=3p~2eS49tSIcV}2$LU_JMbxraN4N>vLsz1^h3f}zIbe+k?}<9{_-XS)H2S>*yt=rtd`-9 z*31So5kt7uqb$1SQgWj z)QGipMohHk)p_()W#ab;X}gsw@2dBjLS7L|>l;mF?z`Xi<=1%PP9e@VIuCzr|Pn3jWqD6@*%kxN`m z4i8r_zH^Y!0@7h!(t`0~NI@~LTg8CNvk4^V_R!bSp4uEVd8I#@KzObbBJU;zV@dS+ z{jsw#Oj{Zx7t@e4DoLe_vG($eQSK>N}B(HGwaUrCPTX8*>zar z*Tl=CY5kS!1V4_aQg|8pNYL+@uY3`GBK}FR98VA-vl~|7XjAE6VM`Bsu=mC@vkC&x zNGOj1Tg3Q9|CHp#m9dvLq+g@2e8CqLFCrBSf6Ki=D+YY7;l$q5D0ylE6Z}6$lH8LP z`^mG0M%)N^;vI}6pZihjRjv6kco*bWop?>7Y6eQ%B^1g%hA@(9yoP9<9$uSjxF+RO zPE~F2`%Dg40TIyG1VXpi@S#|IkP5!MMlm_s2jq2sa;X0<^Ms!=sT3|38~m`^w)lDq zs}U@S1+~9dHUWM1MNA<%?As`?HsMP2G*MeE;7 z4FFqDr+VIn*y08fY6n{y;!TU4^^Vwb#eABkUT@XJ>2ms7TP z$vZ8v*37JjJSJxujjyY}7vdJ7aqzgBl7${~{B-f@hBvLOla%!c~ZJCs!tx zd-JO8UGk>3^PBHU<-?(!=l!f=$`HwjdD(-^%Yd|nqVx#bkHHIBPL8tN6TL+u(Omi@ zbYUf)h;P%9)i-V1Xvthi;IYt~iFv~v(4C7$Q~;e$St>B^)=}?r+4Y=obwlbcTM{`M zjEK^va8fzrOezn>-?BL!qFTvcp*P(T1Yzm}FiNR6g%qR-m8xtYK}?~k&U$!+ph@)- zAo1TN;;%>Jk{Uvqatje^cS)2ZM0Q0iVXmbr8XSqgE9u`PSaJrQbDtL5FJD3fBX85d zNXd}2n`GJJB75umzF#aVTaQX>MqK6yQzKdsF_EuqXRMAQg}B}(pb7S&i;-HGi;2`g z0%oSUcPDhreT0FTtft|TunM0bBD19Xb1A!n z7B0TCNPuG;7l(Q-fc2Ljfy2r&zu-N7p+qEot(zi)7fGF8H&fmvF3NG8$pD7|5g45`H8SL{+jeXM<0g(bMB;xKN`_C&XsBO z;RDV~`75b9w=@u5I$w9MFfSASgAh$9%R5aXMgjz(PWI1-z8lX^}i2Z6+7!>e_gbxdp_o;V=DZKa?ZoHjkI&WNj+%|mTWKb*l$d|zuZko zH{$yROTQdjfhU4|xiSx!9N@-QY(#yDYW{9sM#r`!n~ZI=g$EhiS;=vleE@H4g?Xbe z1#X1cryMjn*(X?{npSyIZGvRHv{B=l{N-LkvdA^>7d+=y^7-V+xv`r@$cNG=t_KA# zs5W4|5ZXYdsd8w3PcyXp5my4ywikO zrfV32d!fxNqOD~AIM>u$&CgrRmsz&YP=kc_7xs`6V>Az8z*DftO2W(fT; z^j4x!aQkZ}c^3V=c#fVM`Fw=YI&a|Z73*KOGoZ^!FM`-|L=sHk0X0#vw}@1A*tBdh zf#c3+r<;>=%`K!-Y2RuGHX7v@NONz6HPZ69JY9y~-T5|7oN6DsdNRL25=&nzz7^KW zwK|p*kkhx`L9&QGslU}gp2&XY0*&K}OXzVRm2!gY%BKw@^+^Mjy(A3jB482TB!czs z*}iDq?j7w5undhD!p@}B%4$pWI5ma~2<8=~slL}|a$@MyfLetSKv^8Dp@TF1ns!nl zdn1nZ(gf8fO)DKPf39Ji#@+q+Q+m=RqR_6|6`RMLOqvXkt<71-sor$U^C~A_k2Fx; z+nV9`BHMxDTGGHr>V9-P5TXCK8eXeF=i`n5Q)n`uY1 z)k^=7S<5Lv$C4Z?pl-~-Oo2Pbj7r4D;;4Mh^ZE>)j=+}$L5I0~a$wOO1T%Zy;aO6e z1z(dx*;gg`X~jEJZ6+=e5y%^t_YO@@beB)Lqu8tiB$I2s=v26AS4kiiaa@bdnK~ZL z14vh#-asQP74kT;=r^yPtUe>zMO&76C()QgH)7++62+{&DiZCZ<28Rt{P{1AZ$yr zIRB186pPFOuLfS&vy#`YP)MC(wu5m4Pas9RA z1teVnc~}V((iRc&ilYd52${sIznGbT z#J2yw2)*F~~}^vUxjuH*@h(FsuW-~62jNLLIT`!#z4C_dAey-t$?&`_9 zH$*?7^x{5N-F0y-q}MEVVADaeTURv-01_3w_LeC37@aM%;+dJ))h4$E78f(~^$2iu zdv9x%CBO8ScyV2qL`ZS3Aw*XHP&Puo$4RMF76?R;|G#uGVm8y9KG!#`$M0g2%;|7%Gb$S9CX9w>Ay-y3nvb{*b7CEEI95UFT1z?lr@NxE zQ*;Dt;>8zLzy#rRdBM%xhtkU0utI741D(7r6J~V-5h54%4B?0Lr&HFadx)EM^~xN%RM8g8tNE=CHEIeS1b|)?qXBz{$f*0aOt#vcH|GlIv zj2J3>#mrvrgZd$xj%8k;c^6bnQw7bt@K-nDH?8n8eK)vKlXn3V;SJm0kl0M7o0fw8 zhcfCIWAXbT6?2IhJgB+*5#fve!93AFiJ#JcTx0DR z2i=6R@bIZ|x#~JfzLdIPH(xn7LzgO`%$qF)H6^))=!DH?_PjS-#Q~;=NyXaaNfyI= znq3Z^@t5b&@1w8z&Evkua4*OF(L3-JMNEH1ig_({;BEejwm;DH1Xm1Ik(y1;3==wx zMvpG;N)J=!zOfcE*SnEVo9L%4k@t<>X)neZXaR0HOgMmRm{AjWv+Qmn$wzN&r3w}W+^McFeL%oKZ)CC1N|wR zK5biX4;@PSy`&q7f>;3{8NIcX7M4E#P-4$}$k8&+^f{rW@;5MvNIYN=G$lHj1ldg= zcxn2+SUJ)s!80q1^%2$4iBz#HcP@;0$v2F(iwx7le`S3bc~vx-do|z&S)Yn`5&_U= z`k556to91G{A4>ZX5NG7T2;`!Z8BY}WcAp9%DdOE6b0O&mDDe5n+vO+sBJ0PcZzeS z3FNullSj+M-;pP}SZc&(=3bPmPjr7ajT96m@?QqIu4~?Hz3NjYBX4S?cE^@wH3U_e zej_nEOe^P~?*6ws_e}`-Ce^(EdQ}TTHvnChpEkspO7k^dkmhA+pX~YH^Z?sm?GCB0 z7!EInYylCMvVVAxOx$)YDPwy85QrU)2z%j-%E3LB4(@M5)4wN!TPLoe%-H9w18;{d z;UdKkru)9)BnPKx_YM#q8;wbyH#E6KXJNNyXWnX(DeEtT-VVQu6747gPo(MMZkp*R zVy1X8$rnsI2Ej2dLEJom48kEpT~+B=0w2BTM?zWGnDx}2;X9a$ySv@r4q!D%Gc{$a zv88e);KxW@S28X4UFFXZIcrM;SD{m>u z!CtE)kVp0;mdS@`wR6&%3iLtn*GGiz1L(!WccC89$fNHHzSGqnLfE`SbC{8^8<4d! zd$qUyXg6%m*W2ogo-yKUgPG(OLRF}eCoEC9w=B0_?j}~x>@m?z^qDNDCzXuo1zACv z(}cY$*W2kw=r0S;QjMgSVq8|h+7eHE)sEM{P8^6H=+E1zx@^MaR0`y>7HsH{ zu9c4FFGHI{OqrZ&fn4;0s3rIp$}H7b?Km0Eu)l_JD&FX=--JFi@L`hA;**;KY-_rPVk9NTG4>)0W8JX5 z`mILTLGatvJV~y-9K6iuyfqooX)|tzq-7%0(et*(>h93h?r_cKi#GMbeZ&%?)Yw-A^Rpq=m*T9 zm(g>ytd-rGfKyWWDail<+_nm{kU?K)U^Z^AwqXpN|f+vnb z!OCwU^e4{2B^{sQsK0)>i*B}e!PcDEX%gKjObDrQCXb1*rkO&M#sJq zDSohs`>JU-w7k+VBtbkMMuF|03?tiv6L~>6FYk9m_|E`(dEvXn8fLCq@$Vlpf8`V{ z)nlS)6<;iZ?0?xI`x`&z{R-1mQCW~Y9A7l1@fhC~xM{%+oE=I|ndWc{mZm8=KGw&+ zvP_P$*!>mEWu^AI$UJ0E69+`UAmvvWlJehTC2*maXk6MlYFqP3{y(fVXBva#QK%$2 z1GVMiW)p5uo8pXV?!Ri=?_=HYm1SwX#ePzoe{a+l+?&=Weno0)x_BD3eMIO2s`=>q z2Z|ya`}X?(aWpee$y;qff8njq9jz$+#Oz0(m8sxAgD=8YqZI|*r@8H}`*}M209{^q zsr)$EUsPIuE|Jx5E4c0s9$D@iCNsAk&A3`a~3z4p}Fr8zvT=p-0CsAUGM9eN$Ro%_rE1GRP-lm zGx(F%7E5Z=-82fdDd#|fM9@oUgjO`kKJ%vGh3xOPsFWx?zz(%k<7OUi$o^`VeSinI z;RzQ@_Swu2k$g~CYZu)5l>zfS zY7^Ib`G=h8r1h{$+$C>iZrP5vB08Fs_qky@dT3kD78Rj)o;{lM7B}g*A!iYV_J0qg zs-R}sZ(r#;&qF5a*7F%{#R}4j6|@zq=cN4HZrf0PbVOD?T7ipXZh#|K(n;o!0DKZsBJ|D<k(l#`It0wLOxIiR9GG9$ zgIx}}vh^=wn+bkS4qV(9Ws21UdWLv}&b;peQw+Zc1c;~y6(I7DM1YiEm=EnEe~Xjn zHhPiR9me;tD9PXG#oB6-pTD;lgdP8F9N=;(Iy?i4=L2-rW4=XY0OZG;a3VisOR%31 ze-$1eD%ob?W>f7FvlYHFIU4~=zjq@I_bmHFHWrZ&JYXNIt1v%xiC)&2B+j93R`L&i zm!QLmY0{|Ue{BQrMQM54u)pIX4+wRe6Z*MM7}?7Mh#hnj$vYx49^{xTxw2}f@u#0d z$3P30Tm&OKT%?Q~zmiOw6NgY3vmiqMIhYC;|Fmj+k15goF%eD%8vXh%*0i9!K>)}l zk+c;$Hs;|r6$9Fh?+F)e#H@|!#^8LU+z!u@b-SDUy8c~yOSjkPx_uCmg>xVzkI$h( z@{tdOq~E=^F+iI2J|bKRh~RZ{GA z!Jf_1mj!s?S^il0Toi7(6}9Bx#t}Ef-Rz_3LhzXi*7pG-ah35uy`FuRbgT@&1~@*o zk?0+?SZYHA1gUxA`(qSabQA(4P=?5LGsk zy8qxPTq9{X##u)tNlgDc>@L26`C09rK(X3ieTEmCIaqOmkXsf3a{r2;UEMo?ko!+H z$c;vw1#a|G*g&2sn^N46X=P;on+@F|X%?K*0oD$-mi{L# zekT+P7l1Ld_vem)G~1=Zt@9* z*r!X@Q&$0mD}C~_rb2Pn#5RR*hfut+K46BYeBJV%QGm|e{f zM;GR1$(PfMYPoi5td4Vx9h5yszU!5~Xb`4GqZbq$nh@b)~O@0n5wA*1pd)+wKAhC~@$Ib_uzs3ku z|I{uF--V8M{i<`iju>n1%f3$jsLPJ7`3*djKMy=~bROlQUkDGKYp+CMN}nUbH<+2Y z$o$>#Jtp6FhxKQ`nj?teUb?cmCu?I&b*xG2>oxh6iWLqJq_6anAxJ-VNaffKq6Vma zE8q5%m>VVpurbU<0qDQ2Y zc3Nz8lI73~isoDHcH@YOTdyPzBG?_s{YX1PM5%bWOGnMuHbfJmQYOhHU!mq$)GQr@ zn`OAcnxVAS|B3)rXw}!Xg^p_`m>A4@vFa-msIT|OpfOEjXk$D_lJY}yQ$VNHR;OqX zh>Hpr>yFwUZHRvWI#a`C5_?o~mee)`H|1Pytet+S$rqY)Y?sFMotpC*NAnny%m*#2 zhLEb&<4|?_I9fGJtByz~q}gnB%0&m*IE?2y;Mw}<2V4hO)82|IOT$~X9Zd?@C`XeL z(_&>Tp*!$8whR+-6M`FbK(W34;4eGC_=clVjERBz?W#ef6~5n~6#?JSR)|ND4p=k~ z<*U1Ib*cyDxHRKp-%;DNjp?W@Y)!F@C3J5kwN1v&Zmu@QNk8OYwbeQr#hDoFZq?^# zoQ#C~WwmyL6qBR0$pYbs@c2;VbV?Y@;>26hltx>5WP zFRZPRv6E1X_f1r{5I2VjQTJ0-J@wm6mK92yN1g4tN-L%OhU%aDB}pB>(qS{*OWuT( z^1Vr=RPhF~zyp#iR1#6TT8t; zsE_kDD5>n+Kjyrv+#}W2~w>$L^I8TEljgul9Lwe1#J*cAxx-Z>$1nGLj<0?7SY zxPjcR=}~fpDotGa+TDlt`71Vsm0TezM0zC3UKL5pK0(Xw{Ts?IM%nw_>E)n1YVt3j z^fy!b{}2X&{&c;)sDo%q3(O8w7hbTmiHtBe6kb-Cc1!+P?O7e`>wn)9S=J|s3><4hHp0?42G}o==$W|F;!5lyiz8} z=YzKJ6CiRQZWiGN{Zq2S{P*r(s#d=RTA#7AOzzcnm>nim=@U$-$|rO}HPiCbt2|Nu zL-!#0Sb9;8)pq6i|CuY%mAO@3I^pO+-#pYJJc*k_xWPzolC9q;Bwm;r^|=53rRcBhwT{`sLeLTdYig^%ZI(&d$7f9-;y zh_xw{k%T4BJE*SjU2+3f=pjWDZW?hzxMGcYv>gZEMD^!h&UG?rhyMH^ z(6MKCNt#R7IMN0FZRmpFHrfT5dq@`-PZ)wOc7o$Y1I7`H|Td(q^{4JgOGw%<7-v_+d+}UQgNq-bBKz|%xK>H(t z^heUrJLr#0)Y;}vFYi0ZE$bt_jTe0WnII=rE;@rMTXB<&8=^mNGylVz+m=#tXFHen z>LmALpko-w9oqGGI^v(mh<~Ewy8cSYZJyu*azA6Hq3X~6Qd>$&b+4DVIeUs^H+f4n zF$ix-2WqGM8fUXw2!m0pCd!|amYhYCWZb9Cy~1k$HRTWcE7HSbY6;bBG^oyrrc|?p z>T?0>Cqm;3IU;l#NH0A*s>pL*k1Eau=1i0mVlB_1ivFmgLsnLp`|Z&4Rc#o)K=05f z@QI5prmTxCiTo+~jqp!qNbfEc=6Ti5C4ra7MGqZMWarOVI?uQ?NVhww#aH?(3)4E>bd zFI>(o4%}`xwa#4U>c-*A_1=#K<0g00gWaN=9&wwi-%rM<&T=fq$a`Q=<^+0?PionS zP?K6?UZHuz;9&TOMW0N9cfkWX{l=~R2G~mzw7h-3*8ClKJ9+asoxP-|7tx;PDjspq z+*g&Qvr^A#oazXf%Q0jw$IwxHLPv32A_|jCIwA}kNH4Po2FWKa`jeAEC(J)%HY%wv zS$X;I{H+ZV<~Wkk*?CC5_e93*tm5Buf1+xDI^HQ@i1vhjdzUFXo6aei*hDYG!N`6T zEygi7Z^~5}H$1I@d*kIL%zBc8G@#E>gQm13rjfs_YaC2y4gZOd(EVD~>i(it zT}|QhlyQK+;Q=(NNhXYV)wGIQa&z%{6i)pkKy zpGt!W{g&^w3Rm-V-wJFC&)nXx3h{y+ZaWmN3%Kdn6ufjw-DsMu@-TEWoj3)`<5@2# zk7vE8F@3ueIc@pl|4?=10X1cR{PjwuO)0iWjLDp$J9GON!s;oO|!n{B=*gd(U_KobPhZx#xC&kJXlc zo%w}F>81SWSk*L6pC>~4n?j#IEzIOcK#hj}(C3my=o1Yx`5k)Ly$zG!_+SU!S)aZk zd=qxovukl;x6vt|cosz&acv}TeM(3_rKI^8gtSMd?S%NTCTY$Q6-Vi%^5|HhoV0c5 z9t)6mnvlhRLoB!hq%VWCVF*LI`miH?&yu57?p7@Rlq{&oD5um~3AI*+S}vhxm9-qy zywaTckB-udM4lyg9Z9$HIBb>eIw5%*sHnXLxi~ZiqCpA`pFNJux3AcRv4P_>G6$$x z{}3~3Fex-nkwW7XP5sMPl0w6MLN*GG$4AG;K{i~HSF?Q}R0)K7dX!#j zkXY~TzY>-znUKf-o=`~wm2M(bIwO?V5#i^)LTRrlHt9_k ztjKKYAh;+ZLKQJWJ*Ae)y9uF;&O7rzqH>-*wV7H$7`VrIFt_dR)k9Y#h}-1}xYwe6 zJ527TyEY9eUj)~hfQ#!k0j8a3P6bX zD}aUw!$qWS2>XN&H}h5_$1ua?`akpV^6G6Byu5nIgy_}q<{IR^(Q-|uFFF*0S1VVK z(Jgm{CLadCZr*4-Mgw+BE>>z`l4_=KQl2zu*Jl(?XZqbGcJn~C!Sk%4cFU#xf46)! zaIvR!V0<;bBv*5JK+4^yyNJNXhgU27fzHb}gGw(N+Chw$HC>=BS;z zqAG;s0rex{uj@yWtV2O-5b}WJ)f05@4a}^@zK&9I36GHr^D;-z@q4w#7 zFbsPx5{nQP=tonNFN{=Q*MH+CE-b{Yw||utdHG;j{(vX zg}#shn{ulJH@9Bk9KwmDJy~!F*WcdaTjL2sodNKrAK)3#AW`FeeDr6!7nThaMjMK& ztx^Q#S#h6_r2fJ^9d{0wRc9FMp2PXF6EzgsXZX zae||fAMlKBQYUD;mh@k4jQ%6c62>}a(2M)D%S=!1f9xq|RiaN=PAPq5oJ{0?L*yQX z#z*Ex;o<&OeMxGjkJFenSZ%atOcnLJw}{`pMM>tqQvk`QZ%g^3+bFxdBmI|>PpGBd zqhEWcAy@eLxhKwaWZ!kE-h9IG@#y%manokD(S#=SPcpA;9+QFfo$Gj`*CJtT{Ircs zcYHc}f-~>xb9-uGUhC2_J`u{$64Di; z%M>(-QJ(y%N+WZwVL5&Fy~ch18-X^c&_~e0yGsM^U!pSAq-c*}#SMY#RM~M`6#l)%|Yc-nrd$m{(={km_1{1Cg@l?R}V62QT6Zy$=hjR39IMdHxz&E zyA(V(r@!K;oe`-u&%cuVvj|a;SKL9(<$jdppG&5pf8N7&{q4Q!Wl3xZ(^K3AYbCOy z9@{RCkcoT8EGLZn<=))5=WUKq+KD%U*JO#88KF*W&hnNm7I`Kl~hxetjHiLk*w?Q1C`*il`vx~Wthns7sN8tNtoH?GAIWN_YyfXU&e)i z8D5U7dK1xz^$(bue1V1y8d&H^|20CRFEf$X`_CP}Goq>Xga%e;G0uKTU;B6-GbvwUq}nm@1+`B+u}?g;4=;=KZ<4bO{Z~LGwe%vaHQK3; znI=8{!*R<+$wJ4j1?A zJwK4)f*doQdf&Py6O%76kNG5M&!by)m<@TCtNlk~3qejG&gElH+*4^E-<>1KWbO`1 zFqy|~)C|gT<_9H=jh?aOGo@0L(?6G?5|KrySk=9sD9B-+yPn`gsbDYpuVh%h^{(R| zWFO1xpT~@4c5A->cx=rN{x`?{I(wd7Zdk-l^~=oN?)m*!48{VVJAK_TVQhL1UTHj; z$545akjhdir&LZ7I8Y&1)7~3?%x|gazT-bjLtAZ**<*Ic4B*7!*IpHx!`fh!$p_eyN zfz5jkFZ95zB=dU5l>p zDd0)3_$P=^GEmtHDk*3Xp>7`YTF_Uh=)hw0#VLZHE(sS9q3VcGb&OEch)`Cq)~hn-!w8jJ+W+W(gc6P4H*APn@gFhqM5xhU zA(YWqDpd3~B9!l>MhKONtP4WnQZEWWjOUXjKo`z|_ zTCNB=&>7V`AVXvO`ap#T$(RPzQ$vZG(q})QkAud=?^PA%4DFt?Zx#-*Oiw|9bs>co zSTF3!Ols{j7n6m_ff-8MXVA-z8Qf%T(QKWg#m3j9A6$g9jIbeMH_l1-M?*f7T03a& zIW=oR#k>t_Z|qUiY%@Ylv(1Rkq+TX9O?hA_*cI0qUzL`Ui^3bMK-F=~Z;>hWADE$W zdPcCq9`LMf0OmjRWj@3~qyBr<@Slbn+3ssVb=X9hf6Xxekub0L`VUuZ9tqA+Iz5A4 zQh!VagQzphXBqyB&z53N9Si>*nBW6BmoeFj_%jfZ zpTy*gn;elS4Z$g+s}_F)fu>}<^7bK7f-~xMgXbRy;G7l%a88S95_*sVu5%sOP0e@a zKY?q=caEq_7@I3+p5NKO70d?=knx`o=2w9EfBG`NF=^OGFrPlDWNG~^M2dLA{85Ja z<;O|bep(6U#WL*K-ApgRzikDB$XmR&7h7UK7517G8ArDK;f7E4?vNMu?*}#g@7~mX z23`F;aV&y$J@l-!pB(DNu6By&Oo=-yP}=B{e#ZA8UO9RegTqr_#Ng;uyxd?(%Fbuw zLoo;PsdV5zDZLyrIDo^(P{4}YuJ7Q!psU>WYavwIBhR(k#y?+*BNXPes~hP;myf`z z*GL=z%jNV=VXK3jtyG&Xr#e`TBiqtPl3_KH4lC6i#8*@}^rD9AOc?7_NH1Qv$mE0g zNmA|u4B{_!lLf1w%Y#2+5N~Hj-o4}4VTM=k-Z1L1-BCOTZ*sbS{bkd<#Mb-H>&;CRJ$v6X)evd1n&NnZDl6pZhQJ(WLSfyM-1an8_YTvESd&f3iz zzkC_9&yjB6S(4ba!#ep7hQgQQVo)G1g_eBU^H#U_f41L!!8rOTzjFL0JX(a;wdtd- z2OLG#xnrE}EMVMPNB>bnjD`vDy6kZ5dEVtWesz-ed)4WYJbYNC{-m}x@7YPZw3_XJ zAsYE*C*GbI_*Tk|dYxVU{#3)qs&9oUTsQ@n<&06^fd}LZsy!4NtVjVQRmuSi)Qel{~LhNZe#(cjjrOC&biH4U6 zzR^w(=E&WhWBgMRWDQw@6Q@I<4ZJr|No7@5G|=Gl7ZT4%j{xC~^U3u3K#*Qc?k#5S zeMs)TsvN1W!M})m4XXj?2s<<~05)z9$QWJq=OH_-;y)DsOiG|2JAl}l_ROA3U6HA( zI-L&Mu9ak#!pEct?;PN)r=_-6SL3~8Unsi-$`-09u4bNN-U(ZtMK;`J58jwWQu2`+ zUQ8!WSINi^GHJR>4-tb$QBkY_Q}RPksxGSf{nT+DD?JZ7Lu2)@ zC=czp&CH>PQ=LlOt=P#i?P~(fNED|Ukz7RK>&FbyT{pbUL~u=z{1Ebg?||X_v5)*G z^y#|3b zNXDSq(CVooH-CgQQU!F@6}DI@{CdbKq}jnziqSKl#&WTbP5L!LtkMN>jAOyUWlR1gwt zfzV74di#w~_k~;#vKkOMOM`DsB-9y#ymT>@ut-Z?)R$1~K@h5n2_=NAZ9vG@h7u~L zgj!8X2%&1C#sMHS8-%*P5n6Py6@(N9NB*F}-wQ%1LqKQ+L#Td0Ok7_=nnytBq545W zX!Sf0@|s5p4ZA^9*JIK}2&vwH0SAMSqlVFZ#v3d#Ui3SuzD2 zW$;m3mr)<(WK4Y2V8x}xM=gW2_Bew~2(AP}6uTM0+;w9lx<<4bHz9Xh4T*Fje)4Cz zpNvU2-n2Y^Eshr$5-E0Ch9qVY{Nz0}n$RFF&c)bgW#4Iqii;*+oQ$HkOb%X7M&q<0 z!1lBu1l#pP3AVj%6b*@lYILERU%-_+xQf0Zeu6HMcBtOs=P{EUMVjR9xEq3@xZ7R# z8}KK_To?kMFeUkhKrj;OIk6Oanu*3gXb|9!RBtCj$sPF><9*9@)%bPlS;Sx`>|wA} zdulMRTf|@+r=;J2!HS@odT_;G1+KP&tMVHtdYN|vOYTMlB9n8|2$-T8O*GI$RN;We z7l!ZnTcg3Zd~2?ii%N*Gd~0r`X^c{0zZdng;t)FL^D`XYz@KT(9=)JA{GtBl>gO#kb7PKhvr^!o+S5rK5X9_gyBPL@b#koIA7BOVdK>>`6~hG z&e7+v1hN0Bg|foCzp=cKhRF2rAB1N#$gYO(o#W5--PKUP&Z9NMQG1fxsdHpCBl~+q z>Fn=Gln!60i`XOHZ#7dHiwrYC=MBQsSr9JTFOPyL2|M2)3bqc*#2J`>gH|tSm7hl= z{9hWbgum}>CLbx`YK>h%y2?MO_uJAo@2wgHR5%9#mCjKC>#2b6hvg9guY(TnHwb8{ z?0F7pYUB4bF?j2#P|5GdSN)smz5e%p@0s3zBzvpQ?o88F!SOLAYsk@h^hMXR>knKh z#^xI3wqZ)1|DvN-bfk11jgM%Euy1Lt$Lasm+W=;m)2Pu zoJpxNTN&?tXDG>_jA}6H3nmqQQ0CI>c_Q8C6R@jhP26u*!g`Q6MQC-Sk%!Q{w1BneGx(tkseP)_K~ffaf|xa*sM zJ?k$NKtNmNufvp15lwwJfhVxJh{jknP(i&|`=Nl}XJgiu6FVP3z!xIJLL%Uyvk>r) zvs6G470_1Ma5w}UGyLAbXipq&bWq_X(KZefIjC}YN;n4cRG~lX*=TThn*W>bTrYL&`tF_m)w@>$ z!Lud+!LugN+I15_aNNQ0pU|tqLg;P+WJ-rjm{&2FNntF!Dl;OFa+HrRP+ynTq znD%2dO3(JGzt^tN{(GW^^}C@Hjfs`2iIu9UmC_T4mGV4!zr#v`-vQZ0pfnYfPOTNr zAU1fa-M;SX6Ji73xygsg-Q}L*!&cyu{us4hp@tfWJ-@L2+PwN0Zx5`21Xx(W5?P)ndjm&H{xm{w2Mw0kVFLQg59Tt-KPw@wAXsi zIMQo6*bTP_yR*P9PQlpt+*Ops-hmhgFJHzX&t)h~{ZxODF2v=7bu8dZ|N6cNR>_fQn1y^}Qe!OdM zwMyCZ3iSZtdv$k^vly^xHHXL$xk`CExqI6;<>anthjM(6D7YZ+hfW+@pqvh(95jd< zpSoh-MIw~EX#drtItOmtEAAq3;{{|86wpBs9!my+53b^lC>%J? z)a@tx1v4iaTWu$ICm*r$A_LJ?J`i_a()|Ymv1e`35i8*ZXeF}%>S-pZK!a>TjMr`b zk6U}cV%T?+24B}2ae)jNrO!a1_GgMf;c0^F_O1t#o$w>0@%Rmk zrObdaNg{VguZug1yG@SDM}gJ(8xt`K&J2%Rr(I6e^AfT+;!q#e*Njm0r{{$+M^3X_ z1PXO`?Njd;zH8THbwr*Nct75$LI$uK2r&K{9={I2NL~jRfh&cL;OcL1mAX!jl&)VD z%HV8&RsMIl(jlUOF~&TBX))En)kNI}=D3jW$f+fQ5#v@4R?;8wiuwyxbqqjN`uV~1 zGen^Db>&2$RuBsR6@<=%P|-I+$2M&NAw_TH3mAZfAY=?e*Fng7A{u~X)W!!#`}Oha zA1>}({0d$@9)eYP3wFU ztb{$Vf#)^QnhsiiXppe=k8XoAKr7!yYq4_J=1GI2j7G?)fSN==O)6mPKSaR#b#V#A z!w@m1os63JzZ44Yml9qqp=qaG7-Egru;wI>7|ML zmJL<29vXXuRAQs|BRe(PPqR~73CT|HOf$KU>{N)e3F>i*1HTden2MQrIC7wsRu$PhOA(U zoJHhrRAr;tX_*E2Mto>SZAC3+ILz$sJ7TB zFh$Vx!2DNYuoccQ*a~NAu!F>4DL*KFCPhvURP!EO6@e?k9L1yP5*n}fR39~zDRNej zyRGI#YHPy0z48P*=E=k-NU*!^i|0g&h0b`Tw%x=a{^5 zF^Y~eZCXK!92Z>_IWD@ifL}*|(R9CP4k>bMpqj7XN@xlgJrEb8OTZ}g@$+*mj8;(? zJrK+zFtYguqmY<9z{uWI@IWB=1?sV04?X#z@e>*ZM(bk={{y3riTmP)suhpbET=F^ zBrr;(FjB1{!1&43R7yM0*1<^A$&E z@@GN;DRIz*+J-*U^wznSG8YO6uJtMUf+y66pP@Zej<7yOLVft|;*)x&>!h#G+xG0cx6;#QyCnE*BjUvoJ z_{BH-ROOaz!K$Ktq=hE`A0ko?WDEWkhRS6yUXsJx!eE?Ebn_nbMe2r_sOIvY>Mbcv z1#yCl8{#gJ{Ks!15bQURBKR{wu<(pkA{iHnKyUyM{B(mbcp?p?xtpzaEA~@BYOY;K zcgA;ycV;8g@Iqq`8d&ylFYITa)prx=|As1e ztM~hmaC0BYGz_00)A;TQ%`}=elT2gBh}I3rG`cpR62Va%;Yr{s3|xsf$}^4ltyVI` z$G??RMko!IV8s3lb~B%#ahBm*?3>cS2jATLHqY+tH2i99m3-!cj3fZ**+>8`WYYxT zyHz9sNL4;L0tvuhpcA(d3BW%Jw^{a!Z~Ugtjo+o3E6jj$do%g?^}58n>T%fPXT@cj z{BD>e+ZP`RU4s|yl+bA+L{t^&G_0`<@6CshluPAkX`=r z|E!_b=}Gg|wPt&rA|Ig<=Ro4{94fInk$CP|<%>k(Oh|kW5({wxNceeW&pIXx*BW|i zvZINRzLv1btmz>fZ0epz|+ z2Q1AwVleZTY^KiQdMTTSG@N+IoqM2| ztK3MqeKtZ~B7IyXzKqoUTzIasLI-SBE&}Fib13H0Z|+Q0$9H;%E6HsUc}o3c+~S6+ zezQ%HjPMH)MN|uE6cIO&D00(GAc2r35*&1dV?+4cz)zW(;43r2UgQe>nJ<4N)4R*f zg2>&r61ht7UT8a#kpN8`7~+MGm_+@w3SQwl8jH|?IOPreM`SvS^F@k(sb5ps9nrP; zS_er+OtwHvQ@2np^-wMOYgQ92J%v)dz*P}W4v7fVjK0D67sp8(U6KW4#&!NB;?{#S z-;=wae}m?#%enp@hf`b?w`=n6Yz8!k55@brTbRt@kh<$ooTJ3qEcW;$wbgd9u0x+b zAW?t#P`Jh6Luu6igLtQSiP#n1smK*P1Vb}#!Bnn9yp<8n>t(TwjrzOE-9?gmH{307 zle^~CXJWPtT{pbjtXv`x3<4kgZE#;EXsDqLrL;@ zk3{`@)LtboiM=|_>WKwfiM`xluP|`+#VmQ+P?~22T=EKJl1Cx6mvFlIW8AI!SZ*)d z=I6Dr*FjC2>8jB;VWy{$rKA*%I!35rjVJ2 zSYX!yP21_Pz@q8cgpb2ciaepK-@%pRbh)>9b-5@IiwkQb4{7p0!V-p-&_FRXkb(xu z51(ABr+jk>eRXqj^oHBqDxX1qbqR70nNWhy$@&8~F#x_zr`P69{_|!fWMf zKXG0?YaEWlnjZ96ATR~3f&L)67>yBVkPPy8%t5#qZEh(g(4gzmx22S-Ndp7)=-E!7c#vXq7#Xq6T+@&ykSHaoQ^p@6sILmRh8#@%0WX_7HG{^ zIDhjK2~E$M5t?2!)6i7yM?#aOUi&6E;hs%+$u|Q5^S-jpd#1p*A9|5})pnK(ysKih zvbP@mm4}|(U%hgv%7?$o4zE^LxN#Z&>N5OQ+7(QvU12``ljoQvb5w%US6&@pMhd)MqT&sr}9&eQ9+48`wAidFr!2GLTvbT2m zIna6tT8{Z>JVpb7Ir-5%`~L*y(4o5)YW4HDxT~8;@6iJ3JzJ>sx&B1@4SK2GkUkxB z(s4qILJbIegK)05JTNx}rXVm!K2_eVr?d>JvHm&_3x5&v%CZ zKG!PmtWGxx%;G!}rt)Z*3Zja9s*IP7G5rHNB_M2)qwr@Q!@lH369O}H63=DLPBQl1 zd;_0jUff-e!-ks`uW0g*1_FGCVfu~R`y|#Y@`gR%svU96?Cn;$D2ob z6HGpo&z1XxAmEa>_4@!Wzs& zK4^nYtJj$XVEY?|x??0}5I8<6>1ue_RpWR43y`*l?uM_wcBsulW^1l3Y>Y%vCcL!}yhvJv*xnkoIOGun00~VBzJF zP~lZuM0(`~K(!K#WcL|@9L70ZzhWLn_J`ye8nqB-vwB8rEu2kUt=xr++eY_d>8eI^ z-3(Q)MtJTwt_ZpB(RhmnLat-Wb9}_;+Z&9E_thh3?2h2MC}O(?4wBgcgJ0Z14gQoE zT=|LS#u+fU&y4u7>9t73z!m@Lw<>1#y=30yXLSEqiIFd$Y(zvl|vrM(;6rM(+$4C=8A(jr8)EsE9GM?72IgLvlEL*rTX2LiDdGvcLySSnN_4h0~) z!PVOt$?XgvgY$~+GC74K1?2k~t>o?^sT`0_vgazhot3|6ew?9NLex_aSyaC;*qA!` z%T~IYZ2OiR^K1Gl-$?bd*&Sa3j4lFDd^()myY8%mowYl~)NGHHqI_^>6VxX3nk_xr+tjWs)nSE3E%!O}JF+7xevE1)1 z{&-^n{NDHa$M8yW5B%QW^_ZAf)B5K3Qa;|OKOL!^o_^urTz$Oer=+HZ*>5#1vh#=c zhWNc?-#F51dNHD#nhF-C^bvJ@g_F!_2#F5flC8*{;=WT6$M!h$hib{E8saBAZNcjL zv-+Kp;!XljWffl3Mqdgl+m6vbD#RhM1)Ad9n1~{exw*d&)^#dH}N0x)2T?kh=9q~d2l=t;k;CG^Bv}9v264ga>f&G{(}Fg zYBD!(pZqGHx!GtiZhpkvoG$Mf#lt>1(yiNLwgc&R%(WW?$J%FR`yal}E?sx7DnhM>_6*5pNrWODTOk;*B5Xok^2Glbw}2*r!hCxVv>bH@hY z#k~Q8CKiKcx|WwNGiZLFY)wbM4~j#QT1?k!BA;q}YA&x0HWm)Mjr~CTBWGyw`4G_1 z1(H^v0Z&%+QvDF)$(W5tv2~NxMjweiM7XdX3NCDiQZC{s7xm`Rgo}7^A>0pnEg)}` zxxkk}tyh8jZN`nM$_USI%ED#0{k3>3+}Lcb_vWe)4+j}S8BO|(Ac>RL{l|?} z6&givo$f_l{5GQXZB*;^jYR834T9gGb@$((3!L55zY|)oZx9#N0G(G1RX;{G1 zxdmv15Y3@MH1|&ZDDyoU_9gT$lQsSvsrLN1W(HNB0a2a-qrA`5?^$TSggOK-!S*4r zy##FkWFd%Sl-E>%52VpW3011x(D>`ZMpAhvNg?j$E4TL2y zLM!1CQf$+RI?6TC4;Nv z!-~(*B{a_Kj5)}DKcl0_IM(-$$UM3$SFgo%LMw*(B0V5m%(TKelP|x1G&=XFg&_0L;fl*J)vH!qm zrl|(LY_vKp_9=xCOvkgGL}BFkmB0vRMKlr^H3CM*0Hdwo>W+mVkI{H_AwHW#VN^mv zchAC$+-=?{hf(?5h8cj7zg9V5MAY*IvNTObL%5B?DEaGZDwG^XgEbWccSjWcdd-r+ zh*t_2@k=R;S}BbDw5kX&stJt1l{gW)3IJD6Ed-SeSM7zi_nC~liONuCkxsZ0f8$Cx zZ_R9YhG4Dd7OGy8z|0CTlWK;>DuydC$-^oyj`v&f>!$(Kx+YHwhs7xA(V%cb6%}g;~&g z341~+!yS-?DcH-iuzo*{SUnRv&ivvkt%PkB*duiUS=hvxJo%*0{DmXt>JP9km+tyg z>x363S|-fIM9YMkbdQwL2(sa$@~S<0wQ?Xy7nINrCDd0c+`tFVF^%H5cm7c=?BTmE<*wPM!nYDrv}YABXz>R=0BA>z z#6%SuDQJ-Sz|{{@EBm6iYr(bD2FwROO|2y84fX?igZ*fgw}PP8`+{(Nn&QSvI&1{`nuViKi6Mf_AZ#j}i@ZVx zS?)Kka!hUgaiDdx@LZ(W56nc{gR3SqQqdq>`I#=-(U+_D6(%dT8>vp6vD}|kW(3j`&9a#%6MjjAm38|<}tlo`T^p< zQQSEGO^ciI-{zyZdFx*!L2*+r0ixW1s8ArP$6xp_Ac>tTJtr^x%M~{YnUR%*sq$}3 zJu(djQ%3KEnUUgF!qjpwIO>*+^D6B#t}<7y%T2a8>tU38NO6CJ&}*(^6f_7`VW+Gm{KOAJrw~Zsm5ZI&yc# zEV*M_Ru%UcjxArYLyP|pj^9Z+0>>8o7#=R35z4l5*u%cN{o@v26E>#^T5C(d3s4(C zP#Zu|TSZZuuh>aYD}!pDfGb~cRiCf;(_;@IUO|exjY1fo$~wE@?8XDv#ONSO%=22$ zj8lneaR9SY=2=O&?b3Pg+off@4t>NR zAvN_8q1T9TUdbj#2eqbEEz4UR-*?{1D`D zlKh~(vBnS<(~g(|*Vs~25Gj7o{GRME_bFj4-64`^v>C#!*W-USeUk-({2o(PaVK+I zk%QtmOKF| zsF%BnY&4Th5l!SD5?wZ(AHn=2m=~K)>i^{Fn)otS2{C7(;z8y&_j$4Zc}(S(>HL4# z9_MLZAdd-WkjJW9#6E#^{zSZZ%sMjF5xqE)mm0w6X1G~Z1&u@OD_wpMRaFBSp+}fK zsURq6h1&c`57~yfi?7ihO3(um%2|RsM$WBOUJD~hTFR=R9x9MBKLu5Z7p{Q{%Bc#z zKm|Rsl3SVILaLhnqdC>}V+0?WpNgw^pNZz4(8s=NmEgc5*fL^@SsmrqN41{9UweSH zrK+un`Ei=rtN#d7_fR#J`H634_Lc|(EZ`7A!F9!>QmTBho#u2iDBmj#Js=9sFe?jb zdc2EguW4=u4T=T4f5?rGcM0udFJj6+T5L~rno7U9`2}8p{gQ#=9+k19l-djFB-hiw z$t2g!E?M?K20J2UV7J25*WZ27mF>j!kUo(V1jq z`)p9Ddt*mvhRU7#E}LmpJM5FLL`*gR;ep2VvdUj_lLb2+Od}H|c`wy;cAGAEwTE`O zuvFUdP7TkZ%cgwq2NU+rwd;3LTV_|&zW2G~(s1MJBFU`@cy`W6o0GCjX-`ZBRG40G zbqu$5KXN&p{(DVhhTI;||eob+sj6s``>$ z&5OH+yt^mbaxDt<`RT?pH%ps2G1_`2a$)P3pZ$<+Lkp?0h}SD6(Ntsbfp9 zcaGKk2HxGuWBII*b<&&pC(Nss3DmbVWQCtM(lQ%TV*S+ICu8!iBFigwE5F{}wy1KA z_R?_eyMl+=iRZq%w?v@sA-n8M`3QD1c+2r2%X;vfa=xT(yZ668++ss7W zD(XwRDy>Y-3Z)YGCs=xJsU&+y11m+hs7HQ7b7#mvjl<0>pk$w(DMOgSQb?+JsuoJE{X1Q zP~R+l89{9ma9pyyghfG1mf=Mf1y{VU&9rZ@Jg~+l>bu8gu?d-Xm)K|lnkOWmhm2+i zREV42dF|1>yIUoGqC^gSu1Vdj(Zi&ToUNL(ha?SFQP8N!;)KZwZDy_86Du9fK*Fw6 zmS?AK7*VMa=w11U@S2;FR^*`yY#bHWq_C zkN|mTgoPVNX`a+rmKkrva!@N-cZb!REW2Ng&B4r`s8;o5%XF5cNir{SdYrxaxpg$p z_^wM$_Sn+`+cn1a<&xcDtZ^H=(l}~8A{onANT^#g%UD_CnaeEN+p?{a1n@JqOU*mg zuP=&eSFG||R6RHTe`RA9+;!7A5M^F^pLgV8n*g#;x33v`g?&!ed7C5A>s@cW$8?@j zQGJe2Bijnx96$5!6gvkS;q-jTqppL{s9;xF<&V;Ijr|7ZiUE?q&?2?F^XHTW}eT7Z=7xSIXiccsluQwl9^$*IB|R`Z^@KX!me{g9n2@cS<-PKZLxwp&-O}Fl@uj*XLzV|=%}w@(#FYhhA8pEZ_Ns-ujOKoA zJQK}YS9aO1lbR#6@m26@o9oLI?v5PII-p+fxY>Y3OsrJqJc>d0!&xrUjAANNe5^G4 zXEiI8R?@k{i$(kEjXN2dJG>L#X+rf&TKs*EGCee0@@L5GZ^^!MO(R-KN&Ukh2h)*_ zS7~2P`I3&u0~p^_*)EcB;_q(=7+&dk|2c1NxUtRo%ELRT&{w?mTABU>d>)SPKV+i9 z&x39JE-Ep8$KS4U{u2fQb$UhvrU?dW8((*@T;iW0zoFrg#&@$1Z1ebnY0LkpSe|(!Gb1^ooo0E38K%gG<}ca}3tjHCSxEHUmmom@myvV?;VvbGql^B9+m- z%QD|~`P^ZD{q%Am>w)}TR{pb(dRTuu>6wL0=vXT857pi4FHnC5Cq42Frv_=q@PVuv zrf)7~x@yS2%@8W6nJ;3jete}5gY6xmg`8C05|u?<-_w1vr_%UVBoZ zdb!4zt+rnVFSbdnxg?Sj+;kjoKAgXrSL!Rx8!n?jDr*}zXN~z{Z&~+{L97NkM0&mq zzac(FEMr-s1kbyMBfk!^xMwK8FMp+f>}q3sp0U5HBv!6u2DKW{9X{cKshrYJl zzi*iyvgr|jC$P0^$eVake_5ujEVRaS?*nbgsmjCBt*Z9ZUIcA^&Ir()^C!dbxyHbc z#=>b>E%>z5MrT&oZBBu)l1EP&+}uydU=1d!k;#>s>vPNG_8^O)j~1zKyQ0E4j*fFR z>la{PBQo1HettQD86}T{3JvaL@Jj0^?|$K+Gp{xCFNSo1^ie1^;OFCRrfl}((wOOT zmkH<+b5SM7OrrGgL?$x0G<;gjDagNIWe&?(tZaM;r=TmML{>qWb<#i~4Ve~p20?7g z#f@uuuk=|+k!X>a#QjgSax?qCQiFTnm~OxHfML3{&gWP)}u2~9gdVtvLJ}9UBifv{j)qG(*#B86hjQwTZB94uY{ch%*AT6KYae`!p=COkK=hs|e z1xaf;k_jA<%)3ie&aqi1Rjxfqa`%NkHD@>m+wweEwrYCzaJ0-El0p>6n3vYWxk&ss ze`L|$5h}IdSZM3+H;C0`Kxi?`LROl=O!*D@A2@{U2uo)z?N_K5#MteVNN@7~u?y}R z==^a~J4|R>=`eWbAiKkL41=MvGo#{Y>KNL*ei7sKU8G%E9E1MnrL#Cfvi#v?EEFv_ zXOCCU7+hlAqb{&pE@k@K-*ATOp`mjk$8?wXhp8&%8c^C{a~86)OE(mq9bT-eo-?sx zfMewpj{zQSqR?^rd^aIt}3;cthZzJ(Ae8w9jZr_^wu==Z$-fP`e>b={dy-ECNBA`{EKas)pYhp zVX;_dw)y6q8-px<-`2?zzZ|-YU(Pp;EYv@UBs-;2=D{f@*gJX}QA}+^pfL!d*2<8y zZ;}5R_C<|)wQ7qrgNrP0uF`<~h{5XawzB+{Cw|(dT_m)@7%-FSon~$A>h_jZ-Tmg% zdcT`qAKbsNZPDr1jDZRoj~FngsXF_DQeT{Bz8xr}2Hp_Gl zcuHn@Cz8tMu6^Zl=2pM3T2^lz_69A*Og)-bnP>5jDH3EG6l05JGBZwf*`i(Qj3nD@ zr5UUwK8-39S)pt4Q&=0e$zEy^sK?l}&JOEk6`1G!H>K_>k+Ce7H8ye;Ru)prbu1g+#cG%;mXaxBAhxu|I!*sF7+Fci8Z~>9HTit4~385!8;vd+LsR0 zG2_jx&a0DVu^flW<~K8Htdov6V$@hC$>#po_G2CsUe`2F7e(+Uev$v$ z>3x^wI9OEko|MHGYd)u`31bF*Ld@xxZX0#3Ip9r$@qV81Z-eY~%7i8H}sA6~6yR~sp zl75QijB+WoTagK-W-gUO^En*{i4L)KqQ6_i@*axdAfFaGU z?ACl*%NZ6CufaN)ZJXVA<$@VUFc8;=xlP@WZbf`jsJHAli&s5O4N zz(LJ2^b@-AC2(M2lZcAuIQ1~{`q52`W=>Fm;^ zHr5`Y&Evn34!zInraRwl2a+EMViQ|=+2RWuQhGuym{b4-+jwq7v}AcCefQfKy9rYS z4{md_OTG3hH?X7deC5qiN;;Ccs!Q!EX#!F^5jsM`VOQI7*@NqPw$I+F)S6K|bW340Qxvx4i5_yJtIq9z9BXZvE}fP)+Iuj&6H&S7 zKt}cV+NKjL92VGA@iaWzW{Cdfyi=)ceLf3-#`X@5{_G^ZzZm+nMe(fa^3!TgGylu? z&S81#Et7V#>O3xMjN#mzW!RtGL-_`ynQ2=yX~V1kQM>p_6J9wK^GZJcSUk<;0HbSB z&CrG1(3~As%-K>Zm2k$Ec5dh3d0CXicHfIxMiv)gjmpQ^f!y|4XAE0siq7jzju~rS zYGYbCM^MpVTM}iiX)n9QiQJsIAm_VirA31d*W?blYobxC4RiW?%Vrd?I%&z&X=Dd_ zzUT#q5!a+otkeb4T~80%F16t;a&5lJwPfq}vIuR+x8NQZZN58IBhuu0gY8lmY34|^ zwJNQa)ei19m`!PSP@QXD)jsXu9+nwtuAQ72QQNIk7@)=j7dN)g{vXYhsy>O%unG{_ z>wVex%%;Px@(4$>u``WRRFCK_hmGHoKC>*BH6PK7BlW4Gt8{)Xu}HOri`xWNjpu6` zxsIA;rCdk(q3vu(!G%e^Y)5snoBu2oVAl7hw8HkfqD|2Yn>jl39^F4FxKC&HV*54g z^V_P;TxtSnso&@?%HZtgYA}%{SXeWzjxw=5R`1tXLmpqpZkLqAsp?OO38#NzYJaI) zJzL}_O4?ttvr#fj(Pg&3*={ShGc>Zj-_rS|#G0;N?!J&PF(26|CIc4CvN+EiBm#PzSM+Of_KZ%%M5Sp8ZZ0&&G6BXC1M0BsJywC>fW*} zA(henXP>`+fTd#+TYBGd%w~)9Otb(Q$F^Ya*W-6#IySs!3i}VAlhYXA9FS%(hb@`C zYx1|VC38)d_w_0B<}NzmUdAxo-1~rI)3QMNnloX`<-h+mxvn&E}!rn&is>dB(8<}AZ3P~DFy-m*ju*)tj6=Uvm)UzhcLo%uD})vr1Z@=W&gQa z_1@CTD-Sp!Wuj<~kJy$+e^-!Evlx>(c9pOClKAAJmntt`r+d4-}EmNP1M)OFzzn3ZP znoKvRO}4X9eK^-I-ogg_O$#vmcy)K+?I(-tpyU*z6qrS~D>DLI`-xu6x zf?Una&|{ns`LaL<#w~hFdY-ZMXpR5o3&#C*=GlK&E7~j*9xz-`6xpMAL0j3x(0Gm7NQd@1D8Z6+14lTUiR1R zo8Qd2ZN-c9Z22tO%Tf+-m9AzfC)P-uSOhiZiq4qWE)}Rha9oro4SWLCBBk+=^@_f* zb&h4M!4#{}&Y{{>S)~T`OmU~_(9+pLCtzaEHJrBm-K1!Uj^e-tyT6a4CCfR<5w2A; zy^FoCt@Gb&%=+(?GT|yumX$QgcxRTC=FZn_mDTJQ8ct^TFcT5tB7MfvbZa}!_J!hz zs}NfJMCq*fS3)natbF68W!rDaB-F&eC2w<{C2{o8OR?&-^cRWeZC!RHAa5qh=mjz;Wp! z3z$IFmSvZ4o>p~|Z11acXf{**IbYhr8u7Sf`hdswyF>3^+EtZ3xn=Y|ymL1^O?+*QgGxhPxb?Q`Q7Cu$eqlGq0(`qii zq)dmLGZ@DS(s+5wU8)X|Bv8)&|LJ-YxF(MNe>~wvK!YbX`T(s5Dz=~@+?7kkDyY?Z zJQxFNwLVWbQOhC1Zn(Uv!J{6v2(h)*+7{Hx4FOT=4IWX0U2)Y|qm4GUAuMP8&F;*^ zKHt~>-`A@zm(9-1`*Y09=kuA*%ybj22w?aF`V0hJMYW^uP`h0G-+4DfT69Y);7=K< z?~v^J5{v#q>?mZ8W4z{`(->ct>LO+gX>@Yu@zpAhPK*a@%=Q5V9_Kkm*SBiMV|=E1 z$6rUql!L{PHY=*R#8}nH_l$h4u7Ce~Fl1<|BTKOYDK%W29(eyA*DZIiJ&r4g3v8Ch z4a}!I|3q$i*buOnX`;ktWDkt!0`dW*sAe}YDL&TQ4 z25}91mq~r^0@p{$`8`3SB-C^LEzFf- zeR`y2l&)i8+!)`)1@tCm3qMp`*9Bj}%2iM1x$|Q{TOCmpvSSDe{<>4<;7f=vbkzyB z(edxxuTXnW#F#Ag#Zc0v%-wgPMwT&?kanFkEN(=dlC5v4f;m1OYM>AT$JWhny2J{w&4LV7_OVt6l9T@QHQiNOBKC5MH7g zgCG`~W?n|DHPl;S8!g5v+^(h4vz6~eE#}oO-|~5dTDDvJ78pdqa?9<^Vohih%(akN zx;~x)V}Isu#e<34LB`vuwk~ova+_<_@&F_fMt>Z)X{?_B>u8crmoYAyK z@9_v{na-&;52izmI)?Z|nbMV0c?TpaPB$%O(0o%Sh`2)q>Rp}`a(%&^>+i)m1bBkA z+gs!S(49b5#Pe#!-w0d}rF8-`7?5&Wp>f>dl`e%xeF{?SLg66w#Y&5nsCgG^NoHe_ z3OH;DAM2{AZ!s5D@(BoCt6}j(ASsYGbj(WgxT&~k&Jm&I1^o|`tfR4sTf$9`zVg{U=^WoV0sdJfE=V0bdslM+y zv=DAv$#4J}*fhWiFNaj5ljTT~VRCukIXGJ+=*mAn#tm#irJ5ZQdvmP*v`Rd>uwnWR!^#K%9P(x8NA1h%&>Cz69W-MbUB%GkN~ZPY)tEk#-=icN|h*sQ7d z7wnAz&+;!<-+4Dz{4xR9gtOJgaT+)Qfn^}!E$A#Vp6r z!MShCy`p-6QFQ1PLq#uI~1BWo~d!jMsjrI|_9 z*}>lw=CEcJs6jESac7`=_kFlvhA@4^DgQoQ0-QEO&l zv^GCMU-QxLa0=JeDoPMH*cQ12VU(F?zA3KSiHJz2y#2ALOx>ZFpFxxi4Vy|jcmSWR zTd?ZE8-P|q18fa`@y5~#bRFnNe@PMnG51oJG3H|3aT`OsiK7TrutNSm)@4g~1rQAJ-coQ_TSC<(dQG5Pm5qzI!S-S55;Up zG=^BE&>*+T3XCiaktvV<5qPp~or(h!xdEcxboT>(fS64hJ3q3OZS_vZRI|M`$X#S4 z%BSNm^11db^3zD2wh5EmN7Z93yv__)ZQuA`7FkBAAwBF{J|rkJ)#MJGz$GxR({Cb9Lf`X+m3oc4N4w!TVgp#9#ZQJshk1sO z8u4dP!jY=GSi)L;`fNn2$(o7vXCv7T7bDsviA;JER29-(_Z-uur7Dni+C0=DV7{mCy?U9v z9J=$p2^#z)6aNVX*V~dbb^uDec#OH+uG3?LjP(TOav1s4_JPrP86tt{>c+ZNMLx5A zU|E!aVJm)5nx*vN|z@*aBHNF4OL#Odk%4g&Qa zLse)a>}3XR8f4`L<4lah&@~KPf(SCw<}n+oi-?uM4M|eOsdfW98Fsl6z4N>1iC*2$ z$8N5cSPp#7OU!L~(qzbwjg%ED)m%*^5=e`_3O8u%3d9X&DvpM?+=!p{*TSAb?y;%0 z$i0h9VBW{&*o)zSVZc7p>8eQDX8^c=tW%`7y{jb8VDnHa z!~6+-(geAA_1};^4F>4|ZU+HM)1p2ACVj3~(5|9j&d0l@>pYEQWbUcJPj#Dlzb{gq z6arD#Qf7oTOW6*E`>gv8j?zT5GieB-mfngXnprDyo6TuNU-b2bbFMQXAjNK*E`DnS zVkq6wWUGXvpSW`iMszvZf~24=E$V>`44*6RM^BA(7z9;ER-y2SR8DsySFJ_Yc@vRg z(eB~NAWP{mo>qPRouhmw|CyEU;#KBqgFFKvZ_!I#p|{tf>wAPzWtVDfAJ8)|@pDPO zmhK821l@*?D&ojgZdHxYcO~F=!73}_RwT)yCoS?vMw;nmOmNcpX)2lQ&UB89W`5g+4GnXT^U^|6VQLwMRUHls#)u1~_ zt*xA4c-LR^2LCy=*}*^l=(8TmfX7xj^L9QTfb67*50)@NQc0EvRG*~~l36*A+9Yj8MSX<>s!2TS4?nW_tzIVyIM7cYit@)CZxi|)iwn9i}7w-IIH z6*m0U3h@eFy$o961%JmJ|HRn1JwxvK@8*YQsmd}VjGq)Mi6RpeNT=f3G#$u%wajeJ ziF*w~J~!vwHNnkAU+c=F=`m0NiywI!%n)gxkfuJi!*1_1$vsC4-Ku!`G zz0t;{8uA9FLSu9qkSb_Nwp0>(;dhq1ZivH%?&+AU><39NA;Ky}-BiwUCYb*H7(^Cv z1w{rn5t?qq`Uj%MY~VsU!mJ7~LvRHnNyl4orX(S&p$d$}g)JU`v5 zTTI=*pg4*}Lj8#` z*@{Y7$b8oWN#0zSaGi59DoV|(Ki?2PB)~I6^%K^!T}h@JG1F%o+?!=4?PiS^A5XjK zHxn%E?qe4(#ofJ@+9?E+4~QoPYc-)*T&(qLn@;UYQu4fIdt9f&8Osu^ILl*UEC+4) zB9&!+Te&O&X7M#d6jN7>iHcC%gEBRDjC6xRt(OwjdBpj?V)6GPsn6h3{)JXJ&Gp4w z7TjEM&Clr;=OnEbjlt$hGMho|Mu;=CbQqE-qnq*hUY`UIw~h@Q{yr}{sa!J!iF22E z270GrZ0{_K1|dGOb=%AQb-D4=hD}aaCTT@6(|4rmGl;Gj7q9_H##D|yH!4rJFrp=C z)zuuyxip*B&6Q6@4QO<$)w}>Uk*z4aQ%5G9xZ>NtZK&s#32Z!X%X-e=?9$8#+}Gbi zbk`>`5>&%U{o)qHHdB?%;up8l$0LR5rS72WdeyW60t+Sf#`3_7*0oq5y(EoUStxF} z=IQC^>3K5^|5``gN410(%D;)?XNfRv(K=CF&?W2a!XqNxYk@9hm$ZdT2zR^5?Hb-T zfs^G;-S}1n%F?68)%7XW#q@kO6bR7^UT*LH^UgICZ!ClIZss%R68HRyw=k8V7U1KZvx zA;`)zY3FNvgi~Cd!C92HN~F|!7)+2R7FCLddM+sF_xL5Qd8lteYC8Ji0d0Yjt|6); zfEsnG4U77@4%?PhD6ZgJXRP00PdbDsLhou)Fpf@gzbjnCO(%^k_R$Qfs)M%ImhqFI z5;RzxlXynNl3=8$f2p?VHm7U7{*3|4uQT* zP@?`qDPlcSuI5D~ElH|If*}q1LztsoR3~!Df|j#eZLc?yRVX4;C6kw--pI&95vF4L z_;IK#ri##SMqQLddI}HyELy;C=iZ>Vl35UDWtq5^hiUA{wCPVGLn4<~O;?^k?yVt> zc!mOCL5a*KSiy`ve`4~gTavV}uKqo?x*mx8p`gN5jdpwn+OtUIkpK{tu~+HRf7mdz zHCEERt`X6~lH%T-592z^5N{0qo2Q`YSZ@OphKMWGcb4&++6K?_J`z=WolF z*Ss!-&n>cUf8|n%{%Vw~FkMWA(2molP%I9Vpu%sYWiW@$No0IeB?5OEnUSTCg z_wC~Su+9e4@alh(P->aUh5otTZt3&j7M-|-f{;Yom)m>4!W^mm8^y-D61>00Xbo%y zMhiB?eGc5Hha=9u?RoGMs7wnC8&#hpCo!#*SphxUbeVa45!SXWWo{4*+IE#Pk%-@5 z^UpG*{>EC*vN)J**DMDkyt$(W3n;5mlL8GIb-SVRB$A-1djdwkQQ=Ks23jiTmvQ5g zbQiq>b%{cHQ8g-L?!1HP2s+6e#pD_LqLH_&Pp9@ELMlp=9;0rfwdi-D@rt!3jDSl8 z3`jr?;BzKkb&!3~uX-gRN+tnAc}Kh6c`fG6CSpG#edBVC0t00`PoNlqp@TFbHz`Ez z{T&8nsrkXw1i9k0r{KAi4(fde-Z! z6+2=FaAwN=payw5QX{S5g3A|N6v|Dmdz!sB{)-`=KyAi{?B)WG_HsHHKQW8(lX21Z zqeFqrZ#l$$LEeRtDMJ`}5QA!<(=jNv;&Sa6kT&Zp-X4S03T*n zrbd&U%ZJE=mK*dohGnS^AsGZIlAa+Mv|DEUac<5z%ZMCF=%AbTGY};$%<)6e29O!5 zmY(B-K^l4;+~(Kby+5&shx5D4_2Of#ZjbWRm5@h#8SKL`CVI~6;px!U_&1(_l%e?gyZQZ~P7 z(Mp_=Tz|Zzu|w4S>OGhIIR|l5Y{zs=eJ!~cp{k}d0^aQNQ0llPr5y>nzLqJ_RI`*T zc0|pNi*NnVQ#x07Ae_$+cIMK3?sT?z$MMBlWa3w|-u4_M5`Hmc=@clMz7oxID2Be} z4En5;!LJm|lyh*6IziW~#okn8u{;7fS?#*|wMNbilgjj4*CNrG*^e>!aH^Ae2DWkV_EV#Kr&+fq( zB8hI^8zpsBr4TDgKb^*VjlsqAD_e>Bd(NZXEAE$A3yUN5(87a z{dYfZEMBFnQ)n@(z}^op=v}t!drPs$2sQ;su~INrHCUJew!yRBe$2{#nLHV52U9)l zByvitWMbbN;MkQj3!7b~$noe0-Y8;+(y%C=$DW}UQxIo}V!MP3|B(9Hen_C&9Q^FY z66c>qAc+|G&0GBQ16*R`3a5^q3ZsV7UF^)gyxDSw8J`3#phb+8Y<1Yas=GPgzcA&` z;G3L(_>MZxWno-j;f9B3wMwdH7L7!-G99Baz{o=R3QUWkj&y?24X|yHj=F_59#6{| zvouliVO1?O@UKH|b<7h^ed6>1zu+F6DE|QUXiX?) zs*!z;d0ka3pACP%uCW0zmX}%r+}HJkxp?qiPw86-wt8pNnebcoj&B zS7Vl$yKbUD02@SE5NeVv^6`j~``1nAwU1Vd=YvTd$zH zFflF6jKkasD7QnXRuq)87Moccry|HBn853_(^13;TpUqaD4&$d6mhHw+(v|ndJJ`p6{s;=G)Z956YV`y0dens**)2cvq@`-) zXMl~#?I%^!{oQy#OjU}r6Zv55VBcBWbfeOmU}6$!s!e-6<`+A!y;@U^uQTdn+2n#t z;1~uF1NpAiUl0`PIbY=IDfu@3paw___0j|$S@89w>MQH{ ztr1oyuDKm?57Wtq7-NgU=_`m)Mpt2EMr$BORzrM0fp;u!Td6|C0J6~AfEb`OUi^Zy z(_>}qG1y*4Ba?|)&eq<%>t_dc=PWez5!Yg7$IbEV9Mo)=T#1?_nBY+yGyDhVGJRG) z`CuO1(TyIg{pg`mdyKcGKcxGXVqCRUG-O3O6$2kCsV@*dE#>_&Qn-_b;839PAnW7eSIq-J%n`x|50uL}f5lgvDGUUiSgafNA$$gX(KE8Sf$Snfr#h z@d-<(bajpoBrwHqNvWyoBQsb!T3D&J9LK~N>qj4l6c}nq-aWRYlHX#1%$2W202#f0 zA1{z%y%9ao!++h&ovP#3s&n2Ce=`P$A+CV*7H7#_5MKZ++G47kj&K@#+uxFa1u*{D zCZ=O7r#WB(zAqunF(49^L70vs*ZnhH%~Djz)DeWgOI7ZR;yQPWzG5vOgOGyr7)l`5 zOD#_kpa-Vl$-B7-%sMx%(P4lg~rTutneDF%FKtdI|Z55TD2P zq)VZf3>fRF;&P(BUT*jF99%KSh_UHwiV-$*d1y}vNIL-2nS0>q*5nsR-r>|@$niSj z7(`6>ofrctFZhLb--Ag_C5%0VD>UnnTTAG=TLuC=AP@4-Y*jM~r&T6c*sCZeV(C=m zOuPiPzAUu#Bw)UD64xi};E&b(u-LR(0~ykyTRajd6&Mviqw6XlyHt8<@y~G2(VbA$ zPFJ`jme!(K1btK`gC11$A6z_YgT7+)4^YP}y~D;M(h$^@5op4q8I$>Ue>0zn@5h`$yCZueazS6CL3t~nT(wk)}WEV+!u*k&Zd}b)ZTJq)gd_T$_!nZSQRo!4GNiM6ncM>1AQm3n-9C& z#vrl{V^HhHWyQFjwV!hlIC+*K3BPe0hF-yFL?x-)LZ0zKw&se*Jg?NoW6Pj#U##nD z!k{y?@(c{xP#bN}1qY=k%@^tseT-IibPS)|{H)S?E(8o|OJcoR3j{;fe~lH8(ol#h zg)yTAt9q@1<)WRjN;dc{q{*fl8LYoi7rb3G*>-kXnp|(Ri7}IS5W4+g$bgtJQLEZe zNG6leXkmBDlGA;>ZX4^?>tU3~SV29(Oetp9{1@uO0%Iq293iYwcppIsDZ}^@tS~jy zF~n^)kqO3win;$gERJyH1K9s9<@+J<>x|QK#6#NJKMqdSbSn8922jcvkta>)%J*P| zQpJ7Lq0&p_>+<;SS_#hZvti9pzCfhbw2M2D5Q}v)z=C|@)Q*kh@3#8cj8AyI0db0+ zCOrDpDfUhCK<>UtOO_(Cf_G{Di1fT?rjctom|Y_JtFXB>v}9-*%$3=8>1x>;8T`R`cSFBHb>#^N#+ir*3Sm96qD ztZe3F^|JyD-Olz8~g zdHv-6_ejH9*@F>KCQAKr{6sGr1SO_4JI7<%(^ORsn^$#5Cl?`<-OHJukZ2UT#RT{c z%+Cvq_0&Ve*mR1?Kq^;EcdkVvg}HA&*2z$%JUgE=&AH`?44LH^YF4FZ5fl~U90}p6 z4CA~YC>7iJ<(W7K12|dJ*L^*W8S{YA+c0PqClJU`jV2ReC^cl1ApJ3Qe}}o=qqsW$ zLbSl%^Ii&!#6^OAf3D|5Lr(dqH{3x|+(_L;Pt}T@lfenu)n!RP!T@O61NtHsh@q<= z3nWB!76sfwAJC=vQ`U$Pn0vJtLAY{HAn!nQ)Q~i4CX~95o-!4OxCXlv@>7V}CAtwB zM2DrEtmL|CxbhIHViQqjmGn4fm#u`apMr74cboQJxAx^jYTBrIZzSB-3F1PCsVsvcP&A)wsML9Qa&Nx@F zpZK$seQ|NSf<}eIC{g-c{pz=%NE_)&{A7B1=)-w)W%`Wwq1+oSTk#Wn;a9L%JD;td zVB(@C=`#J(pLj<%jnte$up1Z_!!~!_LD2{{O;H(fd8p71oS3+Nt1CLPM5dF9Ve{7w zi<9|f{zn&h1M!xnewG^-tOJKH{_V=yj%r&Wc6ce@CfM^?!G}NemE>J4>PDsl;b^t! zuS1Kbov!~ARm-v!gLsea2HR1CpDJ80!bVx`W*tXYP@?W2fmqLWtQGTf%{(JXJmjMR zGNx(|`p%NRWU8OT>Zjmkg2fpK_@j`cL%mvY`%a#YL~A>DyCt^e}zmieJIt7 zeEJ}T=|VBkvQm2762985cKOGs#7X0YlTg5|Mai>#M@PkZk%RKQ)I&VaZOC(isso}? zRkmt-6kYx>rtMauKLG0sSx!HMFtdof$@o|E1@vpHd<|-?(Y*B&OmCN>a-zenq4^1S zc`Yc>9joSn1j&mY4U&MUm)3*#Ob` zrQGTF+`h>OqR5=UA58+1LhIB?&*q+oXIb3~FZN!-TZAB?;=d3>Hc<&Fvvlnl%VmZq z>-zSihyIa+ppR)yQ{9f7`COy|x#KAo(AJ`EeIlogeur*`?jp#fZ+^zH}E z{Immdrv3yclZ@{_6db?ajCbE!{1+8)S>1N9)X$X)aBTS_4fr1=>{-uZ8#$L~Xe9-5tzN-lZJ?~4j z;`E(5(Sk8tbRme;S9%=fAPaqb&)sq6#j;5}yTpZM4AM;KbUOryYn=;{+NV7ftPCHL6#xiGJ)sI$ntml6yC&3ljK`r*Hx z8Hx_^UDt)uvC`#il^8SzY^{8KtuF+i)OC9C{*0C^dN?O$R-A)Z+|+yi+##uXz^uk} zXOkopT^99~@J;&FdP9d5o72GrV}r_cI6CpuRkB&z^f(TAH1NU!*NG^A65JxLx-pDP z&bk#Nx;{=hXe12SnGZ#DLxIouMmqCG8Dh^q=$YN&;yLu$gkA6~< z90iAyxkXQ*dPp0S)<8|FQalLa&c*3;;{pesn4}Ducnms_AVEK38d7Ywdl=$|rGJ?1 z)8e8)p3D0BZcIRiVqXM|7X@p*H(&}4{X!`kKl=&hGej3*47Sl#O*SFIyNIN)-Fzq4 zz1rhwYLVwQzpt!(ifMG&h5_8~ZY`FA$cX`4-pD zu%$4Hy-t@(8jyisk!U(V=v?9?+=iP9kn@PBYGlS;K~&Hk^Dz}{sr)-zb^V0XKhA_v zGZ#k+-h^9%8@yAokW8KXZFt(5H?RAM@i4MVcaay7kTxcIuR0GyukFUVgi7~Yr$_xa zpVzhE1bTcsR@Y5b84N<-m#DorpuSyVl!{@8O-!1Ibd4~rQNThAOjhzFE>xT}34K7) z=@a+`rK<_1ikHaK1?TU4#Vu)oT#HV%Y4vrU!5dYFZSU9_R}p)dzIM#kAXNpbKee>z zI9xaiE;T!cLruAE+-k!gPCY_nQ+lB{fe4ftx8B1N-lV#QJ8YpQ9kUW_+JpMnsCx=Y z?N<~v?#BB(GDy?#kSA!za7|P5>vZ zp0<@B<(~@5L%_kad$|ip?vvCXSZ5TL@o)V@)>V||d#n}4zDHhV>MUr@9s$iw7Qa$JbabYN;Ez?^0q?G=141-#I}E{E?KYx^$`-OQV=xJQ@vK zX6^O?{2JQ^T`zGN_6JLKv@<`WTsKRxsEsufXc*KmNr}%VgJ6_f8T0g0=uLyOrTbBk zfXO6oAwJcr8C4#yiJb|CU?o3G zU|YqTh_=X`adE@m7OB9UA!$?IT!>MiHB~1-jxff`&^P*G?7NAfhAo%>fMsefA8mp0 z9VU$U74np=Z^wMr677gXJ;mM)Sd+lc5X@kfD#Mb}nik(jd@*#5od^SdOqyydVjwHLm`ZA0)Ds zFAz7v8pQQ5L{U-58o%es&L`=KYy{8oYmop`)}idaDNdeFQjl0h5@eYQdkj zY8o+*O&$GMUbPDPKm3%*R*lw-xhQgN5`bJ-1exjGj{IGdgnEeF>M*cI155Nh!USbB zCK2$R_9d2Hrt(n?NUZf7mk=cx*|&>7^|Z6WII|te(bT_v0>2)0uUv5?SdGt2iKK2g z@ovxU?h>X7`tKEqdTA>fHZ48Ef1x01ZAsF~okKiD)8lp1gnOdr%={5|4lTI{DF!Rk z%-|*K@PPRYb%#=2rxJBolXV!bt%pj=+yM??tw>PSO zN1WKCO$tY1Y&T^n_(DJfyS~OuOH({Ywnv6sehiHPYG%zwJO+SGAhpM2 zIh?pQacH3M0@xv8AIE1N)74ES{&~8g+qe_rM%N?hQS`AN_!EV9CNLwEh)v)CH4JW3 zW6@ItuGMs5k`APZ4s$u}4$^oQKS0XDcArMdQbiiEMmI8bxCQ-8+m~H?Fio}OcZjAc zDv8~3D@66sy{*hVA``Q}pD32@5KRVNP+Ehz6L`Sr0ILNIsq7wq4V-JtU$|G%uL;11 zUohjgokRFOR40{v@OFZyFd$tm*CHf^h73%hp?1#$G*xJ+PTYG+=t_66a|Xn|=IcY0 zd&1OFv%WYV=Md+4D>W6SNJz_=ACRtSY2f99Y%b8^$nk1$2Vg8a4eX?v?!M?hSVQ{A zQmpEQMJwIx_^Q|cfZr`oinx;EpZIX-=IvJlpz)ekY;gV&X}HDu3+7fm*^BkM%)1eh zQ)1R*a*Ta<@TdJ`C03SQMbG(g1>HgAqMO5NTQv_+agc5O{fc;Smh{e#xNF!VZ+8re zU)2-iWW8@CnRVx&y+-JIrU%*1=PjuCgA2G+%5=dSk*b)>D_%>`VX|6tbrbr)l41Lx z&-Y(2E(gLf`D1r+2f%XYjZM3`kUh=^3|5=#h~MMv#wHBp$BQo#%$2Ukyuh+~wxT}t z5_tF9oaPDRkw=iOEqV!wk`gZ`@)xzWg(_blv+m#N!9-nqp-9(HV-uNf2+iq6OkL)L3b5 zWt2P52^>n5au>bU2L2UiXFDyGV71zTBX55OZb`8~{7lW)W`FL34iNk}l)B5x9X&hP z^P_E1ec# zQT#1tr>VyCSDu|Eh69Z}B(S^T8$L>8>{jGNaE=dQsq6n6B*e^VeGNtciLNOarIIwu z^xYm}6q(DU#NFF-BW&8)ROTbW4sSqE>t()t9Gx^89!|^R{ z%%N{#vptHfuvxb5mkWL%B7fE*YFXEdwW8fr^(m}>5jf)c=({jpIlEPNU@eFLc6VaY z54e6yT?HmO^g8_ldZ58-@lW^zw)~f#Wn2?ezzuM7;-~k0VF9}^@4ZA{wurxnn6k+o z@S>Xg<%;7{E^t|F=}N$)ht8!R-hj6~$_$kw2Tq3flLk>quV6(PYQ~+H2C3SG>Zwqa z!Ft&4>CjVOr`O(rvUp&*NMI5p6&EM*p{)CrSbjmz?t3_Z_m9l4t~wMnCM z#BMGC7dw~L|H>Ot=M!{QAN?T#qPw)<(X;^fo7*LC(n~T=@&S$whDtSls@;#D`c7a2 zJcwX6orh@>GF{I-Detqc(^(alC&84OTZHjI10P7Z3J!s;N9i-|Qsqm8yPIHO654FH z=!iv)=u=A-LJM+g{GoX&)76~l*zX!jo9qk64AU(Jf2SpOn)bb7(BI++@vN1t)-@Si$@eYX=BaIlxu)>MZJ!euC zr=zZw$G^6Z-}_r!el%*&-1{8cjUfq48S)m?x-QuuK2&+bP?yU_y%}njGi&anx((f5 zBP;w#C%FyXES1qhkA>$?1gpdo3m?S=?b0283yQWySB0PS7x5GAbOo}q#WLb2XbY?a zJLxWP-rVfvhViy{K?)YxZy}_dg-jsJG^a6Sy|&35fyc;uos{M?xR4NB%pOBcfb&sM zv+X*kB`dhRwjHMtBiNoM#CWzUvWnYzRU=EPzU~{atCZ>YorFSq)kIP55h!uR^z|4VuPkeV-a}(9{==We`k0LiThR>74}w9tnlI3%mBlZ(Zp*|4H2No!}zF z7E|YMZv}w)5af`jQHCw>U5^Z#XyK%HIi{NF5{98LR0ZYzv`69B^WV+spV1CwKrUmTTxu!SJieyKoice#dfp1>%Fka8SW( z1hBSyny^OHkQU_5Wj;tsX$7WyJ6#oN@Jd{02`9FOfm!){0dQzBNm-=42Z}UuuBHOR zHB@aMh`K;6S%PjJwk|hsEyapbttbnIxeVc@@=9B|{$ZFY*0Q9J5m3t1iG{;-Xfd@x z*%m_eVSXJ6VrReb&~ z*X_#mFA{3`uF_ES3OWr|h3O))XVtpy6Ij0B$lsHB zeAq>rXt|Ib1BgCMLdPb9WYddcz)iR#*It|Aa}%5vuk&v^ja9Cf_zsveo}A5OMHa82 zTv7P0bAbEbQ>PobwFPcawN$G+VRXY#qj(&C_2DRR$UtSOF8w(#gmCg13SLMXbnGTb z+X8bJ`Md2kbN5%&b4_d$h8^CJ^gZWF?*$j5Pl9m{LxtiRQn}vJq)(AvTv)0fv0mG|Q)FFlGDr0^|P!#42TMePADy-HTF?%^6@Old#DmKn7 z>O^8J(OOaHr2$uYo$}g6vlyC0k>ms9)@>|gY;_qsH~q{{Ti^_?RagAB^Vz_m3JV?tmGTZOAGUiIZY=A% zcMU>QW~{=EF@2{oM>14K)L3fkuIxI{sJ+l&@w&?F~`t<8Y_9Y>LtS4^`NM07QBP~LuLs)Za_u5%tu!&cP6llF7v=L z66hn4(ILcP-qRuV>@aliyE$BS0fFd!z^u*TLjY|c3YxuF1a8CyhX?2n@X0?UQ?(Ry zG%nGPu2WQo>>4wf3w>Cf9efhDW+VAnD%5{*-W@orH2n(ScvW%Ix3KY0#pnEe?+M0= zMRW-0x z(zs;;&%5$M@k!p1GD%dMU2obhN=?z1Qw0NW+K$#(uMekmi2N+3$e%xjfngPgAyQLM z0!G5B<*67TICdU;VqseP6l^Gsu#5+~{yH#WSM;0%SD{L@(kCGC;mV`1N^{T0!H~H2 zjuPe=^1?|&ofVQ$tXoZRWpCGNnZC2olmo{o%V>_R6$*CIH7L^u;s6M?TTupUw)Fir z2nAv#?cT}I%;;>De~;TR_H4#YOB$0_&f{`Qz`2BNTEhF|m^b!Dn^l%n3Q?29C8#f^ z+CU30*HTLrm+r|8x4H_l&mJzV1<8yv`f*OxtrGL9$LEMMj*5aQ`KTE6i^Leg-sZ%*F$1j42ynxjIgx~$zb1ko_~ga(5|nnIpcS0SG;G+!!E)IS<04sJm6(oW|*-NO1#Yb9o(v+yar-y zXUDzR3r?Z4-<#ueY&2pk(>ZG}7IlL-b0@#cD2QYa+Au{bxAHeomzpa>VKWWJ;8~bG zq0~W4NHKfiU#M0?zbC$iz6Tr+30=4lS<{?7(d07&P zNGrA+--rSfrfi}CwH`#ALr-Z`EowbTQ3P9OE4Rbe9~g)C+D$K*7a2Fk6F5{^?cRQv z%Vu^nZmgq>R-wj9jrwVDJWJ5`baO|#fzviYnBc@@upim}0qvZLp^)Tl&Xxl)kX|zB z)2q3XUvk*G>1TL1K9BC{hTdcj&GzG`>QLwT3-gyXK5-ck*bk{otP8=8kD+Q`^W!?@72x*6NGv2__oG zJ8@TZFMIQAbpi$yp*SPGkuUKGj97R?w4@ju$Qul!Ec#ScGm=mU@fVU>HT4UAM-6b{ zkL9#Z_Tf|5Xg#LEU=77>R};nPCi7I4_ZUR3+F;D#NXTzt?0E*HD|f#S2AciF#=2ow zM)5hdZPTDKZ!DB=h~humSSEMiAF9Z~e9QN%WXB}8&xD+v2bOts-Sc@E>nw|BAyyh| zi%$mZi|ca_6uRB=n`wL9J$e985N>aIs$$Dz*ek+_{pe|v@=ECE-2Rl?WTSZP2Y7iu zt+?nPf0QyC|KaXEDW^vAh#vM4nD8FzFuEP8yj62D56+m0=EV#Q!^oI=;ZYw?-_V6) zz;QW`!2*$2^Fp8IDe*OFl~5PWJ=5Ve_BrORS@@}@pLg8A4c86l_`yzHtYZnD@ZCD+ zYB*S|G^VObP~#nm^yAMz3>kD&l&@vh{Occ?1DVB4=09l&QhkHVG{}!azgex&1%H6J z3HCltf-xzBmD+{;p<0rmV7w+nZ5i%gFzVKr_8?OJEiP`7X2*c&e6j5XyJ+InfZH4H zA|=Wu?!+wMwuo}kxz|xc1r>7+Vh$Oq1M4_1brY$1h>6u#E@h#^Xe=l5(QQfT%T0@3 zat`COAmydN4^YP4G8bN1dWc_<7ZlneuHAjwCxc)vyt~T(l8o+tH0U398iI2uzQ)3< zr%oVVNE+#gLCpd^Sg-R1sj3EWM>cZ9s#}=v5Sf%Q{a4sKALtHF0Q>?I+EJ!H;hQo1 z`BeA1thh_nDE^GOkaxeLoesS6Xx;*_2Xj47V{Ngxn)6t{q3iZw0@JANm_P-yIFApr z7HV91saL4mjS*2I} zI}fwST^KnUo(-hu6B3&tCM^Km{Qt|-iQ;F`vHaMMvbDZx%y)V;rW9)RTM-S5bjf!5LVuYOE^$hbw$r>@U z&7FtvNYFzS*(flvwhy}3V@}s3%6l*oOlPj`bqPHd?t%*f+sTpR1-312w|&sc^xDex zTao)^OjR73;s)*+96E1$bew(@3}Av2`w}qXOx0`TVuotvpGB=4eJQ33SP<1E@=_!K z5SE#Qw8m2VyhH-Js8b-fR=(Gl2|y{xlwn2}uM}CtE6L|E$z1e3XjC5tWMI`8XSYK9 zm{$>Vus|RT6bKvz0zuN2p54bLpZ9kfT=DS@Q_NT3mB1JLb{72WwnY#Xo6;l_gpBt0 zDG;18CWGf^qx_R|qI?Dzq6UBL_e+X!q#!pywAt4wMc|~-uP-`~a`2=1Ukr`jr3=`x z*Jq~22~^VcTXK_~i~W2r=e-WKA^!7rpZD7q?IH*nI$RVZ$VokwV{ez@b0q$&@2}LJ znlovq{j7bP*B(CJx7pEop2NAQ`X{G+LU-nQ6$s*EQ-q!_f?b2%L`Qv`d0}qd(6Phag~{JE=T*eJm4~>U@pJpx%MDzzeX7e< z^USrR&9(TF>)~qGqVHY5`qK5#HrFpVx*q(*^}rI>{qe5*LR`P_bKUFZy2r(Jcb7BJ zEvn6#yyTo+?VRZBD7&_K zS+nD^`prq@j!8dl{`a?z|318V=|0D$J2x*Wa9q+?Ft@{D?u&xNCk~1C3leTSBwQ<) z)9f&(zF>B_!|b05KKRz*gTn>0_BqVjSrA{~5Z{+St;2rWi~RSW*uQ^2Kk~MHxuAR_j5> zjeFVT?lx@_e0dwxHNObm;F#5Ms0fI9Q zPV?<9I6aE`7og|Bk`4TI3#8MGxH$`Nk7~;0bL4~vz8JaRanYWuiI^Z7v&XN>YU@@%NJr+ch?s$M1 z5m>ZscbCLSnuCNKCn28$z`sKr;%t15JMJ`t`)#Uchfniy(SWI*IUfjoN2H1FKoh?X7!n9Hu>fe|*UKD$z{d<10*1s-=QJwX z6No-#4)260G9%Chpa_7=g$x2Yd|lOc>?P=~v7E!ITy2ZVO%Vgo&pr z0$iFvtq%54pXUVL7ZreOb2)a4-bn^!7INw|yu~2kDwrDu{;-b}Tv`_^XpHf?Hbpc& z>a%bMpH!g_NsEr0zHwLRD7>`J-t$P4e{|ry=t0Ktkh!Ve7LRQKIr#!mi=T%;G|^tLs`>0E_9BP; z><}W_Ws8T)R2Qe5Yf)#t6fQkWTtJayt}Y%9J5%iK2IdLB9D6F>gReGf=@D73ouJ@} zK=7R2lDyB6K9VfBoHKBh$mf`N-qIUWQ<@)s5304_y@Yu5DnI8L`0nwRsQr%2Fh4=m zvw?!$p7}>Puu*oEj?qKyuGkB{-676fJp97qBLcz5z>wbs4o!kFpCq|_kX!2bJN$L& z@K)|u-+6+l8SaH)g6IIj_WQ#N7P?#-DiFQp$k(uJ_^+^rfL}okKHmRH^2tlF|7K{O z@W_XvfGy&@MSncY+!BJ4~Z=tQx@xLaC@)meWeHQt83I6RUTv_ca zTI1`!dgKwmBa1*49^3xy;*@;g>^F-AoEZGpG`$Pn9T{Pl^EAUHD&R(t2$cOj!^I`% z6Huwt$8McV&QiPW;17-i#g1vi0S7>dBo~+D1Ib5{z#n3}2oBZP-`M@US?FsY7BG9B z$HE)-Yvwyf=7 z7y3G*^B&$M`pmX^zyAP8wG>{B@tVq3{U!y^CzWA zdGSL;31`d2nU`}UdCw2PpJ|py0xrtPbiFCkuliyvxc2q-l#wahIb0EobGW-|i>dYwDizXWzVSjk}*A9L^TCdIfcEcaUH z+9B{f<=_05TcS>MZdJwDg0m6zYazT9#=A>w%SovY-1#ToqxX{NM>ZWWV`2I2y1;{8 zcEcv8DIbpotFF!K=z}*nSXX_!7sPo=mwXtI7#Fc72Y>*_*&NDtg^MvO_KrOt8#iO= zhXHw0MKjm?Cq9|EHFY>YoO`X>elEoGPmbLqa(QP|CSD0Atfx!)3F~So*jvR-LbWF# zmJQ5>82nZ1R3gX`jb_no4dn$_mCV=}! zR4(w*-WOdv_3DhBqu|oEXrZ%@i_>4prkJRKf?HQTay{Hua7ILK*8m6539k+I0=5Gv z@bHwN>YoKpfdWIg0!;(mKI5&9Zmz((YlD3j@&!6hiTVlmYSG12SdgGH2 zQ8?gVCAL?DKy86yZdsbgA4#;wyD2b)0?EGVO|JGlAOc7DNSA^vf(_nw za21QP!^h=%t#FN*ew8~HZOhmT+;vM!)?Cizc5wEM9hGkw(sBc3MFLo$+tdR4f=ilC z`FbpHxxwZ23kZ2G|4UU4pOz-`j$OeygK<;alDSR`%$9%XR@ndO)&lU`KW)?hADap5 z)u&M|&YUrj%NtPVJ#u-o)5ihue*P$6C?$)8IXk^Zr3vzqUky^dd*nA!-_>=o56|&4 zcx;q2wgsA|ZL2+UAa>mfpmy$VoaH){6Q6{u0#xrd1W3_oa_Tu?SqcPW{wXU55Pbx) zst$$Y@diyUAEg<-+^&|lmsak6PPPTU0=N z(DL$)7Lh7FXvJ!k9z92_C~EELopY@n(Ei)+|BXBD79_`^0<4GIbiF%moM6gt+mTxxE@ofT)AY{q!iqV6L1S1sogMd-R{zTgi zC!yTg$bZ1ZOvZVO|BO7tplrFb;bgv|Z3cY`HmJ?^tkqK6^BBtQ_3YhpQH*oFlgJT! zfs=_`VQ!g&ac(_|{->U|)ThH_)qBk_b*jx^hPt@%tT&tYbMBTtZ^dx1{CUChmz~ag z!+mn8Jg-hIq-)ouWANOs4)ZeP+ae@=(}|i(UWI)zAvH_oBJ90`s%{#!#ZQyIXm#)f zjx{KDYI*0YfJ);I_jt-?E%^;!4*nT=hS9)hcQ*bh9d*PJU;^8F+vG>^asF$Y^cjN{ zq#-gKEl+T+ls$cONArW;WC8Qs%!03^WuUv%wf_K%6~1d_sPCTiI!ew&CDoh*%X9>L z^@W^Tb-k7aPbb5~<()1Q-GwG5L`Sn|c1EN6km!2uGho3#^#&&&ZVLEI;0ig39;1#l z_=+Yok^Ve87xmFJ7*K@_1lb9P(CR0e*?aljf9l)e@)#|XLoR=Umzx4abC?rqv;H|| z=me``D#P{<7$7C`P!O?4UW=M4Udy!L73SaYiZYETgWS*%I!~LY!-wSZK{sFGI=(^^ zy3n2TChya=2P~Tsa)QezM0sx}U%pj~B4#rtu3wMWlPCE=u8%&BT_zQY@CUe=j0oXO z(LvI75%GqaJ&Jr8zC{WzRXZ8wQZxBh);woD+^CAQ?eU$6(Wf)EdC$044QaZ;v)~W- zV$W)e;qn2}qdtO~7M&!Gmy^b)^?`SNuf0wTE6lw8Y~O#uZ;8=0;4PR(tv`Z(*!!L2 zN5fQm)amE!aV<*T&;CPQJMLY)r^kHIHN4C3gW2ok43Q(Ak5Pdw>Z4O5)?T=k<2oz&K)wRsLkb4JaR^9l=F@_2p7y6f6;t27{R{u`^GK z6xqK|EFNv~z_59~U~8SvjYU)JI`w~##Xu!GHw6EVO(&McggyQ=D6}-yO6Knh7ZQnS z?MhX^M17lD9TlmcsGx*$J=KCHK?|N4OzoAH1A{Ccu&_K(3Pk`Lh6_I&K1ZJ-@d_-9 zTp`4njFl>~Z&|A?+ypl5P*}e_$z3mX&m_on`n9DoLr1-yyix^Q(V!}wLl56PZj5M% z7+WZ@@NhrK0mubqG__m+1sVnc3Xkm3<3*%jC*K?wlNix3RkV7ng=|o?&>4(HWN**^ zT;)KRbi*@Usr?w5=|(?PrhP-7@X~#w7p{|rHN@jq1wq@mHHmSTU}7;g6N~6C)Zg+C zbTZRkf*|hv1is@xBhN5a`1`D_m2P(mob?_L`5CO{Sv>~Q8lgv3W#Sl6<7Fb(_Aj+e z1WG@d+(+z|%XP8NFfm*?rVqNdWruNLWc9ExHrvZYUqK5|#PJ=3mv6)AqbU-DlzS}# zDc87d8^SihG6_0P0rSMr2=k;ivfvOG0icaL#|+0dwO^CPcD$BD{ZK;m!%Ej8)&&14 zM#x0ojYGZ0L-+}dzZjez%0arGzsx{{fSO1fyspzxYCroFl_E*$!I7Pu4; zHd`Qba zeoDQjNo_{hG32=5LM7<-_hc8B*p~3c4j{xJUe&4SMtK<=Abk#I=K}Uj4;g2H6ZHiW zPj<>4IG|0jIwI!jY5aYXFpYaH3}U>MBu9aHKgDMz{z;^!+r~Mz*|{1;bag&a4@;b$ zUQcVDUQdlg4#$!86y?>!YK_#+k$R+PYY{s7i**(3eZChv{Ng}+!f`kR;=(e`6;3+2 zTn45)m}+oDiqdhLIt8vxA{@VJ9KUQ0yOZJJKd{|f%A)IGfpArz8jrR!HQAvpZK}@- zfq}OJ+2L3bA0Xo6+qm0hxJ=f9xRbA4WroSTp-5utS{Tk8)5q9@&}+CFwNB^7>;o}i zg5Vt<2=;gCT2(~&jCJ0`M&1=e$jhb>0Wo~&M7w?l9r(f}77wg){Dy^}TK)v8AY6Fb zYANxvaB_aqcmoj|o1MH#)l9;zSjHehZBlxtM4`FOG%xl^L{Ds?n63+zeJnlMh=OTD zbi(KGtnTcj9^1yl%7{cF$shc$Kf`h-Mr067cVfhH_`AMN&==4d#RNhngH?{RIHA2v z;~RmCu!y)}oVr$RZmM@`kjr0G!|(`3b$Z|agJmQ9SUBwtPFPKl&SeBYOx;)ph%r?M zrbApAfE>jz#tt~fCZYi%T$>0mSL-MT8#}ryJv_T!>@4pwJ3f=wM#7YTRm)r_zThKl z9qb%1g+Ksm0OH%vj&~UmIa=L?x58)EjVaozm4MaYf>whm01Wuz&yK>h*X(EO)U~jV zAHg>pU9i_MS&GJ$S&Pci^H?38Q|>@emni7l8#X^ouFL0kJl%szqiTavn7B^U1TGeFv40BqI^?psL;dH*)( zBN6x;1RIbJC;l7S;dXFb?rFeS+FEVd3L>&b9&mU#?#@p9gS@)_cjVP(dYcg_Z;WVJ zMgO+KUp)fnfUJV>ZX?1QfNBLzP^v`SV3kT`!0+ojO3j@D;r*9WxI!LGg_mCpzm&NQ z8X{A9CW4@#nI4H3w-7Th+ja4Kc2Jw&NnXyvYDr;vJ1_Za4%AYZ8kd#Hu&m@ncmiTq z2H3)W)_x?wzu{%|xY)@eHB{Klqr1vFn}{V3!X_AkBl5wVsMxYTL;O>Qd44#f*N7OLQKjRN4T1tau~z1 zbj6w%0a|kai~<&{+?XjLt|EmcW~d@2$)t+V_W97Z{1i~n){Cq=S#;e2RR=SuInEg6 z7Jc*@meox@X=}M#NsXot$%+Ih2H2v*Gwi4?425^^k-1zAkvTX-^x+`*Yx8eWCPS>I zytA^W)+Cn1vj8iQh>D11P>w50IM0HDgF$%?Jb~8iEeP1ql}JAhtQpe@40uJg9OQ#^ zLnrWn(Ktif<6?%YBa*UJc_Cwa{Pb1_FT%nysj@@HqFGt9&$c>vQ|pm><3^rg=0Y3p z?8%-u$Dg5O6C+53q+ZHGA$eFYy#&atl?ZmND@aSjzW_K&)SBQCMH6-(1mA}ptX41( zY|E>?i%!uX*PD97b#O?HV6@pzEI+6R z-#4j!wcjR)enc*tw$c#Xk+Bv|e6M{3T_fZ1ONVF7(8$-5*Ql~dtg8g zZ2qY=3!k!!jM=J4i5do@xR1pvVi=hI7DQbk*X39Yx-YGjqTFlF3NU zO>|Ak0`PcZpE9q+eByRlsJ81h&f(dOJVWN4JA3Re#!Lw-X#rRzFig;)AYx673H}qb zPm#-GHO829terN8^t}+$D^en`^a|Rd5)}iNf%f3*#r+zGDk5-T4A_fD!NWX3`c^WW z_NNa#)2^7Ivc^RcY7QD5`cEoGJl&)Um#D`R1GPRwKoCP?vZmJjh|^4n_T7M2Y^F#thZeEMZ9~;F1suNXoGZjgtV!<*H;c^ z=?B*-C!c2F-o0xduX9Ew$8x~3;h&Lbn91~ zEI3VYu!(jn7a(*iz*}ew^~xG}D?-2Ksm4mw9>y${o!yK-h@8!D_OtMcbeyoBvArVa z4aS-}+r`G&}mdFUIERy12UBb-;NN>@;Tmhfm+0%b9 z4+R;tSq!uXpSEo0X%+S;i?D=O5&d7p4v?}zp#00&QaPO2Sy#sp)7EPnSO-OYAFJ78 z&nnO(f&x9#qd>!E;XHLzRmp-yk6{D)}MJ`cx*ySj_(t^ZrMp%(aJtHTSNp3aCSTTej4+VQ-GaFTr z5NJHB!q3}Yt!d?bWz0*^ALD6v?MR@?^j907!RS!OY(T`{UI=o5SqE{fhfZ{FVcA>?e$QNJ(CLJ69^>193cw% z1HlqVJlPaoAWXQ0R0VGqboC9JuEy1~mD-u-2hx{YWJiU-$TLg{%q({{nUljb!kGkE zcBJ;_kEX?b1aWEjhx`LP9ry>+l~d0<)&c`;n5$qu{ufxu9|2*i%6d`q$O!Zm(DM)( zM-jHctdSh9x4;J=0EbKmT3bD697sbFBEE^yd9XOwj$VHdQA0pc))Qxn_%T`qtO$3@ zy})BF5DjKzgAt&0MIhr&(TyxTe2H6!zMHpNfFFUhl#+u+!}%y%Cv6~6%B(=7n2YOlI~~0n_qC3 zfHAJ|OyoC1*}3X3_F|9@;%vmtTk9EZZ{qAtT`z<)$Hl&K4>Y*OA@q8^K3^W8fdC%i zT)2A{dC9!$1N7-fKh@sf5&hAphGH*<|Lqjlx|csBhSgCru%SUp)=5dWvkw=J9n=>f z<>s#xI)C|RFGO=D#DzUrzOUkCnCb{6&FGSnr`n-D@}*YC=$8{JhZ!%us5XaAC^`pM z{PqFY_$7>8iw=*w0(gu~J}>`F9ZhV-P&D_m4@h>}i;ty;M}Lh|KRsT%jkG0F%b_cp z&IK_DI@IhlIKmrx0M;vD)AL1FvYIx9YbLaxaeF@mj|=0>{kzTu4Ne__hduVQM(r*F zAJZNm@gny4pq#zzJ{)b?v39PJK-fq}#hs~;V(_9u6jePOu{ zxb}HNv>Ba*zH3Q2nx(fqr|Z>)!(tOplC5TO*&MV1fUA6mJqohD~b95Md0d=@xlhtz3hV4*Edt5Ahso488=lv91uPBI|^A;5-~lu=Bz zn1G6x2Szlc`KfgV~#vbTL z*#pz2Pl0gi-3Hw^u?Prbf0=GqRgxTznL7q)x)1MRQ`(K# zl<8OGG%o!cFk`L%UL`rovnIF&JjUbqv8i;@l<6gGitEN^O~dfB2AWOe#Qd36K&I{Z zy38QXF$WdcIk?R<_Pc5Bzb-J)!>nNl2NGV9G4e3C;IBLT$|wc=MPu&&m(K>%HJYo* z)7_PV8Xu;-ST_drwVuH35Q^&!OD}lx1sY@yu1w_o5v*GM#bQco;89^IazK0FI#EkN zH!Y8=gM^WdM8$CqTYgmZ11u0D*x{&^z!3uwBDo#`tN?%@bWEf@&n6*OJ_QvAxPQ8% z4ftaOMYrHR;9Wvv`j7f>IMoqTN)0xnE=QH89ShZE&bkWHW{Fuls(9GQto@OK2bW!% zOf^h5g%*l@X69!JQ`t64WOSBz3gHtl0oJ*Pon2^;hnr=dB%;*%v~^vtf_V7k$p9XJ z_dEhwF)*pY;sBfg4CcS``E%ht+}Q~PQ$pT%fVDhGD_Q@$@DEMJ|2jqj<5h%SiW1Ce zF-AMgayf)ey=6tPkczTnbG2Z@Gjmh-|y{ zWs8*Blo+doFvQGEo=8i$d|5Ien&m02VE^%8|H%Tuy5kEB4JJkcW}oH6BC{9?X(uFb zJgC3`3-ynQz+v;)#BiT8!17Z9WiNMt!wIogW~U9Z1D@OmqhYNtTlHq&tT9?ISnvBY zKWKE4979v{ZRp_&#Om3ItAH$kam&6m*;PoZ?##ZxYBz zj5AW|6BQyFqr8odZOuLybogiFZJdXrf8i_Gn9Wc7?6BJRda0exdxxM;g?Nwz&6(>2 zdogq1A3y*MCYV{6V6~k%!8q{F+{rxT8f^4EunxgKr|^Z7B>-Xr6r}KVG7ioQ*#hwc zAm=vN40gdmuY5Xu&?;E#W>x*Lu@s$v(9mAs<>aVN3_}3Q6>dTP8F_|DfKTphWDm|7 zV2!ZHAOAd72%=9A3sxe6SMPxNr-Q^lM2pkA~0>s3|JKh#Az17^e#P}E}_m@%3$#M0CO&$|M7-p-)hAWCSnmVz&4 z)vQHaN(I^*;;EW!p{{sU4 zq-H-0`&=Nd$MvUmQnttqIR;Oz{b3Bu`*93Bo*e__pO1kA2y+)hfiS0rwPYub8Ue76NM^{hU_byOAy_dj8Okl#FX$9xy}3VHZDavnRF62hXrpyO%_ z$VuhI+HWjthlvAWNE^Y-bJ1WKP75i!xE@_4Usl2+llT7>*}X;j|23jN&;|^!PPBjJ z?+W`@_WZdXc?R_x=9&#LnIO=NETKo0k;U~0fR`Y%=o^)lQGW`ex;m*S@sK%JQr0Ku zYOXbRrRIb|3l~OlOanQ$y^Nnse6ODfP7}?tB#7Ht7EKTTOb#pA5D6dPB=c?(9b$^U zOqCsr=@_TrrobZEzIv@^^1`58SXFDXMEpeLz&9cXKG!UZbO++M>_snNa?i3@tpzl9`DApZ_Juz8^8n=;y zn|#Py-`?AKh(@=y3m}awHN5G#{x2l3q7ilpZzR%XZr(ofpo1;4aHW%0_R0DLYk2wwB(GY%Jm3>Ct8N3L4b&?hEc z$hvrcA@@FQ8;NxddKOET!8pnL^PF_M#yMcJ<@lVEyDpeoSo8^|eVOi{y^H^hJi|B; zJZv(Vv(ygmIJKsufQdGV*%Yg2CK>>LT>pi6+wgP}(jW1!1|$jqLBK{75Qqb?&XZgl z-c6Jo!oxfYkeML;B2Q*=W^%+#a+Q)#zyymN9t>q)KZGus{t{*zCW2^gKpKZ3U`o8~ zbE93BgUr;AT+&cef@XBFVTrN|8XU+o?}GW8Ysy#&hVk-TQvjZolLg5XBCx}jgT0|0 zRhuVj#wb_d)qjdB>cyGw2!_d%qrUPfo zn9+oOw@UY3($zwVn;nx=!_dc#ybX`b_+N_Wm);Isr3CZ(-KwiQlFVx)FTq)-$XVM$ zWZEGy!@Po{|4mN*XS}B2i-D^WWhoBppG(tZkM?{J)6p#rX-_hLxKc=yIZ@XjQO*vY z4*5D&%19&jmS>Vwa$xzJ z)???)-VFNfgxw}oWqJP;9y_QVo<#dx^jk6k9IRUPhUaxtCyW5NE@tpBK87S3mnpI2 zs>fQvQCI+SB4EkcHX33jaNl0LuKCtxUmf~Lh&7j{<|7Z{riG9TTdKFw<8^KG9qfcK z@dE*r%GgSyOkkgna=W{k@*FDCc3@~vN>fLw_Vn@_8W71^eZ~je1GqtHV$^p2OgqM} z1UBLD)YU2}2DD<69Kxd_x?-{swf=Ay1O{tz(RDqV4n*K%Xe>hBZg&h96v$ZzP9CuAW(i!a&Tf;z@xn8TLInx zbcIj`ihm#~1yVb(?;3!4X7r-JAE2lRvr_&U{bazh(P(mE3}qec@b zPe5pr?BMx(F_WP^+#DQZPb-m?j!ll^JRaxkn~Idwf=ztB95`^?iu zCL!Z1B0!3wsl5v{8wkU60GA9TAqi+;(X6Q}H9Y-TT@;#XgnbX<91d}hXjnx?u=fSp z2qb+{hP@ZMzeO^bQUvzv*8EU60r<3R9}WV)AoOJuHPDiY9(>h+h}ZtpjYX zSi)+(QSzUVwMydpbj+oj#9X}czC^G3mev>Jv;{f@9gcxt3}0=u^y`N)GIUvn;Qa3O(BMKAhAw=VRMi+FQjvr?&!KAih-NZJR0rK_y9Atr|Os<%2k=Vpw_?9E#f-f zuQpf?YjuY5f?g|4(wydt(ZkO(KL;tfvv`9+b66~c2Ig=I8+_VbbE?i84yAG&Q$eCh zl$O=v0S6bQA4XTWs9vobJ0JWn41{6c<(reJ`2+|3 zK$h1Nu_v-)v+|yhRrLwaGrvGys|yDysX<=cP!3J@!6xG7Y|B`g?g?&=cC*dR*~zhB zq>ta-b1R>$MfmL7e6me3B4(Qbf^}M3B7wVdFp?`@COC`qE$tp5d$^%pKHHPw9Kl6l zVI)k>2FTWt8n~vxfFRpoOurffMB$~+chrWC5h+p}8VuH~=T6kS*R^LYZI8_g_Uf?O zcXc#nyEhmtX2mJqngCV@qtqH9Y$#i00$U->(H?tK$XHGBZfsYG``eRO_4EX5Z4qR? zwwk!xv5**>HLOIXwHrzHgWUdFQ<2%^CG=om=5!eh+DG`}SDjjT z>k{ZUtKEJ@TA5UIR5%+QvWa3akp5wE5`X?w!#i28Mz``>tz`6x6a8fKKqjSjeY%*y zxA}4yV;{xTrtHF<=5~lsrels$a+b8tr*UY5*_Ul`A!D9`MF)PzF&Fh~`de?8X-7bp z8J%zQ)?(5Xh9u~UpnMavI{@>X6J0PVd)xh$?c&mG*X%kc_}VV|Z6)+U7@X7rCtc0u zKStvWs$L*~yrCq?2>o~hn(=bjB4egIFga7jXbodhbGzRwGq|i+@l<{TvHvWXNZjt+ zq3Rvk_6s;W+jY;eA?^?hu+vM$i4E4}Xb^7HrUGq1c4N9MTi%p4%i$Ls-uHiUW=ECG zY|0)jiyX)ljnT@$h79GG_vc}RUgkdr)6xs`v<_g;n_XT}TDOv0GheP`_%ia+ku%|G zxz#xSk4+6?Dv_xFwhe|Ul zD@n7vvDtK?*-Jgm?w8dDb?x9C119EWDcrYfPUQr_>=vJspr>n|E4S((o#%akU1!L= zruGGOqDw^6f4=CB`0B2Dp54#x1Tv5#`~?L`Frk@^EQu|m9liZJqyb{VD8QkeWsps)>ks1j6dqWPeO&)SlU`dve(C%{yc~W3-a2%pa_i1@~|TNyHe6+8Sl4Ge6e72R8;Bg8xyR0nqPY-Xtw>&lOVI$g zuP_!ay~rl}W4nf7aAukOYmUn#BXJt~+wR4OdhKH+;y9!I;d?lK zf1)%9T3F*=h4FZH1pB4hOZF)t=)8H`4!=O-_EC|`ym zK83;oGR>eMJ}>LLNw`{Rm&sCX4vK-c*_1 zG$Gu(Z9wK=#D!jJblVMPhw#<>61V25u^;R#`d6L_1ScnoS{%myHXc|Q#Nl>PSMPx< zxK~)d?*jdP@Ny|BnK$JoB+YQE>bcN(8`YqAZ>gH5L<~RcbL%AdbBX8ge-;2iq;txj ze=XKrfa+zy5wKhd6el`}aRiII%aZ7@W>Qc*WFd^A|!rnC}i|1X6$P5jcITF`9rOgAMH9o{9kX3%9zJ z_k_k;4x~K_93MX8^({9q2rXnz=-pjl@|9}y2EpHy!sfsol=qT)Lb*<4dWl$$5J&E{$CayALs^f0V5< zkV3|LhA0J`tvpF;!zn0Ef)MxjT$E6l_7k%|40oRn7{zSb{^w| zY=ld6Yv(0jU2!J0#$Z&tGJW!sA2npF*BGI;0R%GR6STeAR+}m6R*^~b6k86bZh*w~ zsRvT8k#qO>?1{1wQ-<$pdk0^0Nq5R@44!s8S~7@?b<2}XBi-j}$%p>YF?p++fM1giRndP@QMets8G80;A;W zqgY+fCM^+r?gb{0qem84yg&1w$f@#Gj#<^csUkaZL26IsYW-_FeNgC zN?dj7u|OvwQSH0XjPMVVAK6W2T875{=x{e8V#)NUr0UL*B_CtO$Kl`lqYy(;i{YDK zoNiZ)C4UZPY(l=w`}2Pf%tsM!d6f1kg(!UOZBMf-?M7g3&8Xp-S3IAR=J!+0fiMyu zz2)EcsiULPKBxF|%LR%nuTEV_PFoW-1*Z}ImHlh+C zx59dUU=Ff(Dl*y@&#b5f0JP zcM^f73A-(CqWbFmgW(j6D)}5=|GPUk-d+fD_gzTpfk0A;wIyW!R#lW)%|eyG#jZAr z(dI^>gF6rC1azt+5OQmw(8D^R@X5k!14-5M@XI&H2~|g`<8EN5z!rSuDegV`B#2Jn z$EjZnce|fjZ~K(_0`1GSKg4}?5}xgii%q2F&m`Hmol zO;;@O0#RY(Kk?Bo-#fm8E&=DO4^jn{c)lBWxMa`x$|zysYdbvFf~7GaqZq^cs#0GV z`HEEk0y@Ao=P%yvg$hTk7)zI*%FOZf!_pPA$%od(nQzk%U1?9~2w#7E*(MQ9w?3VW z64AY%3QNoI70I@l-+g$2@F-Whl~i3q<$l|tN46xOI+BO>#FlqmQN4*wcc{%FWU9qg zk&eD{*!5%V`6WMW%^?F1>P;vj^m=#TY?ArCI?Z2dQ+*>cJcTMaesmq(e#;`9bv9um zX}fUJ`M|Wbv=rODWxGhHCY`TZX$h&>7bXsV0`-UriiHQh*5xfI+R*vdKs$|MmvCj_ zt&8i)B460HY6qQX_p57dS5?Pa0?vj<)Z~PnnIur&4#aP=2~0y<;5=dnRHSVQw28^x zCpLNjz*Gb?bAZ2bx$gk)Eqn~}-Ujb{`*ga`+KQQ8u0Q`{=)=66RPT;)+bPEC2j>DI zEib{Sd!E6Hkqh|zeVW31;CK8VDfeeyQD%^t-tqAC$mW=;K|pw820tD5DT4dEvr#1O zV+WrBo&&^A>jWSFkXQFit+_vjd2(o&2Y6y?#KaViSWHE)X95uJiO|&P0cl|`|G?Lj z0SZg9izcJD?7G+qL(XRh_F~pp<6}(C)^2{jc4o@>GjjNDaNvW;{806o~@#;J?ygJ@_xm2*_*McqCB% z8iZoP7tR=9B(N6Cu<{=t5aR58vZ;sL^_wiBgc~R~squfuak%d1o7Nk~P zFKx(?fP)FX>BKjM1Ic(mf8M0+Ll}RT9O0xsBw7L7Qz+^LH4iSsu^dkX1H=1~lkfoB z7or$;;spdddI#~sw-8Cr(EyUC8#aL}vPZbM)(a3#17pIhBt7)g2%#8R3}isUnpO(* zXRs*aX7z9;Lwjp?#QOjhE^N{#ZF73a(f3n7?^)BntAe_1!tyt@%`=8rHc*j69T|?^ zL?!a{vi;3Ah5aU^fdMZsshF_&1`Ay7W5a3kN1^JJT?B*Kms=QIrN*yAB#T}_XaBWR}Ru~SxmI1mC5>)`t zFXOSQhK6It5)8zsPWDi6hyVbqbhlW0s8Sh}w9N zD_+(dQ=;Og6|PL@fwK#J5EwH>G2vQFXw1Us)7K}~EEJObEHQQDJBCHQ4JVaq*|~|| z3Mr{MDoI7inwdLQIZ)`$+oGw<;?8uT#8_gp$VFMeW*eqnH;j_VKTtWs=|5q>b(Vvh zYYi9emaR$Vz5>!w1H2@q4WR|U8wEzM!m((+WN%IGEDvnlnQh7vtv7Ao*5 z6Su3PBA9S(R0(iP2|=P{W`3}`FzIs2bUo-WcrW~Cc@vJU#LE@SF?#nCB|{u@u4P>pWOOFK_F5&l`NzTn;NjB!swR6T4`c*QhHOd zQ?lWBmY*CFZ2Z1ANSCXNNJ>rcNS2SV7oErxi2+RAojXbnqD2i{`e*hwspv8gpNgH9 znofzIr;lK=|6JXQj{t`yFUY@8Ljus^GcFL1E$QEo=MW5_)1 zbseVQ=V7*YOL(JvxxrHZ`QExb(RQ?G?sNC*{MP?e_VyPry<2KAt!JLLN%-4nex60D zxc%oCDva=L+(&v}_}k!v-v>w|eTA0ij5O&t?-dvS1Sv^=Ebk@5D#h(^_hd^rBq4Do z18;)nwn6PEZn`rDs%aT1-xjDC1(EV&2z>HyYF7~5RC8J%3-1;kWNWEF4_O6{L_u9u z7fB%4{gIx@GBaXW%mzWXe?~4doXwg6mjR;rGX}o0*W#!=-?a~A!Knfm??;`?FUh|d zU(2i&`IXFs&QBy|O>4GDs;xY;?HgY)r(iiSzw{8~G0h`C8a|eEq1svs!31%N#j2b^ z3a9R#Wqgs=uYI4ya~6OdChpscK_PMea&jfVb>(3zM7B)MjYA`%we92?o4&1^jjuM> zStOH^AmCRc;RSx8I=NXq8};fKTw_Bf@aG@|3A(kYJlY2XTnMMW?YJAC@_`cz@`a%& zi?#n^DBRjH0-w7@i6M`-p}gxd@|1=-=1(M!OcB@*&xyq)s;~|}iqPBbl5~|43c?8z zu-fRkSY|h-v0QUr{Czl+rF$ihDZa^>HgipRB0UPrL(Q*x(W2`kA@4fv>p8UED8N+X0~;#{b=fpv7lLgVoDG+i!hG6eAzw0~QH3vLf zwq~0anEmA-mrrg&+!aE(10XWno&mG}>Q=irly=c}yLikt>?~g43{j`W5X({2@w}^_ z@NfkkMHlhmbZ^P`suw5QP4B3%UIgkz85`vHeY&Z#<`kS@ z(-qQ8`FJEz=DY@Do&xK8fwOp=RJ47ScjDr(RAq-Dx4nGjdCwqObdyXE7&#B2qrAal z?$9|MeMh@B&R>#utg5u0hK6PRbQnl}8{-OQuV{$U_sy(7x zD-CV*VSTFx7wv}=h9;U&KYlK{RyP^*GmU*kqM`&)LeiXgc)(0oH1U?wwwvNv-n)Hh z^J*r*ZpKnwYLlyICT9XQ{54FK$Nia;%!bLc@sxe?<=JawLD>xGpS*EeCZwN8RtVK4 zF7a#%5a*@IT+tks-_Op}?s7FXx~;F(j@1^JwNkk0T)64JU|K7>k#Q1d6(V75_k1Lb zorUlHzf&^XzL#lVmCc5*S|LOqr>k{bY3)NoCZv?*BEQBZ+&IO~>G0l7 zt7iD_TkKahmuyV16Bjb?ZN*S@J0{y`mpE=|0Jx?XOer~nyUA<^Q+5_m&%pZLAGb6L z4V{gKsL8xjS!+s^Sbh4n!G%e&H!&JArR{+LRa`o-(V}SSzcC{!d@xvIr(K|uvDY=? z@+s@zxY#vQ$l0vcSvb2X9x3mTT0JMyzpF^QLxUKd)uT7{)Ck(GYS4SE`-u|teLZ04eCvmfbT9KAPoe2AkV7P%#JdZ0O^=J&1%+e*%WXheROgC^~ycAPgU_2zWx`kSQ|3y zmtH_EBlS$+$_UBJKqzb|>*zAmyLNQ@VG0{WZ31K0PLzc|kx!nuYAp?Ubl)ImXUV4+ zNm_e;>FgFR|nD;U$m>nJ;w;cbZmhL^tPd2Mc>D%3|s6}x7 z`r(5cJZdy8M@Cx|g-L!iND-RhL>SGj6_YJNu$#^|UEG=EZhY5_w66js&9Z}O7x6}? zzubCsGNzMe-N!~+k31?35fFiC=ex!dXfyr%v3CIJ9oDkcwtH8F=;PkAy0_3?>pIZq zsiTkHpx53y7Q0Zf8Z7;!+<{KE+Ee9e`MqC4R>%Yn+iy?Z8{-iz+b=GiK9p-teynmJ zGW8&B5A`Kmlk*b(vLrL$1CYf8W_3jCPrVmbmtODvlF^n%!wi*@4J4ard+GZpbvXN0 zPuk>RH|1)1#U_ttR`cQDQm$p+m0f92@u2?Bg*j6ckt@5UbR+cBf{#_G`XEGf4sn}! zd-7=SWcZV@yI#Gd6ypFd&o2(N3m?2Ro|es=)YcxQ$E~b~7t%s3vG35icR%%KA@Fdp z&nDPq!mBDDe66DwEwgcBiH-DI+qih}WSe{rlHaZ@O~WYB-9yEjWc7(%LTI4!s*R_5 z0}8I6{$>2s^L(MPL?x>j6%oLl*+UX87xgC(dHe9l4GOy{TM!?HbhJ-UQNaFv;O$W+ zDwOu@;u;KYKwX_o4oS z$H?O3&jQ62B{!l-jAaSzY91BL_j&CK0M8izDvUdb-#;uRf40V1VW!vxmwZCoeVAH8 z+igFXy2(RP(SF1U6U|$9+xU~uQyl$4>h3^C5YJr2o0R40j#dq3?HRef3Hcv3|tJk#e}h#!38yB5@% z`Pwo}_=cLE6~cWse4IepxswXp-p+4^tOh6u6Lmnyh`bd#Z#zwU{JDA%jjUZR{er&J zq13G^$1?TbB3wO!V^U6ba>ZjeC~7n_9Quc0OvrFbxWmP?(raX;xCl&ah5NnD6sj-G z@Qj)AuOPiL@Ue8bkf`68LMwo)MGwuxb~a3bS^; zvYjdHbLtTRbN+jHjm@3)az=<|Y&bI&oj%A5oI`3)llscEE(UW$Z(Uul7U`pyg}MkZ zkK8y0>jQ=JpV0EjEZ+hSQcQnSI4ABK1Ll?%%r_4c{AVc3XPk91u8+x3Lq5T+rfHd- zB7VI@_-}yp6mo&u!wz6l`P2(BZVKsiy{2V*++3J>Z=|-(g-Gga8Njwr zx9yQL)1q+e;|0ej>*CuIqiVcTPS!-PmRNk<05Ipje;f9gm@vu55XE^XMe!TwM8R5G zN0r&e6o+8`y9_BzODGRlk(RG2h=8>x5@ByFtyHGYovv3zekX`&Aw(>Cu)sVm!$BY5 zKO@gTT=b}Ij7W6Sk>fPhe&)8744ZX^ zeA0Yu#p5E8>ucmYx0`+yIRKvcOim#b?t&_IP>?@@2|y7P%tFzcb2j(TdaI5f_DvYLhaSUGMvJzQT>a}n zkCO0x=S55b8J^X5aY$lOD}XGbF$ISWw;M+~M*s(^xDPh$4-NZ9YWp(!SZLV0$L}oq zcO4gc8yj|8fDLP|0|4W^91f-|#XQ9$}$OP_;TjYNByjnDT zLbR(NL$V?nCJDxL7tKw7*hk>B7=^FjYR96qgFO{4m2O4Zm$^OT%wx zdg|IyJF2CU)KzNPAS?xUF5u){=Px3w5}V19b@$RE!8p4$kkCZxtFO>%+9OtY&=acX zK!MLG8)u*7TpNXYzneh;z?vB`sWcrP;JXZeSb^~SmbiIQuC5a=m(It-ldjN(sjx6X zSTQaqNZ`bCiZH0u-C&w}xDXwQyQoy42k3eM6A|Yja{1*2CMY?0eU+qu#x>oTL9f7J z^3TXKj1oRU9!YQUSe|2m><55(p!x{<;XnUq!?nM zu&o!ARb&wB^^D0H6@fOCABi%2Zy>IdcVd(d940`uVUdJ-r(obFI)EWf!kk1$JS5K& zOLPP-JP-%{0}lLboJv4za{$W4ZKj?LDhPmV!_$dzpcEXi_7nRH#)%e$k%+<>1`b0l z5jeaT4+lfNTlkWb4gu3>v8hREC_=SC_MKoL!&89_P~TdHbHmv^k^piXKp(6a0#arz zY*=!@$?Pou*#|gd9PC^(G zPP6pXODg`(;swl(;q%K-4NS;LsHZ!z2&TVPH5Muh+4y9SjUI*dTmdMMK4sAjZ}6l9 z{FU6^?N^dN#TEHMO#hIN23ypVD)?rU`0r<)+{>FGK2sso<-JHFD1mX*Unq<-psjEA zx&b9x9e?qqQ@JvO*1d0i7*8BE!_B2JYoVY$26qA>tCa~Coc1#$1?@~zoY7$~RL*py zg;*@K@zs;IQWY_2i@&+o8NVcr!Q%LvBgoD$G1WdvQTu2iNk8HA)GKx1b^_PY2`p2? zCGAt!ifHktrLK@Y1ttKL28n1${)qa0mjuf--am)z5JPrBf_g8l$qq0EFt#EgE*K{r zO>9;eYBJ9!!sK>mr;~Y(mMF~gAgx*Ye{8Nlf`W_Dpb-9G6{y|OD);~uKm^3Ypwy|> z4yUpU9?nGt5MivZLv4@)g{-x(y{*}# z-u+rPG^w^gatav5b~(5WTc`1oWLtQx(hB8ZL;2mv;#X`ZldmNvnoPbbWfe)%T@%DB zn4jOwttpgL_W}GqPp%!pD8E)V!4zC0fhnl{*ffUdm6tsAZ(4cgU`Q2QjTl=0?Ew-h`o-70~F3BTTSyT(*XqJLWMv4;gZ^ zy__Sl66Hcp!JH&TX^Zw@vdAenvYm$FC^4)zlVh*CgY7c3xtqwY-5uvGmx^W793YpYuGh+9CSuSj$8Q5vI5rFVemN8~lY%Fr0Cl zv7c>K>&ETiZ9M6ZpVCY3{82A$rX-UVDdjuL(^d<5>70_9K3$f$M3}WLRiE@^(-OUO zYgdn68aKm+iIil-E$9K?Leoz6?nh8Z71X2vQtbJ1*JNsxTzV*|tWQy8HDr2^y{2K4 z{!Z$6E)c4YSA%`-s+=T^gIYdG`MnABDU_fMWzc1lW^PxZn;i-cK}cMma}z$!gj{9#5PMUo$r8~y?MgkRuRK49nx9&*CLpSWt^=fl`E>e zbBbv(dUc;N-v$boISCNS`SDMs@*WU@htg;81t3i*1 z*v-JWg;Q(vuER6>Qk(5pBYEcZdn1~9LCR&qR&U>@_6*tm)HSN`h>5wv?rp-RC#@Cd zEFQq*tPrT33$LWaO<{oCJCJVslGJ^ikh1GZJve|jQ-}qJI%!AR7ij8`IHI@>Q;pU<~z9FtAT{dboyiO#sr; zMoUdaDuaM^SzS_x>~8P;Jqs<>SPiq@0Wu&({m=k{LRhdl1=%2TKYJ2(jVra)XbXq_ zNwL)z$|6Nqg-Wyw1+>p8Qv&NGq;ee&ws91n*3!EwUXJ`DVH;nfEM*I$q&A z^6X-vu+X@eER8ID)S3`KVLwd4v+)l}w1v+dWC?+%|8M|S-8kn*x2-5r z;YLc{mH;py;IJ!73-w)SU9C(1bzK80LEujmBcPyzop^wsNcOhO(xIDCQwQ}4{w)_v zr6XTJ_R!v6^`x{G{KR8oDTt>Y>}V=R<}vM6O}~ooV1?lY;CqlfNLnzX4iG!o*{%W0 zzdv(DR~7T0I&wuVTv33TlkLP?IR?-nTya9J)4M!#Mc%>A-|HUYJzOPr+G4z-i(G+5 zJY3NT99oZOuGoAq{Xbcc@CqYbVZkf%Nd4!tVB*6SO=?|)_cK?N9jy6J)~|TQUbvzZ zuh>kkX!amic)&h{2_x7!>Psx->q2%Xskkt8I+*%cK-xp*B~-ub2;U-q{9@xbDA38^ zbQBY(qlUEA*ORp64Yj)TZ!@MM*nBYKGS{@1_k_9AAce$Y@i770-BH|JXGD6)RVh{u znZ2L&IY@UBW0-UpZz1-d4J=;-6|PMa%4=nC#5!#`0u}R!;BTV-K-V&A+ATWY7bxS9 z54qHil)SnmCV<_N3?WzT*Hpw78Yfdw;aVVpO z>@Dm;wlu@(B-!KeegG_{qMFh#%xCfNTXCe<&2I zf%)I{B~lCw$rtc^Bkn#1S^iB462L=2z zDEj9?Iila?#`bR_d~-B9`w*B;g)q;Ou-FKRt1zBC0Hhpno*KMB^Ca=ucse#-zY`jl zZ#0{9GkM!fSY6&7a;e=wSEku8k++eF+(IVuL{KB92DN$EgwE)Gy;DDXtNi6KQ#-!- zJh);nx#BvxA{x{PUJ)`ubH?qVs1^W&i%zxA$-g4i`h2)F2=W~z=RYLp8=@uqSMLZdE^N$2VI9wu}9Kc8Rv)sir%ItpBl-G~EhKCzGZ%XR+zlT0cQz z;i7jmw1lE=O!;Bc2jO1G+8+Wkc#z284I<#rLHCpHejmz=z%`lL!{pZvBB9Si_kIKA z8J2`w&+3H|4$JTtyPz-hnhBg^mmEu0h!9r#rSkz!AXE5rSgVJ3jBqAv*Bx~p)Jo`; znt$k-SK#%42@A6kPl8UQHF_Yk3}5`Ef@84spwtd(blWWcB-^CB*)yB0F24=w_>o_g zjnaM#q5n_8V;JcwL!Sm5C25Y ziK}6=cAKO>sm3-ti%wy2(<9=8_!HfEFY-twSJey*X%{T4RU&z9`B@Igdw2i3q26}`ws5y3rD z&Rhdqxwrd&&@-<>Cr4rTH_0R1NcR(|e3C_~K)h0LoOZtmP{tg)PjXDUfw&HpX~b7PKd=nYB014-H*kKMn+E{-Tx|fH}7(Ti=IdxsI%NO0L%_h z&M)CF>CV5vKv?aL!rpeafyg0N%+S4OaUgcueGj{7UUbsM$Vcl@fe1s=cz`=`9t%3v%qz<&HyALkiVAsUO9Lc#^<^iquYfid!(6Qbt#9&gxb=NwU6~N&RtOTSDG^eE?P(~T0t%v(&Qu!*QN>i&|mqGSXSbBTY~hrZSS1ag=7um&gBbfwaZg;dy(Cx z!u|G~|5Ui&&F(G2iDC0U6VkKa%}f(Y9-Q@`LCn&Mw5`I2HF1BZysnC`69g{lTcwc7 z#+=?>y5l68z*j0AESw8BX#;)OW9LKXEX3T!Wh-Kzsz1%{6+fB2WU%yqM zB84^{rX3MF>-~(Sw6pGK#-U$%el&fui}%k7@AJ}%@zmbUSn)c1fU*_$GczfR?fuLb zs0I9Ps+E@NX#4b2DhPLetDtYz@rdq|n7)Eub0qV9`r%3HC-j=`V+0o7?EO^1g{m|H zmQPrdu!X*Ib=$H}X?pve$MN(L+qxyvAnH#%$s9@_48p|Sc=u9LS=D(QjD(LI$hmSZb*7dOy)23yWg z6A=0e+C?`H54QN`1TZean<>|`DuXA_+5T`Oam}Ld-4Hy!)GF06W}>OO&5&QqE6#RAnjehA0@bYt7wsmuS=6oDq-J%;cEt20^ItL zcl?Wh@s@pdtqBx=YgRG!u+LAUQ62fK{^Q6S zwPyH_rytI=Eu{BZKL4x0Q{+AsKlrbuQ)UuyZ*iN8R|Rc2sm&_rzDWtLt>6$YTbO9=&4F}ZrrdiQNDi*8R?)?S8!en;vqCyYsJ?J*RW{k! z=m%kkgh#2u6D(a}PimcZg(eW?9FpM(w?|hzBY{50flP&PB<%tX&~y! z|FXaPQ(CbrtzEd{5JgLdBeMv3P~iSE^0oCrc{-VCg-0NyhugyuiVft!8t={;NuDa6 z2mIH+MQX1~TOe0{2z%yLYtS)ty-GTUTCrF`^$Mj8MEo)NCuO{Rlx&PxKWDU&CC`~jwS!5V z0fpr#i4KGWC-E?1CW&r{tAz~xzA~})0FqEe!0XOItZ`WX$;!9LHch9Zc<(hGme(DJ zrYREcRiA@Oi)?zN(xp=JzZPVNI?{ZED7Gi3MEX$>(r{L+dEY^N&0!%}L{Kz5y%?g5 zX~b+8HYQCtORh1_GGZ!maNz;(;vmD;vv9DabqGWAwDNsd0C1Sl@MvzEFcn46AdEnA zSfSTmXL;9Zl=x}wJu5h?F4rzn=PrPO$#V^I9OZiSqte=I5RBbi7qGdcS>|HDH3Q@#<2qjx@lA0<&%|=q z+!&%v?R{G@jZ?PSvhx_2q>4w?m1ABGAy?YZMIk93wOF}VO@n1uT&-394?APRaa0Ys zfI4!pN2@8l^O8sE$SDcutu+TFSE$Tgk(CEL3$48HJ3Jw$(R_pq`Id1KB#inFA~z@D zoOL3(-^NFPIi-6b^l(*?#ccNL4sr;JqHQI$Z9-e@P)AzobsO*l4xm4)=H!FvWBL#} z7H4uB9t7K<>h5*ak>i zYI-@2HxjNs7B~!t+)P=4-?F%$I~5Xsc{xGY>)1GcHqzZSp)$gWcEW-h%GRIU=8qYe z=#%2Yul}RsDv5q@X}geEa+v2$&tk06i?f(9+VnhzZ+sVo0G`(W<t&EHAP!azI}-!=EcO^#4`*Xx$AS}M6+L3w!8Fl+Wkj%qEXUo>Pe+$RtfRNU0Y zOqi2Xr*B_lP?tEwm%h_n5^lqa`2V31oS9SbvHwuH`bX4@Dw3a1<+DtjdGbY4h)~e( z%P4<^vzVud&0psxT4H9PiA6~pZrf(K<|$+s2%DZCO5*5MZW)zh52f@rs8QuJ(uuBl zR74b6fS)bDJ}{oFhhl}^Z>xJGRlKKKa;LzA7XC#lz{wES z2}>h<#`gb@8gd2%nZe6=k84$U(F7s&y^LGx8$?iW8wG&8SOCcN1(2;7>>cC-K+sJG zP-zGNHI)~=6#q(yM=HEsC_7%2^L2qK0F=mMyr8RfYjLl<^=0*M)ZzkK?zNhsDy|65Y@`;AUH(G2y9Q0cK2c2UHT5O>fT867q00=E8 z0OUkKMG51g^y>cBrAl68VrR8B>VM-Chr zi>WgM$zs6$@|vPQZ@m~%Av*aokBaV%CIV=(Il`n}Z(booxy3G_6KsEI3~PF0iQ z0BkYV8z3mhTxSDpz%9Y^VTc_y^W|@Ejr#Z4Q6$d{tDjrRle`3vp%3p)9!eH?T#tn) zQR7oSAEaXLBnpGh7V#ETY#~h{Yh#^0B3~!!{uV?)5O^xXYs)(r6WE;f#1)!HHs|$1 zS_je@;TR#0gwNuN+sRK;4HXEy`1RYylTwpX-r_?;k9jvBp~WPea@Vf$GD^<{RV70` z7s?=^Q(imCI9b(8oRPKZJAAg_XCxO05uzut>2B*v6!i_>6mO+v0S;lq3w};cxHu|g zx1Ug5?XVCrdNcq@CY2IrzMAI1RHSafnGcPmK(DDVWvn+)Qh5_G&|o6w6h!jVMNI^6 z-(GnU$)B?6m6aonNrDw$MzdxpGwFkxVfJD+!Y%CLVP!_V!NbbJZ#I&1|4R(`--1j+ z9EoQUfNjbIY)+DZjV}|hQT3-#k-3zu_%fN%f3gS~I#~ot=++#v5Lw7>3503oZfAz*0<<>}H4KgNKfv>*dkH0qI(lJk#skp~0<=Kj_DW!W{xW04JfUAV zup7niN$+kffwOP3Wj&~I3;(7dbAsL!M^L3vWG~IFM&dZXTVz$#t=9EgH&N7Q#No3K zUFzYd2)YopiGQ9#AoIkX)d{c70{U_wTwrjoVf4MUacr@f)ydbU2M7Nm6&zQLwZca7 z9rG<{F#+#nw2|3oCYw==A>p@F@ku-P$`!i5elf>y6))RZLEa9!p^lq-h<$fym=(U3MCMv1qqvfJIx#HX+fh2MHI6|qG(6+EYzJb z6T`*OS8F+V6{hB-9iRI?RXOh)k1f)HDaQ2Wt={&un2V5R{T6*q}s>fRO;IQ827+#?x$Iq%w=BkxU94p_9*f*N^w)6;C?XT(tlG{ z>PJc8P^}+>Q*+sk_9m3M(TdECRcT!MbtHDg$*BZ=NItHxC~X?4x6IFLwOD9LNf~hQq`Tekc^YLdjxU%5|LUtJFfhy5Y@4k>9p*mY|T@vx=+pX4H6p znzMtTOo9{qQE3TRF9-%xY~4>554H8;$+Bz6cP+suWAP8<4aXovg=lc%GNa;plr%@3 zo>;A1{z1tKGGMK2!AyD!zx`ET-HWvA@mu8zTD!;*FGK+c{Wejm35B~%e8)oY*K ztRa;m&->tRBZ~Zua>!6V!{aZltq${w+mmdrZ2+CDav*9@s4Sl-^xL6ZROY(kqex#; zSF*@r~6;K-KHkuZ+mQqxGK-82;;kE`w@0wvTcTL{X}%6D@_ z;~ALajK`qy>28hv=1R{-y0OO9XpAfvG=9b!2iy=EEBVGj_%oC5$1KGG!gkEOF%{+Z zuyV!-?Dhx=qYShU6bFPvFBCiEGQ&1H{&e3q!#Ch#-Z$Ii6wfO+luyX(FNp3MZ*dp2 z5u=;jHcht*F801`>3h=BSE9K!k(Z6`xF9Ha@(D=iBMJnS=sh1Xz_Tp2gynL@e*5MD z9*p;@oWaR^y;s$ z!ejh{MY0LbIwrkq5_*7f2PsYBvD+8jd--7e;gr5Y!=K~Yd?oj%2cV<&^>#d}P)wZYmzw&$J^iy2(KTW4oH{nB%js0@K zDV+pilan9TgE(m?EjG8_X!SLZpr&2q`CqdZ)(d0&_rZ%3alpz04|+f@1(A}pM`eq6 zR@gtn7iY7p$6+rE+v1zQ<}ZI-iq#alZipBBo-|kYMh{aUW&h(`QwHO{h}*-fIkZ<) zZ1Fhx=)DQ9R@3J+f9P*xb#jQv?xB&DC}b~x$cngYfpVi#^$S09+Z!Lzs*otZ_yKEB4hFwLv3O^4jJjcw2&2h^H2a{rkf@RjruTyRP}Y~?9Jan(`-5p;Qq5C=?(FJd9wz(+}o z3^{O)E#XO~cm927l2UlQ_v#@FL67{d7ph%Q)c5{C;lo|~uwfp)^PY9SxWAT+&QsLe zKF8d~GE#vRY~R2?2C=uc81CpN@eOYO@O3;PnNdqiOQXqL!=(FWpQdkrOaTRaTH zO7Jg5h;LC&LwIH=!zd`;WsUDLYlUN0jk{#4i@kDcjmKo2^F)=onk#=rQsjyK?GXf9 zQ>%03?&OAeN-F=fgr4*Y|0w855B7&Xxw2gR)ZEX+vR{N>p7$Mfsl;O!WO76%svELl-MG z_sN`=hjxVZnvI+l4dg;RYIJ$vHe+nK|Le$_n)c+S-5?*kNlK)HasHq`ZY^> zxrt)ioZsJGlI0$?kU=HxDf8w$0_q-HEXX~j?js|Z7CWr+xNVGrRTUu0{tZo8*-Dj) zQ!fWM+L@#NrXQ$tfHVaZOV>GimSLQ~7NSJ8cvw6Xh_URI+;_ z*A8wkV0v(D&si%+m~qlw{7+(fM!r#;t)}gTX5y13HdT!JR3e1&?xZryT*-ez)!^g$1D2tp`;8qg$SYSOuX zg!#$V>m1X$avzfFe~+ft)`1zu#-38qX-k@p*j(s@3Cczi!*D{HJAJ=4naKGmuk_d) ztNhhua|-APL0Was|H4K1uSp90l-ilx_D23%CuaQy^tV{q-=3aNzX{~%t4JFml9dLx zrE!JW%$f1j3sMV?KLlBM1Q9Ov+f>l!vE6FQiGkLQK%0^KdGYrUzWKi^^ouT(FRV1xqBDdO8bVn&a@Tj(hbz zX1Yt}<%!OSf9oo!m|%hce(qRIpS#W%D>++M5p@G`D2Al|q%Jx?%yTlEZ$xVCe8U0t z7E~585?*Rw^M-Zc9XOf+bSrmlV!+*71NFl=_u>Ez}B{@TOZ6feSbHreJbu{54`0QX#M`?${p6U0FNwRqvhOP zIQfwtT>3p#WhJ-9m^7##xH^JgQ%kxWQ;o`ubuLdL)1kNX*TvL%38td;N7H$Dyn)ed~yXaK&U@e-kuy%+}zEJRU0c z)Nf*Uy>e0NI>L`-VK`P6RIq`dx}DVIxtiB16nSiywneFv@SD=Ihggv(RifZ1y=|3Y zts8I}6l4G{pFPGNoz$XitoTD9LQUFycAnGP`D&qN{C&(jCk^?Ye3h^D;fn-xX7pBD zzkc`1{MnzUD~ZijH5Ex#kGPAzzBy!oZ6O)cqjA4=YFG45V?YU1Hpi~7ZF~YnsP&|e z^JO&6^4bwbOM06yXK7{Jx8xHpkL6dWOIU6mH9QL*i_(H;U7s5l`PE)4fMS%lVE0`U z)}i|+=b(sJg56IyeP1v2OA&$EaLZ7lqiG2cm(P=%Q~c+7OnuN}MzDNCT=P=ew%;ix z+cmgKJz^pVAycPcTkz0h>g^$GZaY-=wOSFs*DV9J&EnuHVW}in$>aZG%h9o)Vp~q~lASpomrIK-;|dMaQ`B8x)n~TxpjFNs zrv!hodD`Cr!Pg4Fra&#fW<+TL`Zz|P5qtK$6hLeE+l+3Kl+sHm_p=;P2cx>t5)61b$l`B+p z<{^71KqSV{9E$sw8&r~@ek2fWRx`)CC36mtu1(Ee-OFjkeMTC%Yp;jLpApd&U2tV% zfoS&Sf<4R-cvup;MIhZgAI%#T;PjF=+@$X$-5e1VoSI6Pvo5SicFq8eQ*+Y|v=+N> zn?LnW9RXTPGX1$8zRaI2j4OrItpm5pA`HZtlM4;ke_>9iUC~vOrBRTBdt@?4XmNKS zpVk<-lM~9YJmrJxZ6(`TKUPAnt21V3^4Ks$^WtW zOzEiQO%7&rjAi~2ug6GUUVlBWzeM}~2iNh98W#v(pa3jO3aVoTqtqaw%s^PVm}SkG z`$`lr6<~=M6=@HWM0|pgRW5Rmx-~! z*#1Ll#k>&AQ(qpQ4)To_z6K(F+QBYsQLVm}@ZJqoYU} z#?`;F&^gLf_q`-h9&P*UL_Oix#J?M)&}!s|)TAmumpq^z$pq)4KzuJ0XbA9}l3Rxy zV|2T)IQOJ@gNlwKc49|ajQSWjipohAON$M$NP0tv=q-)0 zZ-Wi+XT1E+5b3HDt_UM8&*+(8P)tj|qlD^X`VmOSX8;oj?!2te-OV-W6?=bIU^HgU_FO3_qOb7 zk6cumxYnZBdqCcv;-mjT_spz!t9;*qq915!zFI^M(2pKf!>4c?-p1;yeGC2BORH}c za)E-84T$kLcEIyEWu_Vu-xQD3%6-g-Q=HX3H-l5!T0?$b09ZVS;p{{ORYHF1c(xW8kpE~?@SY=u%<0xWVY`u9CO_Z*(h<>?{<@0+$mBnIBaheC zZhGRzJ3PH&O#foDOR|_HR?qeY!ikcM`<+lQoBfbt>oT#%*z1(>lWDLcryarDH2c zSOw2J5as>ZOLey|@AYVi%y=%>K>Es)}DXr!q zv5;kC=LkGsut@ln9R86&9L&yxXO;gEgZ82Ge&2q!;poTCGcOEszRR(~2(re4SoDbJvM-G(+|SxcMO~U$b)*F-$ch{gu$~F_5$zZCEWUeb;@W?_=o=N(xz{p ztLoB|a~AaE=ARTsqA{>}S?4l+0fI~rj*rY9Iy&{1he_BpoTI%lmw{ySZ+*=itQreJ z4Sr(yMo7_GosYiQjn_AmczxamULTwHGP%8Y?AX6Z1;>@*lZ|9D!?BF;xxYTq2*vjB ziLjynUT5e=Po84&-w6``!R$$-w~>{!Ugx`0Mm5W95w8`IFOA z+(xxFz*V_JE-`u6gkF9dIX9FLkf12k@$jT7KB}1rlIE^+lyi`nopPJd3tt?Qp+0Tw zn8B3LmH`DyRsA*d220s^k2+&*oh`!KibDWFf-GAROf9mq(#Z#@o74WNIo{o@;Q7(Je2)zvxehk2P&kxy%wVNF44}@8vKtMst_mgF1 zJ~8xw-wY60Z%>(_`OK}hSe_#&i_{A_4^Q}tn0gRHRU>@l5rRTNZ{9#_XcsufYu(iS zodppF7@BD#CJYD_`?Dj%`jcr#T!}PY>RsOe8L}-jH*De4UF-}v@+iaJllZ+C2$Mrh zL8pKksKT6inw3CD`<$l_IWml8sh|x1As-AYMO=!ZC0TBwn0*5C4nYg~M%~!UjC&@i zxCX}V>Oz0%`J}a+)_57p$~4UlN#J~kN>k5u;RqtOrcY$gHa+`T)7hi_zhItk-~^cX z(}|Q;n@c$gt_q0~iKuX}WU|2?xgtXBuxkHAqOaFllu#eR{*#m(9(63>bw$b=T2IpV zE4j^V3#l2XdwAm!TeqJcwdi;8NOOKzkw<&f(u&NMavYVRuI9SNA$B~=? z81*TajhJXnKUP`FKBm=JmBuDm62HCQhZuZ>VBma^H}kN zlUM`&dMG4IsmOh*ii-vsiR)SBv5#y6RNP9W4kU8wgj2LyLdT(+(q830$^^Dp>QAZX zP|H7L66I31rSg=RZE;~;X%J0eU0K4P_>}GsI&nww13Da?csFx&0Y`3T;)c5k<#??8 zt6G69_LZ!W<_Fznne^7Ji#aDGd5D;lQg9jq}JNgKP|$Dz5fhT9HWq%?Dp*0f63;IMSa{i4*2H4V2_Js8wTJW(!WRr$Nhi_z(z8M z%>@FcXh0Nu*v|UZ#5N8IPM9y=n73+vyt${ zT^gci^>-lHF>53?r(4yiIk^$NqpdZ%t9%7V2`U4O224g#6d^!@M!OYbnv( z0}G)sH6v4AmdIZF!s4JqR1xZ_mwYh_*qWr<$+=MWzQ%f#6w{2f3NsQGKfJ;59^2R( z>@53~<{z-bB}ylnbW)vV-_WGvd8+z1GIN!usyR|dN%09frT(2>w5DRsDVq4QU`Y2j z5t|_Dfp)4svai@oMqY*}2PmAVce%Fbiab@TxUZ3+W@wWuMIz#UZEP#>vw(Kiv(254w zqDC7^Vp>gB{~}yh6}74D)4{j-9(ydK`BF*(AC8lh$!y;TKj=QfzM>Zx18l(<2e~sR z;M{=+Z_zx;^sLO<-leH(k{&@97k<7!(0ZKa`$Hb03 z4&@f&F(J1g1ZCv@&aB*$ah+h!mw-8Evn|{R>liEpjP?rq7?Qm zigD$#@bNmpX}ORO;Xj({NB_Zs3mr&3*{oQgD%m&o_5$3#wp>6 zX%?iWlPC6b=;^tsVv!{6m7P+N2D$qqXR=aLsjixK?P8j)L>yF zAI*lM>0poxhC-2sx}p4*)`LpgqW_5nd4AQt1>dbM7>Fl{g5U{z>2a=z)`;=44q7}! zD%`c742zBYg}A~BVjWmVI}Rq)&?qVfX-nuCl~DAogg-{#L2Y!5DnD7jLHt5jM8GI; zSVm}j6p^outJKZsA5S{ zYM@psM~J$j69-5j{TnkP(gCFJ2*CrF*q0!5-N4g*0kw)jpey{_NqodUh&@N66rc80 zaKD*Stzum;py8~Yz;7{|?t)gbzLV+NiNp*3lUdLQ7=CO>EcQz2!94V)1D(L!xMV9nd9UR0R@=|}JuEdYP!Nrx`qspd zjc~aY=asWhhArjS|9t}}jc-o)3c(hMZpj3(O$a=0ZseWx{FR1Z@7phm!jgRZMFjOs z6kkvbcu#zyImYxR?*)J9HpvIu$o^*0Z)?%0Ms*@^Mra%`wTmc}sRx!E&=z9BOa%GVDkU!552fd=n z77>IyiYIif&2b`aO1n`J{9T&S(irJm>pLOmSH@lQPBxf_hcrC*N*-@<=Pfo=+#;Lgt`P3j4&bc}>mA|yy4>+^=W1E%96YhheB|>iua#VM zcM>ZZ{lbnf8U2v=Vy+&_-b$g^4d3qM2QFs^aMp+3_4}QYm|3&IO;+hWV>nTBPHhP3 zaX=0W5eO=O%bWLvk@*?2k~gb1?Jw9(L$$Fv&#=d%%L|1;`{fy*FH{K%kzrHC@~u2v z)K<13Phsg9=-bdRiKp5eyme@UU*12)p1$cgfG>6>`!*am0u{U)^TG+Y{xU|ut$We4 zd7~nD3*F0+aX*kd2$2)M9Nb<*WIZ@fo_0~5IhXHxA~KYQ`OVOra;v@NcdSCNQ?CK_ zW>=Q(^p)_Qd~rYTBlez*O*UokLQ}htjr8ETg)QaCKNP^P8>O!dpUS~QL|>8+RyU?- zbFSN&TYjIDg?o-SOdIbk+Ra6n>g5h&ypQuEkSV7|5+pULBU@6 zeNC0Ev@*57*+p+l+d<$#4HzE)j#GiBL`!Zm7pdU5J8-ORB>OvK@cs2|lfAU!&41&c zk*Rx8ecv%7J+U|0%had~BmckK%;_+wyA>=E)MpLVtlv!Bc{4Z1U{Jpiy%%H#;I$`{ zP3_x^>rXVJJbe?{fHws$INsZxc zSYBxdXsG%C9fvh%egif*^bfuP9cmTf=c3_L>dskvQ;Z*IJjQ;bkAU%gfv>2qR7JN3 zCguhm<;@;roUcY3IXrc!xDAmZs=-BwvejgNHs~no9<2PDbysSKqy@?8gc>=b{b?hN zH=7YunEMf0Bm{~MS5wS?*9SsReMl(I*1pbz#qrI}z{JH14hRh$0@#HmJe%>tuu2o)GQpdm}xsmdrry>_R za)Ke5F(=a>R zitCT8k_-S@K#&4u@gD73AMHgkl2_Pp41q-gLLBgIWQgKR*LBb==O6fMq+U@rs>&uTBbHfHHkmdodM#x91K$wmi zTZH7X1sNZwVSpkke?2UO>_rxpm&&HGsJz{L(^;uYVYd+rMrlA>ZT1e5K&Cl@9)-%U z2(WERkKmCa`m5Bi4r&^85d?@8LB}sQgpFNmDR)-g;w4!*sFrYI$*MteE(e0b1~$lT z6684IDQ)v0pX#QE80l^g@I}sOA+=emhXjHRThgrdyeeN;Mo*B7qofu(a3oqm0~==r z9ZiV8VN@5%PI$B@`)GfrV$4#7W77c&U*W;7^houZA_vD&;*K}9$oB>HvhwF@E+~TF zasK^HUn>)Zx1NEJAL=uAzQ6Z|@b7OC({n?1l`=u3t(!wBu4Vc$X*kBSOw_{e>>pj4GZ+SZnf; zyl#b6up`n9;u zMD)E0n+L|>YHJru5Z6mE8Q~=Ge4=XgE5If)`cl5c75R-tT&POR ziRMz0NYP~5JLCD`j%SGUS1Gw>{djEkGac<9ZfgAkOrud?Pz_Zmp>m>i(ga&2J+np$-Nz)sxq$DZ=&@Wbk7I0{k`_c3`g9xl(cU!EuEtFJ3yI}9 zujX``TNmW};56CiQ58M(_pM7*oM7_^hH{q*Q zpY}=snlFxPA zSxQ@Wfy&ie#HNR3Hx|?Mz^Gi4l;K3>nx$|sRZ1r@?BeQd&)8k}k^Sg!eKwwCv5s5F z|8R4*AN?R6?GO--A9QJ4)lZK3|)I`2q)j$lS zcXbMHw!7!@szbE<)ClD(t&Y3>nPzZX4QH4T*M8xk$AqX^PTuWQk)8NA8@3{R;1IR| z4)M8V@UCqDg25v-ra@9(Hg3cq>6l|WZFD?2rXi7eO1p(K*o?U_B7ZwNto#Wz(vXdT zC1#8rJK$`Gg>*pXVbA!gf-NzWl%@z4Dcxr>yhu(klIDvD2O>Y&WzCeVv#3txxalz9 zPBJZ+hNq_Bk-+P^{bUt+y-0-2V_ymSUMu528_*+d#EGI?_KTK!Rz8-!j5{=N z%?PW{1E0>~H+&MGF@TRyf6QlD%xiu;t{d%X`_8qzxt`O~qZ>`>Daayx9Q$SLI^okN zak;{$qky|JM_B#TlAqv@th4=2f-QdWN0&f`$Cu7=StlI!sgTgLzhwY)XHYwE4?5=e zNOmmt?@p~qFFs9aOq^~Y`Z{y}{fVD0^|N`{R2sM5?L33^nIp1CNCYc!-RTSzKIz)r z+JoL3P;8g#Hn*01&nIuxKblVoZu2hY30OmIBM3m91gvK%!-Uk7_03=NE`-g_@Eh4Y zy{V$Hj5WS%z~{SYT0$<>%jB_qZ{JH9$A9=F<(*SEsanvUxTUzjh83}CZYJb__WFo9 z(l6Xlg8N9^p99uF!!PIelfqtch0MXOD4=T@c|4r)s%AbN5FvyNC$S)4XpFz&sxX%O zFAluWmEDyYfva5B@%EQ7JW4)Nr#!`TLx`Ki&M&Ra5aZur+I8!P(UMPAZ*KN~t? z^WBUun4i$p4afv@@4Snu>t;LtYN{qe)re$uT_-g!_)!H4GBA(aaTPt6Q(OG!^**hB z24JD|eE27{X-D&?R8HNlz|+zb1n+=J5sedLDYLEl=>~U3dv8dJz3xUFt~pK+c7$G1 z^CU@ESC{YHnT;nLazU}buQ3{=9R3XS!RfwMrQe3HWP3kKnnN_b8x_5_I@bG+JsSI% zMt@c87B^#~*(Wsn21?ULte$tV{0|zIwxgYnbY7Ujk$z$)h<+x=Z=*)5m-XWBLvk{o zdUmyaBx9u|G~VUi=GX$%`9?L~yLZ^7w3NY>2P^J5Bm!|EGuJo&#gA55va@ic_|FDz z@-@bcl9K3mob#Jrao=Pvb^DiNXLuG_{Dpy1LIIkOyxO5KukXl-XxXw9FVUnm(fR>+ z^)0^({};g~)lct)MFmW4^*&oXf+&Tc(amZ(ib`g_!^e&coGWAF?>oHVY1c-iGOvWn*4__5g(*iy#!_qwxcHxGqfJbY#c-_t84ab*KPV*$`n=fiKF z>CYA=%&bGW`Wg3M@D<96E>apJjl=yXLwi{b4Gx~SdjN_<4+tGLwla~#Ad!&wgmvce z5mAAl;aTy^Rs?Nlj7;9ii-F-~JSpTiJm-I@D7Y_lF`{|TCqmyEODuK@eOnI6w$ryI z>km?$HV^Jr(0QWxhW#hG*P8cI{rD3Fcj$=ME?#Cwe0t~t6%5|S^M}X9?WP;E{KVWf z`~(;HJL*ITY|~O<@rb>@0AjIFMh$Ep70XuYve?sZJ=i*K|7jGUyT!s8sLZx~qoxa<`Z zt{i#3Io1>$-xL?7dxmtx-ew25^R1KCB=+MMywbn|jVWN#d1v^gp=ngIaTl>U_|XTu zS;FA-=EM7in|G@$l&Z`-f8Rx|x?T1aJO9Y3;m7#Cj{LD@3LE5+>s|Ov)UuqNd~Qun ztkZ!rcvYu09(tQCbIWs@g$>UKF^y_X^D80irs?I|!j@wrx7z+>`$`A!j#kFlqm(T> zB^JVv9A^YfEZpR8;BrRW4E!rOw#l-T+`0EcloD~>nriW6$1Ki$osmD{*4uh~)_>Cg z`^8Fyd2RKGp0@rrGb2Lgk7J37f7R$*xu1j4oc)VbaGW1L*+@2K6hhZ{&R z3!w-N4#@b{EZpU8#(HpiZ3vw z*$?YYVpmo`_>om_5WIHFGdC|q;*pirbYqXQ5Pr7i(;G#3j`TW3XSk*L4jstPoL~sy zIHN)iu%svAryBu7h8Zvtr)B>l6&%+A+tx<1kl~p4NVQcN2k8HZTfPY}{#za-(-gum z_)*GZEfSl0vk2r+kHY;*KwGKVaQ>EH$dR{*3_T0kBBB0D%7hMP$FLgO7JQF&E*9YBuyNLRukfy{W%yRpvr1#40tvX`3N7Q4vI z(zx5{iX$g(fUE|;>Ia2_dj|+0&>?U8))2jt>ovei=l*`iKgVXcjWb?T2cGY%OwIa? zOLhot>gS~jB0-9D7U15j{h95+eQw-DJDi^9nuOS=x%t!&DD@*sYNEZ(cF=#G@iXo4 zV4eyhK@v!P^rg%jU(+_^6kU&(`i9m;Pz*cRKIsGU0|_r`((X+gPjWsnD8@XFMPA)w zc72@DCqWv3-4WDI>tF|0e39|MZdIjgP>kwRV>6R1bBW|Fku=(q+Y22Y99$EsoV%-s zvo6HGo*i7xN%_$F{Lm2kK^$h^^nqTZMP^peyF9XVfIC5`++mN+-zfz+$x}Q$KSr}v zJ0Ai3R|x4Fzoc_Mi@C7{=ae5YW`nrIzWoD0Y?^HuuSoMqE2k7D`xIBWdRs%q*@>*J zep|+CJNTQP3vL`Uf}8gjYm4~3Is{&=a=Y>0RM&Q}yWrt3VV9n;pemhw(d(g(k>tAm z$PT64VQfdPYyN^8tI2i6xRPhy!z>H1B`*EX&=ry7Mt^GmAXE>pd<8pJ(}KuMI@YsL zEoJdYr4+lpDslmDk=yE)yRZ*y+Y$O;0R}l*5Ns(?E^#$qgFe-*aV9jc6*)Eo4y@sB z>sGG7hfj<#V3hHjO9(Sw09*uc@e55ov8OeKmLln6mef?`FB|Rw z>V>(NTm)`U%`wLw?fE)iSC+Vjrp#2EIwe$Mc3+^2;}-in@n#K zV(nagHkS@~^H-yECAK7C%Wv4SsxN8}Lq_c8KpLXf`KGnnl)ePPTn!@_>%J@t_$2Pt z^)T-kdK$|qK(En~)(q5qpUuM^@)U5#aJmQ6Gs$}v0AGJ|FLb@0CzNjN$Ld2zn-0cVWNWfvSTg4Ht(rtza)z_Q9<@;c>+UX!=7JY75~t zEz0XJQjO?gWmS5K9pd~WJqm~1eS(xGzllvnycKM9q8X(pAh(pK z;G35r-5XfbQBxs6e5t&b;nQ>1ZrRPR^7t-aDjjL~{aEijb4$a0X-b-;|xAXys1ths^BG3?` zFOHh622K>RoFA1<$vbQ4)?Fa$HNop_77<)HRhow z-P8Gtr}@pOd^9mk$OhR(f&Bpjvmmi$zTwl|GK2SUWtH$)RWz?AHp!38p9mYSITZ@T zlfsrv7WvN{fa_Qp_ni8?I_+*JDdE?nUu@;2q$4tUndH3tduC7LYJz^BC9neu3*t=q z#}^53LVC#cf`gqbjNtFWzZQ~AQrQqx2eznaFdgUlyK=$ly^{G}*`zq72%pxw(8-V& zmfKUuCb+QAEc(M z4VcDdchvMh5GP>t0l&{#zhP17Qp zDN^S+MH4aLIqTD>aXW;|Zk*bjl8vOG)cf;U>c>@+kfq=-NNP3tf*R*4xPvwOo8$al zU3*nI714B4{X40Rlbp)^Ss^4%AgLt{fh$Y==>f?9hUeTLO_8$)wRH?k;;wuVlLO?h ztTXs49{5eB7E9ApyL^~HqT&X(l-e$3LmT4{b#YyLx}`H!4Mz0%^c*5c<%i|bs^ zo64Sdv^{^T?D;2W`Ipl2iPrK(rR8hRR;{v~m})z@$`&yAG?m?~RJ*V$yE!8JD3$&E zRQnIB?BhfZOH~d@sSc~E98yHi)hg$csm?!CIsYi?U9akWIkorCRlTo^`rK6Y`7N?f zTUDPwMJ|7-T%M%5yr^<{edC%DT@3z3Dmd;fG1>h*-xnV_TRo>T`b_eFLH?`k;D-m3Zdv;6oISC z$uWel?s!O?0^qI8B&SVccS0-*vZF)+rZwPmL6T^!xXpMFdy6&1gAno+(=JGAjTH{< zmS{SMHSKYV3^iwLoxv-SEb(Y3hiBMTBsd_1=qdV&F>zJBWy?M499iOBYcVC>X-|oN zHG??LW)r4xQywXW1c7U?cq4oa1k1yOwX$%m-OV*C8I2nK!3057b;Lu zltE#>-J!bAqPu(m_z#{7s$jUAWbM$jW)OiF10deTtC>u($TE(%pdk3#h({{6V*8Sd%wEz5=`~gJZG6ej0Nub{N~(!?BoX zZv7rCtI8hb4jYs5t9D6O>0Eo?3oW9<`>oO9Y^vUWhL$ggG#G*MPv}-PxYB+3?Dbq^ z_dE0EWoRAmATS*xqvXAxq_$PLLf-Z|j6P+bps<8B@P7Jy7=oyuE-tTicM@)>g>)5Y zrful2QMx7r)S2o&Oe5otieiN7K6i33PTz*=*4<;f=xG;nF3^MD*e<$0ztJwkzJX@J zZ?3R0y??{$T3y1z_Cn7wPCA)c)v+?1Y4zS5Vx!JC)mf$8w7|{yQ}tEGCyLe7jVvXd zPuxE!jC!|TX^;ot?qW{4W2lC7pSKqad3&)9fH9Wn+a;;>Ux@GhNJb&AbBOP27G0GW)sN-1okA_SQEO2wHjwZi+O z=2jCJY2?Z|{unOQJt~Vm!{eq+fSG0+cuUAz^W{Z+CvrY`b(-o+Rr6uU{Cy&aFl}(m_vrOJtU&tz<)q zeAJKQGI%k8{HSd4Sj!9M7gPQ2gbW*DyQ~K~gHDT1@J~u7p&5TX^k-Et& zmrdt))-v<%*cXOld&k}pGCUpT@M?M+f6qf)0k@>|d6&+>tq%;mOhhYiy$z*jgg{Zg zU^-q5beexg;raO@!G^u|B#=>j;|dZ5t7uW40*?l+he8CE2ii)q4ZBwSk=LK+fmZa+ z8^Mnp;c&b~qiGblpi_>w_)z!r1%uCKeSu)<+3aZkkg9FCFPRb9%xu!c79n>w z!GyPOMkbr{_S8T&$S`#BN9LKMd( z6)r*{jU-1L6@dNo*v-7zv(1OM!joMDR_*rYD1UatWEYxNFgvHaO+)$rK64B<4JeYF z%sfgiR=8w9(yi{FMM`t6(lM*rJJ)v!%N+{KKY64mpt=0Vmz9c!G~=vbd77MSbNBGf zLb;?Bw)P&TOC61eN=5Q5WLMC?NCn6F;IECuw=>t!RoMZkyXUOUZ!7vy#m3$^|HKgBuk${`BR^vnAk|Al ztg5L{0c5ktUdCH&aLkN5D+eGM^Q;gL%5pn3<5iBY)Qg8)d*?Y%e>^2Us5#1%n&!~2 zn|-ANLZ$^wyA?93vrque8>!&9ApGsFk@vriN$)F)y+!(Jx*mn3Zi7XQnaqn4hD2(v z_Z82gqROtHd}XrH!cQ2O@}kyiSSWsf4|DePsHCye`N+kNo_*_1n44S3H17g6Y9Hb= zuSVBInVQ}b*MwBx6%s{}%A2tGzW6^YWZH=I2~?29+%IOW+sPTPtX=ap{9>#RVBKCMiDmd;a64q=a!>wcz=m=sT zXboy5o2Nk!D}|EQtb@u$6Z!;Q6=eW$|4&@|zh~$e)@>Gpf#xyTc&??f%to`a{p92N&55D*9D^%D|1yO_Ao#d%{a70opM;CnJwy? z4Qotp17oC*_N@3hEK)^Hp-$eO_QKlowd~?c>n$DD zTf=)gnc7@8wTaZ$NP4w~x$tYx9vwrPQvbGIDX*5eJUj8A$2$R8 z)iRr}6g84}8a#{5Gy%t|9c>P3PSy@89J))kIG|nUWYa1?B^g~ebV<*T1NNo$vH4Sb zGi_YQ&|Q|h0`Aqg+jLOPuTJ@Sk0FvjmYCI89AgtC=P&w-C7%_t!D|U#aeM!$6i&yOG9;B-1*W51cuQs3SGM$X-GE*&eBdT0& zIO(|x`PE79nR~4(p_8ULu2T^YSw6Pwnrd2PVhbuX&D!4R*7kOVyy(C&&x{^+ zYukQYUXmSX?p4Ct*7R;wDaYcxQ@h&wypX9~=z9B5+ic^mv08URUTOLdbFXu(Z5j%_ zE2D7Ue{{92c`2)Qr|V^HcXex9ctUG|G*ZU5g_sec=x3$XKvlrs!Wo?b# zEmtcGnY2kXv9*2Z`yL$YLn3)kbb{q~JIx#w6sEMA(aZcTqZKdbbQ;cjh___b?zd_z zP7ET8kdqyd%ReHHw^+WLakY-k&t>67rziJ@16T3Fko zl`_!=sJq@vbO5zIMr}9u;rtxDBrgVKO?f&>@^a9#fBb<=bhro2 zsa30Gck3%GL|HP$V1(r4pLUI`PahiD2QnJj$K6IY$y;*J+NH)~z+h%;_q-*qLn}aR ziy6d*??K6&BHg8HWaXdH$gZow$Of(M8rgK0o}zDCPbH**r;l}DbJ}Q0g9|79W0K)n zN_~ItO-09Tw9Tisby;0)C2#kv`nKa#f>91@t4|vvvF%HDMSh(~;Dz`;qAw@?62Uve zT{(7>?#gd8IwjcEFtSyj`EY{=47*x+i;e8Px}Ku_i1WQ|-E~*Wy``} z%9Kn|S|VlPv+`faZfd8^e%&?~@tc*y#M<1?I&Vo^%@DdJL8v?bTInq|bda+?>@8_i z_p7m3#BND~<#Ty%4&9Q}WV$6i{lDNB;* zV^U+1z8wbhlpt$ZrbDO5ZK4Nufxk1TevvYJi`4HQ%<@zZ)f4_p&~5QxnrkK>^Hr`E zvy8CML_B1i?<)=K`<3YzL5rf?W^L7&_O`*c&GEeyb9WsCeQsJmOs%D#j_xGg?1fr&35N>ByzZA&0?Ki zIuzFKVmE?w^A+KS;}yQ!bv#90n!N5?cD#Fs@RYSrrsvI*M&qC)HPZ-j+6(ZEh~bAQ z$MlxRD|r@bQ)%oG#=qJ>mxV>|m430)y^>WVT^@VR&2-r8f86$bk}SymKR)mDvXiYo zX(>fJ-;3WQ(9OK!+XjN(eJP@40jt8CmW+~|Jdif;Y2Js7g`AY^3s?e#(a~}DiH^KB zu+g5;k()-OY!I=Zu9l`)@qoyoxX1iHk1h+X5HYlBRC2Cxu;nRHJUgx|*@@wN$xe`;gf`0WJ%p+Rx1MijP|(huVT|TBYL1~K z!<^=QXNcX_@`R_Z1^s?Zw1Y9zx6ehf1^_S?JHq$#yBrSAGxr^y-%8)28jpb#i9p%o zYb|}Ke@*Wte?a{UdU^zcmiXc0vf6d0XB6*Rp z>$ROi{ekUI7a-x9f>p#i4yax-h|;s`p3YCEF}|7@ds$%KzZcgu5QBUcB}VuR=1t9+ zD`=mlQ7OyWU^lIdKgxzQry22L1ca}A$FAqr5insyj|HIYf>!_NYey|Tf=NF)oj7wNXj63Kp?|R}`#8sm<>qf}u_txXw8p2x zmEAoAd84VpiohEo(Pvx(t?C^=KhG|6bUZ^{r+iy*SfI7WH_yw)9wN_)pKK)Z_1cPC zcli7EadII4G(6tXGMDw}NlN&iJU?|q#iRNBMS91cWmmob;sU=5TGxfB+>TxZA&4Wnk?5| z(y`zkiaH#2RGEm2MO zGR<->LD=B5Wih{^8BTmqF`9bg_~yN6O{G6LM6uvreBiPWE;i}%JMqVv_piF)LRFS{ zE;A#u&>hDBDh%`NT+)7@I$&j3p@p%J=gD~tDp6hp-C?<=qgPyvBsmajZ|F~hC0Tys zAQ|HBdj0&1wZE|Zb);t|X?rC{CK)|p7a&rAV*>#W?VJ&Flw1ri4qqczNB58IH{nv( z%tlRn>?b6_Vz%ZS02DIt-%T_PXgQWnfpavK?uBmQ+2iz@Ip3h8XP@Y zOeh}DBuNjb!*%s$$m@$H7GG>#LhgId*>&VXICq1G;NM9%Ub*XwwCg+W;tLBEiF{AF z+)Xh;@;@W05(|Pnj#It+xma7s8gZb&&7N2t{ynyqZ zO@m+>UB1~|jxJ{Jt;=MPUYXJU`zea*Yx2{IQ(J)x#Ns)52VcBn2q;$GDLv%|B(Eqe zn}a(FQIqb&&ONyi7esjt>NdlLR4wh#rV9}&V*HK5Sh79W%Gn7_a(cRxFKF{bl|g8~ zv@A&%kPGPHf%L6t|13&hq4SAQd{Hr^1oei2Tu9oS8x-gCo8+cJsPhc8gShq}7qk!R zZqU-pzS)BiFaAjNaXE(+kK=7w`S<o+4y1dNvvKSBD=~F< zmshoqTuvGbd)pUMx5X{Pm-^D%9VCRT>2i29g!|_X)rzZht4egcu0i%pTLNH1^{(=o zbKWix6J;0M)_+9Icf6$7V$QeE(lSnWQi!Pb*C~{0y!dXi_CL}ZieWh<33 zvX&`8mP64()eBULf(*3F2Y#iLTjJ#kyApJlmM(Lmu5W%-Nh3-$-F{_*gb!-v@ixN> zO;P^uBR`?Se%aF=>_vK}4wYG2K!IFBE~ZT<#iLVt0%ZnNByT2V?D$(fV4k~&$XRnq z2HX%xtKf@ogy`CR_O|OoJxItry`D0JD>IEydP)~T+-z-{kB}o={bHx~R4)#ZL#?=O zTS)1E@fR0p$JqXIw$=!JmeChozv>nbvXK6haRQ~c{p4^C^~SjpZPx4DW@2<=z)63kevh9DhKBOM(s}uCF=?kk z@tHMRK5gz9DdgI``^t+PY}Hd&(kM&&sf7B%5g-XcbqbJDfL=+Vh(F}UsFuQ-obQZC zUcF*?A9^5ljZgH^G4vyL*6SMef`Izz3yVS$b%xS1MeLjuLEe7R>Zg(dr=ShRy*3<{sZ@1je^U zaVE+7+|^l(hEUBkH#w*sFT9z#EdZge1{%{&$>1mM$1jCNmFz?-~x7?KB~~9lP4WkR&7Gwl+1q9w|xm0 zHv1O3&bvBY36TU&PX2(?wNB@;fM$Q4`(ww!U9cT!0c(lo1&aSM?cAxbbB)oAF|BHq3fdz729FxCM+SFJyu&)PZk zWF;bV&83?_i3__)SHbRwQZ29h$P8b9D=d}OET=$2#8Q;%VXIK0sxO&TxoqeM#{(W> z$Wt{9_~b{1NkZsZfhw?TjSUrUv}}i-??Z;C#u9o=0T(-*Ge!j0mR;Bg6&ygl4rILm z6Z$F80;PAZMh-@$3_uUl7K7+v^!pXrErgsC+kr~xz`5aAz`8o$29ZTPHLNi!@eSIV zRj{?T=7X+Tt^dvA*}k)YpU?`TD*80Ty+Bq#MMr9;9VnNOePv61Na~gbNH5KUz?wBp zpa%r(SE&E4vKYJo0v4rxp4y}AH$;uZ24v7A+W-P!@SO#4a2rDlZEvVmjb0}8h+&mt zZm*Ww!qJRrhL7Q!O9ce5FwcXdiTb>;hwM5GJ)LY$;$Xa-+8N6 z8-#nE|1_)Xg|Dhp0&8;_{6qdFDo%!mcgSB(t|Ma+*HDu}NJ6I1`8hcY z>Gx*C!X9e%D*$yj3_TDzbu?vXZfKvTebsOys|PZYOTyJ%(v6VrCE8nKvp6SxVZOK2 zq7%2hG(sHdK<~9Ynu_9tTpUQM=Y86+(DT{AJ)M|mm-9=gWYTiGlYV5Yuib^#E1sEz z94MMk5wKsT41uHvd<9&q$ppuuBqO*%x}+XO$@&=mCHVv4SqOSH6rMqRP8*w8qxY#! zz@5k0zce7^05zfN{#GPvW#sVRF{OyD6bqCNBBi55=_FM;6G|7k(p8~!%U8NX#JE)H zQLXfBQhI5WBf6B{v>YJn2omG~!$ycCCsdjfM&yLcb0QQuk@-1Ms+{Q3oS5pI*ruE~ zO-_7QP691g&dyB{K#+$n>#TQDc$sV_8&Vsq*Qws|Ip$R-oRieXLK`{MR)6 z5RLE9d$mKme22ZP9j5SeTT$nh@8_=PYiMp_D5OmYhWSJfnSe%%hG%oVhCkLmey$aI z1b+`sAqTN}>lGluFBXthktb*%cyt~a>q+!zzDkgX+BBo$Czn-52vP>Q9 zXJl)STBH#2d*j$D){jFCpAOZ#4MMdy=B@Jo!o*j??g`^(jyQRg-BtVcRMp7}yIci=-Lu zI1u>#7UW`11e#~6F)A_);UN>yXglE9T<^qxV!nHtL241xplgAm3Un<4QL%x=0e7Md zHBu7~ChvriPClS8oc#oKSwN`{U<5|ZM3iY2AT;!M!0=5I#C5PWr2-b9czU`I*8O0T zQ)%K4haEK)O>8Diti2}yuzYBSUb>Av*^CSeAdhYIyoXJ70nUmKud-)H=%~?<@8G1sSg-M zQGX>p(seINJS7w$`3B{wAO-a!9Y%!!*awO$rcxyOHa#TzaK}+oXApk?ZUdMWxC`Vh z4v*UJ#Cd9~Ct?>&QrcxH+LH1V^eNg(bZ#N1Fhr+d2(VL_qRRU2s9;bSn!?De!FqQf z^0SF#*bk<>cgv)_M0YM5eJ>4SqR<2>akMrb0Q>u7N+r;7X9c_X3a)B5YU8z0v zkpPv6b~~kukZv+D)G=)KgctCT2|!oD^XGU)n)!2h?_cyr(9`0@v^Mr)Fuq25fAp5bQo{D%rh#sG*OzLsUm*Av4)crixfi6J#O* zM?V_arzb(C5g=qfrm`cQ?p+W*pK?165~I3GqWUgeKcjh zJ}_mdp#xc$Dy>B3s-7<>A>UrKL*|I0qkUjGutLG62r|KQK{`i35> z-cB3iE+S5;*hP#&L)}!ZaU7_X{&A$nKkNm&{Ao*CkIc6rm3h=8&_X|hA^WMG-=g>! z-fJV5=R8VH{gbvw_XYXd$k;j`6Dcv&kzTLW^)*!7K)tc$?d0oAJf4#T1y2T?b}$?? z2EI-{WCFm_QvP}`{&|23K&|jVc+|h;zk^ATLKGEg zk29QNWPS9L!?of|$iq2&JY4DgPU>)skB5`TRg;IChV`~7tvRm-uxc#=s~Tp4drT1t zQ1vPj+mmquNj#jaPd`ixi1h`g)?WC)FGCFhN#!_J1I+mADR65B!bi_UjFUd#o{oom z5Ez*%AiGkQkWOj(4GD6KEN0{(W%INuI#~S=3e@6>~a#~+#TiBaWTmCZTyatdZ z8h7)12&ALQ^4phR4DLz6>_ul;Ilg^5S*!8;9TI`Q#||+(T`NI_v%tMHWjo3-&Cj4y z=1+K}nE*^2!8u5I4Jo85M1fEYt}nHn(uua2q$@|s6-rJ&Oe2NQZJ+=d72;1@g`^X{ z96Ufp43VdBno3b}<7}P zTQ2SO>88Q^CPa;tIp7OJ87+(CZ27m>Lyq!7@xR|t?5#8o#oj7V>`kx$h1N7f%OngC zk;b>k$lu+M0k%InkD8o3d@=1)#}oKuqWFc=tu8OJB?GiRmieCsXfv&jkuln{IyNnt zHXS-ZNjc75fqiZq4u0^Dp2`S%JwZRIqMy~!n*@v&g3+d8bO`bx0O>~iJi-^&nlt%o zjDuX4}2I(4uWi(^8z<9gFcn4v; zQ(?SYWxS`_c(2BIAI+ppU{WqIsUS=aDNK&2OaM?;r7<~9V|G^S&(`SAp&6vG5C4L0 z9jQYe!?U^G#9ny>n0fNEKb1$Hw}k%8b3E&>{ZI_>_iQLpNFiMo3ne7F>GvVx;1L=nKnn`M`AOI}v;B*RIO`7%IgPd+Ss83$aDM$0pe7t@py z_7qFQK>&&=>f#zI1U<3DcKWTM_e$CG`unNsvaTSXs0ZEWzsDp{06ZDNBH94dUo4Yl z0*I+54mdUdCM*33*$Woq;i^KN?e%DrbpxR_#Uab9ae^e_y};#)Rrq13UIZG?E|OXW zGXnPN2&nVhWfH|ZO4qLkFcc2G)f7zzNDn^$3IU61_57ikO991nF z)(I^vXq@37nVJyZeQ-B`GBudRa7V+$4tsY<(fn3hJt60kO$E0c{fopR>tQ&P4kZPm^Lm+frG z#~!QD;{mMtqRHCu*ZlTrpzvACj3KcE6EMFgZ?!hF7vZv@P!Moi1g!%bqZ4TtIhS62 z3SZf+Z6?`rhzoQFAN%TVri!dAWT%4Y$d8>&O3FZx@?h>gb047X$BQ;ouZ+|W@0F2e z@V?0%+F&S_>gBciqm2B6*w8ReLe041k`m8m(_F^ci?TA=isvXO0uPyhMmqw}=6d5l z?q$>u9v=UyKcTi#g)+0juE>NUYaJbc#+Lej2}HztK-X-FHj9EXuE$6K(+XZ4T9MkG ze~0&r>Py-6s5|$78k)2p0eiubq)!(CiqHf~TeQ)G*}^lvO$T*f8atzMt??pSiy`dE z8V1^v5)OckeNiAtd(^i5>;roxKlw7@BK$dYS^x@2m)4OxcBE)*DH{jHP6o!Cc;DOW zdD)NiLPre~(ZI2RqmnyaF#sLa;^Xdlwx8Vu2?u?YLC8df+5Rt}?I94Zm%@8J?Aa_0 z+4hP2#IJ8LRRDz)-S<)CjXh{n$Ywyeg4$gx)Agurbrg6iQBRV!P;^K(p?o)lgL-&y zN#?FnZSB}OOA3n8@=U0GaTrYg&;uO`GETC9+%JA{3A$w5cz%X4nH6t23f=8kjPx%Y(WcIz^%U>Xb zoGW_B1TXhg<)7Z@@ zN!AZ&iVIP5p5ez)zbipMCQUuQ+CuF19@LA#EoZf=Ku^zy$1x|WF^@&UeM2lEh1ZX(!$|heNPF-LvhqbNxcDm{s2#TE;-L` zG;I{}n0qio_j>xVM-oOpPIXDpx!g~zV~WgNC~4k2r5BFcgNZCgs2FZWkAP1{UDy2` zyP(7xm?KeiN6YjP@_Adb_39SVKXnuQG4EVD z&fIrXq)N6iENC6aXU#>?%C&-AvTFD4V7NonzM|rUAM10W7pM>VtT*2EXEq?juH-08 zEwsQSy$OPvnNU6U_J>kblq%N4D68)PNu&sYEFqCEBx0K`)_g;Sy1M!-u%|oNfYYjH z4(3daWTnFAYeh=UcC9^ktg)|&ay-cvk3;ZT#2!FdJE(YA8=rD6G@LLg+ivA;!!crX z+k3)--yjJ%7C4;Y#&Jt2F`2koHaf^&A?%3>oT53^Y2$@jaSE%i*=>BOTUMgNZaF$6 zB{>rz$aBl7=BDA-uw;?31rM2kMze-zb3MOadBjn@{lJ3v98G%yFEt3C4W%&>)Wt(( zDN&M~;tcqXeq^u|V6T+V78vP3J4fV@3)9F#c?*aiv+Rs3oH&RxG_G3g24&(F@FRH0 z1b=#71N7OyJTG1GKXqQ{cw_so&ujSaIWLOC^~^Jxel*Y82liLvM#%{i_yU^isL$sb zrgwugIlaXSu^Z5S^W|jgXnk}%ncz?7_&+t)Kb()ew;PNK2Zy#wNoQQQQ3C=i_Mh&p zDV*P2uckL{>@R?5r_M>dVmp~?p&7#G)S_`A7fojGKrD&TK9d;@@Hu+O1pjIb-hcak z{a42zg!7y01$?$I{(POlrao)NhQt-0{%t0$O<-+^#_tOK%Mk~))~u1iMpfz*a+;f^ ztGHxTwk1d$s#@)P$b>N-lFbwOt~KyngPC21?LV`&9_BC?ro! zI%vSf)Y@ao^aUSX>TQ(Jw~r*ge#p@K*n z1>5VN*Xtj3%79*-(u2~fLC71VQ!+tSex_6YNtqyl!+~9cqJPv3T7ZxcG8+C_?(oPt zsMF>O!ORt)00X)=WHmi$)FB&#ItLFnAZ0NXFvuM_h@gK1@k!XFX3f&GxV7>Ya98WV z_t8TppwSRU;Zt0~C!+z*Cvf15Or}AkT2F_896wQO4X~LSBFvZtkbNLLK#roohxTjo z@+f|Eq#;>q#pWNLr_$OEIzFqYyh0y152({#yZ{VXV3DY$f3fSKe;F8=Xh=#AD!&iw ziX>K^0$~IQD^LJ{BxE0G5dteo)r>o>G=BvY^LXhf(h5Lp5A7q98K3l%>+P}Z^5fGH zB0~&eR{jno#R7A5!<iPaXMm^+_%1A~%@JNNW&t$eQ)wXXt zZ6*B%_$Lk+wQaz-n**f%>_QXmBDdMa-n1k74V;uXaN4$kvu+NQ_Zu`XanQnTgO=VL zRNc?MKGFW?ZbmzwNfxLms=$UQdde_~Cn$Yxrx$03=cC)RD$@00+4Ae`s_}bpJY)hIbP4}l-Vac*F?b8?B5mw|@^@xQ^y+B{ zG3u%Z>_b2V!Pav^qDm*qU@C|zI^Zm2KR{RjW`;|Kk}EBz#mQwtvh-9ETYaxorv?Em zCG7r`--6~X{137zvPU+3(IcB&K9@~JTG^ELiEN7cR5q>pQ`v;ZBNNbQ5_mS(3+%PU z2B?<)ow3$^Hdc`#^kxFF%ua>sdl4H3o_T;AIBugI_^dcZ@4z)M@J=*vX+AY@gz=!p zP33w?nVe*#Esj~KEidaGw_C52%?3s{(t+y$8d^jy3z0a;?ov9ao3wxP?6RvpUzk!r zu5bQ)DrAB`yXSvv9{!)a=ZNJ0->w^0?fqZXwJ;=dJ^zo4?copq{~g1Hc664mfvXWI#%j)Y_szWN_plqtJfc zExi?;AHz{a;EC&m`BS1;KhkVeBapa#V=ib+ryLDXTS5eODvb1{o#_WBfQL*#1Lm_& z$B6ulkHZ24QPp*JQ7Hk$b&y5!(LtcLC;9h%0fgNAfZ=0o@&(HI`21#!7&ibl_iV8r zgc{q7;V@0Lx;lXQf_Iu~eb1wJy5Joc96BHT>lq)!08OOVj$0R}()B>p#?9Lp)~{rY??<$Cq@KH{+i(6GQY5w%%o5z8KM z5F4ZPmt3I3)!wdMr4p(iunEe1v1@$+D2YJ5FcXJMRV0xiu=mmWK$aJA7WRxILB|0_ z1>0ul^<-zk5rYAYgg6#BV(I#1Kt!`ZPF39J+WAYk7qosE6##{Jk-#R4%tD208_H;7 zk1OpOe4PT5Ga&{FH=Od~WC9uu;7YJQPxP)&Z8C)dJpK`*_sL?VW}*p-VBn7pc{dX1 z*u`?Pr~9I8n5kXg?d_bmnOzJyXeXVi`Ix&P+$*<2uxO zqIP6z7HkT#paO^XIW=$=Y7PFXi^f6p_PzOY{KKE-k^HsrL~?7M_5U2}*^^X-Ha7_C zNtRG?jCBBq2upxgrwjOPSOWU>kYoLVy!(#!Kaix*kV)0i0Vo~(ZDCjAUjf;Pp83ap z(X*C-P`X?XK|UdS0$bg~{uuddpp;G&oyi}p6NNU-W5nq9MAhgEQh<1btW(?ZsOvMk z5#>_-$C3pz;P7?9IkV7mJ>GmB!#r5Q4;VFlOtvFdN$5r51E-3Ol}sTQe^+Cz zl?m+aP<=qEW@ehe^$AUXCQ;>+*=*VdlFH~U$$V(VJ8L$n1+ZE$yfl00AVMM`s!1fo zZ2)yb-4*PM+hzGDP)=?=?2B@}KBuU&_cbX;=q?{y04hU`7Lo)feD9Nz0LZxElLbv? zV3c;5!a?R4kf%`DE6BFTn2yv&PXG^N^6w1L+!3eI+|7%ZWRS;| zpRWA^4d}Lk4)i%T)X9Sqt8Hjq3l`I|2r0{c7~NM699DgyC%5l+Y`CX1HBeoH1hY4( zLf2R$p?wEsTyU~-`?IKi%Xcp&CeCENL~A5nA%UCX-*nm+A!+vKpFx=Er2|Z~{#PEX zW7x82WnVyfET~ZES`ILVGyPhQ`4qCN_Zx=y5Da%#jNfPhV!M@|-ImV>_K`vD&ifYm_7^ zN?vVO@9VUDHTkt8mWALTk%>4enA^H}#%NS-ZA)pC7nY=i&5xOWs#CE4DX$woSKzjP}yG2Vu_UtoX>ps!@(Z8x37*jmyvIOnd-t{?oh5RKPm zPMNkG{`vUc%-=!OI;5bueO4Y)0k=+&gRYxhLN%y3luU}87c&2P|A5tYg?frF3hB5* zF`NKZZQB$=IWZbgU=(DCgy4+n!AxK+frvLpp_eYfU#=fMQ*cT!pUo!uS#@ zKcVGzNov=RON66dd*=-I0d?f)jz-lB)&W{liy|#=^a}`z>VUEZQ3thGA8~rSL7baR z>*-ri)EKp%in5GtciRV~zW)>}1?ZZF@mbPeg_;%s5}-HlkD3-_{#D)|H7)S@B=7&% zfsKD1gZUVM@wE%rJrf)pDb?})tPtbXqEea@qAX4f0)$OZ^=<8sTFPQ_bf2Q~{_T*4 z|NPJ<)DD0y5q}Y3TIxF}Eo;!?|7?UQ@w+^HHcd|pI82O#>hod)eVITXEYZomIKwU( z*Lk$*GdD)vlR8}-U`b!B@S(kt)yyF4*K4RkO}|JY?*3VeMclLJzdgK`s~%{y9Za;(V&NbEFh=4~nSrigi0!TeRld{E82 zqcHwW!~C7bdMsdlS!QN`!EESbGm)vegV@|D$lN8x+^xWTgxcJr#@y?%Ibq666!Rtp z@usBkrWNpJl<{U=;3Yri$xZpGV*b1!ep(8DVF7<}8Gq>oe#T?I%Cyfmai8yk`h1_# zXIDX=rxMn4g7pIE)l{rE)vR|K)(4uIP-xcQ$IMP9^c{L9Yv}#jp(r-l6Q}gQHB8dqDNyM&rp{>s<{a$j9IkYZu5*sZ zToV0UrYK!z)VU;MuBm>mX-e0{b*>pngC_ZKgLSwQYB*yuIe|VLUmeb;ZB9ZnA~nOH zha)fw05JeskpGTi$t?FR*l?f-`~mYgp!7I~dDbgE&thIJO0N!V#BJq}4&9-*vxYv@ z9ri2>;;wGlO1D**`+8uX{Def|UfqZ;Kkt`y-U|OwE9yt(`;RWFAFc8qv#WkgssGr+ z^<%63$DPz0-;zDPLvOH(t^mPrwA-*dh;blXDqH$XG@@e^j(~FkRENz^r8NK!1sjXe3OJ1HT zQH^us@aa9(V}3Y!`iG{k_jZigs~Pj-z0*H-joJ6| z^ghMd!z<1l&L4ZE=*$t-*rU7794#GNdH76a_1I%4&m3zSTh(@^N;CGSduL#4&8lBM z>#Y9lmgTcM^pkHdPkyLB=h^Z(Z}k^u=Pq1juxNemqAdoCzsp_xgTaymxl4{2EUnL7 zde$JlB{#jpAmes!#zTW;&vKW&HCU0oV#O-My!9*cwitf>-HNY&FkE?H#mZxbtLj&* zI%~MPWyR_a!*6b{_~xPEnrAE4yfrM!&MR7Fv}t|brY%O_ewX*{4@R30jH7ZmuAKHLz}qgxK;KH2_5kV{YE7?WTwP2SQB^|p!3CcCqNJA`8Iu)lclKWM`A z!1L4G+6aq|qDU#NMsO0k9*q2hg#SxmB=gh8PJoI8Y~+6z82N9P|2;{nMp6a*-6Yjb zB>(?9Nj2-1i@d+9!+g+F5a;@&~S)b&2a=Yi*Tb@n*y;_pI+O~Uj-15@&A8|Wr z#J%k!9^M+!)!+MBlK0E)-fwStO9uG+Px2r2o&UJo{?Y*fp_2k4zYB=H9Y72SoHQwL z+INAoZU@S}^yLRivM~mE>F@v85q1*1Ydp^MO{t zHZ3p}7MO_(%zX+tK?Ph{0WYP1pIKm0P++Mp=u=i;Ra0Pnp}?lIpzq@XTb*?x({*Cu zItTGON1t_0LF=4l>s(USxn{0&D_G~QUN^jKokz_&&kO6kI@gVOyv|!^gVc0GkZ?n= zcteQKhR~o5VX_V3DH|d(H$)a}h*EEeF53`Ovmy4vhPciR@sBqo=xmgmZcGtwOcigO z>$7oQ(8l?)jcF+x7i4Z+Sg>)CdgJ1nxR>81kVrnTZt>wGq?f5p!? zvRw9fQ^|D8jf*Uc@+>!Pvix?p<>n)nTTWRPU$NX8v}r@;>bCsVS5&L7macB6Z7wz4 zTqfMSU%a{8XY+w5tAi<<4`pr!%CaNs%}1wORUWZAc4~7~=jNXtZ$7S5++yL|X=#+GsmOK`gJQ0^X^(lE4 zRPtO_(w$QBBD3UWLCGt1$?LL`H#H@1FO#0k)XR%ZniU}-_BHropXJ6&I{f-KXGST>dpmO zI~T6qxoF$Y#rtd1v~~of%JdF4NteZ??Oj-|n>zyVv>dULU-BL*nkj)ZH7i zb{DPPy=mL-Z};!sT)TTq^X}rCySF~sU81|E)ND^#zdidM_LTeXIS{<3B5}{b)IEo? z_8eZj=g77_NB8fktle|0c~8~NJwH9!b6j_CliA)2{q{CH?7ir_wx*SJx61lHEwjbSMdsz={^bsi<&J*kP9f#aN#!nc%UzY_ZtKe3 zx0equFZZY`_q{x~ePNtFD$;wbxa3 zT&%iwtLpmGsvFqxF7xA$`yYSec>Jl~@n<2&pC=vfo_qX-^7zYj$6swf{<{45o4Vs~ zFCKq)>-hVp$3I{-0zGK29w-vjsPr&%`UH`rMu1~ndbmhlqrou?dZH-5hS10Q&}WEB zYc%?pHGQ6_twv#>>`PxNdRarGD@F8rkwu+?u5_TciikQD19PQc7b)rlOw65rN2ID# zF)%eS%ohAmCzQ^l&lJpyFZ? z^mwtNLBPYJ=u^b11{DvBp(l&08w7kTj-DpgG^qGk0zE@aJ0Y;fQs|9h!3mW$HkW>0 zEIA>t!RFIj#l#7f4Yq)OU931E=!-3)-w~@$sQO|{=#RwJCj_=wI=x%0Iia$}meJpf zX{Q7OumXCZgW!~E0Je@k!9j9LV25p>hdV%hv>mpQ9`B$yB^ZcpqEB&9ol*_NHq(?1lPJ4=0K}R8 z#BSFj$y56JE;Zf(#wVMs>-Y14I4(fiDA;4UUW0w+g`XLjsL>PHr8HCrSACcb<<9W; zY%X@8*4M;DixJn<)4_xXyL6<8_O63CR@zlt3z;ME15VbhGSLxgL#8Cg@1JrE%SnzX z7swk$5vQc0i=UhMFSREA6~ZW3v<_7(Lc3tFM5Z5R(nJB4%Hdp>pLJYYrvS=0TXoXf+6&lWfxs*7q2@o(RbjKtbsFX z2PW$dN~NMywSzKr?f(!{c%(b*iSMxPtYNQfhrQQz^7Z@A#1t^k+JB2dnH@NzJ}_Bt zWUBwjwCs_K>qlnjjjQz^*O)!-bp5#VdgGh@$G2vWzgj>3y55AF{uAzGPq<${;gR0N zC;k(=vnRf;pZH!c)HfhBFeh|OL+AuNEI1%6JSQx=AuJvbPYej3k`q3oAv_t6NDYWc z%ZXUr5Rrk$)&|5j=ERca1* zF1<6gdf=@3DYH&4pMAA)_I3T_=D^vl-_JUGXI9g|(k4w!o3=A;*4;Gupat`$E?Bs8 z!P2`6ss}BtpStwq&h(DE>6$?qx2I;DKC$$?L3;DZ^w!+;dpk28-p%M5wCvf`WiNLw zdwX}8WN^0swCqv4vd7)amJZGdot6{1D<}3|4l#K7q-o2i?OHzT-g5ci+ropRQrmb$-mY&R-utF&)SB)UYhIsR z^WJd1@96b`dF#iVT0g;PL-6Pg;dvXPPi=@dDoh+*I3=%e#usZ6Z%?W3PeSi>hn%mq zKb>XY=xbk_WvdlTGC>d4wnWfeKFRaSltqzQ~ssJx;y49gYR)_Pf zj%>0zy4xx;j~lg#8@-zwbA%gviW_%@8~-ae;T2bI#80v0r+&eo>&~Aynm<2^pEjMp zU=e>|-bSs1I$g+LEVTGqX!)(M&p(7#M}^j>g*I1(eeVlxUkgRX{l$IyJAB#Sad>~H zG5wvR`@78O@4C3Z+t>Zs#zNCRLbET0=EH@YF+y&%koVvB%8Uo4^cj@;<)FF42hAHZ zDB-o8{QoMiY|M~L(L-8i47t2`NZZ##u6#S>>OY3GA05(hddRh_L$2Q+a^v-oF5_X3 z`wV;X<*=v2hdmoJ?0NLC?is^gEFSjq>tV0H9rpSk!`>Vn_V)C!cUOnKzd!85>tSpY zv8k2V4E(XL#O5AiZj6{WQ_No?wpb~)+$`?1M{HFowmu`aX&3i>AhvxY7MVDTtsEV` za&+`?bQw+b&3s<@>+U&Y`kL!|3*QIA%)7wdx?2T)_iF<*S``WME*Lk?FAM3s$ z#=UT+`^F{iMJwGmZFc{5kNf6I_bq4Ki`(6|K5#F2<6dgwQD)_FjPkzDcvQ7}{Pe)% z_#2NV6R!(aUd>;5UG(s38S8Z^#;bLv*X1Q%Z7aR5Z1%dk$E&^4tK*E)? z@#-@1er)Cacj6)9=Noxokex(tXA327-eH)5nNK4H^y>N)HxG8wf5IPLCGL8#G)jlAb8eZykrUrtK#nTsyyBainOir&AvriD#SStOrSad>Tjm@Jsi=`(B8!U}}RV+WD zvB4J7Z;JCz5Ph-5^!wt{6Pmu*Qu-5d(+R>B%b>p&cb(AKV)=Am2lgpq0JfGs#zAyS zGXPsp4|b5ABJ8k2dbET5l*SG#q9;1!pCSfg-_mC|l%CQI#J12=9hy!NgRrgi#SUGk zG=s2GdaVQd3}KJ$r=NBZozd812k6ZX(lf*m>>&NBgZzwU2zHo$(;@#1F%&yWzwc0b zMl%#UMt|babcPs){X~E5&~-*L3~QqMI&k-)zRr(Ca(sLRYtb?BF*mRC?#jevAJ9eGZxME%OT1WQJgeUfde%ev= zv&Iv9MsIeM{!Dmb-Sn%D@}D(c*h~6N$NZm(5!h?`eaF(DH6yUM^e2u@KNH^Ad-`j~ zuAepD7@Ohi#J)iIV`hvoPNEAMe~iNjc9LEo0x%vU+DU#v6M$JT5}ood5P?`9#tf&@ z3z|U8nvv?%bb%O&^<^w}>bjsAiHR7sPV9@sILv`@+DUX#GY)fNG&@Nz65}x!##JZz zMa_83jd9Z{{~|E~8_u}zRC-Y}0rO-$aca6qOvFYoUORPN)J(*r3}0vVB_b3HW{hzb zUDAYNp^RW>=_Miz3ui<-%P(odut-LtbN(eF9E)bma4x;13CCg?sm@K8hzKm6vDmrm zk|qL^GisgLmx)*`m2uixbXgON&0{n>OD_{~SQ_K1v;49q4qM2$>70L=h{qN)?mL%W z*2H5=8Bd&>E)xk@2IIAJ*JVutme25YVP7F8VQU#E5XVlr09h<1@* z(M-mQ7>O?VSBNRtw~QGsrB^gluq}*Km!>PkRBS6_u}jw#%~Y(EQR~8PCuU*$8K+%D z?V4HG0Y}$k4teG*!Rdh`=4{KoryGpMS^RZS&w5$A@WekdrgWaXS5F4;?X0*Hf z7tIDNl9}k9{|ixwMKfo(m;RzD#A2DL?oGcC8?kuiV)w3JG#fEFv(}w`m)L@(GEcjU z?rOGR^O()<(z`@4md3p5F2AcO#uhSfy64{|wqlE!_uWhHYPMoanNQrC?h++f2J^Lh z*Ii8sme2GZ&i5gXnw?wF`o=?dO+;Meqz2J-t|DU4{Kujda!>Z z4q(m9F&?7dGzYL2X0V6!H=+V-Wk!3*f74W8ZOlZE{NIR!*j45XkJ8^X2eA%jsz=jr z#3AfDbFoL)Z<<3`7qixb{X20Cd%`^JA^Kf&4130G_K^NgRAJrBs~+;-HC5P4=1q_M z--(~F*UbAKrN3)_!rn5Ucr^V^9LL@>Uwd@@t~rjeS-zg^$3#75#v0=(daO97bYXRP zE__NmuXJPG_AGj;IIkSedgyuhDeY&B&x-d{JQg%!maHkBs>iBE%!-xlS^ZdW0<&SI zd1@Z3PGGjI3{Toq!C6eqYV;I5Rh`8gS?4_^PX*^NXI87H+hbaTlEVu1jC`zUQ1V!3 zz1=?0-YK84TD&7a&@L%MS)pE$&wKL)`4egQgFzfb+qBn|1 z%A>4@BM!fz{jNO5dN!i%jpBFZPpr2iUcR9{Q#P^uy)E7;o++DI!D!S;XUQSRY!V5~<) zjK{&59*35A9A4>hWV1&%>#Dc>gXSIfl6BKN{{!(Jd(FDuccjnoh)3+@eN`J$T)Z~XH1YN zpp%1#a)N`T0WvNg&WR3^2Xu1rNKRrQs2XzH> z@^Lw*Hi$h^W{szE?gXhus{7(gIFEv=M+$B6bWV4WW~ACSCymn)v~Z+O-<*Y<+d+dz z)>!Avqy{&QmJPzUaux@7jm{jJbCmNic*R(sp*cr5 zkAkbm3WwoUobF)FSoJXcIOlyZZM@J4zrYC$5sX(m;TJg*LL}pb&iExxcnC3G?TlaM z#D^%x3tjLloGBry@oE>mos%3=JznUFU*n{OXvV8u@f)0s5ZXkcC;phz7$TUc_QaoZ z&WA`Q3cc{>oYoLxqS_08!MPrym?#{9zvA2pQB72jz~68lg;Y-zdgJdn-65KZYH$1l z=Y0q*Na&B7asxvJL27^8oI4>@5+n@3x!mwjB1j#8^SSY%iXdSiZpobzstQsE;#S<` z(CQ%JNZf{-7ODwSkHl@c8KJZg;W%8(Z44EJsK?=s-1DK55aD>-ncEslgs8{kuH5UP ziV)!h+?{(TR28D0fO~Ksg;s|MC*oe*?odsLdLr)4eIH5-6NchJ+`uqFm^u^>;Z6vX zgbBm&Fm8Al5vC5qBe?NliZEd~9>tv!rV3Ms<1yUiu<9^j1Rlpt3)6(DBk%-nMi?zZ z7>lQH8^Z(<>R5a(_k5TnLKuh7=eC9s5$ZU60rz^CB0?CCFXG+_Q$?ub@g>|xVbu}B z1U#MF9j1v;C*aGt@55+O!bx}mH!xffrJjVZ<4y>dLMncmxrro{wMV#z!dPglYH{?vw~soH`9}=O#x~#|anU z*SKjBnmF|W{0288f|ej$ia+KyMhFtrOYx`N^AVB+VLJYt+ZsV6sMGNm-0KmF1YrjL zihCzQm7vbR-*6vAR3`|R;qSQJ5t;<`GW-MgeFRM=%*IW5fsq24IvY3VO^B4pggH2u z7amE-)Hyhx7as}Lmdk-VaSBlTsF&kbyyVDgnJ^c(;iW}tWa?bpmX{GpL#H$U7e?NfNHcoq4U1M3Qb1-{2m+N0HS@!Zo-TuRBtc zq+Wx2^WI0&CJWc&LA<~y!DRJ%JcKtPN-|lv0T1JaM-h|N8}JBTe3W9cun>>pO^H%X zRu|$iyyU3r$-<3z94{?OGg-Y6PvB)l(WVNw;3>SuD8W?q7JM%6e3WFWuo$1uYmFkN zs*CXjyz5blslu)JBHo=S)l~IXd2$nwYNMfp6r+M=PcazsEQ6rbMfztG~xL^OB>hrwe!D#k{m= z&2;rnyo8q#O`9qF0Wae1@C%{Vvg`9{1xv`jB1YhC;ScXQB3t5;c@&O zuRBIFM|~Xsz9uJ9}_<~PO)=Bm%)j{NhnlDWcjxHG>s zmYAzPhr9Bx$13Iu&*Sd=JF%*{>hrh<|50r9T;b2S7r#4JGgtjH?#+K6OPeoj!GrjL zaf12k7CeMMAx<)1cnJ^VhsP1~)tB%Heteu_zOWUK;!lZF%~!YLG5qAX>iNRUcpN`1 zPBUM98BgG6#L*TAJMa{KW1L`tx&xofKOZMqAiRdp=eNcY3)I)}1^nxAiUq>!Kwf+Y zn2FWbfp+*2;uOAtr}MkxGz-)>@MZk>akNFk+js##FkY}oeH&lLpAauuB>V;6zz>fn z7O8*1H}d1-6^n#-@J;+F@v24YJNRaPa(wk7;a$9#pBArKq`r%n@H66RON0;cGJa#c zV2S!6Ud}%sFIgh|4X@z0#uH1_zu|}Y*W(pSgpcqe{5$cgCF)0bCI3-;^%CLlcon}p zUb95~JAR!1KAx5?e1>1(2PO#8)z9#Y{0Rw?bm4RS5F@aO#2 z1Y()`9sYuUJwdTd_#S`7zmuR^rhbpV;Xg{KUMBp2zvFi&XqKrz;2-$!6KFL;Jp)tg zK)Ikst!H3vJwYz15#k11>u@q#KB>8|8vJHQm6``n+6HCuA5nTer%IIyJ+<)%v?TvwojKJ0%=oP+%RHDmbMcV6e`5LaOAH(9U3kb$BXqN^ST5v3BS2 zF`fV4_(NlkH5rO#n>2J&OC&Rs5vq#P5=+%bYpIf0BlZX)l!->IAqce#r9~}4)V_=l zEwRN`5nH0PcA>O(zw64p-oDA}cYpu6A9o++oq6VRopY}1dYyCTkVO5Q=q|C&gH_%& z<_7eNO*^>cU1NU0fY?0;tGs6{3>X%hdvM8n#^Qj{u^xx2)HK!y{2Ci{Xh}_DW5Cha zhKH)uGBySL9vgXRNiAb@z{ObSp(??~)_^}_(+({OHns=ciQRLkN^N6jz(29MhnCbf zb_cwO^*B<+ZX6HzWJu7FC3fRvKmm$t0RUF3IfL=q= zjx2E)=K=-{*>j{y9pgg4upzlemeesW1&kizajZ&x<6gk8LxPSisc-xpaCAt+V^uyh z9tQkAB=Xpj4~>5VE)H=XtJ1)D9PsCmv|~#e7*7N44B2z6%16fYfPaSM9$WH}@iO4W z5RcQ-O@U);qfX>jY^g;<06kQX==P-=@REWUgZ%M!{Ty}FZtAX(=s~F<7AbVMyTc2xS*3uS{gRX(YS^utF$u0EWgJ^ zo?Oz(sAIVp=R8@ZwNck{BQE`9UTdSi<$he&$*9ka29_sr`6tyEMzygt9%?=v)y`;Z zi5MDkIho6}KW7++dC4IOkk?+c@YrQ6Vy(@|d_*44$V3p z)!yi0Nf?@cI%j<7!v0NUOaxQ9svCVR0 zSo*oV0mcr?{b5<>q6QkfEKi2zpUWF)WLX*yH(!W~Gfr3{hKF3pi!)AH+754XA!?}c zyQS0cK^O9d8rha^!&5Fq4Ks2qF~id@6h|G8_z8F zhi6@i8e_b$JQ<#UDQ}En4s0B6&WlPiDg;KvhvelY85IND#<$6f8fR1v>=ZvJFK?XT z6WA?2B`@kb!!Ixv_wKIf300Qm#k+Xv_z06U;ZGRvQ}vGZR8?=B+j|0#78gxf!*__$4qW zVbIOIHO7{}%Lyqrqt+VR0&gUw-^^QU>FNkBq-v?3eM`fjvgfxt;jS_?*CgBe&cxwt4*d zz_^jww-YyyzZf`b2ulQ@*pcYGNme^SFXxoM@s?;j6sp9W#BU>z~Rbq3+i*21P zify_UH|Jy{{q-vU^9^(U_pdAaU%$7{(l^JIh_V!XDb)Y(M|u7~`Pvo!QJ(+jAM`cn zzjfscQCem-X_dXNRc@2kJ3L$NOKO>v)NG1p^VFo~3p^v1B{jJ9+D8w*{pi_i&G^e; z3VnslwSBGgn|$_Y-)GLI9VYDWkkYi{f&HDcntq+V|LfeQg}zedljsSiKB?dJSzwA; z_Fc?sQ{Rm5`tC6OUwtLXr*r2VoSW8s-im|s(wooUa&Z2h<_iuST#(g#VfMj=|I63F zOiXJwX~ls_>CGl@IWT!ovndA-Ov!4NoP8iUx7pNd2lT%Sd30c!v-z9}2j`?TAM@z9 zG0tWaCLEZM(rn_Kl1097<;tYBw@R;jFlpVh|Kr!yM6AiqRNq8@OVZ>mQ_5^joxF8H znQhA^Z(Chvd&cDLJId_XH+je5GCNOA-g&;vt}Byw-72&D!Q|b~${a|Va$ri?gQ-&v zE-0J1Y)WSK;Ul>%k6t@`H2-jBddovw4jw4kGVYESq{`wb#vzsW*3c-P$+x)?u&Pr>5RM?{(+O)H}Dl?mqB(oI369Gp|QU(;iKk z_IQE!lV#JMtoDAIG41IN?`Qj_Jv;3E{M5AP=e=KCnfBtA_sa*ibA@cyhB z?=P%Seff;)Ybw;(G^57O3N`o7sClG9t*3bh~3sQtV`__&$j$*2U8valYHI7-6+e5J`q}e}9mdV- zkX)(btXUlwR_e5TR;M+UzS=bFtDTiP@1NEANTsh&&-(g8r7l-zb-7)s>%&=HpI3?= zH#<7Ha-UhV`z)*+vwU{Un#z4Q&F;Iia=-nv`yHv=|Mcws7b*|9`sFug+mAYUX4LUB z-{iF)ef`Ynd+o>!arU&tj&mlSoin}T+_`7xF6lUL<=J`bJI>#FcD}3Qf`exl9PhaB z?Ae8R9T#0cyXaoW#gES}PVBT|V$O=`omS4xS-GUss+E3gug+V0+i%_3oHaZBR_~v; z`iS3}(>bfwclvp2r$bxMA98g*ywHE!^7-4=_;24dfBR1V9sB3+IO4za^!%L{{C8cQ zzw5UD?uYYtKleW{Zoz@%fP=FZ99$TXxqLz9nt($O=dFA0w`JV?Ey?~{XU*Sw{r3U) zz8v`Y_koG+<0qbppWc4N+%qGVv`<)hCSiU1kz3EGe|UfRNWhWP3yxd}IC^!#(c1yX z9xgccJRp1A!t7+r*;xzEF0|w?YyYBKM*?r>b-8nT(d`S1?%WQ% z`*6|S=YfyLEq;{z=Hpq5A1{3K$@0Zd*1Y+2)8eN)-+Z=z@v|duK0m$q`Gq%MTwVO) zcGs7WFTG5RRNwf#r0Ff6l*l$?6HA%i^Vt(={x-3!$>x(4+2-3~WlXhvwnRF|HY#nZ z?z1{F@>^FqQ@GES$h2==UZ(m!4> zWlM$8soy*@e$Y)zOh;v6HEAwT?0+IzDd1<7P;b0 zSA0`@M=o-WFkSOq);n#HE5UTjH=}p%BG*V$zVE)?L5p3ZOb>id^;TaP_l@b1@0H$Z zi(R8l&wL;B&Ry&pV+!(1iVj-pnqYd{FEu)HscWLCn%}bMw56^|rkZ{k(YZ@qlT9Ih z`=Wz>a7{7U{Z2(k{@_YBh5KEJPW!<%)l}c_R-ZjTHCk*M?YE^*{*T2Lm~M+w%B&lZNF!I zJXSSYVOr`pC8pu3Mk`G}`YniYu4=T(w90RF%$`+^em1T3+Y#gObEDO!4St7X8vfj9 zjp-M^^D)k!8?7~M^Sc$Z=jTT2OuPJ^#dxf3G|kk&?^NH&b*`PJM}AlOrmb`BGClKq z&^LFTYqv@L)53m18(arWZ~LeAi`?KkXsYJFtY6v&SEi|^e@4ID4X#6`5dVGsf;PGi zo9zCl`bBPZ9WjObU+I^&(RI{R-~U0s+>Nedrbz#!{z1REvQ0hwQ~O8$;yP=J_FvXN z?H5;$sh@vF|J+|(=S+kA_w^6j>^g6X^FP%;a6Wj5BleBc3m>1 z`6mqs+UB}uTIQcRAaa}Qx@m>~vH@w^TsKUs{WAvSZgbryhb-f9k-># zjkg0*2Sx66l`^UYEE|-z*Hzl68IUn3cdx6A5fZRZJzsE@HS7VW)MEu#IU_va%Ahp$ zG{LAJ@IXCZaCsY%0ZD^{es%d6Jpxh(NB-*aHKGHS4Nm*jVS;c+)P&uBRycBdOz=~X=DVPQg7p3wTvwRSJb{IWbT`di}<&=8c>}q9%Tdu^VopkAU%MapmPr5!chWKPfwHcpiF%9?0jY=7x7-$;l zlOL5eKJiV{7$0Xh^Q6RTrXPG#y0w{<_`c~UpR{f%lM<_&e)dW4mNhA{hH0J8o^IyJ zi8W0deX_c>nVeY5wAm-OTgv3bVAFP={BBv36Kk7x`#8IsrzVD*{_siZ-eziIUDIDa zY28z%Ce}0E^hxiYH8t@A(_NoE-ObYy>zn@e$?D!_TH=SMe|>Vhr%X$1V0!A4-#u$u z;zy>JKF%KI8HvqIZ~3P5Xfq?Rx#>OMv>qul5+h7CeA9bm%}8uvs_na{hk0gVOVhJ| z$GW2D?C+S?w9|_Hozk0rwPpWTdzyCM_mlnyxaz;bK^`9E)z>Llz06gUHhW#2QhdwJ z$cxpSJH3*p7LUH=(dm6>rq{x`#jo9RhF5o<^4hz+c!%3rE2}%Rz2>bco_#yyS#@Ww z*MaonK6m!`*Kq#f<=jww&YkoYHJmrR=58*&!qrt@#F$C<^O z-A&n9)A`UV^>Fd%yXl8&I-hu@94Wr#?w)fsozJ}1Wfjl9JIK41^QBkzsp8chrF>P( zndH6s_u?HMH5^mRIl+5EPVp6wLbld&PVv5Vu6X?8tVgw+bG*miEEdS=t)!yIF^t|?@ z%}33h8@!Lr_6&cTzqYwE!+Y8SPxY6#N1Hphdgmmr@bGn_Kbg?buGe~?d@9UIp=wsml4i$-p|*0UVGlgw}tbP z_nGycC0|5-)WVtPy)wfy{6)xTEu2@pH*WHr@FHYE3+D~*wC$c-UgSP*;k@O2-{qP8 zBB*97XTJBclb${=)0?+){_Q>PjAyf#=8>(O|9JnN?HT_v|3E9}Bkwi0N^E&KD7%aE zx%bxFC7P8yUZ$&aocYwf64526SMTZ^Z~pUsi3ueWJ9c$WG;jN-#EO!~M|5>gF&}(X zBD-YyMO~d!%~PI~cvN!wx~|R?^R}lYd`cxA=<1wdKKHCdvr?`LU7fSc|2R$2rSdG% z&hO2Cjx|jv69b7LN;m4?$N7W#hI#4?5Sd4Rx`FV!vTIsOyZPlQQ+AobcltZ` zn%7@4g_ph8X@GN|`OtM!eA!|v2RILyFW)fDDSL0?Kxd};$ET((Wvd(*=sav*`P`IU zcJQTv&ZFj2FHDch<~<&$zU9|sr{PoXUiEnA3G>ns`mKX&m6ZKn9^$oI%sc%?N z;kDF9wUxf6?Ay*B9<^1~-`7~3YCJlqU-~~?N2zb-|L9P`OOFkzo&FvKnX2lac%#2p zto~0vuRqr9^?zTfA6%%vZ@g6fvk=rbK=6oBuD`rMs`iq~M=Ccdmnxp9Tz?_GRPj{w zBUQWZf4Oq~?eC;Y`<2SeDVHkke^FjZxzvL8H9b5Ip&zNz&oSlt*rkeREB8_^Rs2uo z`naTu-%_r>}(;OBH{Cex!;9!m`*Lup;uVzZ{gf*1 zqufimRPB14--Sz+_IBlZex-^xRj&J&D&7M9NY$?Qza!d9mG)iXQpI~J*Na@Lct5n4 zDjuu6vT852z}37@P_Dlpqg3tsc;_hBS&>@cK^`9SmFus&kt+SHQLfj&)B;!i?0`!x z=tub><@)CeNR{@#E7#*DRs6hiy$+>{UsbN>U8?vE6V` zuD2^yyo+*uijpecOS#^zRPB0vhA7wbB2|1eT&nm)<$66xE$|?qnR<4g%YJsc$yscc%uT*LO z7%o-XmuTZ2PpR5Vs(e*YuD2_-z*YZ2%Jp`oO8Xkh^>(Fd*Yi?Gxwmqu;-A2!ihqIr zrHZR>ep)cjQnl-O>4o-ErTt*#o@%>NrTtLl`urnRd=&bTD*cRCuIE>(v`<#9$49EP zpRZi66RG0slvg+QxxSx~THrzIx`2M9if1a<*D0yuxyto|9vuFofLDc3obD($VxD=3#L?VBjq zd6z2QM!C+NROzQ3+Dk2Hul7Guxz3|hY2RD99v`XVamvlgr55xPc-Ta@cuOO^JAmFxYND(z3grHbdkrHbb%S6{B`A+?}?H9j|$ z>-8yB`~murTHrw*9#7F;s`T&qA9p`e#mm8^O8=FW>v@za?fsPN^&_>Qz1nUyxKwe6 zay@QR#UqsKd66ppw^3eRxzvL8Y8;}J>v@qX?fWa&_X$#^|DnotE~HBP1m$|1rHUsh z*V~m^(2v^gEam!mrAqrB&|a!|2KtvO{p>pj{_)vnJE50vZikt+TSF14T^)!wt6`}!`mz*Ya=%JsNO757!Hb1GH(e^v5AR{R~vD^CeZ< z$HS$HCo0$bDOG&B^4FD1mHwA0*ZVJ3+HXQXQlv51O{Tx-U=S8ZtKd)TBFOw?%H~N<<{k&AJ*XOIMKB2Gs z6~1)ur&Q^uigG<}QpH1+>-8X2`mclbQpG=2uJb5W`e~6@|AY2YrF|FW1@F62 z#e1pOI`2}&`=gyy@uAA~{zw&f!ljB&R<4grYJmr->#lOW-lS^R`#)c~&Ye{0XPI)H z7pdYK(7#mi9m@6bN)_LyT(4WH;>VTid6z1F0sTuA{|o&~6~C)okB`&>4^q!@(7#l1 zlX}Rj+e?*x%EP6K2f(FDKkq5m`!7}8hW1jWp9aeHcuEy-sa%hnROzQ3T&j3y<$66! zm45mw*XJ3j;@_aXRPm|G^?6LH_!8whM^eQ%DcAXxTHrzIeVTIpTwJR773KQ4q>A5C zURk+R@!}ob>qM${y*|B_>*JML&|Z0vay^ey#cL?n;~-W11N1LdyqR)O)n2N0z1^0| z3+4q?+P71$b-tt)c#wL&rd+QFsnR}1xz3kVX+H%0NEQD^x!$f+@o{J`ReYLqeLj(@ zUGM*F^dnW;FG72%(tbJGOBG+ETpyQI@vX}BI7<~js9fh=s&;)o|6RFW|5C-TDA(sz zsp8ksk5ujYxc*VD_eZLD@lNjZn^ftiq;kDZq>8_;TwhfkAQpLL~*XvEHcz?8)THtDYMkv?wB30T?RIc}5s&+k| zGtiGz@kPq@_((12N3~z0T+gFa@$Jg>JW7>*_Mm^M(*7`9s(3bBs`wSSRPlVcRPkqU zsp2KSa*wlA@rrP%;z4k!;x*w?#lzuJ#hbvTinoDF74Hm}Djp4&Djo-yD(-|!6`ul^ zDn3WKUY}CMm!rK@@%3=2;yd9|#Sg-zil2r{70-i96~C=quS2QgPvKI z>EG0Ux)wM-*01H4_(|1|z7MpkU!Lk$f%|xPoK>!`JK^e={=9e|yaD-jcoXt_@CfoY z>b2U8hg8|0$7ml-?TdZw-k$;FrQmVo<>3kBzHle`cj~o%A0$=wXO1#o^-HRF71fVE zf38=*^z~N8r#gHKxecy=mSExb_2IvgH-#S|Zw)_1-X4CAJQ9AHybt_3c`Q7id?fr| z@+9~R@??04VnvU4HoPqPV)*OiE0pWp`6<`qE#tfq{ucQzcun$y=s%45KY{l3sr?0b zQ}S!@*5rS~+mlDC*ZMjrRo0LC64!#`>8U-$H^QCawB&(ecqQU{rjMOS8D$@ybpN@de zk^c(6OMXnbJ|F(0yzqLyNUqPov&gT&&ynAQ|4IHrxgO_x$_tNk=_vQ>r^@wx zqHOmybrY%Aw^TWAR8;MCKc&^@3-=QQuSi}K9!MSzuSVVkZY6I6uTS0?{t0$_tNwGJGKUJa_{6Pw;W%8SoTx7kobXQTUJK=iuwfufcbaKZO5AUc8(8 zcu$af!!M8rz^{?N5C5Co0e?aMF}#$znJPTaZQvEjzgDi#cl!H^7e3$iLi=~A{SdSd zrS_xX;pF4sACXUme?tB}ycKyGydC*U<$7IxrM&R*{(|ok> zvE+X!*ZVV3dEx!ZNBdN2{}?`>ym)u_yeuUz17AsA5uQ$Nfo~>%7ru+Uw(^4Wr1HZ1 zUmxwWsC`rT8S>Wfi{$O$SIHycx5)dz|0a)xKOr9pFQ#tF3a{rRcuDePxHtK1cxCd% za0~eg_}k>`;Wfy&!L8)~h1VrN3~xw&8vZHyMR;rSzu;ex=fgXbKZbWFFW$qwK4Zws zzz368RIb-myz;{9stVeFOYN(}Cz0FW)5+_j|2foubF}|~+P8(TBL51$p1cQq3weL| zZt`L9U&+V7kC0D*s~;F%WZh1OpCg|KzfArE{5tt+cs}_i_`l@4;4jF3gO^a@Dx9w@ zcvZ5%(YX1p5hP(|tmb?=@fxHKNEcpQVB=UIp4Dzw?dE`^zOUY-$ zSCOZ|H;}J_ZzIou?V zNmEVTZo!b_9Sfma}33il&l4X;Z63%ok{9=Me}6JC$}6udF{ zMR)}HHF#U{`|wWW&*0t2O?}+!Er#3-k0tkmCy>7lA4?t#pF|!GpF!RjK99U5d@1>t z@KxlI@D1cK@NMLA@V(@t;hE$U;3vpuz;nnKz%P^k2){v|4!=*n4gQ3DAH2AF6IZg( z`acRUO`Z*}KzVnll#CckXMEKk=KM* zC3nE9lQ)E0$s^$P$lJjilXrnfkVnJYlE=b3k&l9RBmWK_L!JVUC7%aRAYTR_OTHF9 ziF^xu2Kiq2Jo3ZvrR2ZESCQw!H;~_eZzF#I-%I`io=IM^pL@NXAg=(=ArF9GCVv-x zgFFO&pS&LY33(HEarH2-@cM5JFHPP7UV*$D+>g8;yej!Hcy)3o+)6$PUXMH#-k5w5 zJc4`$ye;_#cqj55@NVS4!ehv@;IZU6@C5QJ@Ui4~;FHK7!Do;c@9$n$^T^A>my%b8 zuObhEZy>J@-$rhS?l&m?aKKSACWo%+T|e*%voZv&4d?*vaE?*Si6J^((6 zJRUxSd@Ot(`4sq4^4aiJH@OtF!;El<4jQ5B`L_3A}juqU*mkyfk?S zcm?uqa6j^X@T%m);MK{Ua4Y#Fcs=q|cw_QK@Cfo1@V4X|;GM{Kz`K$E3XdVrg2$5Q zz!S)?z{ir`flnfT1fM}(Jl4Ig=8>0$FD0)GUqv1S-#}g+zKz@t-%H*Ao=M&eeuBI$ zJcqn9{4#kj_zm(w@cZNm@F(O+@ZuGUuK%g<(&TgC708#u{m56ttCIf$uTH)PZY9rz z*CRg#Z%lp>9zlK$-j@76yc78|csFv>5chhEAveQg$^GC7lk%z-)kT-_U zBX0>`O8zB$6?r6l19=R58+jajFS+`WRR#avH+7cn*L*51+OWp~dK;8pBmV5ww5_vp)2KiX{Jn|{~UK3uG+ySpn-Vkmjk5FD#<)WT)oe%le$d4=6 z<8V;99zPkkOYqa=dFpiu)lRC6+ikS}liELp-zP6M%)Q+g&1L60`Yrvn8hr^A^Mdz_8 zyaIV!xP`ncyc&5wxQ%=SyaD-l@aE(*;qA!N;9berz+=d_!H1In26vL5f=?#TgU=?v z17AY^6uz3gWW0NRH1;2p_dQ{U)9U+;R5o8be=E${^L>hN*ob>J!FP2ls% zKZpNF-UYs%ysvV7f3ib);ro*j@B`%I;it%F!E?!ffZrlt4}V0y8}8{_bbpS(&E)6c z0p!==)yV&a+sR9ebdN(r^4H-l$*aISkk^LyApa0Ph`a@S6nRJZ1oGbSRPv$lH1coZ ztI4Osw~#M}?;~FW&m!LrKTm!TevSML`~mq@xc){th1cQV@UrB^M!Dz9huj0fj`ya%sH9tIC0{}^7A{Bw9Xc~^K7^8WBP z$dAF7kzatPli!5zAb$)$KyHk7&(|sPO7L9r zx8S$PL*b9eKZ1J(6rJ~0a5MQ=@Bs2Y@M`44;db(I@P_0w;VsFRz&ntygZCic2_Hm$ z2tJDZEPMj_U+`4&hwwD=*T%T#Yc+X!_!jav;rqyI!L!IefS)IC4!=g;9{zy5C)~qQ zbl!)+%aSL;eaNT5-zHxO4<;gRHj!26NkgU6G>s^A1052XOjjzw;_KD?@V4Q(LG<$VyW8g{T$?z2N`S1ngE8#21H^Vc?_rv#)pM)PK&x2=^--TZxe-6(l zFO%e+$7kfe@RC)Eu7~&F70JWkLF6C9Ym$Es4=3*mZ$jQ5-iCZ6yfgVkcr^L<@Hq12 za3}dj_!M#%d=B|B_%iYf@O1K<@Ezoj;Rnc#aqjs#MP3P>Oa2!87I`TA5&1`O&#Fb| zy%pR{{uMlcybrt@`Eap(X`Am3A@+I&NimzmHZ(* zjr_Im-1D`XygYmh`J3>4$Jn$!YMeN_rKv~$%{>L&zBFmH~ejK3p|9p2E0CbU3fF{PvPyzzko-QcZc^Q9}JHt z9|KP!Pll(E&xbD{UkP79z8RiDz8}7a{3QG^c^*8Q{4V?o`Ez(ad6~)Xd3;9h3orRz z(e>~iydrrRJc#^bcun%p;o;<6;Z4Zp1e8y8hLy81M;45kN1nt`w)0p@DxZC%F}#Ox_4SkGu{1C-ScF4DtbR7x_2vqvTWI=g8;7uaQ4g zuS=`>mMZ@qc$I4JrPqP_eAz!)uf0!#^N@0soY|Y>In7 z|3mHv?@C?`-k00~A5Pu`{w;Z1_%!lJ_!8ejmg6}4u13yImBm4|`2K*25 zz3{u_S@5Ui7vV7#;Mg9nWm%R84_dNbfUKak6yfWOVRdn8i;NIlb;ct-J z;ct>RfWJrH3|^bOExZnSXZT0tz2Kjc4}yP2o&ax8o&@hoJ{8`Zd=7jd`BM0B^40J$ z#Qqo5`OkFQd*2yOozJbbc^qy6;yGDA%8t z`=5&NljK$47s-R+*U3MCKOk=ge@XrYymWBU{pkj;L_QE6L_SKnzK+*WUbfJ2O@h}U zp9BAx{73j_@M^yNQr*Y9iP~3# zyT~2zBjiosXUW?tSC70st}0i51@>yYL($$;yXZK73$H*v9Ue%&Sh-$*)s+`spR1IY zQ*KjUczte$Hz3~!Z%*D$z1G)9sdB$}9NX=pK3{mdz13^=S3Vw6rTuxdpGfWh!ggmU zFT9@*;0wu%&2k^t3UV*_Msk1nF7j&dgXCfGQ{;`|m&iYZ-yrX-+)ItaL*<2Y6az07 zQq<$&<;cH-`;w=^-yvTL4<%2Be@MOy-kkg}{0s6Ncog|Hcz^PL;3LRAXS>H|9C-!h zdL2wxUU*$ulZ$f?@{u%i{ z%Jus1q`dI@_x#@Ny~r!TW66WyqsfEelgR7CXOl<3my&mYuO;sV-$ot>|CM|!`~-Ol z{37`x_zm*a@PEj+!HZjqj^_cm7y0jSKk_T^cggR=t>pR#^XhqQK<)*PAP<0lNnRb^ zjXWGafcz790(m?5cjVpRGsp+Q7m<&KuOgoU|Al-Wd@uP5_)+p-;5p>`;D3^zfZr$2 zg})%b121hWx*ndvE0dR=>z>D|_z9j zD!c-D2t1Iyx_a%caxJysI^wBvj`nq_eM@*#@=oy2$)n+4lMjRUAy0x2C7%ILBu|4U zldpx(C10*y>*qUC<#>0X{TgbY3ExVd4c|}xC;T}11Na5<;`80}d!5`2e@Gq(FBVpG z-fP0kk=KL!k~f3DL;fW^l)MN0L-JU7b8;vA3-YP(DDnmH{^YCRBgnVF$C3XEpH6-X zzL5N~a=rdnD%baw1?#~_{Tx>KFXSEz-0lBM?hVf(4}@PJuLZwBULXE1c?-Cwqv(Ei zf|n=n0}mvRhu0t<4-Y4w4R1=m9Nv~Z1KySVzwmzKC*UK<^Wfi+=fh``zl5iedo6U& z*BWvQd>eU9_;2JNz)z7!!1KsE!tanr!=I85hnK8Vbbh~sS0bMUuS&iQUYmR)ygvC} zcysdO@Gr@8;oZsa!UvJRfPX_?ZjpOlCXolgzbCH&Uq)UJzMi}}d>45K_#yJ%@NDv7 z@T=tG;P=T>;V;R5fR_y~I=>s>zT__WyX0AL8~G)8L-ITDR^-p&oyf~BcF#+1a({Rn zd3AUqd0qHa@@DY)oqRp~AM!o$*XkCX$766a z`9-*e{5HHg`7?MO@-k`ed1*rK2mhS>eRvo0aCl$xPvP<8U&6h{sDO% zcr)@(;9rn`0q;iM13r*^2z(UzSolQp>G0X)Y49J&*TK`tcfog(AAx6*pNF3zzX`uW z{sexHywpG-1Bvn{0;bh@^|4c z$;04f>ldBhCU9T!|G?iRx2e~!tNoWM``-=iKcV)6;r}6b!XwG2!TXahf+vu#fsZHO z0Z%1A1Ybg)17Ayi9lo9X5&QtTvCKVRr^zeBFO$EcTt5%LtGw{@@DSzteb*!9g`ekt z2!HLvq8gotJh}bQe~aYMn7GspC90T z$kX9*7*=O#TA?3wfF4?&lRQ<%OT;`@)ZqzXv}{9tOWk z{xSR>`RDNGe5_~!NTk!Sdq41sLAHffjw}PK0{|cT*-Uoi0d^r3u`8arq zkBZLwOn7;6i+b&=aw=7Fx&-YV)P5bjG5Jn-Yw|V*CkZ{QuR2O^z`uP zg7)XBeP8%rV>eLPYN=27);YUtrnQMpu^Uq9uQluH#Kr~22&Ut4{?@c5)C zucAC$`J1X1wDY<_z8^9 zI()vs)qZYMul0SGRB68tE>--fa(y0`Dt-z5=cvyYUMIKUSIHm4^T|ys+~f0<{B^jg zQPKW`;N{6{!2`(a!QUhQRJs29N~`k1*Qqby4amF0BghBCza$?6??#>sA3#1Iog4ah9ppB6WAaAu*5seTJCXNN zul4~*Lr`X%Km(a_Oq#d3;0sAyGHAEov~;W^~r!v7?n4!=*n z82*BM4ZL*IqVu~QUYYzLyejz_crf`@cs=sJ;h&HfTaEc8_l9>Nx4>h_Yruz**M*NI z{}euz{0sOz^6u~-$p^zXkdJ}yB2R{AlFx_#PJUUv*4I<1vVI<-omBCa=%?5xMdx=j zyd3#{xG(uh_&elz@KEx*@DItK!<&vAfFUWo2QRMHz`;&*kN05IEA4fi2y|$?F zlv*%u>hNJ85C4^XB>V*VMEFJW8|tq9=}KX$JBl~yu_zP=XWE# zJh?@^*7pxmrT^M!Cso{qem-Z^KuT+u*;DH-`V0{Bw8~c_jP-`9Sy$^3m{r$&=xp z&D`T8`@aBQp8RKcAo(_U4f2EVaPp?=wLZ^Cm3hfV`wrCpFL+P#f8ep?CDys;Wej;m z_!RQD;B(2X@E^$=!8ek(f$t&j3O_ns4g4?iDewp6^Wnvs7oEpda4+($aDVax z@M`2|l$TNS6{ftDs}m{4TsX`7?Ms@>1#Ue!7xZhR2Y<1s_Tt0(X*s z2%k(I0iR9YUb&Y#o+Zl57CNq;@HON^;9JQP;rq#_!H<(KgkK>48GfC7EBqmOu?Y3d zN$s~(Jumus*Kex5o+m?nzEq*(GUK(>f_YS*KcU*|`Sn$wFFe1O;BS-Pg4ZU046jFS zTJP?^Df#R0HsnF@ugGh`dyx-Tuk|=cm2s$t_QR?Dr^@xbk5yiH-oJoPCGQTOM?M(- zBl#Hk2J&S1F7o;CO!AfR-^n+_FO%a^(t^te8R zS0--(uS(t#9!y?Oy)LQ7ORDToZ`EF}kH+frh1XB4@^Z>sC@;KzzErPED3>bzDDwEa ztoqv5TI&7EYpE}@)kPw1;J|)ed-Uu!w0GC;-GX}#8rVI$>%d;UhV+ap`kB511`Z#9 z&jb&Ni!JySTJXEI;CEZW@Ajg9YDm{U19}aN8!@P7!Dqt?es>i7UZ>#q@Pgm#7X4EL zdJgYbRN`Wzy7%nSwMSH3RKXtz4RIIu4urb*Ak@7Jp?3G@+#3sZZ!Oflxls4^LhBYZ zvATP);xOF3Slzu?(Mzz^-H$cc>h8%FY<2f#MPI=-{J~(WyIWhZ&E2s**cLjZ&w!yr z3btm$4h7rX9a)2I?v7M@cUP*tyN9q~J9@wY2HRyDcK7btg6-}dvZ3_bu7VN-Bj$ns- z`)axz?j2Aw=Dw<)^&yT;?P(|uPHjdas+VHN;r83zZQV~;R6aiI148=G}6y0M~$Gtx)n4vgrO32*% zgnS~M$R?7BTw;AAlSm}uh%6$ANFgGK{2_cu9%6^gA#jp5iJIh0LKYgL4^Lu-^^QzQ zq9jj}CdrZ{NpkcmMXw@+{v#6z+n!H`r)BqRv3T4m+Q zbjq~7I(}pz6w5vo>pm0L@FctZqh1O9puA`D~=V{8!N6hR$ObW zxYAg0ow4F7V?{o!xV~7C4=eIvMLw)@3y6GJU)==aS}E5Nxrn^Fg1G0yD%S+LaL83d zE*Wy6kefrCnXNe8S#esk%FQ71VMRWy$cGjAup%E;xe-J@tjLEI`LH4%R^-Eqd{~hW zEAnAQKCH-x75T6tA6DeUiVK7l`LH4%R^-Eqd{~hWEAnAQKCE&BhJ09Ysjwm+R^-Df zw{~)4C%1KSQzy4{$cGjAup%E;;?6Hsr&G zeAti=8}ea8K5WQ`4f(JkA2#H}hJ4tN4;%7fLq2TChYi;c8}ea8K5WQ`P2MFTA2#H} zChv{pmPziJUfnd|u1Rj2kPjR3VUv3(xotu|Y{-WV`LH1$HhG_feAti=8}ea8K5WQ` z4f(JkA2xYwgnZbL4;%7fLq2TChYk6#As;s6!-jm=kPjR3VM9J_$cGL2upu8dJMv*iKJ3Vc9r>^$A9m!!j(pgW4?FTz;Tp%BIJMv*iKJ3Vc9r>^$A9m!! zj(pgW4?FTJMv*iKJ3Vc9r>^$A9m!!j(mh6A7RKx81fN@e1st%VaP`q z@)3r7gvtAPa`Y>V#M zZ%|y%_&9fe;p!3At0xa(at9Tn6gRc%iJROn*r z?g3F}i7>gdQd^UotGen#Trbtu(&Ng94m>TgggiMWi7;>gYJPc7&BOZpdsSyuD;M9nRA#-ZP!w@?) z;$cXh8u2iMPmOpO@~1{T3=vc#9)=XE5f4KU)rf~7i)zFjh@%>D2NJ19+<{Q45qBV$ zYQ!CgrW$bv(y2z=fq<$JcOau`#2tvK8gU1bsz%&_u&NPvAg^k~9f+(NaR*YXM%;nm zsu6b}yK2N8xV)(mcOao^#2tvJ8gU0Qsz%&_kg5@PAew5#9f+nHaR;KQM%*FMR9izd z)rdQgOf}*TT>sRFI}k}V;tnKIjkp7WR3q*{9@U6D5JxrQ4qOrSQy2%Xiuy^616M{B zZ}l-w1!~kC@&rN+y8~BA{jAd=Pa@R7JLGAE8hM92kx)bLkf#!A>>cuCLJht{o=&LI zcgPb8HT(`-MfFn~hdilJ6X1}i6>0_?xT5OEpAKAA_47{$uB`e2s6$RKY8D(gzvxGx z4xC{0Gf)T4F!~{=1E(1M6x4xpjDEu7z)40w<#FIFqo4FRaGKFidmK2==qEl7oM`k@ z9|z7f`pM7#SJ$~NM{*-sdLLz9U}Pez$jJCPrcv+AZf~otOFet}lg1*GRb25lOtPfX z)9?8Z=Nx2dX4+cC@bJih!yPyP9PWWjLk-@aOJfZlpi6@dUZ6{(4W6J&!wue`OXCe5 zp-Te}p3zGq4xXV)Lk`}dOJfcmqDzAgUZP8*&Y5g-Y1qMAbZOkdV{~cY!E1DBC!-i*XhzobS9fz8j8+jlS^X}9;i!$5niZEqtTgc zvKWreWRt~sbS9fD2Bb6DWHBP)nOY1poEudF)HDyS`15PvdLmx!eg}< zn9gLA#mI!`YB4mO$tH`j2@lp{aKekVWM(0oEQTk%SxaURvdLnA!mG6yq3~=ihNv^y zWHCnJ;aUt*XR^s+lsc157Q@t;Y_enuA)73jLdYhIk?Kq~Su%T&O_t0aWRoSc2iauF z>_IkJGJB9smUw_|8Fyux#~#9JhrEXFH5Xp8X*FWO?f!jrZbukfZV#w$E(i}4Dt+G4!Iv$hzo z@UAVH56LD=CPcEy(ixG;&6G$sSu!V*O_ofGWRoScBH3igv`98tGB1)%mQ0Lflf`&- zE}JaIt8>|8FZZTe+%O;EQ3Qyf)yuw?z7_acy zEygRnc8l=}&)s6YI+slr;}ssf#dw7mZ!uos$yTZ~tD z_ZH(79=^qRg_mzJUg7Cmj8}O37ULBjzr}ck*KaXi;rUyPS9t#x;}ssj#dw7ma4}xt z30#aAVc!ig6XS_O>O?JksbJ=8PygHXn zcE+o7*<@$DI+sm$#w)ysJL44|#GUa9FXGO4g(q=myuzEfGhX3Q+!?RVWs{xp3eV!s zc!hUyXS~A0xHDeiW!xFB@HFm>S9lwD#w$FIJL45z$DQ#C&*RQ`h4*o1yut&yGhX3^ z+!?R%MDC1Ncq4blD?E}r;}u@Xo$(6K*tb9?qTd3NPo*c!j5PXS~AOxienj@!T1&@OtiyS9m^m#w)y^JL44|(4FxL zFX+yAg(q}pym}{_?2K1vyvNK-2lTCKU zt9P==&Ul5#bZ5N6Yq~RDy^~FL#;bR-$!i%~yUg1gI8L#lB?u=LOWRsoo z3a{$Uc!g(mXS~9@x-(wkVci+8@UrfVS9n@?#w)z7JLAV0XqVys$gt6`t6g@d|J3&Ul4Kc4xf8E4wpZ;hEhTukg<9j8}MQcg8Ecv^(P! zp4!!Tg|~J!Ug5D_jaPVWSK}3)+tql5_jWa2;lW*vS9oz(;}xFV)p&(BcQsz&(Or#K zcy(9f6`tMIc!hU&HD2N2U5!_Gc~|4rJK1D4Ug7OsjaPVlSK}34-_>}9=XW(;;r(5W zS9pL|;}u@u)p&&`cr{+(4PK2`c!XEu6<*=hc!g(pHD2KzUX53Hh*#qkUgFhwg{OEm zUg0fXjaPV#SK}34(zMmUN%{cS9q>h;}zcP)p&&mdo^C+#a@k9c(PaH72fRCc=cX3S&dikWs}u- zg=c#;UcHx1R^!!s*<>|d;pJY9S9rQtRS9~>I;Td0zS9r%);}stA)p&)Md^KL-DPN6O zc*|Gg6&~}|c!k$|HD2L4m#@T*RvAUa=Ig_UF2epdnMK6rUBsI%!dnC~j0i^{$uc4~ z_X^H+5snd)ZA5H-M%?To?E8~-*3SW%bkPXaMoX>o5^GshBKV@7ltz&_ZNmUoc9-o zGaUFAhBKV_7ltz&`4@&WocR}qGaULChBKV{7ltz&`xk~YockAsGaUREhBKV}7ltz& z{TGHaoc$MuGaUXGhBKW07ltz&{}+Zcoc|YwGd2J&3}+WI)P>=UjerZo8JhtYhBGz< zE(~XE3S1b@*ciAloUu7@VK~$Fz;Kqc0dQeh%N9U30OJ0y^WXZ9?xXkUJo=8Vqvz;2 z`i*X**XlI-j4q?c=rH<=?xMHoEc%MBqNnI6`iX9$m*^yVaGT36LbedHe~`_C>>Om< zAbSScFwo9~{hVsut^=LJ)u3x+P}5~9!{yff=oGFJozk_UOS)ooNY_oxLf0;i?&vzI zS?GG}b7~g4KG|IHP^D%ekL%W#)hu-FAT~<%P^E6G>t(;cetJBhI&#!xl`gKCLG=%+MI9Xw|JY8UuCh`$%>9E^oVjJH9?W_+@)Ga}F=x-Q3>4 zjwY&}t`}}qP*2zORt5ERy<~$eU08nZZQ_qIHjVIx%jNUirvoql^!v6?^!?@T)8Tc0 zfA{hF?d5)i#DDkvbUfaDy#KoY_;z>ys(XIaqaStf;K%DTSLf1L$mLc(;(6dhsUG*x zsfRsO>QN7!dC(h{^q{8>uKSzLh9y1d4NH2^QwP^Gwiso4&>NQYpr=l*`)&mk>p^eW z%7fmpl?T0HD-U|=^ooMqU|$zg%^vUu+YRq~4{8!yZF{pGm$iZ_Jnl+njX#@i8%wEs z9$xg$1SQLK3QE4Zzu#Zo+#I&Rb$%Ue;BtGXl$KSsIkAC&9MQiq^;Tc0Sl8~il&)mtF z5uShleSm8J{POhrbR5lt`5{hhnhMiHoY>=9V&KFc*AfFK_PCZ93H4-Zh!cCn{j!4g*f#ac3cB9vEi34HtGBG6>#g3hg08oE%L=;Q)GsUOdaJjrpzF=- zvVyL+a%BbW;race+)W0sOpJ_0l!V)kGNSLbnGK3{y^hm&}T0Mj% z0NN6|ss;gJ2>`bQu}XaqmH>E5IIG?SVF>`Z1h%pbD#8)~aS3r{BUFSX(DYr8TJfM< zB3{`G6=5BKbBTRrH&leJ0Mg;_rn$2pD#BKfHAGkfSwn=aAZv)Q1hR(qX)S@QA;LP4 zHAGkfSwn<%AZv)Q1R8EcSOQr?geA~`Bf=8M8X_!#h8z)=K-Q2_ECI-e|9jL2=u2oV zLyZVa0Qe=ymH|eDC6F~lSOV}bF}I92A}j$2nCM&fNwp_!3BbU_;WFlkuns`MMC3B+ zh_DX8!Nle=?uf7iAYr0(8F@rl0Y5t{@IMBy5oN4wu`jX$zjHQHlYIQZh~Ba+97?JV~Pk7?`ksU`e%0s5I>_ z;nFm}giO==5;jfaOXxIhFX7WPy@XKH@)AZ(!^81CAW-EdoSJ5rkZRgm!m4R%39Y83 zCA^x3mJo5;S;D1hW(k>Q3{KcILvTW;8G#cnO?yhnG|eet)3hd>&d5n)O1Ly_DIwD| zrG!n>k`gM-$cuA%{FZXxpXu`a_5Qejxccoo|J`4`yj*?V9zq~@O_~?pVt&kU+&F0j z@?3?%xbe~m-iAsK+ZdT7su6*gKOc?47yPkZ0?uqr+t;g;hF{ z;(BWzqr+tyH463Unc#5VHvuCd;=FAFMgql=e*%WQ%ldM|)AQ^8@yq^)zyIyefBoA} z|NH-Zdu#vUryu^uhyCCTbyC@N`SziI{_yjM!Bq7VW3K8a%$xx)q2}OC!p*6ELe9aP zgq?#o2|cI!2|ovK5`qri$OHYY9RK+DpZ|HYIfCf*bP`6s1f+vN2}%cn5||DG#rF&X z$^ZQAoA>w?_y79i-#+}yPk$M&1)SoF2AtxK2Ar}b064`h4LHR$4LHR;4LHR`4LHe7 z{fDAIeE9Qe!Jt-r)}U7W)}U5=*PxdC*ME4?&;Rm2fBfO6zx>mXA27?70AQ9a0R}~F z34Ht0KmGhyNwNRohaa}zBEMI4U|F^Vz_M%!u(HsWz_;)D`-dO(p79RwE!zRCHL@K5 zzGXXrl}5G!z&CBXeEUAV?5Dr}yuA;(?UQ2ZQFl1RU zre`UVXnIy638!Zvl6ZR7Aql8w8Ip*4Rv`(gXAzQ^de$Hbs%Ht3sCvyGw2avX6BZze zt7rX@zwn0DG1lim?Ayzv}is z|8%%Ie%1FmE$NM`i z4Thpd50*Pxd{5|y7buwnawNkso-+(I#-4Ft2HB$(&yBS7fbcvB;BTBg$lpMFpuds! zV1GmHLHJ}TuuKrKO}khoh{&svzzYY~Ga|fR0OpggAoqdwqkEo*QL+~ll%;@VXhMS5C6nRdMoMaLsGO1;!f z@#*b#GneApzg)fCU46WtpMyz!J0;mCL)Gk)rX2fYD8{oEs^(=5g?QFN)zD?KGf7x6^(S-Od~#(e1RJM7Ps;65Y-mA<^y35fa_bR3OpqOa&6% z&Qu`L?Mwv{-OiYw=yt~ZM7J~MC%T<=aH888+Y{Z+*q-Qi#`Z+FGma;^opC(T?Tq7% zZchk1?~p*WS6(4`xa194-Eg_}GJbC-2V&dpi_~64A+#4!$eevGWRAa=^6b!{Z6wMZ zph;volg&h&12c(qr|~PQ{`2eW^Ztt#J$FyubVUL?d06Ns!XCJp5%yf$$Ak>;&mXkP zxO@C`+`3Le)`xuS)$#i7ZbQRgulFoR9&g6p?{;sy@t}3h)Ah;i+n2*(ubcg0Zt(Y; z52D@Qe|h-s;qY+%{Pnx%@A?1T<@;BSQhMRlJs0D(568#nm%GQ;TiN9L;raGSa%_y- z?f&hrFL$qpn>X>E-(HXWbA5Yz|91R5irdzF`Y_xk~HVx5A4x%@AC@OA&i2ETNK_$AldKl!l4@AIk?;_GScZ3#d|2+Kobo+X^ zzZXtoZ^Vh565kbatdbw(GPyqs) z>%)sx;If`SzKou5e104yKY!gGyn6X`9Ae4G_2T^WA?VespyFCBaa_>;h};1TM~B`! zRPd{QoNI**o=}1cVaMU|bpwE*U5_p!(q{OTr^`Ydo36#Tct>yM9LB=+I$?nZx}f7Rc_ zDg8bg!T$E`@%nc<-nbI3-%HQ`qF!@OMIij=$46fAO+3?SEl0H%0{n7& zqiCm3k5~8O7L^(o6ehPLp1Zx;!NZ-N*o=Jt^zrI`@A?jzK8;%&K%PFs%bxE9yHBr& z+b_c9+h4C<9&fSY?Rf6ti{WOV24mohsv?Vzv2yE>N394C8zQ6njnpIZq`ka7GA4Jk zV>8b7#ECub?++)>91ogBpV0qq%j8B+pKhTHNr#QqEH*(Ynbv3Ek7M*1U3r^l{>nIf zcii8qi>vW4>gd~}pYG?=QRk)=H&?%D2(u~o55E#Lek1AKQ9b4BEP2zC3V#0O`gnG> ze|x#x3XsS4Zm4v;L4EyO6`ed}HJ;pge!AZp!ozrrYj^ShvyL$!oZNdkFs0akzIwd5 zH_nb+qb%N9JHoCPcL6b&A=XQBxqNNKW`_0wXZO4X$8iTOWa<)KHX?~^ZLZkMi<(` zZmys1d2IVaujD)jHf~>^DN|Vb`RPW)_4W03tyXsUG$uEQj~wGw&*16J!`Hp$P%l@X zgk8MT8yo{Kx0awM_?<#;4sVag`>W&Ue|u9eW5;0V|N3KQVB5X{V>pUXwJsQG%Dtsy z3-JfgZ4G9BP{mGZ0gTiH0Q-TDfW&c|b@>*fC|xO$loEY(<}tkfhd0N_cEPV=KV)zf~Nuu?#Ydl%l+|}yA8HKJ?)S8hr=^17Kj>cg}+0O<4#b5spQ@Bm&MW`U%%Yk-QGUEz5FlM0zc6+dimc!{PdSGZT&Es_qhD? z)8nUc@zeNB^tk+4?;IC@QahyA4B}t6Mb`g2K0W?82KH^avHy*+RyDnQ7Pj4}`3WnJ zd~$j)S}_U9^>3P%GJ(FmHTn4T_>s!oUO&DLmHak#hu#J<`+6*^w(H}-BVGTlsI{l< zjpO>{{#)LoXWo4Os1-wg%k}B~mc=`Nx0LFwZ@K1v-hZe2mhH&(?>}I+yW{a$AGP-N z&E2QFS6^SDOLMS6ln}ZGZFiu|wTP zF~D9ARm0PW9L+-tWghwaIG3^8uf&)?`XXwKx8SpkvGfpeGYa>eGY+O*j&_0^5MOds9I%Vb`8UAHIX z;g-A9*JRn`nrxR`E88U%k&j7kS3l23RdUV8O>)ggMsm%^K71|X%f-9>R`%Ccj<1zG zA9>UYw3Xxg`q)Qgm@OeC%HM1;^w|VoYO5yqv^(RsC=1<}N_0&*%5zOIN^{MtlwI3b zDOuk?BbV5hr1bhyT9jYd#VJ)S<*BR4Gwl0HRZEHLF!BxizEagvrn-&%!oE)`Vy;OE z%r&WbzLpl{7v7%7i>rt*6LJx1%fy6ygmMj=kdsgmVJ1}HmZ8wF?Jh5h6uc)-@R~@$ zTOx&AjoLQZek)gF5ku}pHL2~s+>6BxxfkWObXoFoPWVvCYE{w*8nSm=GfgW487>F6ACm;~aGQ_>a&eoG z1oCm4=<_PQpwnmjTvi6!RdK2yRfH-W6oU#tMV~@Xai^eD z#3|eqYuFU7-Y1?!E7}j<)H9+}qqK<-(R-n$KvS40$P{AQ4GS*?mm*7HrI=DcDVh{Y ziX#P)B1qw**fD`)qQ-=bi5FvkwIk(3iHQ*tAtpXdbePyMkzwM(2`ZdGLKJ)g1``P; z3``7|05E(1?E3BZv(wKWKfC+v>$9WJUOv0{?AEi7%^otFk>V}gY7|1*tF$E2s~v?D7BquiF! zzO0@4aNC>D+MN}JP;Sd;kJkQexh9Vz!(k2$!XjO?w)9Mk83-VvINBfqa>G>J#K*D^X>5U?F?%jmdGoOZa? zRr@*FMdo&xCa);>s;e#~NGA%ny6Rv}7LmE_=j0FNUhC0*PTEkotw;Mg*+SvA9_{BO z37Ok|PI^%8wH_U~$qEX$_2}45GElg!NBcQBK<0J;C;KP&T91z3B>jZjdbFRD>tk;F zIaxlr*Lt*{liU+->(PErPEWY4NBcRcJm$8alf;vItw;MgxjW&u9_{C(?1Yc@Ho4b&w4ak<6K?C#eokUdxUEO~Ir%i^wx5$plY6a4`#A|T;kF*_=j6?p+kQ^Q zOzyQF?dK%Qgxh+wpOYUGZtKy0PFjq)?dPPyk5B)XW}^*l)~xz{qfj_12h;kJy<+xeoCx$WnC z%_;XYlYu;gCr(ea!U48m(TL?yq9oWkB;YjDkOUReT2?*Pp=SK_ICeeoPXy*J{E;a>vFI7LwgzLK4jGD+y)~mINKFHUA;Q z!@rRPvnxx2*_$Q7Nrx5@D+nezN@06}kdg!s6Oy2VxU9y33g$?Hc5zva==4BVBj3UtNl@sJ)yTInM-mh~WHpj2%#j2|3|Z~6h#{+y z^sqf9tC93zLJ|})WHpi=%#j4e3t5e%2XiDr(Lz?^payd!L9s$sO!vrz;0HZRTkNm!yxjc^im8}y056}MRwtO&iawtS7$x<9u*n+6aBD<10lP4uhp;Xz4 zqAH8*N)An)lq^M4CE1CpEV3)fG=5Tc<)DaAlBI}>W0}Ju!jmk;RHZ|SYI~7gNvg?{ z`uKZcRq02f+ID4EQfu<0J^^23Rep@9$|7tf!NyO@uB6z6(r$Lq6-P8_HsR@W@Wt00 zBoUruDZ=J3iSQ&#F*XNEm?yiEbQ4Ol6lQa*M0k>=K%1i_!joPKwK-lQJn5xin7}@v zLn*?OEXCa%Oc9>+Qrykq6yZrP#a$feqzjp+F_c82P|{0rmoIy9OhtIoOL3Rarf^h6 zc+yL8moI#ATt#@&OL6yHcIC(l^JG^Jtq3Jqin}?uB0R}b+|A(?;YpU_ZVs>rPqK8z znnNtYlPtyE9Asgh##4^62qnD~cXOOYc+yL8H%D58C%qJRbF4*p(o1nSM_ZUD+~shK zP?Dv%n*%PwlU|CuIpiWd>7}@vgD%38UW&Up>>@nrrMQ~|FU*r&Ir1Wu^itf-u@~V< zFU8#)eG#6*Y>K-%{vtdD+Z15BRnFY+NU+1a%e_)(o1nS2WNyQy%cwIct&{AOK~>`Xl%S3 zp%F@YDemSNjqnJ_iYz%wBRuJ)xSQiN!joQ#yE#(BJmD^fYJ`$rin}>jBRuJ)xSPW@ z!XrK`SeFAf!joQ#yE$YdJn5yln}asY6Yg@&PkJft=7=8w^H|)?!5-l$?y|=2^2Yi?(+~tUmP()r<7Oi7A<|8~sUlw7}@vLqNilUW&Up2xQ~sD3DOnOK~^HfrLj? zYGlcgAmK?b#oZhW5}x!@+|AJ-<_UK>93+(VQryh}A>m0c#oZhd5*{(K!IvBq5}x!@ z+|6Mj;YlyW-5eNVo^Y2VLqbU}#oZhm5}x!@+|AJ;;YlyW-5ehhp7c`O%@HEz33oX} zB$Q++?&cto@T8aGZVnR(PkJft=0K6~q?h7u4iyPcdMWPaU=j0#yBsYNN_r{o=6I3t zq?h7uju;6~dMWPan33?Lm*Q@Y8Zl3}%V8s-BujBO2abd%y%cwI=ty|dOK~>`kAx?^ z6nAs@NO;mqaW@B$m?zxj2$E3JOK~^Hkc20_6nAqJNqB4}6nHt!TVz&9J&+_1v$IiO zLk}e}SH=~$5(#}p2J(6|NgifkQZ4lA*Yaw_p{vQTok*VUUNOU#q8 z`9fJJ`P}P#$iXGy$?IM)&fz8D$@5?5Lk=(rPqNhckV8y1UXC#dC0Xk9%~2-dX#=26 z-yCNWp0)t$e8`a|;Ylxb`sP@Z@T8YIeRH&lc``7En}m{H>h#S4C*esib^7Lzlkj5O z9CVWVvFhCOn>&6d`+c?Hv>)G=^IK}SX)_K#3Abf*(402nV{(43w&5U@+-n)r9vv7@ z?9c)6ME@NKPxRga@I>Do_)hdZb=<-3M7JH}_*R@HZJVF_jB}H5?l8{n#ksdQHx}ov z;@ncyHbaa@r)}G#%eLBd*tR^n>#RIPbWB&R3V@HcI>4if06N;{1URB90y0!5W2?4p zPG}=ufMIOac32nIC=fl?6x4`Hs}|CTY6*yf8!I2_{P4|J1bWEIrg!0xo({qYhP2m` z+G_3~syq~iD=Y8)kG@B+9k;T*T1cf=r}3(_i%R9x;`Oo^Uze>J_fxS^V(P`)Iz!N9 zUaVOB2#mblX5hyi{rPb>8IYu7KZ11VN3GpqK&u`2QEK-W&{>E5VPB00)+aJ_*dO+t z+Y3n1VSm`S!~U@E++IMC4*SEtb9(_%I_wYob$emhufzVZU$++oK}t~wGU)PDmiBbI4O>X&Axrx`-9{gw3=dhR!x~v;cN?#Q@3v(q=MY8)T(o3d9am zxJWf|S@siIslZ|mnDN7a@k|kseIY9q10~1I5fyy(VgrE$O)fKorGfT+36IrQ1W)7cmxj^$wG$ArWWTgU}*>%dpNL6%ZSQS~R zz-JDk@xuW0OhaLC6Ly&IDx&we8*{<*nT69MZ^A{YqI!?L2^Xn~ z>pl7=T%;rXTwzGp35?vMB8J9(-5B7kZJWRVPw)c>naA{Y?_8ydDF4)e2^C7Wd zv7PZ*!%U?bbM2`duw66N{#LruWU-{A(tNF?bfqa%Nl7JWC@Ed3Plg;*?rG35=k7?( zI4!Bt_!+15+w>I1X_2iF*se)I-;7k9XfRHTO#khPIo8IQd$&z8PV3=RPOj99L-cVwPKnaM^> zMA$ppc(hf{*D-}G^+(fE**h{1S&E0WQ_k5j4_Rh|K$h7akYzRpWa-3{=?5q7Y;U23 zvU_6+S=wG{pPaj69SFZ?Tlok0$Q8DBwsS;9bltnpRTvJSY z3#GKT=u*Fk_pD#f+s@?4$vXe(136pA6+q7RDdg-r89C>I8Y0z1&Q6k$vr{DG>~a>v zbb5qc=7bKr%=z4qA-V$Z-_P0HkRsXw?Psde=sR;NHw0-9oH<6k{S+N$rV;NxMF$Sc z+004}Ptk$n*f$O}JVl3@XQUd=R3pYTHY~Oufetg}h#InCVVb8jB9 z6e~an4zSsHEJ)^N1n9uI_U0i==MkX8+=Reo#IZGg5?Ln3AWP>ExQylo1PhUqO$cP^ z@{eW6+<0IWGLxBDgv@Lv)*v&Ti6zL)XToJP6Pj3n%#0@1A2X#1m(k2=V)ZeTnpk|y ztR~hTGp&iG$INSDi8#9rK<;KipVzn_7mRM}eyd>5dGk=Mt#!O&hr7@G1SZK_wCDs`;ZHZ;Z z%ud2(G?S2oi1LdDr*Ij~EEilxGs^{+(adteWi+!~a2d@k7nT<@%LSLw%yPkHG_zcA z8OGhRbLsMh%zIOpW5ZN%BTlDj;~KM`?-;86?nj6*Ap+xQu3!lzj2x z7VL)0XeLTAvzJN(9L(%RW>&+@USyzynZ3y1Ez@z46%sT)$roa>c9Jl}vf?CTi0Rr) z(UJ!UvIS{6E^-!xRGp%;q7a!m2rCMa)y7HEknVT-jx?RVBTGkcBg%9PU?1;uo|K`EV4P~XldsBdQ!qrRO|jQVy?F&bu<9IPEq@@^!?N#2d* zIL*6(YNM1SCwVs#1>4A!OXj1cEEu*+gq3&%)A?B2ON519iWyU^}9BxjR>b~m$KXm>Ne1vs3! tFZ8pShXWYuxSYHNNjl#G3TGA&NO+nB1Qjcdb~hn)Cd>>O*Z;!*{y#DDydnSq diff --git a/test_cases_bc/crux-bc/dc.bc b/test_cases_bc/crux-bc/dc.bc deleted file mode 100644 index b2388a89c807f91f4383e01f8fa8cef4c40fcd1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113228 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 diff --git a/test_cases_bc/crux-bc/htop.bc b/test_cases_bc/crux-bc/htop.bc deleted file mode 100644 index 80a22b4806bf04c5c5357879f582325013559d1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 501996 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

    Rr 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≧1SsJ#X9 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 z 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
    Gq4T@KM(@a;;lfE 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

    GY3qm~pn`O>_-1*Xgnz76GWU&9q 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

    SB}cXk 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 z zMjj&GsIbWBN39iR&|Sxk_R%T0h0v?`{U`mFzQdjpd$l}kG8^JRVmdMMic3)u2o>R} zc$-MKiwp{?DxE=|){miEclKUQhyv*3K2X#+f#rt6uPx|MZC4Iskw*M6WuJOVFc_|X@*Uc17k)2}tD1JCyG(_#I zSjpx|ILGXBqh^5-vvCt!uZF z;=_t~?m6LRdz9omVG?ezz4VD((EC*j{S2{-*-n*A}8 z&5%33pFqNYpJrb6vDqQ!81@3yEp;(ec9XR}pIUD)tk_ra9l8j*o-nFWFg#q>|;`#*&l4w>J_9He%jue^mM6w z`@kYYx9)7TE{3VfRIEd#4V0l(pX?)E(2shcx=%g0V7Qdlzo_}#yPH`kb7$?L{T%W_`&v1WalACn8}uKSl{zV-rVoc!zg(he;yl=6 zqaL`Y6VrHW4wtxTwo&s3|5Z%0J4ZMgz`6Jf%Q{{BtDLTiJW_z9d3U_^iJDuZ_i?4^ z+S*19;h0Q(Votcf&x~IGM9r@oKxDe7l~1otsa?I5`Sp%A7x2*fH!K)X8P&wv5)YOa z;w|0DWx85i(KK@{ijT_Yus&@so;c$~2Lpa(l;#QlWz1Q3I_KYJi2;Rxd2_*yx*+@0 zlaT9oboUl+w0Ab!9^l5fv0Z=Ga|~k9hv&iePW-2{VMnOdCt3=*#+Eeb_@v+(o6+-8 ztMKugvaZ<>Yj+3H@&5zM@!JRSPuQiM!4O8z@8{;3gOD9hTWWr}bJ&*3u0Hff^fy81 zY_&;i`&XAo;j?I!JCYsDj_uycwfLy^+)zK1!L&P4CAHlAfEbtVzW#!n-qyUWSL{$- zu{eGJ7hfJ7h5Fzg<4gVR>VyMR8o&}%Tk`YOKDfj)*j{!Sw*8dGju&?HP3&wAUR*I! z*?BJU&(w0bm%8t(WRogA-~OiY)=<9C^qd^7WhJ$T__1s$9LLfXMkUTQWgxHTSHj!2p7Z$V+Y2J3NtN#bbF2@qN;SqDrJ-r@So#vb|4U%bj zeZ;QPO`z48%-*vm!I|st=TTcdNP_2DsByIqH(5C3) zJ+m(9xh&T9At%ve%gY{--6QY2@vHYT z=O^FMnH_VNC-gd##N#t`X@T=mV6M4+6Kkrvc1AKS@0959astQQ$RB^5x->fGu-h-_ zAh|>ScC*k|A3e%g?#naf)@bv^i~9MWQ0%j$(k8uzi6!Qfnf%a_?_C-RrsxsWkpaYY*~QWaWNm?jgJ05O^WgCzIrE2Y=}sLw=iD z6$R=%e?t^&ImpFkXYkvv=JYkb2@OE0E0Sv_`MU?z`H`c!U=%Mhj{$R(p$K}9c4>MF z=?Z`M?WZ>EkzI~xtmXVj^J@nG)s?OFBKk*O)GM!Or?M&Zysv4iB9&bGl4ohFd&L)q ztSec`_4r3kJ4e)TX_tLIsg^04w|u~9+cx!wpG6Lg4&e{YByz!DpNG1NRlB;IImx6( zdtJLZPPRF?RNb^`RTwV7PozvBn2p~(#1j~H2WE>vpCj_0ejB~-QUCkDz&A=L z@Zl_Q6A2WHdjadh&@zJlOMrF3^Ia+4WZeeiucu#Zxvvv%{83GdWVmT4DmegsIH->R z>~pK|^{@d7)-O+Xom{u~1YBLpSbYGeGXaNB0E%D^+VybIo+CXnyNnA6aQs?^yifkO zAm{bu)gdwzodBY%6&TjOqk&&bcVHjJ8L zK<#(89HTUTIxe;RzdZN)JOvE3DV>RZeFctmod0sJKz=`!MWmTlb z$g2AD&$-Xrp^z2Gfy&g zep5?iN6S2z%#K4biyLMpgF`g?pn!I7#yA#^Ih+`DyS@GwEzg1SVPVe0O=zv>x zy+@C0ldxF$k`Fzky((Am#SPnsP9->tp1R;D@5?;M)ixt^1?S3~!8zS;l0$#mglrz- z=gkm*Txe(ep(^Z&{vI`{<5G7L)))=MPozvB(BgLw@f0TWmwW}kopFIcvY#V z4f7V)i{L)0lvW!Ek3`g!c!>Y2gnUYHbw6@~tiV^soX$teKBaZJH_||4 zUdqZht*b;=pJcNPXI`BC+&FZsiqh@c4Dq+#gVY{x|IM8KHdu!I52-x}gENRQ z_^wQ*>Zfu=ywJb&pf9}gKGpzeVJyV>^%XICtfoLDQaX^@XM~hJ$(N9)xTbC_i7$}q z?_Oa3MC%`cw0*$H_a$_YZCfc7YylDsNn_n90+4Y5IUx3_213Dn%-`W)`aUaj=@+H>0Sp-iF_#(OK5Ca+inU1qVt&C>AK19?oJF@g zED?VKir_A(84!KT^+{a4C?1K2=kx3yAGMqt%JVbb{Eb*;rtUbxM;KOuii3)uTp&!( zhdb@_h-ft4{^SOt8qwKCGK}aM0Pn!Mkx*};4 zbE!BpuaQi=MW9${k~T9rQZ15-VrQrFSn~z_Hy9sCU%y{M=mH0{p+LV!>~^b!hDf?7 zOY-wHkVca72zI}#kKyih`vu>U$*|8Yh(poQe=wbSV^?wEeV%+#A2UwPzi5pkX#wgR zU1#xVny=CyzftKebi5otkuvbv<983fh9`{^^bpG#z{h{ZP4qhGKYvrOmJi*R?k6{j zWIHrJ`6ge^cskgWva6CvwUkRk7%iewV%DD!;^u_-zzz!n3D@%ETmtQ5VN;zRBTa%h&DP6C(PWVOt|2llY3f{yizoretx9Y8L3ta#WkatsU|W+}cS& z-#n96S;BJLF;5{heTyd4m=sZ4) zs9yX@`n%kJ-wfme{C&6pe=@PGwBB7c zw4v)k*ZC^C=Ip$6BM((Q4Xxgzlh^^44s^H**&zo0HGTOtG>DzVfi7W)X>M0K*ID!S z(0|mt{rRG~V!=0DIn5x8x8i7AzAo8pwD*9^RK1ioB>Y6m1OhS`dWg?=S^@vwdGtF_ zSM}z)Zu&}NdsukOk*qSQgw{}nQm_Dq)5?^mKb8N3T4eq*siH92P7zwo%JhZILdITz z?B3};R4$6r+@unfl|V8O?p)4s_P#;7v17V1InK632m<#+!Y9~ZPj1)<@x9ZL%19yP zfn-iOiOf5how6`Gc6z8CBg!m{R?Q0ap^q10E2MBFRw(GEbY!<{j$pTm}9Y#@#-a;xxigV<7<1z#Hw?*O5|Ud=3ts56r}*^e?(HX7BNJOQR3C znLmAP6~d}}9k>X>KWqPKns1@Z*Ddd?rQG0JnlH^9*_UjQ-??k@!hS&7DUujo_vGLo zrzrOOq8I0(s2McO&$aX;Xx%bFE%Z9acA$^<-UQYFfT6c*aX!=UE(?b)_pfyHF^D|k zW?(S8eaL41)xg7A2UiMeXfps9!R{z0QUOCx(x2&^%yS48x}Ep+IJcs{ooSTN!&Snu zKZ&Oi%8`?oMfm-nyh|pqV>)a4^(C~&zW=Vt!`C!{pj@B`DFg+|7Pf(0CK!tFyO_3V zOEH1aqVG`+C(z3bkoqDm@U+}6GIAp~=_r|d(mY98ZKY77I@3|A(L)FUB8*JlPIRG& zntsXdf#O)l&$)t9^-%>xZOU%3vzf+nJ%z^5Y*MKpl2L+TpEsl63FNN0!-77cfG_j2 z62_yQAwvx~W{mGpmjrVOED*By>4=8RG>+eJ=J!>lf^86zZl2?Aa8-3CVS`*}f2@-U zVBs(jdQix=5b^op)@Ni2gnn!OAY?OA z4yh2=ri<2rQ+>Llq4F=+9scIwE4Pta9PnpJ%L5f2H)O)h5Sg_i z=^A5kTA~Q5mi+n;|Kkv%uvUD$^+VxS%gm4sh6h3wahaAXnIswiB22BU6_LhL3qy%y z+7+R-Vx%!1&-M{Z{O0W1YoW>@rKf1YfP6E}4_( z`xIZ<9+j5LX30~PdA`z=#p_&+=n-$rl0IJl|M$0E_B!)BI`cRj{c+UUQa;Jw{6*nU#Mxbu z2`n-W`oXZoW=&E`L2db5Ge-p5JC*NN<9URjtIuK^JyqupH0a$8%Rw;%*XwG_!;!KK z>H@(|2Cj5swzJVt*v^buk79!x=~mgYf&XE=hfrY4)Cos9AZfnD<;avvW#`52c(L+2mmYMN>}}L>fXtr1aQsWxykxSK@|A z(-cP(6{YG!hE(iuwwywXU(QApe~F^bm-q@#yG@L^Y-KJ+kma1)OV2<{W>!eVDcOP~&}8(1DxFLG0pfwf)rc_G8n&4Ykd9p{m*Cs} z_*S+I!7O3AV!z>8oa-WIXV;c@1Ea1hIS8`fsh4ig6Wl>o(+0Cp-*jvMG&<2a^#fLM zcO5WfB|*@?$1D?NLJP*;pc~Rp5#~fe6+ym1-)Kn$oi2@B?NU@ttb43H2(s=6$JV9y zwN1ubZse))7D`Yo?}rvAV%(~G$gpry{S|^#Fh?O$TV?10d)8nid642u8|mCzi4d~+ z1yn7GFO}DSTvlLcy4cS4$XYc5ejkuTDU3dnRwMR~L6hDRHBUyiCCbad{WMeLj>+~H z?Ki-2(G{U;cNyS>7zfo6aEZ}4s5Hslyv2+3IKnuyk6mzZt$bf>pm0Hi)1Vtz5k5s9 z4SF5ilTttZ??Qz^N56L8v&OGNe|Z@2$J)g`lK~2Fh?U%(Wfwz64uX|H0#r}pT2ouT z#>^UJOB5}NbbHZh^18?^0_3u9SSw188FsK%RNtpoe8!+QeGV&KCmuK2-(!H(Ja#nA zZt`FxutiG(=AZ{gUfC%q?`4tUB9J|zh`T`rB~$$A7ZF1h(Bnqa6nFy^aVt43NtkFx zgPVsi_(^fBB8o-T|DdQkt<(&RhbNL}Q)Y@rs}Vg93EiM@L-`c7Tr#3-4NZ`vv|`ds z@?nG+uabt$sdjaBT`Ckqkk3eRxIofO9@V9L_SeQGvjI7vror6Hta z0fWShm9E2z>ArY)fXuFPr9gzWI|pm`uJq~Y2nhdLsVT4x4j~ArH+gh5A|26iTytY3 zEs*$nW8o$v3xky2wzR-pGbsl9w`x)ft>vNsek}`3Pm0$-C*W6+ubMR|DaOo)HK;y| z8dT0;C{vu);UOJneQdFmOM4#1TOnn3F?-H4DXWZulqE5uxCqlj((F&zysGXeZ)fv* zc&akpKKZ##xh%zU-f4NIndOL7U@E;?#^Lk<@33b&AuNw)#>L1lvu9@iNYDJ7Bv)nn zEg@ZwNB%}UZAInINkglwj+CQJwEe>2Qo(H$1Mco4Zgbgx3d|UQP&KU(?FU57nkUOF*ENU_eI~E zaU|jHM6WgwW?lp^a4wXSX+io zaoGb~(I>d1!d4Q1#uUeqjHhlO8J9Jckc^)xH4~na2=?3iJd$Y5 zJ|DqBX04uSl<*g-{&(awEx=zRx(QGGg5G*|XURdE zNk>;DJ!E$z&#;}s?nq*HTwr%Ri|r=7ZNg+ZZ+KBL^6(o(@wUjrFJkDLhr+%{`&=O# z+bby|qLJ;RYpg)9pCbJ`88GC-24lr1#m$QEL<0GAAy7Vc2L;Iyu@1=>&9J?z8)Gu?fmF>n~_Y_EOBDaCZxV@5AVGpuTp4=VRB=!44E}OY0GQzc;**rrU zBy&xeHMY>?&&V9XzzZL;@i#J+e>JpIz!7nyZb-zh%_0zF%_hiBXNQ+U>h%4 z37C&X+4rPnk9U79&He#eHf}9xSxGECT`YH5kW;muwt$Y#b+6m(Vz7BS?8OSy0GD_!vKW>ruyZXuEl|mR{$xsR#Hhu-)8c+fB$0 z+HO`PPfMfi=E5X?yE)$Dqm^FovAc{wtdCNzkO z!6o8Ao`KgnEuui3ZwPw+iO?3d_$=ui4D>>QjIs5}4@Y&46SED%54g!0Yg|BlrR33M={R~4?ZTP!|AhpBjt@ZPA1X(F}n3ZC?$};3WS`t#mtdtUJ zN&WD}G1QXECVfldMoyI3!bBK3Q8jFuH)~MUSyi$DK(w$SHlf3C{>>r}X|aoHnzO-d+HMy|7>kuXsdVJt@58 z``0K$hsFpzu&j$u{F5voBWmP%io+=8=cqj{#4sSYHzsrXbv+56T>aF7MqN{w2{Ov=@<-}bIxU-hWyEFrr3Xc`*b5)IJN>dljsep zUb%O~0K{=D?(D=Cd&+^f*lT03)p<)CM{Nh@a7ldtP@48P-VsRGICP@ob@IFiQnaLm zT4E4&BS7&OEm3!8ExAiA5ou&P){=I8OYUNjmQ-0iI_I1e9n!+aDyI*v81J|NvZul> zR>^6x*a1cN?GD$Oj5J^2SC=_6?Y?XyWZ8RhqCmFb9mYhceh9%-e}KY`RE|>al-ji> z(#c*fdqq?D)V|&_`ybNeKeII$)FMeR`i8)u4i>YiZS#sSnKeQ6&$HdU`r!GUFo4~fFs8xw#_b*S_cNdJ<*HA#nO zLx&z$lMa0*cMv|2S{N9t>O&So(;m{Hzoo3nARW48GOt4w4kyLWX+5s+W9#w819cX^ z9@k+#+KOmB?i)q#jIW=78K{#wAkS9Hmf0Gg>ISyVHWR;3Q-z$%Dqna_J>C!FQ-|?E z$2PPrg}p2n1R4!^gsPH$%&dxV{IUY}L9ytIYcOgO`_K}R?ZdHs16v|aKR<9_OXO(- zmWXg@H%x7|Lw_r5H}3ZmTIR*_+QwG!RIGRmwg7`}N$+>tKZ=ggvKeHd&ss(ndcS9zR1d+*1s~G3K5brV@T)9Qluo6i zTcmFrci*ILN7#L8PrC0DcAtZAv+6JIzT7_k-nj3&Ngsvjq;xfonWIM)|3=5mI#t~v zGU-bf6I^X>J8_@IGM6sr&;&2=eyq z_Yn6}`6+TzVwl>0dYO*OCz-TPy67lNfJPCdMvP6z;O}OKt<)b)v5C0t$zi%C!X^DL zrfXt%k*$E@R}V~x@A zKd9qI9`9{dO+&B&L5U8?vLpwx3{KaFglf5-8fwbezV;0j3x2&pM?1;Q2UsXK_6LdX zd`kx_#f(L;%m*#8!a^N4eg>whbddE_f%MC7EhTSoMVK6c&Xr45phP-?`OpR0v zzf4nl84BKu6cdp#8v1A&vQegbY%mXyUdM9{eet-l6hu|#N@uZT`p~{erY{Tn%Mp?p z_ep_7br+4sIqX&+-xX@X2+VQ^p7CfpS>2`6N!!P5_AzNX8X&Wtfxj8a1JPNZFE*=w z`$X*fk*DaC0xY@@k1)8z=9!?!Jz2gUTJ)%Am0Oj`PI2n=xJ_nr*JD8P!I^vO6V!T{ zYl?>EeMq9T%y+G)NM6XYI+Jh^yYaeuq6?6^?_+mL}Te68;)2JYdUqqrsz7|6r%wS#-(`xyJ8C zzFr+8kJWM-$rtXy`&lFAGG0<*n zbbWPr#2D2R%x@8c5AFB;(~$h?*r&H2r5+q89}0%3Z>8&niommai{I&7mvzHg{E4Pm z{joz2TV=1m=IYvUlUX-*W@O!bC^^Thn=HL`1A3g}L-WF!*_6?YSGRGmcEdhjIgjbZ z!@nzz8IbRJ$x1pa1*OA2iQPKGL~@>TfMp)@*;SRlN8l>5&il(q?xtTryP!kWHDz;{ zX4=q9`_N9(OoCx2tg^SGAfuh~@OgGsU5#+AG2+e8846l&N2S}DeAOQ^ILqWKu9oC0 zq%Y(va{7XSGOvA+**iE5_MIOtVS!N<*_N~9KKmjUWSdlf&A!h5F6Afv*HZd=$H2o| zXNtmh3@pX3*>WEP)e6|r3m~YzS762lB$>bQAG5<4z8Y zllCVzfc6uGOfbcF*ob_VkLHwisBKzw0*p@@Uv zueoaf>@py-YHiW48ep&=jf!gXOhbvZA99Cg$|oyJG{1eGVr>=?I66Ta2t4YEz{&&% zzMjEc`yZ;N_*fcDq6qni+*`ABGrnRl^AkF%@(b3Nloq2nfWJ347xcYPFBlzD!;&y8 zYwWCg-YAZ)^a=#?N~*44Dffh3jfDrzvmAU37B;-uVeD}$$vJg|56aNK{MnJED%8AQ z%3+}%740C_rfCbE{X&EH*SS%1@71&q>tVghxyRV)85j+9>zgF*;-*u|OX6D}8}m5L zgU(Y!FSzy%_>5ZCddjl_Eqff7xcp*$2S88-37SJ7ld=@Lrf;TdJAP5Mw&)c)bFwzw zMGq+i0b=0P6^`79zDk&XxieQIvfcYUBD`lC)7bNMZ6o`nG?<~@*B?|sIA4Q~Kk`oe zQItvb(eU@Cu?cIqH@E9EA}qAI$A}b%2wHb8Q@K&yAiFG$@fOye%$gZ?+4QL*NOOp5 zS&eq#T;xPdy|*^8R;1@s-H}&yT$(xgp;M`A$5rbmdGT}DD}npI?U|4y1|IBNB;r=ztV7CdL` zZO^De_JC+zdkp(_O?-h6@(O^y&rZ$2%aj+=_;RLZ&t6!Lac*UIe*z9izwsK_WoD~F4z1*U+$6`ZzMUtk&&=@#< zz%}X%5>|4pF1W7^VsBY_&mo>`*{P!rJ@o_jc|rx>y^f&W>v^2JHvJHLU}Q_-GahHI zDH?L!PJsbVI4DFz{N3-4iGL#8z}4K&uFe0bp%2!>nO)(T+%x7hpXZ;^+A&h!D4)bc zu2EiBH3KqH(0gZ1&f1ExmU5ZZLyyx(9X>1N@bw3-_5oaTIIIXNls@GJif-0G!Bgp)x22u0maJZjLXvZX3dl&7Ru!U-=YC>tNEY42;q-V|HYVZ!ACG_+grA9Qm4cc)zV%(sTqmsx{X z#^PmiQ12ZOkccg+%gLl04V*x+5nQ~Lz)ShsYpTeRmnv)y)%LDw(6a7Z6 z8nI8mjy}}i^kNj>_}bU+arzC)F0J|bCgu7bFHq;B$jD(1G#Z)ZXd#b zDBQ%irumHv|ED68>onodqjHyH!YeX$(*tS3wJ!&nGR2$S@?wY)H+y$Isv1=^e z`4D1fzP3c4(701`o`xRka(V43)ISGfc9D{0WUWrD*RSKB96sXaLKhX5PZBn_!D|jp ze51~jYf(!_FJnF1&UpS$uPw}2V~#iEe{snX@MjeDY=;{V^=FjPt;R+!owf2--3y<{ zv}UL_{KKxqmpV{6yIu`);L|FP)-GI6>fo_g%-`*EqUM91yzri;EhvRA6f*kk?uEQuCD^xi{dum#BL2_EG)pdHj+WK7ujJ>x z;mqw@c7X%#<|m|xCUUsoV>N~SkP`yc6Wm&BFL3Fk4~o0I`$tY`tUZ>SZ$5eK)D@d~ z>3oym_64{6kz-?cU80Mh#5M4Fux2?YAghCO+dJE|CLzq7`}4|h2R_-cq$OYuOWL`# zvteNrm%cN%(I%mD2iT=s7>$|9)^?mSW=k@=w&2Yz5|+ZF+Fp5`d2w~CW42Kve4<~t z)1E#})Bd}D{|?c-JmE@vIb{7-YuaeY^JYzYFJ4R<+76I<0^a%2is)xv(95HOwV!i? zcPcYCHWMi8_?j6G-0(!VtO~-uJ-_DpR(>>_Ut5|v1HcS19Fq{{ok?{YTNch<4s`8Z zUG#PzJaEj;+~0wJ_MPi+K)>=IjZ19d=kv3p+C?g+G%xRLToug?LPFzeK66ob#_}q} zxT$2*L+IbfD-#a$%Ii$jFP=u%CEj!GKc_`=uhuA-T2}i!)0kkTpi0R@+kJzZZ!Mw5 zJj#nd$?f{sf`5MoqB_`~+ru|n_HettW3NN#k7eqIDz`834+Wjdn znm=fdai7NA3o9TY{i?S3mn+r^_eW>$T_>6%tT4~STt|y3&MNuM7x6lN#9l<%I|Z}k zt+i2MgSc-;#XRFxc}dg(AEwkF=O-AQXM3iN^VG3mCO;Pit&**2H(>zE*nhZzeDqoL z9Z#faUOK87?8MFTF5Rs;xHPu;^sm&Mrovxu(O6uMs@>+ISA%1I3QypsEhtNKUOytO zy5C7HLz*79MgPFJqdh9g-JD;@w+pU4WUBE;&6yoEv2CZ7_c5`L#zv)gU36yU6?28V zT>_-3dvNVRt}xcbqq&30UJhwKWqAumV_i}71$RSCVnQ)*QLl{;PvqOQOLK7eR2U8q z7S4e&8r%5lJx|`84QYAvvtGr#iE449B0@1YJ)nVBY8{Sq6Y?rPT>mLEcL;lF%X2w5 zq1i2k%7?T9#{}80VXCDyPtMx&S(M5PGaMJMSwpMla>Jm-kjRwUm!4*%CCiT07>%1M zxLm3Y;Qn6nKtsM1M&wD=N|CF>(3z zdDJye(i1Bh+W|A5W6=Eu5K_o4n%(YOZeR*z4`-{OY$ z@#oQBd()IBhW*90;7s)QY<9E426rP>@x(K#++#hnkVj(Y32w{G9zq&UEJ94;}A~)i!El*oi8IM@r^ZmUnwybL&%D zEv>roMqGaEy;ad!-Xx@3T1tcsH0`fS!p^b`n#Nlw+!s9c<{85pg;h`32QRM4Ux;Ku z2ba(zbj3k;AocaSgl&AAbw|VZbxOpj#IS-Yz{Go4mb{0tQUZ2vb@4=abOx|c+U83cmu(M?~j<&F6&h6f- zLRFBBP!G)qx$8fV&(lk(RvX4n$E&X7KC7BctD@){5vYa!U~WJFeM%o%u};LPrBl0* znw1oo=w}BG0_sC?RE3+L=cs~l-2W0z>5qD zx$XVkCwK|TYSuaN($@O=1=qgTGf|iLOuKYOrjZgG0-b!h!3*x3zyqztLmpyL zHI0jI@qp!2P_lbDXBfxL)tc&+?KmX7rT^-0dd++=8B#ctZ_*Twze8t~j-w7AL%om} z>u5{B2e6SMwE0_Wm~x$0TO3s55jem+6|RnHy4UgS$PrQdYMl`?VlmmPn)9C2V8g4^ zMW5ySwe46q$8(Vxq)peqPJ8Ak|4hv(;Vrr$F6yZVvxn-u66dkasm?3mj4*>L(9}Mk zW6TaUs+Q;9cD<|R)lwHwZooCMDn4u+w*j|Dg@4Mo|8k?zT>bc5D``0Q0Wy=76C$}ILP6ASGE`_m>}s$Hy*@%_UHT&`LS30N8F3s z<9A0Z@ZxLcaY4C5gZ0O#wfDkNC+_bR(#xl~p>I4L$p&w2^fo#YbllS(5cJ1}+q5G7 zC)zLI4tg~wJPLilO%}o0b3xcaBWhmm;WGE@I^xs$%U(o>&F4n2U~c$q_UeLQhghx= zMLRW3Fy2#wTMxbi4K=mq`9LE@C)r75P)pAG&Vf#-Ie(CyZ09%Xp791;{mSSwKKe7_ zlfw8_-29G-+QAvab!VdYd!qfTKG4LIsg_*R){{F&skDW^*J59-_lVv{J&eoJ{6Q_5 z+Ys$4DXcSnhEe4;pX|xuT1!3S^cV*T=(%%unYEk zGdXTr5mVreCZCSiL{g{bHMTwHX07$qlZ(#Rtt|x&a9!@02g@mWXM-`LCIRota&F9h z?&r2pPvPNXJ=GMSx*`c)P~xNa0X|tBts`@|Ju`Piu)bv0tE1YJTyrarwM?JIN$kDa zb8EOya~lIbVV}%)H4e(ukIc1Qt-3y}X9l}8(?_{OM1G-`zq}m2i%CvqNsCt?4Y#&X z$xgKeS(*jZ?4zwSI4YN&T0TQi z8ik?3%WGcuHSQ$;{f5p@>q~Sw&hus0yE|_-x#ZYgDy-6mZ1|;ycKNU3Ytn~sQn9bL zEl4jFW8?Gmt{k;4?^piPW@FxiGhf&KF>jkUgbwdxsBA(y){Mg9!Gq>no;r z8G(~^9V^+eWw-wJ0W(9rf;BDN0(cn|&UuZoIe2Ah4zdAn(5=*Wc~x{RYhtj&O0K^a z$C_>8IdRKsT)44Q$gVVd59O9mmS%?jQ>!iK&@s5us^b>GT>Dt+NK}i_`y_GAr;oB8 zkBiykX3P>23&x)0ZJaSN-*}s`y>nZzCT$j-E$YT4?B)&SmvbCemvW31s+QtNevBLQ z`)asx*L93!8@|8$jI;(NaN;cp2 z!R(sg+QA%?PPAqzwK=}kYxI01&pm4U*o-4RFY%~QO*2}1lFOs}-7_YQ3*~6q2Xgs} z-yG(JB&)_-UymXs=}I3Pw@JoVw5$0Mz0x>gC@+@{FAs31J9Tqj38MsBn{b4emY302 z=zuXQKGzw|`QUQRBGx>E540w1aef~4llwV}y4b%4aa7QUwfUg5f;)U=RPIOI>Kqfj zm2053c*h-zhmA`7RWH!H9lqn+x~sL8AEvXli}Vd^EO>T@j>$eT8h3j8Jx%+ka89UN zPmiy`ne#?`bS;aTUC}(f%oXxIpe_8E1=Lo?* zCKmA{A0P9OI;Y!}`;x8G=HhGjnMR4$81V_Ja$^}*5O#E9eax{n{~3Q#t1TA@oZsBY zHEWYDXD)T8HUB0Xp}1}=@3}Yf2*c8rf)Bu8RN(cTG6%gJgD?T&Y5_+oV>|bumlqeK3FhnKt_uFB#Mzk}BQ8<+#8RDE|5hWy z#JEP&e=4sVi51^5jNh_NO!$cU48-2_S6n4P-t+pX( zTs3eW7J3}1GVGhbq_Jq4jZ_dtFqWTeL=|gWe0a`>0dY7BAOET-m(%Mp5j!8*$fvQeC)l;o^q1zo^Pu@7D2Vulb+FP6nQy7bAi)-6HU9`3_eDPlq~H6=g{TnvDT^ zOG$vnXvJc{O9cDZ_4Sh7VA+x0GEd-9o?fNQyCqU{!3jbIPpbxi#e!uk7%U??bD7Iy zq`w#wCa*|%^Q}b5EMpq<^Cdhm$Xo426U)fI-g3H=)*>w=H#QM43Cm?^|R0UNi1d3EnxguW%B&BUClK`fW z;Y%fhWC@wmL`2;jJ|(^T*^vQpDFTIPouoM8XAS~SqiCr^-#cqOFt%9@G44?i);`rGsIB%u%R%c zp;#d{13+ZWtU915Y-qHa7Mk2uEx>z~!8GR8EQd2%k%zGLjY)n(R^vh2wWwht1`mrDvlF5fnNBr zDPEY0+{p#VokU&oj%BX%VylSAIkfs8sXFCdtbpHG9;m%^6rOVYc?90ITwB9)QwTU6VvQ^lpza9>wF)Xz?( zAI;9kif68(J*z4CQ$irE!)3k2{z#?7Kq1Ex2^oMhd&@pY!l59wekW3!d>!b|i|Nl` z(U&+NOR3bK5U9_QQ+gAxDw024O2u9t3c86-qdqXiqzB+{QsZT`wg)OT<(QC4aT17* zIJzQN=%OU2%5O&+FZ-lgIK+0P>f*Y-Ro^Z({x$rraA)thZ0-1dk6rf|ul(e(aEa~b z5r+aCQsW*NN6&s;wzIc7q;|Yh_PZD-RTRxhHXH43l7RwQ8@ln1T1H4o>8Hvg#7)t} zR(n8Fs7T;DV5I1G15@8>z~fHZRFV9P?h~1GgtcUlK(@lF^X8CGl}B0q<`_~H0ZEH- z^RTX)3vH0RiJR{YfKHrDxtY}yHvqesOgXoTV}_@o4Kqr064m15w54SxByM&7w8Zx* z-U0FO*LF#5LPL3zK{w%CvpB|B@xoH@yBLex&Sq7es{RXt_XH$ez+1<3z4a%X*X*s& z2M9!F5cXv!DvVM?DLui}biWPs?0U;UhY%^H&1M%U?m)d-mO2QtXJVj=)rwYLWuqd0Y8i&;<8bPbi&QN3_klg!OvcJ2NM2Ym*6=Bs;Smly7PiP?O&JpSk z$Fgj?ptnH!N7sW@g@XI^VAT=;=zHVA^X6mTuhYCoSZ8<&WFEacr_ME|teB?G^|neN z@x(H%JBOA09V0Gw%3dN+IC%!h;uT5>pr)nwMQcgZSKp^($_=7ZMiwd21_Iw>or9j- zVRLIXraF0^;ILPKtkPZ}{W`OAnClAbf1`F;ixsCviuODesHD-I0~_&^p}RTcK#ih9PKo;v6>G_mBJw-1!A~$1{73GH|VherE5<#!bRRD$jA(Z-S*3+jKpm~mnh^#tw zecNf0wvkGin`n=XP$fm0CBK;Js|;uIgZQPTK(gaPr~KTS9lD(4XIZM?aDYIzzkjC$ z#4VTKBMDGpyqqQ=>$&Tz?aL$CS9NQX1c&jJLL+%dP-n~f+RH-3B!>+x4<>IO(1qudk6`ur_$nm^MW`~DcwFhGKaX_EB&7vLUXDN ztu|XqHc=5#rKB23EH)AS)!sr?_Kwbe%5JXPWXtj-QV4u{gpw{(oa=lQE0A>AWRdi} z*)b$t68Tcce&CE3CfOus-B(neF5M^u!qG-0mCo2+Oy(OU)hb<9v>ENcwJwKPsPhD= zvR|or#5|z3F&ZlP$VNgO0@$#9_oIXV4`FWt)zrDY51)hp!2}6{h=OfUYY~EmfQS~a z0V1LW1+^B%0mQLw5UZlKMH4`<6)e`Fdes{1P;DJhnH;E04h69wDkxf^T8HYrYE@9H z^?UYvP6D>~_y1UnmEoM6ci!W(_a2Q2-(u-VQ~k1yT~PQL1ga+pl(9%Qpdan55G+uE zb`S24?rNr9#>29>ehg@SkD~d{u~5+1hGmASh{daQOI^_A;v|#72K)NP2&{HfNMA|! zVq?-mkGHJ=tn}eLl>1yi72yE%Bq3tb?c4UtkI6ph7sYY20oT5SEr`@E6u&AT%XR3h zI1GF&YRga@WXP}R$V5v=M8{<_yQ0)Fh75jxx8cS~AJWKRYg(*Etxq`YPo_+n0QNAK|_-Ii{u;CuYc|0L^;G1AQ6-hr84 zT-t?Ze)}=)*Or-oT5O*A(tb4azb!jwp83b-nQ!WXncvYxI>m&Xd4D1<^%G0)gR5oV zvpJ@W?R|q^vUW?WG4Xu6BX*+QvS4>=_x7=&3}op!B`Oaotj#=oFBXVPLp&_4B&kiYz~qzQ|G(x;?~Sl))-SArF#*}S206! z&el1df)IA}yL}w$i-c;FY?2h?;+eLKyZdGFv2@P~Rvni@(JU96yNkbdL7c*CvxSPAjw>@5-ud}N;GN@MvcSj8#nM^HoU(hd$E>AWUm`YC32F4d zYd|-G&V*tjrBAyg`|}ei{`CuuJJhN`lH*L7D}OQ6952BW8RalFWA@|}7g$rSwKko$ z@^wHCk?_wr<(hXa)Uj!)M@Qh1dw3EN>2(?x&$nIVN`oC3p!!%dNyJhDRL40ySJXV` zw1XChMx}<@0WnQc{?Gbg7kyfiY1%eG;Td>lwlI+uol^p#eaxktEIAI{i$(D$wnpG< z&$^5YDXZRQ&Y8=+Jv-ea+QU(`4R51XSbNs75(5Od)&t#rBf z2Xg_e|CK0c$(z`}AsJTvI`aG1umW)`tN?S9gH>lknS*W!C?e_`o4Se(IUTaijLc+j zJC{PDOthOK&qbrGxmC?QtKW3A z8CjP+`?~AT_nnvNB3{jFJc=}yI=`Tm({lT-eE5PY+CLr=@Z%I6j{%z$I}0G=$m!Q! zMEiC|fzL1fhlHx%=FM31?ypNE1KE|A`WOA9bgppYRygP+Np*kzG?>44sm`@Ea!UOe zk#^eC@JGYa<8S4OssK;(Eur*clZNvCs>DVW^P!(7M^W2z;E;TIP6-R?u;RNJBPru# zOj342(D5Vz`QYq(=V=g@o_Tb@m1+&}zq;-;;-rm{qWIs{ohgOcFhEMcOnslI2 zvVq+J8tZoPvO4uBopd=;ZAaE8^AP+32BNrhY(X6x^wn0I$(ChGcvRHAv2B=(m&~*b zBBT2Lsn)TaqU*oTy>N`bGH7XEp&a#GbvqpX=Y*-aP#rtBeXkZL9`{SrS%1esWU!Zp z?!7jgUy@N<_~HZh`y2PP`^A-k`bzJfMyyhf8 ziyP)I^)W;7yS`%qVFnbtebVmn4MB5^0UO3RMjr^g=%71^z0@?IqW{$e`W^lPEP2eW zqaIbggqi!~;^By|Fb)?HutZ-#>4C@Cf&WLZ?`c9eCZY! zd1I_@tZL;Gt5vi&)*r~ybYK2>2oQk*5oYxHle2ESB5$_8?J4SUwr-A1{O7mH-%RO9 z&fxP;Quy?{S6JUB)qltOwxD?9Q`Wco!=Di1VtripXgZI`{Fm{sc@Yhv=NACyf!)!0 zPVCX_(aP12dsa^gDrCRSpR^@`6K12S|B^8gW+HO(A)65Wt(_D9F_o+Lw%+6)+@jw? zu#I~DSy$a&vVJuF$(Qh+w56OtV-1CO>O8GA!-t%EadMtRCMC(gWjmLaq9ySp_3OR; zvHtdtbm@lh<#p#@>W^!X$FOs*>%M=^#KM(Z9N0`0rVL>VckRd>wj56;ZG6SrzE*Un z-rw9<-Lnhuj}vqxP@nEk>zVQ>d3>Go>0U3xAGv+0Z#@|lius8dRBa?b(CP~e@z8$> za%o^wTz_osL163b>pR2QG#2S|*h8}K7P13HaHHzRKjgd@WcnYPbf-%N7wX~p1JeI7 zeR?{bDw2!Ny8S3`))g#S%zN?|{<3izd4%=X>si5pw8+L=!kb6yCjWD~uQuA~|M6{I z@wFMlS+@r2Hv~i)BhG#4fBfN<p}V!9wTsNeu|R1Xlm^8G2K6C$p`$jBp=^$n!0uS z$l$Yzk?FSr#`Dfc{jIRsgqCkCilpybXY!~SeSOQ6gx5~_t9f-VeQjvpiYC{!^5GzJ z?-vjL*^KR-gz^IXV!el2D>iE4VWa%5M&3<+m(Ao+eZ3#=hkQTse!xV_1n#|da}M3m zl&?R~Hr0W1e%DY9k>V*oQMd243>Ux{`Ad4!0CR5z_-r$WM8u=(Yp(Ac7#bM8&uwP* zZ|zV1i!W2IWsG2heRp%~NxJ8kH@h>si@2A&gGJ+_v;X-fKTV-*_0|0i*OAxAE@b!pLiU zeVuIm-J9sbs>!iCge#lfZe#mC*Z&c)u082~FeET#BV9r985(cNBfdCLTK2VZ5m>OO zM|lSbMRVn8$}ol#K_Jra)VBcrv;JAUBr?CQ$XF*VPe7#Gi-=}jes=7i=2dDe7=KaC z^ZwQPM>B?C(E3LKL(HQoSTc=HYTW&z_v(l!FW9niQREm#;N}Dc?2kQY`B3lglyfIZ(-~E3Nu{e(6sC zIWnHkdBdMe{AuVlt(ko3kmA<&C2i3R`72}pG7sfi-cRO%ChOglkKT|ZL@pt*ZApGPlze7$G^8_{R_3L*f7i5pFkYzu;oEKG6x`0rbG@BNnX zb&ND1A~NNEfu&;s`Yh`9Q~l@WZfDoK#Fh*4Xuw%Fll^PE|4M)TSL_E%`kCW9zO?-E zR*U7i1^QHqxEPSQ)^fEqW48IZh1G7?v7`pN!&D|_`x;&#i|cgIaIFZe=W4)}dgKk53{!umaG zxx^ElD~l3;5inTC^d|xsaOui({ZAT(WV##hu37STiFuu9LNr<}`h}2L3leWqz(fFo zQ0xUM{L&Hqk^YfHS0K$_dbT8~4QevC@rj+8f|ggeW?1^UNWaS5Pkp1y2j;1&O}T&4 za!+95mVh5(q-hM-tQz3V*S|W`oABu!TPg*-x95puO(1u;FtcX#e{ii z=&yfie$?dp8Sk3u&!_q$=9MbGHjD>QUESEv+`apU*IpJ@zqNX!+Vb_$U>^0LzqW2- z=xZFT;OrDpd*Kfv}_rk!XdOEUzlAw@G|` zfnUvgbmX_o{>1A@Il6V^Jr?rvWW0c{a+z#CLjhZ2zZW{W;QEtz{`&oKs?`+CLJ@u+ zzTVq~OWY2ccgocxi5vY{B-E|K(zB?uaPO!O!)u(I^yup+g7zXWZ79?q@mp3B6qI-` zU^u@er)35ZXnNAE_v09v^FWo_f=or|FMU^j_3ljbyZgh;?`|zLzkAd&%I~##d^Im5 zd)hOrXzsk`Lg3OgA%bae;?MmBm{D@fdbJ_C5)__Uo<@q$RlmTAWyFK3#k3T=eF3uPwfnG5Ph? zNuJVp=yif~<*5F0fSK_Ev{L8q7*CnuNwu0@g?bHR3;x5$R~26$VAeS0rB@15CR=t} z*5*c=z;Z#VsZH6qn}T(ct`#Fl4rra^U*6;qN}r~z67ku{KNTi$dh6lwjpozvQ;Cr)xS(DMLhEnUxsH2TI$V;9XvQ1UC*FC#dkB? z4gM4TC4OJG9$i-HuAQb@?%#Dj4La_A;j_y$=!IuD=2HO`>ni1i8>Dr;%@-!yvT;zh zSe^!;UgX_^Njw^F)W%!}(7L)<|C>KzZP!L#%SbeDhhqH?ezs~kx;BF^arJKEo0kRk z+fS14=%ueSNq=u$B=bS$q}Gfn7W2Wpy2AG^TFeIxElWPKm=8`y-d!kQq^{Su8`wMg z^#0U?N%u2x$bf+zb3I@R>t*t_jRkUo?)^$B|Bn{ev!&hNn9tVw{;{<}?XgFh=7a4R z-!Oox05t35>aPE)o+{XIex~#VP`_?Gv$hGc7?%cY*?2IbjH`deIhMrSM`;;;IX;_X z@~6;?=v#+>tLr5QefCvqHsw_Fh~sOiSmQM|qd%}yp>u$p3SPKhw?*eWKc4k&!qKxvJ>q?FjEI{H9ORiKoO&cmyAc}H%I~*C& zL{b7)D4j)JSvlTpO7iTw+@JtfWhEH{M*ub={4y<0J;OuW5$GY7SHu(MNpWf~mKP;r zJS>X4$apXQ3TZ~{gS*RS!#J%Jjc>yx#d0vc+IGsZVOfH_;dYWBH@coB4nbv$00Cqq zvLPFJFI;tfkw-WRJ0k!_Fg^~#_`|%?6xEcQVZ(mQ(RtY&%mHSu2QI9b&!ur*3I5Jb zidB~?Jq6l5?I;WMTVlnR5xCiBjIug3GQ&F*V7NE=QbcbvoFtU!^$)2K$?XgjbQn2i zd@gUG%M|1)H!4o_^IHstInSm|qmZ_`C)?`Jyx{4p++M z`R*(u!=>+7@Dn=tD2i2G+|BHDoqG{wffCrR9?7ULFl_c0uf+KA&Ph`Gf7c(eHT7f^fWR7Bf~H19M`#hvDyXM;rWa} z%7~8^DQ&2_NKPELcyalvb0H&SJ#DPH)VMgOZ9^n$YSdJ_2i-!Am_w}G0+{-=of--~ z2~da)U3Z^xbX?sePfw}rB~S9vp(qHvvZY zDQ?h8xpA0tQj;m*3<(Zgsbt8sA85K(tgUn}c?7E|+NZyGCC9ykS984$q-p`KuxL@M>J0e)Bdzl= z96&jiB3^<7T-p=8D)8zX7hdGL^=xTqLyys@nie1PK@R0Azyy9$ZqM80_E z#oh%w@xBJCUw6}s;zuQnd%J!gp@=c>s8y9}w)Vv0TKceREvrANlv`a~&#K8J?AHtx zDc?oCT{c@Wd-wt_0skoA@~!5yp+Du(`KeNBOc83(3}C`vxwU^=Vu%Bv3c0FvUZKw1 zLD$#Hys$MG$<{z;q1&h%6~(>v8unD6&6Z*s=2dE|_3{&yp|A?!K&hEO_V2Y`mNY5S za}{M`_!G@#1H}%RO|y`puagU$Z5|5oXp|f;@ld1i4;<4y43tW3(a8biM>4MCLTvmi zu*WF@lsZaR-k@}sQr)cqe2u`pl@jBs%3hEmXgadn)n(ZeLAY)qNGSVrp$^$Tz7E;? z@3NYs>Ov#=o%=Q~Ht%3HSX%mo!e4_0q2ep3356qDTB)!$sK$AXfz2TZZPQ=8lH-=+ zwSCP?{}54+P;}1E@%8#zZJ#YQKUk3x?Dk+kbIp&TAz*tFqe43*N%8#s+f&FbED_(f z?U+V88-6q)@up$qgCyyiB~4LOL5I*gd**AoHDGp>%3ApY$XrynfFNbRASqJ1Zk1SR zJ5Xxx&(b(Jw~^A^w&MyrnMoC;;C_m8LeAz4)0=^TeN@}2M$)tjQy``J+Nd}|^wV=A z!QV>olbQ}PZx!o;=SWtOvn7cVPyU{dg zaMJ+O&LuGIOvhbwacEFN5Cxddi?l?Fx&D~PVPIB}pbok1JHrZL9m#HYR>paSV(K^X zrl#zzmD1o8D;uhY+ps4~ab=u$PsvlNhK@utb?flqMf)>QOjWlw85yBU_HvShnX4xW z!q$e}XVh`o%Y^-rODAxJ{vf|i8umuO6!g``e^C1WR665e73Z__wUeE%nEhln8eQMg zXCC)6d|D*<;4fauvGKL%f4b*H>vmXZ9mtqO^!Tw&^Oj{xEiCTw66tcFECD#!zAOjd z$_aC8uycBYO15~4#kcR+pA47v^nqZ+QFXM(FBLf=?h=j%=Ztnyd)Zv|Y1&qe5v;2n ze>1bD{0$b4HG|K(wBfs~XiCzB8Hcjpj%JW-D8_STQmu5!M7+UYyprSoh1d3DGfQ`t zF$(k>L?WF8yNW1R3+Rcgjo z%}-E(?HxB%L(>K$}p>my^n_RCMfbXXAA!@cd&Y%fUm=ucyCxJZ34~Jg!y$ zVug%|*avfii#?vs#CCN|6JuBA+7-VkUfc{osx`O$y8((GKFjmeQw@87VGf>s?16gu z10|4r6^?SOygGb>(z5bpSb4Bun`SMlg1xq9g-T`ZcI_@fDqCw=q;ZXHYezyB6VY}u ziVZ!posbo;ajg+*z9w%eJ)7`Iza<_7Z^jg{()!MX~j3a|5G$}R0# zxC)tmc&TmN*t5jqQAs$)7E)`%HX$+$E%ECK73_bH`)})OsXj}GG#%{0o>O$AOpT|# zaNyS1$Q{D$96})ZC=dhyaSAw%H66u<4*cqIZ2fw-J9S&zP91+FEp&HVyJ~tV!m63e z-|d!zhE6rLAA~Rt;`#q${ZQ&dL2{tPN|Yl5;22$oAQC3ec@O*2)4t0a843_goEnr% z(tU@&e621xB6}SyudSlNGPzxZ(6{Nf?vstneOkowIXo)En0L z(5{Z3c?Z1yic$2EXsx*I2?3J7yr1qTxd6c##L1BcTry#l*c^Ie{8VxVQ6286PlOGT zD4oa(Hccgpy`viFYm*5mS(NE$4UqI!1#Qmr2#jyWz7exT^|s5F0r>5Cdn-@6IXCq4 zeRJJsxudA-_YtrVMG5Yu>}-KQ@8ubD%$|q`>%Wsj!kfqZ`N7~1;xbKpnYAaqs^LOrOutQqr_AL zzBa1F%2~_T#in2Jwji?{Y?c-*um9I7m{-FRxK<;AHmL5Hh2=BY%~VIqMn0BK zWH0DwoDY|?@{(dtZWMBOkI-`G*{ao)g~){J@4c1WR8Co3=wXQWxVzmxST5@dodw7~ zJE_5w3qSRdbXH8m^QoaFb>dN|)amkUy(46wJz0r`=nN?|)6{Xij ztt*k%mD}DkP%>C`b4bsKh1C(kzik(UsFm<$!LMdUz&m z&7umI{;1!#vPoe&pgc?E&dh4muUVOCw4eG*Z44i;ftKsaO1O_<9N9w|V2TH7F;PWe zakb=z4eh6pjudX;iC~@7%YgjOK|q^bN29y!V->)GuD*d$B;AiKS)hDcBn|I~oW-Rc zyArmpq}n3oLGu;q#(z6lf9A0KGlz?>T;fW8w03=*D6&bnMImm4i6Od-hPha^rg3?2 zhzyKz@xdRgd?j1sY_S|~Ko$8EjU-B+#{e#Da~;&A!q9?Ve2QL3JBmDIcLR8#!MH2; zuKL~~#U}AH{*l{M_YM(}|G`JWtrbI0Y0^SZNz>T<1~J4KgyA5!xW^boSa{Z`!{nVN zUG3TRYxd2k5GR-+G@Bx?di z)nYacMXHiKeziSk8|5?XHW|Oz%-M&{n$h*Ew@s7S+7#2;SUFoCl1$YWve-hD217Du zTI}>gId$z8yQJc4+a5`Cj3s=xK6aT;(LSk0F5I1MmB5+J-;wgX2r)^^`LDufmVU?A zROO3g@Gb%<}gQr#O}ua{~kJoRA^X5(b4wv{ti zv`T_bGHo?&{q0+%t%mn-<$BmLgz7m$N`Eu~Dsfx8+QoEK)}Y4%wvJ;-&RD(f4HTz+ znz*iH<6BQ@TTg>53?gZ+mGRc-#bj}s+M7g}_yallV8X81%(7&RCn<7krz4>? zb=FrgGHkHq9xzK+7!p~VHxw99mZ&SFXx+%$c|`W7X$P|Udy84zmd5mrpab0jjeVQf zrB^o|VJhkM44-)sBbx$ci4PgtW^e58XFMWHbWNycopv2LST=kgp$W7no90!X_?yA2 zx5fc)iA(}{yQ@?vVm-zXsY|(L!vg4^C9d`xjj*+I%It^zU?V-1()dF}txlqDILxQt z>Yw5a$O^JwE)pPjuQXOQ@^Ri{f>!wr?Cl+j>h2APvU)mJ=PFJB?APm3fRHnonGn>ob!G5w&1R z$J5B`h0Hda&r%G0;G7ps%Fd8~t&at2hpRf*xR(hSW&;tj&_ZNb7swRE(@B?Je!>h2 zrbdd6hhbthoOaA1wjyQYaS}YHXYz^U8lKPQ0joEjtztjPt$Tl}u0l67JDd5?0~7aX zBvz5D^Q+vet)v}%H|#s3aLk!|R+!L=;*EJ(G~6pK1L518*P0=e3;s`~EN?k$5Jjl&Hvj;oWE5 zPx%ja6kYn2?`BV-pm*PBU|z7tGw3f~$#IAA>Ldxb*pkuDwZlsPU;2hQ(?DC*`G3fCW;3eUb!hpC zAP#<{^>n1t$aXrio&G@*`P?;-inlY_F0QPsu8W)aYnO@ObT***o~2xl6?bR7y|IJL zi`g>+l8QM;oFfUj%p&|KyhJVTkme{| z&@;!0D#jc`^(@GH5}Tfg{#Hty@hU`dPb&|wCDvA zRl(D+cl=TFS(2&Ew(d{Cx^YS_1kc~g%T9XLCMG*k1r1k;ElGjjGAS@{S4Z9~!I3YD z$WFS>r_PagOWwQb)sASm@C;-{VxHy%7ojy*Hh&*_1^j+<*k-5}akn?ns9ArQhGO6DrL2#c_e%L=_J!CHEBBQ zFo7x_sFY;G9RF2M&kS#;ARAQzF}5n+{pN^7*14*JwH6YPU+J8!^G};p<&Kxo$k^|B zYT2S1LnQDfJgG2o=C|WPPYR$L*4Xn?aK&;aWnTnK4WGGVmiWC+esm{EXuG}cNUBde zyT3)h`I|li^9l2Dm-~{HB~H#cGNt74{y6O7P%SsMMomUvNhX(Wtzc`}rYlk{PUwpM z@)1lf_l$4;k|aJ?Xo%VxG7ECu@o(d0Ci^XY7-c$1&ZvYPj0df%3=vERlB|T+^`KNdq$3|6NIIUg zJyC-65i6N9u?MhhF4gY4oDC@6hs8ehFQTs-5FihD+iq_&_0YPmX z(`qb-3@#Is@*`*ruISoUmck^;mdqn($vl!_Ww+eTsDP%1gQ}&-*7TA%$-!V0_~ZS+ z1BChn4ZF{DiaHTOMvPVesZ;;F?EV#OaH98Ax`b~uq1w*tydWsR z51CdH1h=VTNO6!Im7vvTMGp>!c-9H+VQ}Q0gMOI-iTLnoC&YyeFT#g@w{5;&?sV; z|F1I^OC&s_{1I zVo}=3y3}F8%;sO@Q9}E(YgSLP7syxG^OGh6p)183_mMzo$I1}o@2(Uwd%AdAd^KHJGYb+c1R4JQ?2Ws5 zUE@F&-_m<`!@L1Zdc1^|&=?LHTI1JDmq&m3$ z$jImsT?I=PzYlwgXdm)+RHA3P&`;J#v!f($X+_SidW~4ybImKdw@n_i(0#$CYN28O zuwU_e^Nh|y)BYjj)Yh`?{E=1#?>pP0q7E`o+M{=hNrL%AHUDBp+%oGG04E^J5nM!$ zO!n)mDk5htsn2TFivu;|-HaPM98LHU>3Qr^`v^kc6n;jZy@N4=d${T*uRP^h=apDo)$l3At3P%fjF)$mj$6 zWfa0ia;l~i=qaAW*QvRn1lH8Hqxqnk=x=V3}06i75Su9SC9+k z1MWlY)~G1h!FI{<%L;00rb3~0(7J*W_sB`(Ob~dYx@93#6q2fRwDI5d;nscDqmhDW zxo9-moraWtQ=yb3Yd=(rJqAz-aEw}HD-z|nXKDLJ%@p;kv8q;bra^d0cYGtY#*zH5 zQfYX@pq64{qEPX!RC*&dszxqG0wh!y#3%7sMERCE!0{@Qrr}gchH?r|nChIvQ1CWb zy33hUj_p9A+jbW?HJ41)eI6{GV2p^DgzQj@4{Iqz*jX%wEN)PE@jb8cMp^pKG;!fR zn79`eUvx@SoEMjtNz*69OFlMYjVipctOXpmH3nT(Wtj~Qx9!Hi!5~f_Q&ytX)bO>q z?DLxSZ_Hbqat%yL!hC-eBHe|wMC66yxR0=Bg|lDhmdE?skL{@RbTIgIR5S8#S1UcM z#k*fLY4de&$1wykNrvQMZ{ckMhoj9ocniGif>!!>mL8CI`pR*f%5rQcRS8Lc7wB)8 zPwrl~y=Rn;tLIiZm#EJd9;lRmskw9@0w*w4@IN1-4+k3y!7kD^SR^^5FAwiIQ54Oc zp1MyniZ?qTjkRxgq>tvxa~gL8wALv`kB@J!sgd#U&FBo{7Ao%xfl}u)L5(K0Z0@~F4doyG;6~mTQ3ydsZ@0G zy;R_p7I8LBDyv-&uf;%z9u0hm?4t~ya-l3sj6U`Uu*vVwJmeaF<JG#i@)f{b* z@J=flyOblc=nt|8GWpw(D4T!w&Fn3U_`hl6eDXAVT4*EaRwuIMGt~|PortGfk_gZ( zX&c?Dx#kf_)n)O^$QP}WAb%v#@jqmrcKVqB+FS_kXzR74DMz|P`yzvlv2MG{VT zcX@TBY=BP<$}45U~%n zGeGdy+l#u&=F~X3r)pdlkB8{;ad2PRqEfe6HX?2ZuzzP^qE2QM5@yC8o?^qV$dTde z2I=;(3Fgftl?fJA`x~i2MA7~Yigp4N?I|O8WK#seYbJuX(B(nu5V{3f;H1Cd8=VKy zMBx@=8RlsWUG8MfN$FG5c&W)&DF@KV(OIP32~BjgtI>V9O!Syb_fU=lsq-e9l|%OU zr=L5&W#h5SdMbXq8^0YpL28HtnG4|tb6bfSm8Gp>~V$4fw|TX zQ@*v};2k4?b?U<5@(E%$4e5%S-QY2m))tIWfQRHf(!23;PI4Qq+qUrlPwNo>EI;Qc zIJ(06qWVN!V*z`)o1seM6O?Y)$EXAWI9pWP$Ta4pIiGJKY5fx~Ybwc{=MlQsZ9mbh z(HrwYGeT3`UL$9DM8|4*6>4CWJ2a`0k#0qF;>6R538unPwYz zvP>;D=}vMOWyoDwlFOBgEpEs+xbXXW>5P~~TlO_7YI2ny^8V&NNO1u#&>@eacoFhp zN%0w`D|j+bLvI)~JJbXT4q_wRlHVIRn6qGCFl8=#!v!g&M)7&rDqspMB1rlO=qM%(`ZZsIKUR&cR{_1>it2G(#_ zXP9rhN3g}5UZ#QVZc7Z3+)`D{KyJ{SZmeKBpol>nT#D1}$Y&|Yq3K@~bqs#9%Y0h~ z6KhC=!|nm7%sb&T;_>9Doz>wqB*$|5<4$n+ zh4!*OPg12-Il(+bc1+LIZdx&3JbPWqwkc#?k=*ftPcw9=wWKW>Wr+2ROv9!X@m8ts zXW86$u;rx7thn^k)INiW8F!t&r#`(&kuwmaRHqHl zKhX?-L}a){|A@XQNO9wfV6C$NG;D=zGL6HSES`3!N<|?BkKYXsnwuZl37`!8LHKUvuFnXH{_Yq=xo)TDft5mSfb= zVA!6<_`^m&V<4hT;-0~j8v%5DP^Ex%I>o$t@v*rP!~kP{=leBKe~x^G85V(bCO`bN z`?q`*)k)%I6tVtF6G^bnm(V!^<}4#GR#oIRD`sOzp7XuHHh+L#03LLbDk3Ia4?w?B zq6LODLd6UaP%&%#_}MQ)_!R{FY(9?f*n2FT?^(Ry+_N}{o|{u+=c8~UWdEZ>SzXzk z@VuR=i{+W*wTnDv=BV7mqwCyGY?7}$k7No|(*1hoqD)TdX3q999s&eBoiTjic|9_x z!)(!X7^RZxzdgoB3!%~w2Jt$HTJt~4T}_0lvFRX3+4Rb+9E3_ z&z}$C)k(s~jM2S}KSOJ<(S<&9pzPVO!nE<`fAD0F|I^kN7An~Klw~30{#olX_V2bn zqn)gVB^1-jxpbFqVO`>4;wBh?N>y$p`1|1Kx_CwEY_Q93;y3`*K-E-))Cg5d5Z5)F z@#Ui2CWd$KTcW(0msBSnPMZI;&Y+399iuXhYpp$$A5hND`KV$JZi!^pn-7xPet4I- zqD2#$W*bwd7D@Ny9*A|Vr#bFGXSHPsNvDEnDdrc zS6jmN<4=)&@JKV$m3#Xn;5iqLAS)4H^yk+WdvX4;enc;F2J4?$M;*kXG{kjILEwr*97< zIO`9QusI0^NV9mEZ}A@0da&afSC953Ud5ZVN9r4RrDv!6&RJ65;AEmh$X z9(}ur5QO`~7(P=Ag;N5QVANwW0LMJ&<%nJTC9~UU9hi*isWOpSFx{PnK6?Heurd*J zGiTz4yBrGM{9@})YY+8wfSXK&QgOYFBy?voxD0Do7f%wtTz7J*aSE@`21x=YLTq_| z3wa;4UF=zgHIDPbm~Fg?S$wZq2DeiD4xR*e-36NN&;z!lA2i}86v9D4%d0B=S3kl5 zW$umaN>6-9C70Ae@-G_n`5Hcmm&YZ#?j!x`t;66>S*24 z%PgqT*Otx_y9%+*P5hNh1ybg@io217A?hxhrG8f}AA3*ISz4yDGD^~6e~j@;;~1KzBX?48{VAJ$$qsTbcxD+k@y@5Ys*h|$Fk5(7i`4JNuD%6tl| zf}n`Q)Sol7yu`59T0yRcIErsAGu!^u7+aV(vO?HX0S6f51BCcf-mUaL&lKlL&0ZyB zH0qfhhe*$op!`*p?z*0VR=%6~=uYNn)7lFUfBE{PDf6Z@13Z2<6OLi&$kh#v0vuk?y#5>ViD1GW>!9CaL;&G|n*)*R; zi#^Js?-|4brqsOb>BF$>YapS|4X5Mk+8d#NIJ+Q(*Z>L<;;-^?NFF$SJ6!HNG3YFo zsp5c^>uIxm2-$bjXLSO9vL4z(oY?fKTH4n~iv=%{Ao7khzU{d=jI(sC zFr3bdJ5{#4)JW*C!L{F~DS~Kc$hEC;+F27y1}Vx%*M&qPwsrYC%zXSorx3*?=vV+F zLur%~tQGgHt_vB7djxFpmX2bFE}}^CT^TZHYbjC@Qx)ach|UAez|^ z_`PK3ygm5g!DL7K>Ct_GXog2S`m|{17}fvUOMgd`LrbZl=$|q_?(sJST`Wn_-ce!XVfC~HI4zfO^DjLc1pdBfq1aenE~p-~sblUOtNat(=Q zRcqN0htlz~HQ0c2Lu<;*T+!oFS2@MXqdzZl)i&6@HOJu-vSovEmA&+X8)Z5j5NmJj z;5}iVIp}@JH;xBrPo{Rgq0r(PAqtKF(0InC0|pz|Nfv$Bymy(SReBdlTMcFYpU-tU zIX*nW1MbuFF_cGKXD79XE?DFdm$20yfNgEPcoJnSHXt737Rb^+gdBH&2Wx-%cvk%#BaUrQne93ZQ;b6&i zpB%E$9(>J43yVSs7>k9fEa$o6h zXGl^kN|Cjbc7N4mTYE~Lyl^n+TA)Rq7KLZREkP zF+3p#_Dwi=ZYBGe?ag`2n#vLec-8SEW?|xNC=K~rtNdL|it~?#aGfq4yTruX{Mlyf zZvQ!@n$tHVD-WH|<0DfKgKB2>j1()~D|o5*w@M|s#g*M{7@2+S61X}@2M~tw`o+F= zF@}(+pI>p|^Xm)X)`G`8@29rbt`=Qr_u)usl`Cj#D~gTU_UtO_5xGuvNL}()U}UIt z^|U4pQuY++ueO<|kIQ=sgD*?4Sg?V-mfdO_PaxdtK0I=E zz1iuvps}UjYV}tKl;_f~o%Fgc#gxE;Kq#APb3+Rg$$WtPnK65K2c5-Dc=bOpgmui3XXH*HNNr&_PA5KTo`6f@sU<4A**nyn(GB)mMLBUokaEc zW3V*%dB@xDY`UKdm=Iwud4>t$7~3RfSHwK-9Lx-alHN!+u_$iDHsaYXUTL0^ zo9GLI8Mi4K7zUVT*I3!>9KgFMFu1o;?pPXwa3Wxk_++f#XwpLBTKa7Bl(Z0(Jabj0 z^hDe?&C0yM)sF`_lZS*fDqhcm==Z<-|2KpMrcx3@9`qy{ga;c0vcT5>5da&i4VNzN zX44gEUPvkrMe&9jMb|7P?;hv6pbZ9_A*z8>AyGP&Vdb>a zU5q1h%dDMUkk=h@jx$tRc?iU9&mEL@qcjW-;3AKr*@TZ;-b0Df5}&$>ySVfP>KWRW z4KO8Pj@SxOUStEwT?IcdurqvQS934Bv zi`z@>#H=?2G5<|P%<}154+TgPRQC=-BPVz8N6Z~O(H2Tw2_MGA#J1ZjT;E9bb6E~} zFuXb1gi`xKv&gp7jfJeaiI2JfPP}!lcmzZTIEF6AtWWEBSy6PrfH*OKG|a8EM#D+p z7=D2}_;WY$K$i!GCcMQQ4T5JlEkLqBb^ZVbD3OS2+&S&yIiX3XLf)KTlfivy{RzXL zenT}%7M+HygC5i*lorAmfOYte%=}ipthe)yj;9Bdlc8=LSs2PyiajYhuJ59mlutjJ zdg$?$xC3Mt^l-%Z@O~XQ<<+Aefz!9%Aj}M&8a{n%7J}zYm8o7NrfHGKy;QfG2_7PE z*@L0qGlz%KTlT?um_FWjnM`S$#Hmngdw;+`cIx<9+u#v9eXwQ@9>ASK6deQ+j7D1} z_MvBTsNo~XCRmgRe)>`$Qs<1{i;wVv)%@`}EFLFUWRyWl?aTX_(ZL7POTT7NTd5&g z#Dx^I{safg-l0{4|K>4#D)4EL^mclD(`k&Rh+v=kUo_ab_ z1AH3lF{8aC+Wt_SitSO%ZI=(6WZLhRRzrowny;T0!UUILbyfcrcI^l1b$_L8E;`?izchdzq%h+7JTK% zZ&hmH*13;b2C>dOL$>l^QBPOQ*Y#GhV5)Z`8*gX%dB`1K%9N3iD|ybdQ@EJoc9h@~ zzT{`QaJci&?!nFdI;vwHMD%uy9;#ca3;(h%ykdw4W$M}2m>2PJ;JIFCIVPX?BK4oM z*$?)jVS?|d@n*kJgfU&Z6>%==jDsqC==uU=yZth<@xLq>?sh@**@>MT-_t!Fmi{;} zTld1L3@I`;3zo&mv+fdQyu**N|B2AB_C{{}ga6r!NrHo@Xl|8?7rE2*fUgOiX(-xI zrDTfCquzZV3CaWVEEgo6@(Yi8S{B09>iNWMh#U1!16Fp(Q0KYbn8)be%i+B6>U#H# zFKe}bl|Mw~X!3hqII`EAvc}Im=Qob!^NoF6e={&mVMzCJSQ-19JcL#{aL#T&%4HP& zvukkkyQijZ^a~I59U=-}4?G+CV>9@W|Ji;XVOFZ6`h$Kea|1hdc6=rB2XNrNWqF^c zD1Nr|F}}4Rs2q5)7tk@%e{uUEs|;!sDJ;GDFge*|w>kJgfJz;%BXsb#k_g62t0>OnAkb*07+}!q8ip z#+Ozcdz+Ahlil`3lyWvbVt$Cwa88uIZ~TEXZ1w9>!|S@z(p2Zfwvrxq@KGjt>HI@2 zDvG{dbD}1E!P3qcDoSlES|a1e+&{6peGl*D0YC^R9BgSSgMWA9A(&G8W!@O&IJ6;S z;5^b62kJ}wP=sW0Vj+7$3J|hztv&00PNdT%Ha>{(a9sUkp~!oL7Z%0;$+8O$}CcGYLB{3E~=UBVM3^ScbM+XIkM1*uH1-Wq021CV_=mM zUR=Vtqttn1;B{dh4BqrryI{V@caGQ_WwML8q5~2M9KDuxO;@ge zD+$p)*drAN4mQLOhQ5`VSXXj7S6N;*E0xT&AzJS0&eE;%rE8bfN+@0<-N1#(6%%2q zdun&7SC3uScXcyPEQ!7~b$wC{az8*!v9V&pm6qF{4M4e7mBFS+E8jlPch(Tq4M_RG zUQ%%+52fMkiJH$3l#ss{0(z7DEChIU>e&;V&2-h814tMkN%QB7tRkOjo^O_@o9tKQ zX0R$X*@y6A9TKX|vgefB;mZ}YkLOb}Y&}c?KwG+zMUjQ1EA6|zA?Yt&jypH6@K~PU zfgBEq03fR-JjMohQ7IIUdA^YUj}bDIbf^T

    ld7W2s^OMw>yW6FhKQ!jzbZjx8~} zW&$!BUO3zHdCctuj2CYM|B5+H-vV?mh6veEIjQ3?UkEhF^dQlG$}lryW7W(a3mYUU z0FaMIj87u@j|`SrIMYFG7zD)d>A{_ELl?jqjhSvlt}`}-lFyyGXHod$2oG1z3k7_W zLYpc{vQkBmS<(Y_e+A^2!t3QA>Hdi@exFeVhwddH66dj&($yix<_2$YJAc@&%5}_>chln7_39Bo8)Jcw`y&y+;1Sis8;qw9Gg%%v|cp{2lHieH~|`vK&Ix05L$ z8)f?`k^_ZiuH*wy8{V_w&>7$Nj_ah)`}3ajyBXfw6!mGkigb0lPZc3sTYOeWTo^Sx zJ*x3!ATu-;T&VKI!^Y?o$@=dt^zsi)Cef<8Q#?Q3yzw|=N)1Qt&zkQx)6A0)73qmd zTX?(SvEfz9F;B*H^0=1?JPb?8oWbW6SdlU%gs05ajR(m1H2oXKN{g##IOxGGKKszs zO2#~`tK?RrHyl8$epXj7TS-Jk{2&7yMP{ z$KIMM{UBx$1K=lxI-2mHgOWq?vpsE`ZTuB~Fd9%3AOGE;E}^;QAwFbD$Z-3j1e9rg zZ&)(kKnIiF@H6?cgW8m7o!iZP)EBLmE-4DM@;7PtL!4zDV8S7ug=6i{zA4(k|J6m8)2fSMn?Z&(oIVa29qHyN(?Mu7KnpE@qW*D-q1IX}1wh_2B;5C}K zpf6cf0(oMTm_72^g^Cr6iDLW_Q5piEG z8!SA6ifl)W1wf~k5T9t|R7fBG5y76a7J7tsjr9^}@Wv=Fc0*KU>TEosWQ}zWeJdZp zdNFn!-2SV)`9>W`0)=_(C-X=2B#KItS3GEhbLl{n)mmhE!DeVy<)X%sc? z>HyiC=W=cZCEMkl-uvU7b!cKXqGQkDTwL_}n@&6&8m4@SNY!a>{kpzHj3OL^oARnF zd0M(lb2?qEdn_~lMA)LHXVI3sTW{i6f?|d-LP|)xVTCSN>O{9gPK{Ddd+5F9a_{4dCReO+uZ>NPa?Mfh*`(}FSDkdBFD*-#0z8x?>&$xx)YQ=E`x*T0;0k*Z z551k>9-knJvi*g_ciNBYtNO3E(m-^6H;x*sFe6u62lK@Ix-ByWq-~Df$5Z(~-&5g< ze>q1>_DvD@46JSJe;k+-CZlYxTOld&R~wH+Y*n~Uc56b6LUqn{;$3t( zdrNQ+^bG1$%t5(-o0%aQg>Vph8hSQ%uN=H^Ne5x6qp!{AH^x(v(OQ78gEQr^1?_*- zvP5pa?U4)E*GRt`M#CLSPQH#hFb z>R?Nz@~NK}n&_$4x#1N;QiBE@BlZ`sP`7<_4JL_8`WW7G3)VN%) z-2(Bd{h%*Iz%?V_n1NRSZ)sV0MKvbZrjNyXNGlGBD0`?SsB*dc#110qAd+o zziY~2Km<`o*;F#aLmC{UI(D!I?5?{@GO@dJhg~c9Kne0a$ca)bhJx7FAT$+JRB^Jb zn?UDWWkrl%WLZxkf{OO~s}n?3F7-QUYr^46nNmXl=ot7wbbyPKE@^ zAfV4mXl6HWUSaI`OH4QutCPwV>w|52R?H85M>bC-JtR2|`fF&8lb%uqYodZ}e;lt6 zYu+`|yq7TTvdq7PI3DHdMDRGeO>Q0ZQ1fw9+$3I9AZK3X6 z-MQ6SJD!^^$n@6HE>9`G47hv_sH1{!zb=m^SlKFo2ci(SicpJ-F6Ur1pDl*%9jF4w z63VU+Ska-UVln@P6u_0HGo7>�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

    PK#jBLw@l$2n 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

    cfmTj) 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%0D@rHT0O5HK_k>6qz6m6|7gEGALq>?1ai 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�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 z zk;r7*wThIJh*{z_^H@WQsERha=7`CLZE(e6&+mv8g+y6TlT)dfA&UX@Ia5C9bk3<7 z`+g0)ZV>aj+au9Tk$_mZO2}V-Wjs?l!2p_xDHvw`W_aFH$ncPvf2n^wDKU?XY$>W^znQ|9fs+~+)K{1sIGjOER>kGKUEw<8IZVx;X?k_; zud}vd^WSJd#U71U#>nm)?y(72OA~Nx)9dnkz_QA7$d>Plm*)L|tAD{aeWfOP2CiPZ zN+Y-Zf`NL~a4(8tk-onT7ME=25S?33s%@UfU^WgxZE1 zFWMNCTb)oYRM9^iDTx1D|2<-Cww&aKoe^r(3t#!p{p5!_xD8T+3UqVt=}tA9H8r;I|offYs~Mz zbd2wHLJ5fX=&&t9Pt#KegdB9qJKjua)n5KOnkn>d1^2984M`Gs!8Ig(KU;40Q%{|| zVV_u`zp0)&LhM^F21;iH&BJpj>HwLu@a{aJRKJf(>6sbPYKlE97J^OVeTntJ%NZJKjBBEe!O8&Z_}J#^qJ{l84rax z$_-WZV6a4qR)-#1%kbn)p)sbI_gi8zkJR(nUjF?-lcUA*{#k9i%v4wXaC)ZM^Mv=8 zjslDQdZ!DrJK~3So_F+w74%yx>jRWF?K=TuSEtqUXjP(+m_`ZrcX-1tuv?9D0XWCT zCY9@}e)Wwk<{I0F=Um2y<#D@}&zL-@5yJza-omY0jYZqM;VovhO&gQ+AhN`Z6{&*^ zt0KwLX&M;x;hpyLkTI0+wU;cc*P*d>rtaaC;>0rHy|N=B%>9knHN42&;k~;-H{$)< z^?@-{c?EQ03&pUkEUm}!izZYVQY}U7-8-W*z}#s~Bl>PP|6-CknWvf7T@ps(4d~h? zKyAI)^!hT5FfU5|j%hJknV01gN1PK{Fy2cBIBuA*x;pNH__Z`=7UspZ6AvfFl3}si z4!ki8QKis5rorl!s)fu~_Rjx3hQ+a=8+X{?E%6Y}T$Io4*Fe*;RWwPdjKBBy!nFU_d+}3F9@Axu010AQb z)dPv#_ANy4jU|E)ii2CMXD!o474jpx*~7tOWc#($eS5x=0|?Ff+#WKm@QB3l6c`ch zu`aYy)`d1u4&jQZmk!1A16zxV#a2gIK8 z7oy)KogrOxa0}H$DtX^0dGnQ^(6LWDV6`1)Pj&O9uwK+`V%_I?9b?69LxhlVx)@D6 zi%R(#!o=#+1WLG`{gQG}pDBx3fy|0{E%dz>n!v9V`e0^v#m$77xZs`?O6<{Py^`hZ ztWruF6_8uiqF0mfW92#SL;TaRZ;*hWfSYhbaESN+BJcPw^A$S#9yCv*BFVM2e^te) z7*JCAM~`m=t_3~M;Ku#5x1cyFc)muJS5(0^V1M7aKlTu0y@@O2F<^rGQcem@e|E0=(CYPcm|E4o@V#m)@~K`L>luh8K2V{speo76NG z=|j7aJ3xOTZlW;D&iaH530@S_jJFm#HFlap6aah;y?>N6YU8Xz zhuglSVTk*JDWlF(_5meenbxs`!6O@s-J#v95?KtnWDccbUqXdXLB=2#_hKoE|i2thn(+TAkObL4m7Q3U()})9x&< z3#9j{lRcmx!0du8?1tGYc|KEemH9u%H5cI@4*e5xzz#liz+l4$lFN0?0f&y$aSt_x zD#MUR`i$!kH0^~teiI``7R!C9)(qma@8s$=^?$Od5wG|%!)_tHEQ zckKgrdk=*tOcE1#HU;(H>nH39813C>=F-Y-sK!BmNhJY~I&X=!3r9(RGAFSdRUT9? z4C~_FHLLDjRV`+F1sZ*rZyv2h7hhrL5TkkfPbw9h(={-heR2wOoZ~h3-;8Rnt^%9d zq!ag}x~8~4@LjSZeE`6kfTzMz&;EbMc`XOkFM( zV|XWseA!8jxVt7ADj~w0yiDBa?$AwPpQ_Dmq6Ip*k$JXszj~e<*?)~mISP`cC;OX{ z7*o+moBd!XpR+po=nT2xT9 z4onUYprTO4suhPSw)T-$9BQ@CZ|!q#0=Ccdz3=<|zVG7?BSUWPJ@?#m_Fj9fwb4)k zzqueYRP$=kWd<~D=i<<{)_x3yqKIys4a4+cpl0JD-|z@izUTg|0ID|J;f@OXdF|m* zvVw(mo_n+K7>>SzA!Kz2nx9H1ji+p5YY&yg|0CKX>C31ACWhCRvgZ9~uy5OHj*Op)NMe1xNrNfBW&=pS;>H9x^-RD z3ek;F5L)2#n?0la;XEr!OLA>%@D{#gz;1{Zn3pUstZ)>+R$7OZ3h;TC;y?H@Y6RhJ zyjtU0x^{Y2tGf2_r@#Hx|KIhovp%zb<6-DK%d#VAyHx81#0shZadNo1H7{JfC0n(Rb%g`wN{k)+KrL{KEi&VT@vP`lraow zu*zi#SP9vm>}!|N0};YjN`1pFO; zMnqrkdDl!Bcii z^HC1;ko0BLpm#G~n{#yj|8ryz@;`qAg%(yAs-nV$8$KiBKXPQo@kg==$PD43&42d& zh-Bx?pCvxepxNeOXtU?ZI=5{5fk~}v|MGtDXV0frjSjX3DDf0VeJ(&WrqPLRp*tPd zQiBa(GKp~_V=V9xzp6$`1jxv&rt%z+bSGsGR^1DTsHEE1xT|v&Red9_o5HRmricL_ z8f$C^oG+Neyr)ynE}BE1f=U)NP~I~&(yc1O-fi7i#3(=iQVm4R-S>!j>{nJ1Bpks& zA;y{+Aa<<@v8`Phtf7mI=w`p0kSq+#YsC?$#)tA*6u!nBQ(>ywnQMWDqGY@n= z!BY;n9M2~h>3Jn3Od8KiqwlfODBQBKdF5~lC<6Zsdr!g-yOM=^O7U#7aGE6qx(xeq z>~MW$`>2|Uas@R{VUU=n>z(gD$dvTRFNxx!Fx4W#9Ag1P5(>K2lv3DkT2QRm4bXMe1BxFz;W2U*vRosz7#$ zWn440_%m{SL+RCvl8-I2vG^-cnl`W|O>0bNO&R*x4Ah0VVt&=TUQ!ZZ5)PMw&v&1| zfaE#`B%_Dg@H#i>EU}mgr&9VOBG6_0qh3=~_x`Ng?X0c9hrTmDChwGNvfdQIMMOr2Z7M7-s8jPiOL$=azsk!u3?4ZBHh;*{gsH*SpN} zTmZEO0*m{5qt5|ZwMrXxc0-n>5Ip`GB{G^$(Sj+uLzVvyfW)|5#dPCly4+53haMnz znFfFCVoxH`ZE8x}2X9AQKFVUO@?qDIR2~*V*MQY{ELLN|IiQ^r`8C6b3b!gNMk0jm z)RkJs@;C+t`E-j#QyQV|%>M2MOs%pohEe_ljMg{J8TxN9l)YSveU*NGl$VKOso>fL zKAE_wh3Rxt14|fe?40@*fKSAE6Fp{3pvPQfjLj;$7p*2gFD2!I(*XFYzqfBI{{=WR zfRy9Dx4|TGo+f6QRe9C9gw0Ojka4CrQVEw}l@kD740QSUr?Z<6^xiM|K=<`LZd72~a#QI?6%1Wui*!Hda6wP zFo=9?&6ggB&L_AdG{Hjf8czvzvh}|~S&Uh>k&YB)z(66-AEMjbs+QNRQ>B=Gvlh*ID5`%9rV(_HRC+OVk z4iBZ$bIrj5W-ahIp(+rD!BiU`)Y7de?tAXM`-JzJS-i9rU6|?m$$snt4kf#@@2dgq z0*buN;oi0EoBJ8OJf0y|!*{R0!{NYw=*uXIFc-8%?uRsfhF_|8b)({}Zelo{Q_fwY zEHAkNDJ;UT>a`rB`Q%5@Ylpi58>=swsey_isP;JfyPv75j8T0YpUyzxYoIT&rZ3M# z@F{k8BmZ-MEZdDuVBZd(o^1ea1mnGuI*>a=_eWvH7~z z9_~7SMc>}OKBhSJyf<_FWeohn?~NLG+ps-y6vG+_6Js$f=(REe9acok-F4_AI!J;z z;}t#A{MvM;R&J0@`(Uj$TVJj9QM0vom^TwXWEg;h8Qk1RPpHE|Sd{DItD_%Mw_SbZ z0=2M!X>a*cQ-;XWagC+7U^-<<2ttNz<6!{Av6{(#_t1Eeh&d1bQQjClq!Du~GQA}G~m)no= zH8rj_-qT`=6qdK7UM<*AEvKXd*@o&Reb1u^Y7V2cobQ&;V~W^rnH1izUV@5d@Ca-> z4U+CM;dlNSPsfu~X(m47RdA~E9NB&cmXE}+EpI5bJQXrAr!Mw@18^e+XL4($Y)@c1 z%29C_ZM3?}PsA+w7v8?8?jYKhw|wY}PU1UMZf+OmOPb+zSl8ggG0AH;g_e`pViA&1 z%NDzh>vvmMKcK>J+KxYMrAb`J#rR6{BGuMe8jNIiGiKI!0Q;H$2Cj#K}mD5--qsg~Znc zLcW;_Ne1XZhkq}32b1v$tzS)LEI^QT!L1U%Mw@nyiHT~8K8Z&}Q{2zu0U|=I(7nPF zZ!duBBsa^wlwcvta0eridCs(HDmofAdL3db*wtnQsvOkz{LjU2E&)QiHzF1?`P}88reNcqxYG97Z0)L#O3} zwuXFtqPMdcp5EV6)_sCD^1PE7SzuE@{sHC-rdENA+O-!t1r%stm*+&TK@N46=SbW4_w5sLJezHCja`s~( z&ST9Equq&!fn}xcWJ#z}<{+p)$7lXSB6Lo73ru(WElnc^z4eYQJG*p3(EFI_9nl-O zHZ_TQwto0qv-8n(!#U>cFg;_UvXuAeEMB9tFn!)d;p1+@Eljxo;+Dr#2$h@VuWtHC_iNF8Wf4pOx;nDvBGqwgCdy&wR`GQT*3|O!fF2PNR?F$MTAoR|G{huEO!R1fyn8*ume8p54rONdKNqN1I9AYV^DW1t z-^r#wJ+HlY$->`Lb7VZP%}=@VhD98SoQ>tGbMA2TqemDkE$VE^SN72Z{rZ)@?6b~m zFYjmH-yOn>;!zz^_W{ZrvTW?FZdG(--T?2SpWV>0b+3)NJ!IK!bo-cuQ^KNCX3yXs zq6Y5g0gxx?P(|6n*&_)@12`6c7_Gwz@audx~ZvbXq^ zc8|EQR`0#lk*zPZP!N7s_X+(ak9|JC>)-G@#6BtN=IaN?Q<~Nj>-XEjnP@0aGO9DR zb0(}##8sW*#VdxzWRqbAqMJ;X z+zVJQP>=!T=W`c4-?@sEH?KCF&ev3zWb!60eYGiuXy?8%KgzsIHL|0H`mbi^ZU+G? z#fhE@JWoE)ed&Ktjn^|e7=sQ-EMza_s@SsC*5l7PRz`KsA7;mED}aa_|t5Z@027JBfRw)dSxG7pBI_9bG%euh;fZn$ zO7PGGj>=!)W3PZQ3O0yR#;L4AVOJy|{LASSFYMY=X(fi0R-{@BT6$s2aPu(40AveuLPjc# zCrQq_)0d5z=fVhC=)!oD?ks~I5ff@Ow+C~8LluGN_owPM55lJope$9@$U8%K#I>A6 zE$U-5Jy&U&M+7X{sSr<;7>us9yS%wv69M#1J8-+mL_NcNq#tt-HkX62&iu|bIqmcN zx~e>wzn4OR6IcnxT=|+d?mxlu8heRBNQkq|c zA<`?4Kirzd9@guziNJZxfh337@TeTgfDdRLmvYTvUX&dP;hPdO+bm=q^VlO2c0zn&xlNfI!BNUK_Oo8t)-|-PJIjo46IdCy zwul_~pwoUGTPhh~eg&@NkwoIsw1Odp*?+jHs*m)LW{Dk^lzk>4!%Mb_VjAtc(sDtQ zzXA;Y6t(Rm8@r&^=ibfYDufyRrO3m=bXFBW1StbzHV`8qZ028nXPHhlLeFlNKETqv z$Sa}QG5@K-@7i|D>9Uwi7g8aOT!gcewUfyZY+NlMSUTEWjU48*%V4aajJaC$4YhC2 zoZ;9NjoTDI7Av;G;Sm{HE?na)TSRU}IPw!T7O3?qWR@E`K}f=V8{A{R46ehgs8V|@ zuuP{w#m`%%9ct2hmo}@$72GTLiRh$C!{#+@b6`ez6at1+7BJlDK9wC{HyK~XfQ9cr zGHQL^OL<5i7>1F?iyB$PqO3B?Jcyw&NBdc$?MFxycsCRgTw(5(msqlpP$Rziv-tJ9 zX)9l7#WrA-Zl~Q)4Eeyv!6n+xpz8x=IeZ2MlZQ1!lF-f*#ioTYH{Py4L9IjST9%_F75P;ME*9Td(sVk}9^oPZS&5?!F$5LqS(?GMH9g1QI87V9VHuC&%BpNAbuFJ79C;5rn5cq;L0O$>_| ztj>m&12{4YK)-@(vC^7G^|xfb!nqOE|r1D~mnn^L|dAwjKEL&PpvEs!XKdcrn$&JSk92 za(MZW2c_5$XkVbkROx=3G-}eKHH1#_`|~4@Pyk*;atvtZL)MBs$4+^7& z!OWV8qOTQ5M=yG+L__4Y6UF;=ojmpIWt&;bG^vMeJet9LM8bo!$>{T zb_JH2#&!c;fE-S~2wVZoqfW&PbauRCPsR(SJm9&;?I56n5L*Pud(79Ypj*0~1ymNnS)^MU(oa2T;Zz)^K>R&XdH22-->5AoO;0zgrVH7J?>pHE$ z@BZ^1_Fs*ElmC)c_wYBJgAF2V5~5U)t616;XKe4Q#?md*^hDmxn><@hMZx<<+>CAl zXjJlMOcBLL8es|(KV%wnlMg3^Yf7cNMuFhX#1H&V@n$V^hT=|@wNwkEf>rxwdA2r5 z5Hs(km^nO2wuX@_C(v%D50#d%1J)bOpHjQnr+L6UDT9|z@+iln=qYtV5{(lmi^==+ zhg$WH0`!KRiC(`ki~Bf9HLdf^Gj!oV4`VRQ<6Z?M4Ry zUOh>TKJ=Y_M>W-aYIH6rCl%#%X|M~#CI^qwiV|RLnh(^`ZJACkuc8FbL};;+-4-E0 z{d5WekcgXVx%>Zqe{6*RXi>#nNLS7SU|8?y-Z|w}zuNIYKL5#P`5@+)g4)RGsW*PW zI128_5bB&~VdDfk(N76)l%i0{WuO~nbv`6A+_V_D>37nN={GWpJ|>tT>2n~bEP##n zm_R;OBeb}xtENVF5_Rk(MzYS$KrQ)6cy&%0>j$x5f?^me&?uaI+}R=;I=y&6D(Z+y z_E^Mb**T@tRYMJktB#nXR(B`O1V6@y?K`Ku;TJgp$B3b0$U}0ZVX!GhfeB#jY^u4x z#oM|dgNmW=W717RL@R_c`S}pi$a*4J7_K|hVr&^KN^fMu9i(f?J79Vf6*g;t;xk)< z#W}yHWjulqE7n^=KMVG?#5VicpK|&;U(2LsKdZvuIp&*JZ!|fpLVDHarOjCz=LJxv zc84r}t@&pumBRqRl##yRq!xW?mLZP$(wlH@bX$ff)ZoHS>=>Qc(<4AvoN;^SSrW|{ z-Xha!qb%$$Gl7x@g1DC&sE9z3D-G{yZ{pTB7Cq+bUN)CiXm!Ib^VUjivzN1XRb zi%PoBK~S78WigS&iUJ8A;4v`MTbJOium0t&MR5F~4 ze=1szcg8^PB5RXWp=vGdMehvNirjOaCE9E zdWtN}Cx8sDq`3A7yFLn^F0(uvTd>f+Cg1XX*lUT3ITMoNQAa#!f5HV6S}J(HrSlJv zYCmU~whp5@r=v#r{6jaz3!^Fk&bAv);v;C^tLsqD~ z85U&G0_QuxVq(|Z8cRMa*4FJ#fBc0;SY6x|tT=}S>gf^`kF&sPWUQzh;wnYJDhH@8#vF6s4`(2e>LuSb-=Bd#E z*R@Ztz((P;@}UP2Y+YtJHh_!an%V5#vI=_lUiR+#V&7u4f^C%CYj%*K*R_gkI7r>{ zr*sgD>kP-|rl%>q6VgKLDMLg|U_CVL@Fx6u8UMZ%T3jT8qaQpTI2AoutB(#nYmJc? zbZV+y<=z@MaK9)x2~HL4_Zdponnq@}`*c{F-+E1(di3o;lFLAW>G_aEE{R?{D$QWhMV7tGW6-*z=g+DlI(Z)EU|gTXb3v>e(D-yW z1>A<9hQb07f%9xCDwr?H2Ye#bEbvcDia5zUlr9|<>zJO8sGsdkA^iH4BZSW#MNp4| zW%Oo|#C)P6v}SC>al^omTSk?|ahl<53aU{86$QH?3FaU|{#%{v%sa_GZbypd<%W8> zUn(EzNzJH)6Pw54`HmGTyU~{)Me+`m@sr8d4Zy$SSpxZg4;WzMFdBAWN4=Cf5w4h= z&LB<%;xj_Yfa%GBfu9iQKRoJg>xWJ7UUEWZU}|T-8C*kC5q0GO!FW^tsPK5E2g3-Pf*+ic+>knsj(zf|^c+JDm^9I$a6smyRZJw-TZ#c4~ z7ps*w{Be}&xQiY>X=pl!1E^_Jc`3;S$|)QyB)M}rCzAcJ{wB?{C9#c>+M&b0*<98% zTWX)*AQ={5*gpo*f1t;Dc1`@r;eIqSb(^oHQQ=ddpApJ za5HI3KfU|7A8yH55#W^LLKaI{6SX3-?YA7JkM>_UGXTRKf{lekiPGx>#qNH`Z*mG z(EMb=qtLBYe0J~s-W_K~%|s8jszA@D|? z=ma7F6*UilhJm<$W(vOVwNuxG3Rv5H%^DbZgP8^T`in zVdAa8Gx-tXx{=h46#eH_YhPg#v0{(cJ+^dTl5_WvK23SEd=v6!ySFHBZk9`Aj-;dl zUq+1p!0GRK+8X3`|D!xDo#kn(Se~X~dD@@0Jni{64S&zmJdvk8{r7p=O>3U^V;fMW z%-&6ct{a=eO(i8r(Nv;%lQjA~H{RAPM_b32>}k83=V)7-=V%aaG_#QYH#u4p6VaBV zeaUjP)4yy1vh?@p z|8{sBsQ{?AnVP|IX^wCybU`P^2gBmOPVmz&=U+j!0344`VUG~l^2vJ)dbQ9r4T+h2*ao{ z6u>aBMZhF+$K<6f5Rsb5NmxaIhIHT&#ecd}MdZeawZ3i!+mAeVRqBV9^&VQ`h#zBB zx!QF96cWXvxj1=z88w1H-i|NdKh&j-|C9UIlsDV_YRifV?l$_;qv2joL~xlxX(v)- zw7zNNwvOVGKZ;AB>7tcg3y;r@b~lj=x&zl>aq|Xh$A>cWd$T+{$xjm#aYy6C2vrS;P22*miB>b%IB_j1Tu+q`Yo?6Ln99`Ks(zWtK2PLhF5KY zJD}bOs$?{J7eOjEN@U7$Y+t;2pTMrdwm1?G8aTz^9@QMKU<>9;wWIlV8AO;`FIovV zf6T`78laqsfO14f;jdJ`8CJTvt)6D%iBGcxIxy(vjqHfEBL|$m>A8p#gLkX23(S+I zIkkEZ=@H%h1py!@p|qLbLxI@BxfH>(TwN4(oo#_@i8+-K$=p>r zFDuHhe}fzZ0bNXGh7dY}MS3ahu;R{OskT{>`31>JrxMU^=avm`;snJ!mdU3oGVSOf znymDR;z1HvW;I$y8d7Dg2|4Lx%8ZJ2(*BIct2s-S2;LE72%+s`F^c>Fb&rDnikTA# zR%=^CxlLpm0F)oDfJ~5AK}{mRkEwge3~1+@T2}&VvBMe7BdjHLwd^*iPxDgUkYAHQ zV#lIX!SV`nSkMn50Bp2wkieYpYau00)8lx5b)&BeDbOm1Vj=tGl7Ub_C4=bGu0*2J zze-Gvya>s!ZIqC;cXeNSDv&wsf3Op6G#lsv)hlCm&Q2lI{n(C!M)RSl5~6VHft z1P6S_7)pZf-323uaL9*W#!&!>7F3>+*WC>ZWX+gW4*~~6-yZLEG|SEL+%%Z1iYOx* zARuCeYY=qrreMx!h+5Bx4e{$y3k;~9dfjSjcTeP(e${L*T|hAlLh-)nVJMbCcCRm> zIQ3|`S_yMdYnQKkRPT5s0?$`P+SNg$n4rbj8X~n3bF?%`g&G$-qxV!?;^o2<6>8_X zQJi9wdd=%=ZVuCxb$_TKb$yd=tBV*o78ZzXhiYh`5Ib%*HA@QC(vLp5-t0$p8KOPF zMoNvqrieN-S@c#)wm*wBT#~LI z=mFLT;9c6{nx|}@dn^4l-?eF$j7{nwGPHi=HTCbPofw>b1y$)#ey}TDeK`~Ba=GkW z0KdT6M^^WV!|>gOj^;5s*hhS4hY5o(qlRnZ{))k`@%o?aWmsJP565jRw;Cbl~&p%cwz#lkFX&8K0K-=XlpWQVSd4 zL2pR&hdO5oYUdvZOV$YIqthgy)&6hoBQo-@^{F)QSB!lof$3$V2uwFdv*4kJO?9#> zFOPNT;&Flt!<;6@6v8>Ep`-+7fOsNWO05P~Z*-9oT)n8jLU;=}T$O*Xs#%3(exriF z_I9th@p(o)wtxi0<0>h7?sjyNnzn$DyS|9*gvP>7C^5XKw4?`F>HtnZ!`ye)NZyQ= zbN8K0@WWbfkeq9wuxs_o4JVU&ntxbiU(^1$lPM_ZZoqHb$OyCblu2|(;IMHmbEbP{ znW`WYnGS73Zx_9n@+R|v^%usF9-+m4Yixk*UEfOjZyKCTNe=a@ zN4;ozciM$n0yRu6-b4;l~YatdiKHqqyVEJ~*nfeh<%SZ6S!{z?t&s%*NrBjn9j3 zDx5BOzUDUQ4Zgcfsu+NE`CrnA>XC+3E!X8oau1X(*P)z1R@x{2OkmlC&`)fU|DB#x zysQwlt{G^Gg_hn2QS3q@b+LK$h*dg3*!LUal61D0$oT?4{F> zDCgz*jGl1toAxBI0OKKg!Kca^Ow!=2B;lLMhllf>Ugq1%J0jJ=2QE?ONo)F zFXsfU@4!6~-F$c*zNxc{EfnH?&0gM>j2c1chx4&&v9aag9uzn8r2kL(3&vbVcuiRn zjky-R>%ee+4!p)OSk;lm%8u#GNDj9JrFUO5@>FY4;+X$Atza}e@ebgg_{@yI*2uZ~ zw^meSZw}1lwQ&%&MB5f~xi`xqYj-rm0A9}b$rR=y9zWpm}J}mXrwD+{Q(r>?Hc#u7r;*HkuzYiqg`_ z@3xz-f&1NdAxc-r+}UOU>X2AWq&ml%&e`i+wq~{!6sURs2?<=DKkIy)a6+A*SH)(t zsJk3yH^8CO;tk-0Imu03$y`ruwYzOacDF@TPSU+MB{i7#Uiv^UDVk-)tu<<-7nqc^ z&{+I)FBb{xv5DqbA3CpdLFeLVGDg#lgNj$zwQiB-&3sQJQBoBnmiR!z347iKW3CEJ z?uOD5SEY;yF%3O*-HQIF(dYV0>EB*@0& z;tsXF$9$nw4G;ir+=0=>AEXzP)lQmY2pjY~K9Aqb85M8fP*BlDdF_qFp;pE2gY@n> ztD2mNzMjDlgW9iDb3-p+Ifa9l*rf&?4JsR1hb2@aT!gVA@(ut_!Wl8(>}|iLC#Z`t~gS6ogG5Qp4^;ENIlh z-%7~dREy>{c@@M6x{)F5As{Szt*HtjT1&5#Ade;EEldwDn-ACH-G~Ldg~;CG#+O@R z>%Tyk$PQ}uQr@v16qLf%pcH0ues=GGf2OJ{Tll);$NQ{IL)}8wZI%liG9H_FSyeFN z{?4?{?|oTRvADIp$5dbHPb!*_%%gCLlFUS4T>dIIw9xjQivHC#hXz%6Iv1(?B-R8D zw(~b!TfZ}Mv`$rr9CBTO=uaOtnPZ<+s>QsIpDbmO*Q59=Oeqx~%ar+tti|9s?)q9WO!7m} zRHPnlk{b4#s&DsnE3_ z^#TqE-9af8Y7km==I3`PyZ{4ZaszGxzKj|{sKMUQQWndew|}>HAbC}GA!wg`ZR(2ts0GMcVe9IQcgW_D!jlmB~w@%@44&K zy5LtP$y`B=J>Ir+ZJ;HtS;OgusIn8FmEHwpFtv;@vrYiYAXNK4<;D#M_qtTMY;5pb>Q%k<42&~0pS zg0?d-_uFvyuk7>PakFxriUpe``}0@VNWbeY5pu`aAi=nnVSx8W^<=|kDG&3-aK(LU z|Hw961EO`L_V4Xd+*8?|cLVW1OLiPxW~^337a&QW2Aozo&pgx7V*Y4jk#fl5K!pY| zZ>$1}5J>;g@-WupgItLE3w`VM=?=4lnR_XN>0r5UvTWJ%S^DQzg!8lX$qeBPWnN(n z4p>}J|6Q1;*wn7;Z|}@nR1p0UR^*6f6cTJ1pRyc}6MfKpkE`@S^}d$rMsHlWu9);9l$)rDc>c*=@joU@}|57#a z4Mql+CSMmdP}3fYY4M=5-f+8d*>s&-X!c8l^EsB&6|pz7zyL{lvb{%m^qAr+$Fq34 zJnz;WDz69C73f9!N_B`Rv!BEzVjI)>l9zq=BKKSk>BZ{3!;i-9RuPC>FNP#9rn80F za_Ioet*_>j;vAXCv>!=ATH0O1xead=F`KL6KW3`raN9D|TcRoTxT=7;f(FQd% zS=tO6U&~oPbw{RGsE6N*yx5O2ycdBdFN9Xd#~#k2@DvUP6fV|&W99y@3Cbjc)Vgnt z{8Un(bPWw3a1Is;R#ry!3>)R*j^BJDCM`_Z%0KD$(eZ5Wgi)(vO>n=+CF^g)5Ug+s z83F@K4_)HEoOc3Pb%lqo8zfwDH?1-76!l2Fd$LD3WL4LSoBV-m4kVMi;rT$tc}(5V z6x0fEj}|2>PTe#tSrG9UB?N5KPx@%^Q@}KfL}l-H6}o1Oq@UOJoJwa@IfzXu)Adsp zanhvOv-y2?Bjx(^Wz-15hj_L68Gb#tte=o{@73iXiIwdX>q~?TPjKZ>rnn1)^&1o7G;2;X18Y1<_AvuHfb0;pA2= z74#Ye2mKCc0k|J4fN z7WP+7ntjL@2>rPejydw`eO>k}Dw;;YVu2~TTTo7|SHPTzrcrlHqsBq+yO=keX`zsv zXO)PyIM21D#oJgeIt6y+cjRS_#ZjIw&g0^W?aZ|HWq&%0)i!0?*MTSN{DliKTyB?Z z8$KEm_H6w-pFR5B-|EwVaBTLLzcYKws>%ALRxQi4o70!Yy{2^YL!@c-+0*|UpS>*u zmLYl?FEy(}`1TUV zw+pUa-jmI#&TyZE#B=pd>+D*K*@egc-%hg2f1hL(;$7i#o~cbYXIC@USlm87<8r>v zvWu>^(k}-yh$80S^xDv~d!uJL6RqvRVXQBUy9QrW|FX_QjHFI2AX>)rdHb8_xAA@U z7G_sVOX8nSAD};r^v_oHtUrr>OY6?BKweuc%nDWG-s3nSJ?4AsU{*eDTcE)dxq6$} zYlS~UUy81l9=5GCqlZX>g|lOj--VF_2g_60}h7(cZANY*<#Bq7|Mc;pajJ7f5VsOO3^9;k{5_PidTkb(>?);&>eM z<+Tewea*(;zr<|-#b{_PQxnX}p=~B{#jv6A49S;R`A!!TgYq3FW*95qK>$j0p!bOm zbSI{Mm$TkcIpE^!UMXum?#EadoDq!f!gkc;V-{=jp;LeaqK1Jv6rgB-;NdX>6{YC0 z*o`c&)-KUxeD0C5!Q;0%a1EmvT3x@z$U2g0a4mybfP>|nlS-$5MNajLUJelV05(9| z=lK*OWW{p{@op5Pxp|5>3q_fKOp}}ps>rBSD_DhNTn`psWTCk|>a1N~hI!do&%?P` z>k8OTuur^en`_oN*EHS++AGpZtlmYoadsfc%MNCnw1IR5_%dn)L64i*QpSC# zxK<6%&Wh+z-meFKFTr7MYh2DpC*kj#?yJ><>Tj?A0h0mEig{3_lLwWIc~AvxK$o3q zEY&uZNJSgQ%#IqN2h)Yc7|lOzrKQ@PJ%liFK*q@R){J*${~9qUh0>Cb9ncWF*Xf3o z$RLXZ!jQJ?&XJcPCANje8yU3EWKTCE$WwfU$}t#17xjYLp6O6rlsl=bP24hje+x(i ztr>6VRo~iun3ys&8$jgPo7%pAO&ieL*nr|$)gW_k5{bjyvi2fMkr4YxcQWhO_ z7LwVY9VSz$kbHQT9@FE)GgW;=DfZOKLnW)Hz z!GBkL>gu}uuz-kPQg=k+qY%(lW?0tPe{wI|+1y>Z-M3MiQB+`m32yl&U`){O>P9mR zM5_>n@wRo0Kyb%#hU4el!|HX01LTomqr{M>W0Ci#m~V?jUR4xt$P!n}!|sOGyyx5^ z8RI8)%Mhu7whqMjqrsMM|P85B`At&UopEQ~+GcD@CMJ0d6$<#i-0 z(D7sD#Cx$vOXsumg%-cM@@`sIU?6#Y0purCH{Qx2gv)!VsSCQZ?6!iqtG0<~!-EXp za3WTHs{$8(fmq!>+`XytjW~hz-x^2crsEMq)}Z^G*r4SqYtRCVtiP4Gr(OwEr23cL zil}a9C1ITrNm!R2cPHJey2PN$;C1-r@tZ{)_>5P6r7qMA#u$z`&i4~>EKl~hCBB2C zw~xxj-YkRRXk9i9omp-UsJvZ+Q-!0gz zZ$cb$pbKytvy}2Dq}k&b++b;1B+K+1tDq)-$c}1ZL_!`tGf+l9C05U`U&>akggAc2 zt!{Cul}N@Wv5qmO;9thE`ZdF#OjwZ0>HqV&5hGe)`^Xg_yLKCmqMwJgEsZM7k)god_PQ554X6FGR zC9bID;h~|^+pUqb$+l?0UKb7c(S>vx{m41>H8C1+ zcBolr5^L7!JxFJyg~=xdK~!9yl4Qk!aB%roYs(m&qa;Gw5c{*zR0&wB%gXR-e`+1mJqDBWf>t= zQ}v8~B*qO{A9i=0Hi7u9bK!GggO-1LwFp|ju(`GsGcGdvT^}Yo{!K$1sPymG2qtpS z5POv6Icg!uRg7@NcyYqrOgGDH3`?V4hr+D$BgC79+QsZ-+IPd5h815UL4f-#Eb~VX zYW=6@Zlb%lVPDNWZcqfck&(7W4SGLDDi=1U~ zH%v@{&@n(!@6L{xJzcw%j##yiDA&gGV_0H`)7x7eyopQV3FTUAws^ytFxGAu{z=UFK2H|-*#^z5>Gak71CM0m1Z zC}tG0Vn!L`Jb&oqGY%bPeZ422iMB^96 zXD&mYxMP3z76@)L*@iP*iCTT{{QXI=yrm+f?l=`8Pwz365yv+=59d+*R`v^ZWnkQR zR7FnWP8SgPj@!BmQ$DZl%-3Z5RTDh$X#Heyg;AyDQJH-Hj+wa(IS1CANyCvhSF#hH zIo(2bgukks%g}b7h{i<@d(ZRI6bcvLgHYCbEt!AhwwvMDf1ZP_k~wwW1-nBYG^boi zsJx(Tk4#9r$D&e0sDz~mb8V3=+8gf6d}xE#-P2Qs92I;#V7zFW>pRPs1=_7Sw4 zdq#)1wVW%Jr$rpOMnhNPYxY#X#+vdaT|i@cFbH+C&0WxxFZ+V@8gI%sj-@UEaj7N) zoRsjOul0C3fgbeX%E0p@y;45&curo%^CVIA+XfGxuJC~|1;6*c5Aq&GS2pu%XX^`S<~8IC9%7}dQ2wT?xM5*sEQ}u@EpIQ6XK8t z-1wddkici=|V7DWF*Wc+_ls9i1wZ6(r!%S=D88zDXFG3TqFLuBv!H9#IhO;qNwk=IXF z_WN$3m-M*DbMO-tRqw-Nh@ZPIc5xz|d#>La`3=adpM=Q1@OwV?Qas{D&lL!hHDqAs ztO#Z-6#w|*KEP9wzLz@7tx3@L8gxH)W{KIj*wC-xsFru2sx2aLMBWoxSH`U^cD|{x zTwu3bIADL^r^C+rIm&(dVuiK*6L9aB;soNb#I1nGdLNpsl0v#uf2#!P@@IaseXg_}X8%UDx(0m*Sy~5brTrRwEmBdV ztF!z4jc2CcFn(9n`A0zYCHvdkv5kq^=%wsnIjxcD-f-1vE&mcsl`YareDyx6u|i3Q z%sQ#l?GB9Y%eqXp=rycRJy?~q0J~}Shk5OHJ@NZ$$51Lg`mBl*GM8eJ-lk~2NdGn& zjUszUX?Grh-MOf1nn{;~N8zL9kAkIDE{R?G^a2T`)F(4c7eH@d*}bLrvv(AuC!t}I z{X92X@AaMddVgNQc}jN?bUoR^#kReya4zY%hv%Lp0!Y85Zk#R( zv)15$kZoSgyGy)zf#?~l6oFoGFyRGLipD>jxu5i;hM=0o2|v;2FHH9GHD&29te~y*iyyyHz=M=c?pq3F!G~h~0@^m)VcMyY#gz zUK1R3_qmzhk^6<$E_ee*E7%kZ-FehYnJFjhL_gS$F{x~ffkIfQ*z)rt)?2dvhy=Rw zfbsuitS<;!0LvnH#{-1#f2LsE%47yxFMe>zrVtrOL3}~HCwM9(X{>gG) zqzoBAm)vl;-8oNO)(45AWqQmn(Dt7@JNb;&cJ#of=d7ezZ>e^cr+Fw2_Hf)`8Y20h6q<1fvLdSVJ;k_0F2;c2-yRQ_a8aAxu__91;XUU?`ERL#$edQO!7KJCH+yiGOV9=qu`8qdY7K>rG*e)5r+fL zYG@%$x$YtQJ?w#H@ZR9F(_YZQ4kr7+&jKrOpGh$Khl0-03hT^dh8E%Ht~;``OJ3ST z{KKPH{>3l3;F{NSR8`O3u6dLoQV(wDAGIMg)A?XYlvd!+P@M0~{Q;?#9Gfv|RY$y1?b#2n${uk(nRcVv*3b3m8jv_6Ka3NUz*x=@$eJ^6vfMx zN*4>P(ftz%-Vux%;N^I=)|%|_|KKq5ry#hux5qb4z|4Q(2_uB*Oqh&{Z1UU~Cevh- zw*@7Si=R-w$=C~Z?IrtB=>TwCtWZXFLx>&|huqP`DD7IZHAd8@uBNC@p~o?UlR}Vv zNc)J&a1Wf@3|2FW`I>q@!DyD?KyiB)*+Y3EGxKX}&!>&Nk`Q96=QY(3USbjOvG@=- zwB@7_{&2=rjU?vDV4sA{sF}usLxjU_AYQe{e7po6W3GGRU^E`5`-M%4YIk@ zl}g{FQZgJEV8rUI=(fwA6nmfNpA!yA?aTcbmFa$1fqBV^`8I96kp0rHB*hwKAvW8F9>0HXX5ug z0R%|kL5JMbs8$PRh6GtyQkto?1lpzx3A$zPPQahNt$Q0eq(;vAJ)(tZbQ?xbEjpQU zcoZDXLNup=K>;psh65H}!`Lg>FBjuvVe#DZEEu+6h0K5+`ni4{bt_WbB8J2%zMJw* zI#Mf;1IbsOE_ktTW*DaCZ!ryaU=OA_yljuQT0q9MrW=T_Otiixed!k%l;R%1Dg(e9 zTEba{-Ibk&AU!P1ZAEru$UhC>FQPg+)?>uV6gbqS4pmYQ4F4$IcK(K*%Km*(joC-g zm`g5~dVk~Fa1}Xl{UZ9|SzrC2ulV2kDtohoYpWP|rs-iBCzzsrMYpw{S-Sqx@IxNQ z{ba#PR<)_$XPS>}Ho{}DrkgBaim8TBp^^1IW>54V?ZtV%6=CNvkh!s*<_&7uixRk> zN$_AM;qkp)pwLXyrDlgRyuoxfWx#?98Jdmu?^sY`24%tq3u_b6e~kZf$4q@AekqjM;g^;fjy+QNf&Mvu z$16@`FZhQV)cw?j_Q9@#`tUNQ)|Y;c*QIgMm$#Iqn|?CN=DqFLbdinSN2w%3s|IH2 z_UumA)OUcAUx9Tc&7cz+U3p0>U-urs=DM2NHq zDh+gGI6=&Wybniwug=fcw8T@E*@b%sqbEugAgp?P>)9YvVBQ9}sdbPZq+t|%C_!G| zrD}#_2szBjUz14jxlxoJo3bO>UC6F3`GxL64&8;aq;TCGdJ-4Bsp|_$??z8^qaf2- z)_a;4$TAN4U6`oY0fY$kK+W6w=Xk=@BeQfP6jRECour7^ta(EkkW!%8%jfCt^oN+I zVa5PyKdoZea`*;H>9HcGJ@b&a;emIM{Gk=Z;Qk;^O~}q^KelRE-Y)J9SRwjS%A0tD zL@zXYK%>B+mxc+Joj^-&7gP}i1C)$hKZ&3{)SP>)Ta05L;Yisx_BHieor@2!ZY6uUs&rari*Tsqd5IJk2u;+^_ z`CL+Z$o`yrM5p_YCh-)rK0p4PyYykh(>A=mS05w|BWC9SqGQXeWA8G97z#>bN; z%UJ;TUg9S~ZjXFj{GX$$g+u**@GuO zzsFw;w7Vgbqc}8TOq;`5NL*jPbWyB-o!QJk;+6QH194>wk*h{TKP?FpRvoRt5Y!y* zQ=x7VaHHE4YWA{X+qux1{h>t-ueoX6&Ma`|HLQ@HUxZd@9NqjKm;Fel0pq`pG_{y>g8H=4k94jH2s^*khGJgM@vW z6~8LakFI?>kWYfz!ro5`-Pe?)$3lf52CN>p}<>-T3F1}?W#E!DNM zcYD!dwcDjtEHvDIw{=yM5!>3(G3pUX*9WtgD{`dEBgR}iG@IIXc?VAAe70Ro^NYJWxfGX6_Syex*O(Ws;oKjaTl_R9X^ymtHn`?Nw*2S?)pnlz<|VJF|7Md9G!xnZS~QvJ--M}>%t~v zz*+Yet*#aZoDiP=qspV2%K9}|&=9M6( zXEDC~vaJUieGkHxFq8g+FQY~fUdOAIH$*?Co}h!?Z5}gQ136plEY?Rs%W|UdCp?UV zb0!kSx;_2IUobH42+YgEWX_#Z-M01)QFZr|xmWokwp-9P&9sepAD(iPC#wjJh*3<> z?LfL7a`$nbmXqNk)km(d99t$FUltd+A`bt;x*&oYYo)-?cGlp2jMURsB=vO0Ij;rp z4}JgOYC?H9xb2$KM+TRvyQ~H*=JL*HJRT9G{*2pVJ?ct;l({*y!w;}eoyRKE0!rn95;@D-> zpLT}uduxW=le1%p#NgY34M_={JT1odBgHn!lP(rg$wl z0XhzepDd(=d@ASg_+8)py&8O<;G3qGQzze5_7WW$r%w%$&Gp^2zsl7ML2>Q)`V43D zo67h6FgGV6Mq&qzK9$lw+q23)&{O|xN@>HTFeZg(qT+`RJ zJ-4o{=jUyw#$6cXRrAE(VGVdfpo|{b7yTCE6-+JN`|M2hzRJLAP)5gljGbVKOPj0r zE%MD~dy8yjAwfbFh;3%Xat=ugdOE zH4)K%YE-+FRZvjPLY!|Uyr0O|H3w*rWRmDt`D%J0>`i6z zKCNkX@gwlJCKk1L&m4Ilumxr+7Kq$c&8}n1D~bmbWEA~dNz@(RSf=YX!_oI9J_QcT zNfS)4khayedutzrSGi)~B4l>DKQT8G6lW)rs&AN6W@jcA8%bqA|53DZS4Z=`e}zWjc9E;A=dBM*}?Z;>Fb1 z5nXI|%Y>~nLuB!O^&J>{CZ!9QziUB!`w>cJ`$muV=7p;-g-ujK;CXsJ)N}G*@dix5 zI$9dQSq^R~WbdKYDGfh_jZ9E9OelIg7r%Z_uNTZGaX#qs_6M55(44%0t9T1pHHwtpdXM{8ZRcn(hMC{n{{DEdyJn1>M z-B>E##wl>@kk_WJ| zUS&?CI{$8zk8wBp_d;I9n;1MFCcETCA;%UswNN~mlS?GdwN$+wZ1;n`)KbeAl9M#P zJDzBSS*R=H?uX7NXZ(K-RIp+)?B_q2h_|GC;3_pGz(^2Hf4o~$&i<;@w1ic(xl7T;Kz*NVM)?}MV%#ar zab);$x-=1H`d5H7*9~xAX@*dl{yNdxuyYXID}yk-%rGng!~_{DVBcHjT)a-X&l9IptP_GeHLZA4l9v@-f?sDpOY2-?_Hs6Wd3RF$}ZTra00jeGov5&|;&-(|v+b>WSht=VH;wk)A=OVqiiuyZfp3!jM zmb90-ceR~(*pC~Q6{UkTv?Z!4fGECWEgjmJvvb%5G~6vYs$@`3CUt^pjB}NC{KQSM z(UHX?TYEKpt1DK>>^jOYdRmPz48PmUf48$&)l?nA7CcUfnt<_PPB%DyZC$@Vz)t6| zpquS1p507e7B_B&dWb2TQkI-Xlxs~mC|_%jyfZ}|ZVJH|X~#d=fxmd>!$vP{V* zE?DJqM_(-cto+2HsFAc>{(PYqoAH{XiG_9ro!YpS@o7qu15}x(A0`N^yU(lOe=JdOwoU_Wb#sw=cVmn$y8uOUieZ?rULRs z%tn?>OiWqL1Jdi_@ftGq(9cr+i%dIv+EX^NWa9mP@)lW+yCCHXFxT+m$Ytt&R#GlA zCy^#0Dds}`z_I(GDEq{H>*bz7;HjN^PXZ>UvTCmdv%V%NKjyU-R@H;IcwSdfqi%U- z>$9~le%xxi@ap1~-I7G8L7;5RqdvLywNE~20aa5}C0&FnBj+}&(-%fgpuWc~VbMhqk@X$JCdYbBf#00B`kVT{3l;C_)7v5zlU_wcdhCQuzJ47=y>1gb zK4wy88G*`gcV8*NV&H!ed_t(Fo#d8*<%$9&Uc^rZAJa+ZK=xb zRAeFG`RaiQ4ENoY&*k#L~DM~ z4NNxYG#;}1hqPKOBK0uAY~>hAGVD8r#Y!kJXq!@p8Y726l|$d!`yP~7zN#>vW)COj zae;ble;<2n>6+b0{rN?07QW=uTta`-6rDcc01%x!%YkH&weHbn*Skov*S8v}RnX^Q z`noDMJgl}TK>eu^N3Aa16#B)xYAyt+BGm2bA*h~(-hk~+Lx^EP>W_J?C?}}_&Idxk z7&T)INTvNh*ETEwC&-SW+{91uOg+MiHjDA@F#P`8 z)Ssg&biHju>T!h?^nQ7JETKk2~5H)W^^DM6TFKhwkRmdAT2 z{&9$QQ>i#dy8oat!F4WE6=O}lQfo1WH7>o?{J3?&5;ZmQ z6j0+8YRP?2e_~ga)eqk5U2fMgh8P-lZ(J3aNCDKr{Mna@wN1PCiych+2C0C_eR*wW zh~Va2RZg?^T6Zqw9P}CDJq++YzO_wnSo~6ZUawk9wDE^tmLzPjb@CZBokEd*v6{>h ze12PQ^j(4PvcDYZqWkn*$6ec4FIcrxZl`q_4i;BoZO1!UK4H8f*Kv=#&uyNg&TY$$ zMN8sb|;Lc z34N6}gkXoWnEbVuR|in`SwZG6BTR3jZn=6aX9&bpk){`3h~Uf;5mHP0+x_JgKP z%dpXxU=Q;8+sw7^ic6ZyZ4rU$5ttPAonxH4&)$Bw!FAM`eeN#Hj5mg*x3H$_`7aOI zuJ<>w_wfixWliXxR#`=+hzBGoTUNNT_@g^T9BNIUQ%~)w3tTA5F-3J11Ev53G|jIE zJQSPC+2!fv3yJK^O_Ci<{%-NW3|PzF;o#-$0h}1)Se7FKFORIXHkM3! z?UVkaI#=i$d;LG(_c58iv)13Ss@bo0Zex$QpUJq{vqSDUCc68~QnsBz#{;H+aMZUm zgsSP12kGY_%4@E!t#ho`p+UUYM^(@1d%8n!I`Dv>Z6V`WT-!|z@=F5c1ZDQJoBBYC zTe`#Xht8peScRq3jWLOAgoOiaX`^D$OnQ)#K88iYK1hE>AKw#t#bG)jV7{V)&Aw7J zpA=lDu&GIr!^k}7%-g62R(;7rj%o|5$fs|-Y6bo@#}vC}J+|&mOD@!^LQ!MrZEM1# z4~OBlyu3D7Or#vADpfeWQ1C$mw;D-Z4_~zMr-M7N`sJs7_(5GPs`Xa-3vZ5>{}4-u z6s}?H-`=y8^-spTL*<+S*Teyl!bkbz$de;{Af*n0-|?xSm7}sbjl2OX|aKOXk^cdn@P~)0ac_p=$ zrhV!PBF9mnT22)pT^YmJlv)beYq`9OJS10<{#NbpslTg!#f#j11cOQttyDJ1Y0af_ zU03L1mIy98*xa{Hp`B{~g35u7v*Bw-Jub8f0$Q#rta=SvmQgeQv#stm% zY{dc1<=O;5A%ch|+2Ky4$d~yW=|?}%K|B}+;2G?R5kd;=>+(_|v))cFh;mA^;}u(a zTXISHQsO_F0PW0p?L-X2mw;EGs8y3f+rV5 z&W1C@JLmr`zzTmcq7jMT+b2{zmM#lCn~b-A^9U5`Msy~dyYHNR0_^c?k5jCb z=P0uG@-@y%cp3bYiy$wa0eKWd*(whqK6`ayi6`jP+ZsL}X#)J@b8H_|m$C z{>MqBdBnfps`)lZDzLrxNjo#mPygLf^vaw>r;>+dGJ(GYi}caFu|1PGm-I*~gAF@~ z+o@HLCmlfCMVQVU-9?iik2$)FRzXY@%+w`PW(a@h6i{d1^CC@;?Xt*Z^vxkjCOBL= zFEIKZkX7B#GxchN-H}|O9|^?18q7SU{v*rfY#Ku730UPZU>pJ_M;e^1?qd}**W#}L zh{Xbn>=A2A;&eHXomGix-m@;UY2H2h^ElE7bPci9&u{LBm^6U|V$vXqT&xP9Z4Ho> z6XLx5Eu-j~@1L_EN+@`)2VD}PoO+ShYUn;185Ja`(L-(*TXO_Vw z9UAv6=*w{{t^!M&Tdjd--J_^-U4-?uTb4@bWZ9%`_l_@&IEu1=6BkyML) zjJ5>NEwfqhqhGK6V-}q7Nl9yX**w|{d`!@FyOqtKk6-2|hC-MMSBg(1KY2lPws%YxoDJ62nP(8Y|2vz|M?AVWiCGO#O&B42>hMd z1oP~X-EByh>s6MP?{gS{QI)&$bW%$NV5HiKwqNOBX2bxvnVd^*jt3U`0v%Qv z^5EcKxrod9Lue?~9|FZ*MBrB%T=7c8R9HiH*w49_411dkCo$4h1L61C5gp6DG9+k_TEgAu2tUHc34DeEE5FxnC6e9#h=g{qw z_HC433}g(;@i0CwZnLs#`7*50MOSiG6^A`}b7QU1RRE~>U3Vs#f0aq<< zfvW|K?eMbd6F*>)>jnc;1C4)7$+_rm*9Z}r(?Z}Ik7dYHeaKUVzjEKr2H)EevaF)A zb^o#e`!?%8%^3b-f=JKg00aQewkToz0*F1i&H@p5D(-j#-0DW@f?F*^!8!U--O&q; z;?#Q(9heXG{s8b$l#v4t0Dtnnre9-rePsU4A0x^Kz#O35z&T*2D&39u>_l!bc`U)l zc-b=AFOb}eQk4qO?hS@TDelI|3gcEkC(yKQ<7PHhnQk`+rw=fI_FQQTZm<=6j&Kz~ z0>=z;k>xR^Wis9w z9Cl9__Woqpi*VQlvEu{+33~F{%)wC*Ynd#Qp8a^_Hwzx+;>f#CA|tCAfTd6ji`9_B5r!p8(SHQ@+QY;~=uH7vl86}B0iPQ) z$!!rCBGI43b0K=nnp}a;jNrrbQ~93>Q#Wh;$AW_{1G#q~pP1lH5Aket#ne&XlPPPp zyf6Gdp8*HMnqofZr;l7bn;(c*?F-hEHb7N0 zh?$H41Ofcn49WZ8&sOONO;1Jh{I>|o^I)VGKDtAeT~YwIC~fFdouwwonVPzgclK~b z@ahH=U-2I}dwO*I1Ojm34B<~5i+1PuMpJN1mkff8PRU5@-HVYG8&nSku6SY!hF%L` zBP^Zr+hRmjpCEq&V*KE(o;H7g%g}-oCENuoM`|X7Yu+}ZsDV*-0+1)7hH<2W?YTdT zn2dg$sMOuiCY-eK*S7KFF>fHYGGELnad+@2G3U-9-kqjy?0a&|NM8A1;u-Y?&uFyy z46(?HqmCpHj(R+i_ZEq^qI5W=^$v;JE2hW)dS8!hFpTFkhGCS9Y6_7u(Q+#*<%547oeG@q_V@Ccn8Mj_?s zz!|?E7yTUc2v0F7D;Mz!>}O`_#|;}I+zNLHNO!HNka^vUS*A`k+t4g7Zj5@gjOP{( zJ`-@`oi}h83xohSUMD>9D>K4Twg-9rO#Pr~LxXh(_hAIDdl|+4LH&Vi`!2N40QmM+ z@&H+Z0eFG{CC?_{owaDI)OfJnK^XaYF&xocbl>rwA>zXQlR`J?Stx)J>i+|}(H1rL z;kxzFaQn=4weA_$fNe*A(qs=%hi$U2$qS;d7_7h-WPaLD4Kglvv*nq8GDJ87+(y9v zo(2Vjrw35c9=JOLn_UL?*3o-^28nJ&afurQ3I#1CGM!7`$i9T0Pd|kM0pP9z4%~Ak z^$^Tv6GNUfhrE_kVXzqq6I~=^4jX6*D0(c;*d{+DwRrmJD$4`($Ek(whmartM&IeX zxCi^A;m0TL0zZCc|G6|{rX3SE2KjODW3mm$FBEtMAwM2%fsmBZb#CA-*6zfAZWSyj zfbs8KZX8QC$Ito_e{ly+rluIc_Kn5KB+^TS$y6L42$axl%W=Dx^p?5y1@Y#`_sh{s zwN2J(&&}KjKAo}zaMsnMPuS2|hyuW)m@&KqV}}T1z^w-Kj98ooKF5#f`3UZPOYapg z_OJRkJ;M)Qp!BR*MmROYI;emj-@~mV%b-vw{28{j<>dCxGPPTdI=DWg4lcl+2O##` z@7@csy!8Z%;K%k|z|T$!h*=E5+u&7RB1+dR;_AMg6M5?#W-`W?c+Jw$W;CWE(T#G)45^<@21cB)R)j#u5n$>elVay` z91z(Dgu3_{KN0#hXm*mPNjnB|uR_2`_34+av|^>1ze>(+_jcz?yjQ?|O&y(Jby_ik zqecLqYLdct>AdZkz7&&0{k8&x1o#YC7Ux}XS&TpHE_Kym#5sV{yqQqksoT@{ElA;S zOaDgE34rlA;FklW-8W-z{#ZTSihHN8pCh1O)KrseF4^=Ga>*w70PZ^Q2?7*p#S;IL=#QXCHHSPhoZwjxfH-SNg1+*# z2u0cyoEY^y0h7xef_Q!_xqo0ITIoIK$&gyM7X+U z?j9XZwF&`A-1XKVFUSWz6=&qbC$=SIbjLr$AumnC znGu^95pTi}q2W_K00s!|^%7+0i40N9OFb!Mvd2RShr_DU8tVIDCaI55MBA_A7RS z?oq9$Kd3*Sf6gTe;Ukk#wrkQU>CK$X8+X6=EaQo;8vMnH$%1o1U_i2wwSuGhuu+MT z@dX#u)0geLEsiq8W(g{({`lthcZ zKin`87(u(_vLOJ4hV8G;HfdFiAiI+5)-0j zXR)yw5wZJ+-rTK-i131$G^FlJ9ZsqN1gcrN8$ElR@nxA>iT$lDHud3DFp`-f6#$YZ z?!#3J9n!wGGXy2JvKco`(?E55<)(BMGLNBq!Pvb4*gdhkrh8mhedc#D(5f0}HIdLN zK})O6=8U-~BP`8?LEBCS%~)46_59}wnBOz00IDxDRrT$BZFD)1hQ%`*rPz8@M_F-xZ)4nCiZ3C-WTo-!%Q6R|8#GxGO<+ zhCXAW@gyrhP|oK=q1v*9jDd-{)*maHlc#{9*>D@C)l8`6IvUet#%xCx7Cm&)V9}xz zAo)CBf=qLCvni(;6L-^m|9-CT#8DlfYf6VlVCkT83#!Ma0Nad18EG+h z7+3#{iQus*fg0Jkwm<#{)W{z0y`lF;x>hUx4K=!NHq)5Mw>G{+%E^A@_f;7%ptvVe z#(Wkd95tMfC3szfii&%pZ6A>(dopjVWTw!p)7Q~(25q@&U5^U3f58O^?*u5evuoiK zw1lxkJg4SeGl2X0JBivyS~8`>aj|CYcLxchg6G3KISbj`K*Jbdb7{T45_lcg3M(^y z?=AZtgq64%1y883@`2W%0ge$rEvJ&SyD+T*5l9bFKU_=C}Oain5b)SSxoQy1(6u=#RV3khL z@cI}sZ_JsvyZVgVO6Vg;AX_yX%2P%qu$z}?-lH9M?L{NFUyMZ3r!IsopxrFkMCen4 z`1|qJWmo%N8jlen@Qx$;xLw$eI0M@SKW;H5dC%$#F>|tY^wCS$M+5fO8O5XvqNJ!l z^a+SbI6%`UIrJ&MkC9H8i$Kcg^cx_BJUn0+J^Ni0u-CgWf6*V@IYDq*AVt(YMMZnL z9MgGaetK>yaNN&iC&?R2)@a@sxdGpJNs3vKdcLzBfT>PLdu4w#UkpuURXAThkAFty z%ea{t7MFNyWEm1Jz^EfO*ufy=u1bpXSi_5v?KKulGwGmiGhQ~HvISls8G*QG(o^)- zcH;@w^wu)CrG{|F{E;Z~P7L7YWvD({8XKqZUQ1?X0KLLwSyRhIcPNLLtY>Eof{ouA z$bc$$k2HJN|-+1*N@S2&L$NIyb4i^jIJ~Waoex&1{2|C z4!oAY=LH9yZMdqjAc6G6v;@Pbbj4Jz;kgx(k1p9|ykk6SZ=oVwmRU(x1YSj+BJ;&$ z?PNWbehX_yXt)zK^aLm>2ltlId*x4yuj3{S778epT28_=UM+DPPsBnH5q`3jE%uAl z^x|ofYEX<7M6ep{9;*?VGY9YXuzRcftS`ZZEwu$(y1?X0jhuASBbnmDoOBt+!c~n6 zyS9iT!Im{<2Q`8luxUf+&-Oa@ix!M_01#IcXGXKfztK$&hr2w(xx}!J6OXY=jNoLZZ#&c~E+W{J~zB|WA2WR`G-)h%C(%H+VZ=slTRB(dG=~>l4~yv4iv=H?#xMbazr- zuKa?y>}xs_6KN!-WdXvZ09G``Ct=Ckt*9z$2KYCLxK&b_tH!))@Ybl z2tX^^v->?nG}oqMfrC@vbIMxIutAloYqY^-32pH3c&K!6z~on=q!7!$k?`@2Z`aaK zeE#km7Ju?uX-nU`@j+nAO@zwTWuLlXT@gNMUs=NlEsnvbalz^kuX(}U+50MmfH)au zTT9^|=)_Ez=m57)IrWNquUjlKSdrzN;Gx_7Fi><0-`bMn^D70o|PbVvjuc}j3w_d)uxo$r2PKek&rVfV5(I;ZRrDi)Ir}thsa07DO3qF2qtDj=mm)e*c9OtcrJx53!m2OXUODOTmO1B z+o4TLDLX8CRLT^Hf%Wj_kJX}Pq9uGgL&;vNaBXiDjR{FGKvCV_;afKz2F_xls=!iih^Qc!utsLsCL3$=4{l?=FF< zSKBZ_0ZEq#0<`Zjl{x}8{$)Ku&`7Q}?xMIcAJu{}Y@G4ou@wK3b8g8z7~2{{r=x*# z&F6SlwVocm-Z0K_v`5HZ?LbQ!13%D#HjJ#zRn%h0GJswil=b{2a~adS0*fUfhAGS1 zx=sP90IgYsR{6x_K>5FJbFyUww{k%Yas-wmk813GmZ z(n4u3BdV<4sG%mRyiGJH*#Q;_Bw^YVb{i81CCcw=rb^w1NI8KdwG=GBA-EoLixi-d z(KKldj>^*W_;vXb>pjz<=PQ^^tuLC zBxGf3>Ab@pyuQaCpgH5Aq{j=z&YL#*rkYDR-dTBceU?JShD3Qqsh)#W7zGZa-d|}=sV~j`LL9rwgi8& za0?^t;oAYF`nt+01eeI%j`un0nLU2TS|MQufB$}A)tjwHGe7!{36V0|*)5U%w0WE| zyPs^;@RhYM3xB??hPR~*G9yr$_mP|E3!Qx$+0H2HyH=^^PFhu4Hz9PPqLBsWY*idX z?Bwf65d~0N_|j~I=NhjcgvIC>n^OPfDK;(B+l?e6U~o&9l0C?O@KLAVD=tYO4_{JH z{oNost|@J2`T>4?mZOeu_ooN&!2Mjua4U8`zAVyh)DGSI(0!WOdv9V`yaPg5GOfm_ ziLc5I_)XKgX=~(e4o9pt5zK7^=$?B*eUh$?LJDa*4%G?we%Wte}giPLq_-hrqD)A zOtDqDf}A%LM6RR#sxLz zSw`V(&D+yh98J2~PyMm4QyPP%4(gW{&sUbbBN5qb1y9@2ERa2OAJ<(v}j=ytRlu+30I7}#l*eZnKbjByR$va@JoZSK8a*;(LxPW9Y7 z+OaeU5PtASalE&dICY!Dt~gP^alKE6(>5|SCMy2M(b^VPeY%rPSu5>3@(h z@8~(ml4VP1vHdTsSb{P6*EWYRRpG7g#q@sNyUl zTu6HYWeF?*qgQ;f!DYujx{^8ymaA}jMnE73?b{Va9SgGkQu*?UCi);x(V)599q~B} z*?S-fJMMxz&ei%a*|G2FJjK#utAZf33zQ*raz!k*dXKRVCtfaCMWeW1n`o~s?s(}oS?ghHClkESRD z!qm7Dq6T+3ZKX5+Tt|dLO_8q19|&oqUS`+STZ8PIyC*$cJrh+0vu|0;nhl~H1HP-G zu>)I>lfh2j6ruc_(y1$QNjjxM5y4c#cx?&0i@nV|*SLy)yisJg=S0ZW5!HAG_v#@j z!4>x9Qm&7K6taD(SE8;Q?8=S5pc<`eU^Mi*}~>qR)w%^N>f@R0zoSZ zsm~8m^Nx*I(~HQhj^Rz((2c^O1nZp_`7KMpEjv!IN6wM)9E*=OwZDHqys9lo0UbrK z>#denc4l-J1l@wN^PJa;Kh>lzYV?d`3D^8O^r16deSH_#Z~ABiULRXBkj+_=;eaUp z2daEEK^xx(sdoZpSSN036O7$%?qYJ!~ItaWfy(c7ZGiqp?kKLc1(`LI?54%ydznX9==3 ztW*Nj&P}n(Hx#?*$p3Iiac3hGE{9gz-)#1pt7BLGqp)f^nMYBWpcO#h4S8=KqG;{> zLtvr$`&uraQ>j^3sH#YFxv1nZH)+3 zPfr(R3j2%h(8ks5WIER7x!J*M+J?RATUVj-r@f0227Mg?NzoUOsQ4JC|qc< zNYcnR(H#ZP)Ze?w*Xkr)Id~gk*^Z(6*ukqmSMRhKS7=Mo#v8(lptkFljFvg&J+!(66#WI{ zJq8A5w- z>niGqpzVsbXur9$NTJ@HBX*>ZViET~ZC$I`vAm~@9KzT4Luj)4Baf-_tb#FD zR#lCfmA+S;cLc-1e4p->D0kxi(oy(~_H|vW=WblZP45(mkfYJCW+NGn;(GoeG=xbSsv5!k2}|O^#;`Q?+t0Uo&P3b9osE#1j2I=R zMA-!RI{LTMiL+TburJ|_Q)nca(4{ztoMPjS?kQ3gVwPFOUFcEWq_9&GY9wZV9;^kJQ;`J0e`%1vf7RKEruhR6A@6O*MN{50^rmz_@V`CvXtr1fpg@oItV7Fhh>0w^;%sNbKd#RA4iI z3@1=RI00ja;RG0H0RQA7h8YBZ&3LqSA{UM!hbzMBHThd94gsvaP=Wz!CQb;-6GP3; zJ@FvC0 zeTAmvpIpQ+{W;i&S)_g=n0zs3Q;k5^Ej^im2G$gN^bEj%HWCqmwCm-d6ar8A*W z9;WdeY1?!G^Op9p7)DY@LhTN)tcz^1OfS$NKdXJtfL!rrdFCDP*QJ8Du*fLd&>)jk zPD{{rhHQ!U_x*U_ezCK`qMGoN`&o8VfNaHb&Y}2QKM5aYr9$N)MDIwyM<~#Uol)Zn zFk`EK#c@cB*pn4}qjV=HhG4rcqxRN zMIvTltcf6pK38GePV%)nTl^7)2%rcNx6H^h99%ZnOscH`!edPHI)=!PU`dj?3(OjL zz5t-_P;{p_q?ufObU~!Ab$bX7t{d=0hb@*xXxH(>1O+P(LB({xo%BadA)G`=EL(lu zZIZ#!ByoF4$zIGMVyB1(FTeq)3;e5y+KeuWSmufMJ>m*vIU{LxQ%-kLPf>wubDEg+-Ix%Fl zZ;0g&hGLUir7;*l=hgXVQCpl;Yh_zhLd&uDx?!uPN5e%8+1-Ow-_TIO6>R13*${S? zWec-_^1M!9bY{Huc4lf0QeprZ+jK^1qj~C#{BJxdT+V99;z zWF!z6Y{lGV9CrYGLlGxNj3C;KQ@XIu1#wt;GmBG$xo1RrMY%GuoX+^D)zQpWMcJHE zw_b?*64sKS8hw05c`2ZzN~#Mit<5aF{Q*er2JoAD-}0)< zQNKah%^FB(WpS5OkG(H!%0ch(Ei=HG$y%3Y={Q^5CttV;-1Ip{GHZjim|_hMORNo^ z+HM$=5VZ$tC=;NgH3u+5(%FzVYvY)NDfuDIdk}NZ(`Ql_tAtN4WL$@U6g+IdApFIx zb*bR3|I-izafX+fqybdkQTGz>)7GU@T|bLXLZ@%&dqx<1&Aw7L(%>z=viN{*Dh=}? zuk@R5H!~Ps>F>2%eiDge12Hi0o~(<-mFz3?FWTM4S1u0lT8(je_(~aOWpSTraLHBx zX}*AFQ7zJ5cOcyt&}{NTuNX}GHLsfEYMdHwW?bHQi47>_-<g@}O zxt0KW{a2_rrkjq{yZj*f1;(uXM(J2KG~=ia6ITITc8wKxt;Obr2#$iJ%GQhsX5M&+ zsA{9sbv1a5p9=2vM}Y`nR~W45^&4cT{(2KUbOL#3#;us~>_dOnL8oq1VidD#AnXpg zVs+RMIPE9lu!_QYurTcS%OI2~1E$&LUHdKE0Ff$WfD6g|V> zB$hFQL(WWt%+b)Zj8pNoAC38e=zai$TL}*h=bqNRgLnLV34!ct-PT|YJ{SPM+L+I9 z(PXXWa67`P}|MrOBgl zg7(jrNmr2mar_M~lQL^gqRPQgJr;sQeozRmEwscmaDoevBn>`##ptL!5QumHWP@Op zRinueL20jZxcOQNqJD)eW}iy|mcZCR%n8odoM2MG2~Y>WAS3hFaRMk8jDLnv#TZ63 zkG3k$$$E$gM}Sdpfp7x=0znTjOa*%IbYXZHLQaAC^~FSVg*dD?O^bm6NtLAMB|!$8 zu;=0*=}h=R_btf+Ct^&Y6cs$82eQE7N9=+OW$+Q0432(8=db))Mj`tV)s}_e+?mi_^)m|*@;>NY1SH|Qd1DH@+fMV4s#I_o5LQl2INu9 zVF4=G+{SF(8$$i)*Ig4rM(`HYUn!}yocnraT=-CRiJSWFsdkY0B$8umy0#-v{j0*& zw=i>bcb^gLJvnh+ypQD4I<1}F7nyxBkJn183%Fqir8gUr3s;n8_~0c>l1J0!(Il<( z6$zv|(6Kczxs#_zcBtTb@J(Li`>3xuhn_(Lk`i|AxF$PV-a5_bmJRvEi=19JZ05e6 zYbvhG9;&{UH%Wa|&_{hYf2jHh6FFld7s!HfGo)^Gw}x=4o|yGY~V3}na?f{LK1*PGd}d0!|rnChMR}v;h<71 zv@y$MYF+MBeBZn$fA{XFK?zCUV9ADg2X zR7tCL_^En+CNaqC#YwdOP|eFPFVgvLac2)9rzP@1zZ`i6hWnZ%N1>5tDi=hMz1kYzQT0lMU@_C#j&|0xoXcT(H zW3O6W^v)FeA5H(pTiEZcw_U$yc)A0s@{rNpcrN`ZC0`LF6uv$WV%!B0qs)Sx+0@n6 zdPLBgsK{~vWm2LHybLt&9jOA-4N7xL#VLo1c^^#0ojq*co9Ee&q0~`F-A2V(_70>b zpksgU?P{v;K7TJmQsGb(sm>;kLo5H2Q6V^B`z};M2I{o-WSoNCdNC-Kxz9?!>}@|E z62WkYA5cS~pmQZlD1@GASuTUNQ0n46S*?Cq4P z<`>fQ=q2aKank@qRAYEOgU*_U99J^DlCUTC@ovGJ70vd9{`WtywRake?x9@UaC*Ym z-gjnAkMpZ9(8Y!Sv~V9g49%Sbkow3TN+9h9ETPE3>J{EuxbGJ_om;LPRv*2e&5o8w zr0NRH9?OSpaVuxVIfn$dU`bHm6-qyoTdEhyWTf1JY9l6sLC2x4E40|5l6?Bcs`MAh zF!_AC7qGVg3;^~ecSWlwy%3=smI4$&UQ;Il%MngspW|G*n1ZXxxnc>;j3Mz=6;LAO zD~G6AUu}Ux-RqpG_}R}d7gbsl&hvo%*`7h(WJ*hpSzX1YaMh{{C!4ZOT|uY&$t21< zQdIRcfmcZDin062dOXl(F@@ed+IV_0dsGW$!bb2CjxJ)DNL5#P2|7klB<1J8(FaKMA3ySe2ZYaiQVjkjgHascFHTmM;)f_XJD;Dd_7xSeg^Kw=oav;Y9Gd^2|j)G|CRA15z~Ly6_V=}ehib^!PJA^d4GAbjq7 z{m+cu{owJlq|DJI&O*679vhkisvHFB($Wzq8*G+0ldEM$Q=>re^?-;DyQ4|XU&v(% z*f@?f_A84SMFa_X3AqZ5!BhYW`%P0@kbG{)<%jUSkd7IiTwLZxMD?fgW^$E%vX?0c z=|__?4U7G&mxBx{I80@u5ZflA2iRL|SL*>QQcDEm9*Ayn`x`)Lu06=3qg+I85O`(? z^5|z42^r8w5civ6bi}r0MjR`Qqp5b`l+Xu;Lby7l9Bm?1M7|$x@^r;oy$I=gh~{-A zd%kE-{04T9?6}<)y*2Unw;$OJ{QI^h@o>I&7 zAIP|`fgI0gsO&q^0E`Jx%>Hu{NDkuse7of(Fr1#Ea;ia`yx2t4hIs*g%ZUK$ZUO=* zQ5zPvE=`SJV6iX&6}L-NZnQNRigKgqP`p1?Pt2pi{DitfDm;8q#`2O=IA$0x45p)v&)}>5hki};UQ9f-Z504&e;D8Tr`ZE3q6-wdZB=rGQi@g;C z8W3s@UdD&Qt4x>SNS)Cg8hnZOE69|ok3_xhg+m4aE+|W%FOoi|Uq9a98A|?Q5cE-z zII0`L4$*GN5d9Mr_XSz(rR_;p7Q+a5m}#I!O+*o^x)F<_Y*v=%b8WxbRghH5;$uCoXahuEvXK(1k-`UoYhYueEim=RiW>d`+(z5!Om_-Id_<}K* zI3n(tX^B^w$8f%a zC3!y=8uK0kE8&k>@5Q)JbP8*+PvqH^hjcFh8v;lsF;MFaC6ANc!-=n`Oh$Lt`vsXd ztWArBzXYisQMSDAYWidL=vE_7y(eu}{A`ct6)5ll&-J*}Z86H-@s`w*l?UD_`>1z? zrYqpmz*l9r@=*$#+kMwH7I*8K&_S^4fsv_v@gS+pacd$c)9RzPC+edPC_E3_#(iCNH?ar^bTdLN-F>N+#&RULP|$JR z!P`Z5&9(jMW*-}=73O-BRQ{rc{GPw1DVeff_FW5-1tfE7!)H5(p0ejG-9zLhUvSyM zt`MYZAySoU#aQ^@_1&JVa3v$}93NVRyYK7J4EvG|Y}v}op=GT6D+sfp$_X8f z)Y`k_$wZr|h`h!? z_qzksLP)488;2&i))PwF`8qUojTAvgKt_sy$}q4lxS@eLq(MtAdts02%1tp!*89Y_ zKvaDEMnYFg!&{9qw3ao$=7LpFKl&Nn!KrP|ne5@Si7x<3IWW9pzr>@As9$yTSH00l zm*OYN{#l^)PyFBZbajOU*xN-?e@2e1ra$iOQw0Xw2t!Bnnnwxl?J`@Q6!Jmji^ErA ztYn;s?(IA~sN)W?3dPx2NJ}VYgfTakf&tEGS$UIJFNjy2Kdwq9NPx5i5T>_&oa0E_ zlUWcF6K75Mn?DxWSU-+8+BO@nLQOA0HHZfyNECi*{Ww26+hWpq6luJ|UrHJ~+E%L@ zL;dJXJIHGSjX!s`EyubCaW16s2LH{Z@dVpCyvjbgSqe`+xqjTv=-yavK&q2Dj&7^T zx`7ts`?`y+afx#v!D@H0p}nQ}v{i9{U5G4gs26|K(_&ttyA+J>(fZ>>RVRdB1jH=Q zh%ufQZpm8?=JpVd(TaXxZii$xC=><3<`@RnASclysGb(U-PuI;Vy?5r&43K3WB<9d zTn0f#dW`Ud4s5cqLWpyS?cjOPZM^zI>Md?F6$v7sf`mpSxH)_rFS1(iByHAoK|~V8 z{7OZEF8{M+cjuGc9k!y3z44P#s~6IZo~h)HU^k9^Q1JkEr4zQ?0?}^zC~B)i zV}{rOGFFTR*9c_Cq3vr(`wH5=5=0Dsvy@?!FpoWLL2A9G`ks0b0B=k5uLtRQgiTrH zZfaZfkpE!V)ejT~0MDfO+*ajXH zxT2y~cljRjvH@hHIDDDiD16e-Q#O_RhVrtg|Kep!C^vA5)Mxd%Do|^wqM@|<*3ir( zd9Fz;MpEP<4+i5xVlnDVx>;Tx3ad+O%cE9Mc?lRt9ri9)ai4B0x~$HX*%-s>8MW&4 zU^S?4xEG}pe&g5eoQlt!>tSLsYP|=qWnOtWAGLbaR-W^bY3;YV;tjn0)%_Bd(bj?6 zMnt$~X98t)-PF&JGAND|S#_c;Eaz|~uVN_6#ul(!O%Ci2P(yWTt9>G|QRLbJdtA_> zDHg;ZW#+BcS=tVbGFxN;wR&-14Zdg}2QUs3jiIN=KF%%J8HSwrb5Rd55Qv%1gLsAV zxNixMTlg`L(;Lf(|AWWV(C-KghXMYPYLhn9uj1?I zR6eoN8yS3$CUYiHH{hR=YQx3iGLTd=K&Oa)Z?H2JR2g(3d>Jnuafx>mB-Mr=rGgvb z?#wk5-5vd;%cgfHs*Y$s7GRY`msvoPEZO%)AUJw{Mp~8hGx!l(WdbXMu1Ztl z7k*8dmy<H-ggx_s&U(!ILdkq+R_ z9Lb3Z&KmWXtD$Thq=a#UoEG|w&>qzl!b#n2bis~3s-4tJ>351UyHmEEkO~ZWl^5`y z5x~FdKsjmVW6q|8UHUuW0@&gGmvc_)vRrIofN-_EoGHP)3&;ItFBN>AX|W3U7&P0w zTns7*BXXoFNCl`MtYJ5w^3Bl(*@V=K2oXtgGmxc&Ma=J%L#_)DK@78~j{d&=V)#1X zj-a=F;4*R7h_@kTiN(Ay7J+NFUKY~2~C2~7S#t^_cN7aE= z+c-4d!-x7OB2ymo8Pz800(w?QH&IVU1k@wS0Aefp3pQEYN8Jk!4L4iVp{4|R5>E1< zj^($-&+K@ZDXKT{aH@Pre~AgiF%}FWoycD)K2J3WP!YZwTI>av%R!ZaZA6G+_e?LP z1;kN`hCm7~)E*e-2Uy?NMo}P};tH~XE73$bNO=&LhjQqvhC{W0^*9aFpa@l_eC8T?O*$m~4&Q$qe>)hXer|Xzx_U4B84e;K$BJzl; zqk-R0Bj2I1#K>1epNw@GsueCo#_dsRC0npVqq@|4 zkLow_|$y9NbC4j^QnLU8p`4*JhzUs{c|>iXB3@5SWa+W>d3r8fzbS4b7ys`p0k760;Lg zZrUu!&QiY;h7@$7eYI+{SFKv>f%1pA6|FM{&^urhauo+0K$hR4_>0||o{Ti}Ug64` z$W#%d${geRxZXm!px?LN;r&n%0qbqdR63(l(l3+PJF@fQ?wR(@O|pZhI0(^WFDK3R z!urzgR|(AKjks~aKe>ouCcm%{^cu#&57sA zi8CsVW~|{IPNUX~Qc&JFZ68}a@#Ea=(+Gwx1qwQY4jKw3d zN_wGvJm4C`GVNzXd)&r(dX!>Zre*l+T@*$(8KxbqL?;j*SMA(8uX~9gU?g&b*D!jX zSA$*(gn`)2Qly`~IoJd>P?)+~D$R9Gr`PI|((n)>7krv6_V~RwKyYJNBguI@DOH_G z7US=pz(4~U`iEq=IHz_~D)s=h*^g>Bjw7`j;nT?+0AT^a4BoUr-Ay zQ5Hj8g1F4R7vd%yELcSx+apG!He|Tm0P>%7FQI^GIWpM~IV5XcQ8Q*t?<7&j|J2^Zmcq$x4bf?Sq7c zuXP%A$qS-}i41?tekzR02DU`3+N}jydWkrELNjKpCh;Ax$Gu7&;>EP)Tx6=6rX?;r zZlB-*oH^}V}PF68R?=F$}0&Ku7QYq2oW-(*I4~RcFEl5m$gBZmA5F z_h2*$f>jOm>x^uA?0hY*_GloLl5cC2ptPX4ZqjU=sic-4$k}=Z+Qz>(R zEVyc1a2IrW(*7hf#1FU{7oq8ZqrfB-$1Sj?x7Ps_9drUvbO_Gu&A7=Jd3lB(RN0GN zkXa?Jh~fhZ^dIjISHGJvgaS7ZCod7;Z^aU|*unS$Z9QSFKxXN@oJwmlaH{WUN#nc^ zm9}0(4C4SuTRw=4msu5rU0^2tqgG_$&bK;;>o-2|2hI9TAnW(pO1gg6_o5roMsS4+ zbVyN^l*$pX@`yq0ihY?>u!)K#eaK228NQ3T@de8U*!Ay3%!Sr&O9xcA0SnWv`vl29*8K`HU$wm7(XAK3#r|`? zs;hFU|FY?q!CfRm9w5-e2@)-1022w>uwsehC~c_AieCJ|j0h^}cpB<&g!~Yz`V?7n z-AIbGrVtQ@{YdVkI57ygf*Is;J6`tZaz)}O!uy3saOW_LH}P}e78GyS0oCPL6a!gk z(op9swmjR=%Rv;k^pMWcey5oP zYQ6jt4lt;{j?UqRdvI(4zbp0Hzpqj>#|ELjbT_3|@mMHZ42&FgEkGwbl-fhM!(dOl+)*6rqAbmba1c0~#A)BL4?ou-I=3^1hDozJwNhA2r zAN4izHC#DV--@raH3fa92~B=yyl0E{Io@O07{0&wBK!vb$whSk|BrWT62ZgH$tT7k zvU5s>@IqmK(D5~yw4e66Y|R%ph^z&S2|Ux{-+kGo?MuJ2H;Wml>x|OZer2U4_A&Sj zn!%D%Dn*9jh%kXikbiO!!${%i<9gR>Ir`tSvo?LbMwS|9P53CEGO~K!Y*T5&giTBFbT6g4@k@OgD6^M%fA` z51J16pD`jz{JzjXXR1l;QggMgks(m^#rrxLh=yL47}O7u3$fI&|S;r!x)H2j5DnsGyr(@&_e?P9jH!D9NwWovzy#_? z>Xey7q{XrjOd)v!5>+K*)Pmn_6l-|yQb<~yFZL&n3%)p`8@!+8m_2d#T-aB#dWqA9 zTCU;{?|)`(1I%u#V0KD&D1?x!LZ$FS=6ni#d+yuu)j# zWg-^x_VP@lU(8C438P4XAdLUOe{vDSc*AF#@d^nR1L^DGKHYq({J_*L2fX%~&n!6L zU1RS1>cFgieddhpGuQQ?zX|_9V9CK1(pP;}OAqr81WWtz%|oOz{()suIsd>)=>`6Q zHPRCPfzPE-pgTCkBFF9>5 zIeTf$s87e*I!MktNbDRX7ab+p!ZA(~Nxnof-bqqeH}-1%*y0SI6ua=b?uHNREOlHY z6(Zjh`>el94NDKZ#CF(JOH+~@dtSI1EzbAXag{Vg?MZU#`A}-~N8#pJS4mTpZ;H#= zx$efnd1J_3otZ6FOHcizw z{Y~36U(>XCwC1Vd+NQs1o91eo%C$}Xv`ueon`Ud8Hrr~RYNu^lscm{u(^Rf)D%3VD z)i%x2G;JQPd20L58oF-PHa(_kD%Uox);3+IZF)r0w0W53sae{lpJ|(ZrD-bHHcizw zU8-%GrfJ$dRP)quZPSI?riV05<=Uox+NN`~O%G_AHrr^PYNu^FL)-KVO;fqHsZiV0 zP1`h8)3kYz=Be%1HFSM@K{HHReOfK zVzcrSa;mycPJ5K2$!SX~y&E}}oVMw$$A|Ppjw7cX!^!F99kcPYxOO;s#dhUfa;lm} zPTwo%lhc-!^ls#*5*YrIWX+_Kjc<0spRzBaeDgBhn!Xo`ib2AP(@CC2UX$eqt|!HX()JV zWgh#?9?+{j&E)E_CAUbUxA(|tWFtL&|B9SGJWfyF&BxPdpX1~O4X=a9sbUZ*4A#)S zoSdc{r>Ace-gk`cN@uR)p2_I;Wat+J^l;cefs(XISn0DO-{RY2jGkL9FM}& zy1S6i20+p`Oe~Q?O5Fq;$K%m>@6o1U9H6&iax1bI-YPyGgSR?|llibU(jDoa(dJBA zcJ(2TzID8Yyy=62)Qem1LE5~e$%34Xhz%Pfz0l{nUFl!UiMA8QuNCdOXqRH)kTZ&&Fro@*w}y zibbu;U?G1ggoXI=S3m^|C^C`7|Gb(X+RhIb>aDZW+bGqG2-n-3s<$;uZ+o>~B%{AW zsDHvv|75WKsc`+Xsruh$>3?6Xf4*J+f}O!dsX>;XL2kG~eyYLcEQ3{_LCCHYB_t|0 zg}`4ko}b1}M&zb||CVtqbpZYmlD5Z~d;QKXX_X%5YNG6_-fugSPF&TCRVIDC$za*g zB;JpDkEf;RdK(S%PFVpv^gO~ER>ILW!g}y%j^>)5=7_R8yz8sE=B+uJp*ix>90hBR zJT*r>^ypAANZkqZk>fOFau_zwVhDU|Hg&lVBwE+{ zKfu-inkxM#7cq|mK>D-}anws$>PvY~W6ar?nZb>vPaph- zauC@rMfm+w@cZ$IuQ^JXthu&db40Hl9*PJ>d2eLeUM!cUGW?hSK{KTeuApErbCV*8 z|3$M54b2`9!ahw@6J{Era5rIOpp2r;MF+ka*O1442pA_87&<>Y2rcH2`H5}7E+#aZ zDuXI(|1n236w_!rnwnzjI%#Yi@nn)wzMnDul-YSds-Ap%geYM)G*8%7#lGfCBDGFS85`l-`c>x>)OA{T~U zfY_%!0o*u8Mi4~nalotW?!v3|uzbTUFd~a2?^6ZkVCQWDgPk#h707bXTKBVQsvZ(I z>ZG09X*;)L!g9#e%U=lviEKIhh*Mi|f4l(X=lE)XQ7sKVg5H|XP7XFny$PNiK8I7? zk7&CEXyc1s%blUaVDz?4yor6h$)9l|P=qI-0p(h+r$&SVsr54Erm4#ie%u()ne)rn zm_h>JRmPYl-VHm{+uUzJwVkJ-APAJj@Ls>#0QsaCr@iw}g5zqJq50b674!{ED-2+@ znUw&k0iVu()um+gptLO*J!JYkFfKoumiP!V1l{{TyuArnQ`h!Bd=df#5+D(bAgIBq zs6oS69HEe;G0SSGCnL?#6g~7I-sc2+@9poq&+q&Gf1k$(I5|0IpMCbQ*1O*IuA{DXiU9*5O7wKVz{?eG zJ~X-`*AN$yf`rws6c)a1hMx2xNzSM`75xeXvib6vO9-o}9tlImxAVWGNIlRu3yL)@_g<3mE`vn=1z?Uzd zu;L8OH*S4MQI;3vwByt2NI~zn?%gJ=q12uErTB>Nx2z_)P!MQ6LRyP~$S>VZq|?rj zbB?ZmBVu1)yF{Shl0Y=S9ZPMzl72%GRo5^oL1xZk`UQBM>fCt7WKO~d{rwr&#^3@__B1%7gCD8en)^A zX&veVc_o@cU>kzU-ta2PzbHAw`~<(*3h10hw1UHD{)%<~U2Nvx>IU*yeFj#S0RRm% z!nHg^xRx#^Fu}zZ{S#a}9nMe-MJ6f%@;ZcX%||m=FJWl)Bg~&pL!AUkhTfh%mL*NS zj+jWTpV@jX5EP>@sFRWW$xdaeO0vWuYq;D3)vBQcAcRZClFPaDU(Q|x#gr-o`Nv_7 zSS7!Sw5T{aZy6NTqRR$Em3Tm6j6aAX0&0yDljc46Oje~E3NmO5eor+Z0Y@fb){@+A zqTvv{9W)$->2wYYV8IUKCe`{=BV7zA_xy|x6E4UWp7k9=T@_4AO^g{JT9hFP!98F| z!es~lau}&uO$weS1`6MJ5XNOPsif$*^$>m}Jp_9`&PIlr3;&T5fpMQE8uxi0D{X`9 z$hp{k?$en-QWd$J0{%T**tY#^vD&jb`WyEEe>a|V2Lww|R;53B%Z7cTk7L+&U=ll! z6A~>T;ZNhyJ9q3B$+=#fe=Ip}_T5Yx{*fBPKR`Q%@DDrBJ8q5f2%H`BwR@ny8)BPW zc$cNq&3;@$h$&K%?Qj2$c=$|Gf}HT>y^^e`iq4sT4ff=)!JhAFa3QR)zA-ra9GS|G z=)9J)6B>vmv!RdrC>t)f z5b!G#C1;q|OmMEm6I@FI$29)VA79ZO+u3dVrO|8kBQ_fcax&p3^FukTi%J+sD%Ej#_{HO5o8;-CUf zK}Cu)wV+=Ift$Ik9s-P2i33jB``JK}0;!WcE48&~B67dLh%rEZHy`WP=rc_{dNx?` z!bLHzz&nPI_Gv-SJL|{&rdZ$4>4;1Sdtq3koI!%%)eI)v^q+T*TdD0uKLn5&69?O* z74n7!Itf#Q!r=tH%(8&$@xZPYndyB{)IRPEfjs?GL#?9Q^^#OAfKIpcQ;2p-YglgT ztba)MACj8`g9~mx4$_}tZe^)gTEet-Q|J4`va?mKWI~~!CEqx<_ff*wB{pwrFRivmrWpBcXs<8mfK1;4Kt=>>6*DS+UV{4Q9a@Y|Pm5 zp!_MahVUMcC>bg$918TwV~m}r$zWKSdZLj~ZaD(F;VQE$od-X!tL)GUHek}z)r_uB z(}(Tc0xIZ>8pBdFQu2JxJ3~7X4FBMdg&XR(n!bfM)XMeN-ErpoT?_r*i4z8e zGlV!dKMFcqIOWMZwn5u534HmuVvmzEDbWm=W{uk|qu@ zbGE-_NY$@Q@C$hm1@G?nu98&X;;1HNR}X6}QFY+07KAIwt+Z-pQntTKdx;8rN57bd z^-hQ9nnHyZEu8PtRiY>7$AkwjOHK*WKv3Rvf@@ElzqSrvo#%WNP~@EF8log)7*!9F z5=))i7puQQL7CpeL{KI`JYYT;BaOD}hFI?rh5@Enn670CWoWbTp3rp?)c#eaq_|8C zsZZ)+37s=<={*byUDPj%!g3M&OLJkpZMK6ke5m&-nnC+P8)MoLCEq#1J{fuvhIKOV zw}U4@lwc6X6*9(vjnw#4kF}rbI!&!9ZyIY^4ySCP;eJ&-0Ny`rdYxqqn?SU1Q3ZuO{0`JP}B^Wjf@{wIP8E zB;+8QOj6TR;ZMZ!A4JQ}lalf@4a)EItLRPVo-og#4pmxT6k*6?A%yr#q&VB1s==o<}Ngm1J@0NtIIY!CVh%c0JW*^L22G2|R- zNXSz?gn_Rx@*5B&+Pog>uT>`FU3^!5TP=reRq&?3L^VZ?<%k*x8^>Ll3Xf*6m}tWX zjN0n#XvnCvg=z-^tacDTT+Z-CjPTbQ@ESE#POtBxk$x8zfh-!*%*1TO9@5E%0#TE|7n7KIFoSFePAg)+x) zi@aKOgBurppI*+Ah>LrcUps}#gOGFjWcju4Y5M6kp)Ly45itE!$fRhsNt$U_3E7B8lN|*&K-Pf`J^7_4Wy+^*h%(`O21eszbHeZt-^^uL z$E*T987?SSqj9pSjDw^~oEQ~qCv?%4wttLE>-&&?;`n0X`TjEOOf~o|H8qie3kkesSC|W9=;Vpay|rYViVU z@yuNDh_G7DbsVG2myEh9pr>TndAk8_ z5C2FY7LlPlU>sGUPM|t_%?~b4ZsDG^;KAw%dsuzvqc^#Ruh#v+HvF^1j-nvYbP8U` zsykn4Ac9Z_LFx(2%vB-+x;)O9v_+$t=DB5ScPV8yZ|RupL!_Z@O~AmqLlLe%H z^oc93xLZ*7FSe8Ytu40KT^J%gH}V3gONn`N!j6dt*qthpsA4KSGEtKI@#=}#!(Dyn zXjui zkCwnmn-kar-LgqUtx)u3$1QQ6LLir}^S5tEV{D`9+yhhtO{G_0!T<@dIB6K|+Y?FS zSfoAb6AvKRE*ZZ{kUoKFjydI?;V1dDCG0p`G~)_T$vmVXri!T}E*%o{HB!BE_2OOb zHC>)*J4pUy-#6r;8t=}Xj2+)ox*p|`BVqnv)@n}29agM=Tjys~YhqW#UGC810N>e6 zbz{rLaUPx<6P#(&rsxj4L%u1Jf8$-L9In@aVbdw!e3#>0I!c}nEw;is)2;3a%|t(_Q-{RciQ=ZO4^mjUn|NmKH7XVwcy0U-f1kQ9g47co_+ z>U6b3l2ud`-<+XMOHU`VLCIhrSX!lSMT?ekMZa6Wk6;2Ru#IPhk_4NS!NhQy8x}ms z(zqqHr){+6sfkfmR@68ipgIG=48^UxfMB6u0)Ko@xF{?u3Z#WdZOpK)Nz43I)%@3q zG42D#xJkYb|2iWda>ThT>Kdpl5To^Mlv)fY8md$5!N5!oM{NKs^u4I48eMz4k>F&| zO$>n+?{RES2=HWKT^bdBpx#|N!#`-9sixVKCN8ue#8oqnT_sI^?0S;yp@mEVU|jUP zLcHtLYqd(-L!LE#^Hd`*?HlV4pM-rcmP$bs!Cj+KohYc4PrIQ^?pDmB=3;q2&B z?p0eHzpIx>bES1cn-yQVZ@~K_o5P#UdxIs6@I?>65=H}D2B<0^6)QueQG1PZPjIFS zT>rdpvL9#!CPASZ+%e(7;9ry+DDLo+AI67~ z9i<#k zT-k@&{=F?#Z;}MmIzA7W^>^H@ldVN-9s2AuRr^g3q4!p?9gKGy;sp$qJ#p`GvsQm9>&`omDR(@7On}m2fMIJTth~9a=o4u#=@>&GHy#?s3drr zTC-2l9T?gu$?$NlNb@P*9W$bO^}H%b(>SMXg>vR^7aSy+8@eZC9nTeqfu+5Ze5g6x?0ig zBz!Pc8X^hNh>!2A1vx3?ly3T_7PTC2jce)u6uN`_i;^=;2`pN+f`w##LOznGAI}nr zyYO=W;4&df7@S*eo1jjw-%}E}*t$;TAhlW?Vn534zrDl&256lNJp-NKf*<`t_P$ql0vg@a+~m72s1 z1Yor$W}|tERn;M(3mN2wY}3s!$(uXur=CMzWjgbQ(E#4Gk5!HIE7)`t_L3noT5Kc$^?N6KW#JO}uNH&k?#b{YU0;GbCT zMs(F*OZ*Z02-RvxUz{se4-+LKgmq`U_yg@fQkIFzbFNv>ity1vI^;E6@ONlK7WMw< zCxmcHq70zoYiCn_t12@8*0r!ixk#Ib`ZY89ZcFqr;Kgq}j9z@;0L=J2p6wr3TQxS` zCZnr3y-oI^qlrsJ3DZ%6iTnWc7Q1zNK> zc`vR&mrIJQp$CeZF~qg>O1ksFxQGg9BP}HQSy+?v(w`QUIp-}#glX$2LnthX4w;7S z=@C8S#p)HJa#tvlJg-+*S(+|QjYh3zmEbpX=d-5oLy{)Ef%x#Q^xvu^S)~=YY-s@^ z309D2Xsk;K68WBSc3Dx0N6o~DEplGT=si}Jf3uq{>${W@&xj0#h0cZLh;NsFpyQF zHQQXS9=1;bT=1YN%#N(R`pX2bfdO!JKCINqS)za9O1;_@LIRbV-(k=D2(B_Nqhgoo zI^2Scm5|?^EcqZDAqU?+EEoFT5yAWqqAD_N2hCc*PMfY#eeuHI4g(gUAy|Z^=tIZU z*9yxF*CFkz34;u7(l0e|w=RDrlV(HE%A+`Eiw^3a&{l1gJ;PSNAHY^e&uoLFNy?jME-FDl@j4IdS=2;bR<7EE9%WDn2R>tJM~ zD1t3YV%gOUAZ04Q#)fwt*T2mt8{bY@UnYV;6qWTZDDhXh1DXMw<(r}x9?-$>5}BXZ zJpilmmaiF(ll;>)DYP6UGl|DAuTVT-PsefM!QT#WrM6Y;x!#AsV>{;5vMm1=DB zo>0w}CCk%woD!RW^MXG3YA#M!%H}lXm1mC#Nq!LYr)QK+R5uL;`p@cMh4H5(QGt{j zW#M&3YwXwUuGK*`&61XdyiGNZrD6}(wtH(uAGT>jA|$$?vxN7%M^Z>+G^0!x|y8<;u;=L zvLmiS&k5dniPg%PqX|-R`Pe1cx}8JnV%8fQd#(6pEmq4bzE6HU;>?dztXsGEo@|_l zAT8?C{%;(=VuTH1zr;9E&doZXt$plHUy>xDZJG#S+CWl`vuQ20Hj2U8$h(fOJ*DFV z8c4mmtA;8;gHjM!1y5p65zn2qZ5KCi?|=L4N8@a#WcaYq#g+0Q4gI%#b;TFP*4-?B zNTWvYx3M|bdjOf>zV^pJdAjXW$Rf<7aMGI*)Tei#K7GlB22b;<=d2->+~7jqV#I(Y zUwV9^F>Ua8u{}PLRd`%ch(%%aU*_M!=h=MMTX7^9>Ow+6sf*fgjjg%!oCS4$c_<|= zWN=G~4|VR7c1@$G)R*};=-c#JQR+TZ@2N_A(cs}cEBdhe#s@)JEzd2Jp|FGf36wh; zf`b9e`1IgScegxpO=Y2+pUDBJM&$wW+<9!xz1s_XJ$80;)Zati~v25G5R#gg7i)MNf4@paq_XQ93Pxnmwy*;dAM`*BtTjAw3V)e z;u65H-{x^nqp)&&F;Fsnt?nzfA)jq@ypwG-C=H!o*W**2d z%O>Oe2mBx~U>v$h?Z>hak?MFf;Xz<%*OZoZR#|8(3UjaU2q;+2vL?S1!b@_t*=eA9k?-Nc_(6D+Lo7n9b7&o{t+0Cuc{tOV@X`l2Fg$L6Bd z#(y75yw|T__;3|FNkv?0R}13F!o!kW0aK8fv8hrBvHc7^q)7u`$dsp&5R2h8#a14K zT%yKK5-uwEV1xRcx!Ec6pi`M1PdfQlKYtWx^2oJSJ8FYh#l0wNj9WTn%Ck*9VVB{% z$%Oi&fGl_d9Y;k}MI_TzgRP>=oR!hnFnl)>t=n9CMs;>iRE#nON^?8Q-5`)=->3{0 zLIS%qriK){HwpRXf^*0_1sJ^W6q@N9NuUQzSuhcSPc#^dZwq}ed$UWn!~%sRth7ED z-U%~!lAun40+j;~3u*v9fWW6!3RqrYODq;8UnS%uus5Hhu!-keDjnVJhl+NiS@Hlg_wwJ#p{5m zT(t&HCN}@c!&)>b8&@GDa&ACqC|m=Sqqn25J6JHm$rx`n_+e0>O`%rQ4~PK)LPcf3 zceI@OzTK$?acyf?eQQrcYj0!glQSn76L+twu0D}_;Ota!^GUghAGKiL3-3YOdCf9R z_^H>2Qrl>OED3^!!oZE>U>H3ZDXYSRTBMfnJ>>JKG5A^fO0*?+jvxoas9E@#sq}8T zRq|TVE!ReB5KBPX9ENhGiV3CRz3d|fG|iQ}(bCD|U7;rHO+`^Pn5=n6RLoHkK6BR> z_{@@2H{sbqq|*8X65)V^|0T*9!Dcn|VueQ}HfZNJ0B!)W$Sfz)t>6`o1+TEea)Whh zn5+-<$nzloTagQkVPAM-1e?)7jSk zsylS>_)?qpi2~E86%shvW$0gS{>Db@>Im7N61)yLHx=jkQ}NZtweg8$%31DgdTG;7 z;nF}41Zz$mC~|?fEEo;~YS?OD&>0{0mrK{?S^K{&bCII-3S3&-oH89RE%^tuIuImS zM*gMM({{k6UvLJlJ6>8rFD-$S3%QeNm%Wj1UA;8U%c?;-+#(9V|3gy%<<@0J%i`>eWFpANOs)4*Ah=E78QtWc{aOI3z^GT;pR zO-s?M2f9)(!bHv}8sz5!aY@FSsI05t$D-tl;d)5?g%#k20hg2bU`t-kGzMfe&V4Pt`G9-%EofX-U@jNLyMcH_4A7p;*GPir zlWu~Sx)hyap0M&`=q_5--TB5e@L{@OO=Ad zc<+i1K}>lsG_erggc#@76W&vL+x@Pscw0-*gNNI`9nrf2r!)w{HIaUlm!y9P6IXpu zbZmU?GJ4YvzZG=i9ucfleZym%+fazaA5sFpL!Wfqqe!XelWEw zpd;27eM~xHpL`0>qJ>RjuHhLuO^jo=itGH#534ftw@g1D%N+qzUD=J8Nd-KnBKVU=r7|voCxEXGw7`u^KCl4kc;4f`fT^fx_fxs^L3)j+ z&)v|dbhlT3$W%#kvm2Fx0ZZ*&1kRv%?7m39A26Tf!mYpO_8bpJ-+rUOMCId$bb^`% zAnsu{zc5`NpN1QoemZV!rJ&-0YtBaf8YLP-dAY~PVU^aenq=4lryPvCd8{wnxsh70 ziJiCikQDp5-F*d^S5X<;F`O+ex3hEgj26~|4ZG4A@J2NY|2{mmuog2SemODiybG)J z5Odev!hOM;H+d zFFcD~PfTDmcXv{k#p=rlH?}6^;+E2LtWSBLc%YH_u2v&L)EK6`P_FBC2M(~e?vh82 z#`M!vPg^Mzth-H)CHb)-zJrd1z+VjY*ty9axyE4!Ix*G56jl0?0aa!ifjFME`d;Fvi4^Gfk&|? z(b-&0RGsd9y_deZd&kPT>rYux4nY-Ha2bFR@FFn?eu4IUoHU#|5zi7GNmRxDVK(&V z%zOJ>{UO}2FR>+xDqYZ%^f!3fRNhINwdxd4C$8 z#A{>cX8I)OIx<{60z>0`X-gi*W_TK3@ioFq3xotamGg8qlksc!H%2QWnbO9INkUL%iHz=QDN5XJLQ$TZ;`O{uP49izwd+6%7(!6e$0UTEF0#d6&n!C zAd@kCoU#ACegNEyIQ(9^daOs{yN(1CS5K#}cXI4a_Xgt|O>`_4r-<8ZC)UTF@-%4{ zp7G@tvxEbkl#?+DJZF6CZ!Uz9599&OfsPE|6wI1^zf?zxBu`pVPEOdxCfuDgB|Muc zD>iu=-{Hg+$NJx)FOXkOGeIidFC10nTto>h9WyUP{9exvtcS<%{Pl6CB+aA`a5DDL zOPA6;@9)nix*iYk{*g@++VMP+WTi!y0#x+{g{EpMS+>ZdpV(iX^b1zCcw}P5&$~e6 zC)GsGvEWn3_6gm_Dc#lQJBkeJ$HyGbE7>8@dVBR7(I9{G;OLlUPZs5zd%MKB1uC(& zd&chS?}Zb(s~(n0F{BkhNr;E_@WgZ4`W7qRydg{*`9dhS??S|6WatkN8Qui?)cyCp zQF5WyrCFfaGSJyJD$T?A{xlo&uf6o0yCqY(*XISe&`X~@c)Xh|#j{(Eu53`fJdAEB zJV1$Nho^B=9*?c?ghCw&oe>2wU1!j4odZiBssxUCOcXi=iYlq?J6eF!ELI zK>nHl$>GG;HRx%#$UK8LEumPHLlBPHT_FI3urbuVTlifs-BPQ{T>2|SZ?#5<3{d0 z>ilG(Gnlf#P;xZrDH& zuV|-?FJyd6q(LW-LrqjjSxI0dKQFZ(VP=j{!PcK5t^Fi*Rgk+fBRBW;>I&6%Q)IJN z$Pr;uRVM?N68h%@YI9ca!V-#2;wNLA0MXWXTxRPvI-`o^xki?UVu9swnuWJe`DQjS zpHTWuKsK5@l*v2~NhZh;xL?Z}P{&CUr`2jMW=Fb$lCw6~-{RgY>vib+74LljnB9|Vje z09@S(RG~U6Oxq5kFsTxR54D0D0Q)#3_b~!z1BV;N!H7{xc+-L7JPAidA$nt3;VCKm zpw#OyA>3>ZQL2j^Avqo(cM-_p>I)#@(2HN71M;<8Kt~*;JOMZ%!Zg<1cB2@1UyiEB zG1(x|GiJ*fKBvv|x)iRbl}MOmU@(*c1)7AYN5XBJnTz0q>4D1*L<01HLwoYStsj6aCUjE{)jFk(WNe%xp}s8Su+3bN zjizLo?vcBnTiEp=p4jB={QW^56K#v0&rJ)mZEF8EyBS!~NJe{IOLo=rT6=3R)6kWc z)U7#s4F7i3tg`0_uDd7&*5OpPI#lB^eKkonZ9$i^7`UKpf+^)Sx2uHAYVjK+NCeTK zLc+(+D`o>Vb8eTovSGmsC!j=N;E2n&j0a9yG&of#Aqkd>W`KjVYY)>5Q=z- z^4-^jy}sfV}K zy7xyPahxl_avH-KB;P8aOn^ci@E#2p3>I}OBu*6C%dQS?qs>dV<_DcKH$Rnmdz~oo zl=-{cnGukWhcQ7cLUxu7nw^PiUyeCn{5VIz=NaK02(hu88TUiy)IF(y(e8mj8+?!X zG=1fs*9;^)XrHM*ny%*$KBF`rBG~e|jr3!iW*`lLnlut!hKcS3>``$B;kzOrMM<+r z(r=4`7qFMM+C}tR02D8$R-^xNVl_rtPZEyz8aDRHP{ms`0QOe6;nnv|xlUaYft}j5 z7dsUQKL>H8mbb*o8DW3QZXh_yi^-LQD2$Ma{U~#TazrBQ;AlF_jrV4pqyU+9w1GXuVku&dK zbu%y?fB7^EBi(oyrPzGa*5o&D$vn=n%%R!?8O z0v3E?k(O-ZR^&~lb=2hS0mgjrTZy6#RDvj~;}xPE@?#O}N}d6;BLjy~|_Hi%2bgmBNP8jLB-x90as2*@)N38-WA4tG(_!ew$DEUQR+U%Cwqydk(Bmts;QU~VSG z%ok$L{*gv?Md4F9P zPBsDW00SG@)l3^%)89p1gG%=q6%c!`p>*5*hjL>D=APN&fZU;KInSv2v#SS0gdym4#f z1^3g*O7GaeT_f+Z*2th)P|9|tJo`#VF`cW~I~@zf&64c^rA75}Cw|cm5t{*|90&>|F?_ge_Ab% z4y>~?uTs7EpBBx1M^C_?;Dp&H-U%~*w(a8kbnT|5$$f7f_}6I>@EE09$hC( zxplH6QOqr&o$rvINtl3eCoBLh3%%#B0Em7E8s>hnJ|i5ol02d;I&$b zc~$G&3ADYb5B4ddorESA%6{b#iBff)Jv?s0iho@*f2tLmSLJ#}orr+K@jVoEht(5yaH9XC=g5WgFWT8Nr#_3AZnfwVgs0m7ZFm z92GCgl&G6^8rMv(|J_;%Pz2x@{shNBThvZv1u#ai05m9?gp2>j_0pMDdN7JYFj!0v zau!%_7lh>RqtZi^56ZLHonsmyAfIQ&vk;AB z3>8N)%O)A58(^Uk!ddUozVGYy3LE7B7`4w1wC>+HO zinC_;3CI6#4aUnDIrDh{9%MOB|wH>RXZmikCMpx@vvNH@V}-zQPREyzh~QS@6c<%K0872@CgJ^e;pb6I8Sddmnzse^GLV8A) z8a|ecpBRy%@94%f4eODw)jwq(W+oEEpl!T`s{57exI(dz-) z%ng7NUzT(cxvwS}q5L_fyc!4`fn}CiR%FLc+*mMZ!%6ULAiK>h%~1e6xi~3!C~!Yt zBpQ7SY8FBt=EoF3==MX-y|o|V87<%5HQa|J+3dz78r(IX5k7@ahl}`Yr!O0DzM6y9uYXbfbWA_ z>bFi+jr_lC`;kXU=k`vL+zk`^0Y&HBfcPVVFEdPFJZ*$=^g6|mQ(^Zb7I$`HCr$B9 z+ljTHAY7MrZdd@paL(z#zVDi{B^hcvKqV)FIfFj7&-pZ;oI9lWJd|C6=y%6~dZ`^~ zUTv{rgU0q;9B6SPA{`HP``sJ#nlvRfb9WS>*cYtfkX;Nn!tCP2PWG3b5qPbC4jjD zHw9c0E4xMx^J6Predu!N{TOk~LYE z-X!}Nu3ZEh`Foq6%M*1QiI}(WEYk>1GVCgUTK;ofF#K9>#S@C&ctt1l3k!zD0hXoL zRj|FG{i~`f=_-ddietrzmpT#^-wR8+rlg#o)0(K^@o+HCe2+=8uEr`kW$p&ovdp ztbwrtlg>#PeYb?eB|2rSu^N3ZK;aL@-w?XUY#)!7;FZUt{?(p7<_;1E0psB+t6I#) zt)hnQArAW8!J!JpUYxD@P{*;UUImwc)#qRrk{t)cWCaY;8FQs$%2`yQ%z?!cda3T{ z2h_l2&EM|TMlj&$O72$PNvxp$=NpTY(*zbf7NfZx`ry{M zEi{GWW(G+KZ$HGIaUuV^`Z#(07!t#c%s(8oQXUk!u$uMSFCX95Z-iW_!T@jkF<)9Rqh~;~mvv+k7N9o!hbYPe9qEN(;Vlu7ehqy=jAoe@J5s22R z_Ax~eo)IP2%GgWj+2rb={7`@LFToH@;XM-!p#tH8#vs5D0^tz(7bS-n9sI`Ck}|Fz z_ieWR4YvA!VEvGh^&{<1SF@)>H-cU#l^zHUQ+d6-f*^D_NM`o$L0+C{iG^%8b)};! z+j@4hxM9@S#wnNaxsBjs8`EWEK3y&fUf#+Xdtuebr} z2y`l+rN{sXhN(gx@RIL27l26u%S%O$>FN>2m4o*^Szd17^1@I5g)Cty6J^(Pe&?33 zj8kL@D}yC$sSW9eis*tHXTe0lWQ8+P5*@)^Un5zbJ4S_hLRAumSqA?>{s!iMcK|p4 z+b)s=5B6~fZa?CF16@H}5LgGh?VVf>yBkC8kIGugPYW{|;Wga!jx>UaIyQOFxq8m+ zTSoNpISo}`VguBd1B?#wMb=l|vygB`7F6QgYJD^W=b`#a1Q$M9++hqKT{=#ucmTFG zy5lgJ*ia=B{%SE!_;kl_#o&@?PjMh%>_PYHWaZaI>@&TZ#6guSZ)cK)<`Gou+JLAl zx(Q3hjtI)J;$~;xD6%S)JC?DSV?qm^-e)=Y7wB4ap=(QwIKoc!^87=%h$QZ!+TJDL z<-SS~!DG{jkL{gE(83B6GKVqFF51Y*Eu-vbN2f@ICOn007F0^J(8w9|MetvgoMH6D z7MS~2Tj1~GB>$i0GJlw8FE1_3d`vtWhC0P;rj>kSirdtU+-;1_L|JG;~9M0R?(tj7rag;C(|vP6Fb zjg&Le#=*qu(VyY_i2gEZVgF5@2wE249Xd}$6W^&2O#I-{2PO(vOR&Uo7KA+5Bx&|b{0vbfJcv3=Smvi1q zX04!%i)0D$0VNLb%)(PXnM+fBLS?sd7H}t-T{1?Hg5P~j)$1Ds;cv81$_{Ir`AtR} zq>QYXQ0JJ*btPS>tn-^L+6rkrblvMKA&6+KFlIiuXc>W)J%cdbjov0H&hyOgHFIz^ zbC+1SJfpFhHQ^vJQe$k#1Jc;AV?6o$v^%~qE#0$=jGezi%z2Zm`6q+a(;Le>Sp$0=0jc7EOgJKVb0Rz0+e?4tw&Ev{ zFT7D>N;QVETEf_PNj8*RhX6xD>;{h-*pGP)tQuKa5=-^z0uRmR)GmLH1N?RNH3ZF; z`1l9E_4Y7`)dPg-=wABAv% zp@YVtjS&c}&oQo_bM9^DvT|>hHgQJV$%$O!*T#0c3r1afM%U?wC@}3w^xT|hrFJi2 z*XY>`Y2&^Bll2Dbu_V6KQv#8o=0qM*n37UHp3gd4!~=6%_HoE#hndl0D=VmzY>jVu zg$CTC>rm5~>+{y5bgf@vJo~u=^`%p4$p4WIkG@@&;ejuQ_D8ik&E{w+|HN) zxv6h=Lb5GVa?f>q8`K+C&g~(Op++*XrnhuoboB@x5c4ZW$R2~+hZvR7rZapFHk}IN zLVt+^J%(}pZ#LaEo2`)b^%6ey@0`8=jZgSD`@l4^4_sTfL47JS8j5p*>Iy`p2g)?z z@+{8v`kc(;xTq-9vXxAOrJAT^8iKCAFDXJE6D981%bsM9=eCd4bo*GFfdV&m7OX(>+p@^#DsW>aWqzft%9rx|xL3N9YgO`{waF;sjGKolB9 z{ts&c5L(4sWBy{;mAGQ`^TKhEUfbH*NsYboIoyg{qU&JosLu{iN+mGEsf^*E*g}F3 zKjr57iRpNyOMPS51@KHxXBFqIJ#{7qTjIaY@91jIU`r%X6zx6ZGIZrAsNzd`4u{!k zoYNnm=rk?|_g*0eT=4-QUy@LTI*HnF9S7@G({pKL*NeG*i!VlT6u@go$QgH{43`&`e0Q%E&r0M3 zYD$38SP1oYjBpH@&s{|o^B^IVS9;X1jhoq0`ic#hJj@d>LoqJ3!U5=d*=jSMr>Clomq-oAU;% zcMMM3G1wd!n_%t~9qKi^lIm<&4#Q9*p-i43Y{Qk2X3lZG3u^zoq)33ZU)4z0^K69FDUD`6MJ?8lQdm6nOTJ;Mv3B*>~HKXa8E&!Pkk5S?pc- zr83<$_!9fn|nr*(>}|fT?lZ zOV9oXJbUm1c=p_MJ8ogs+S!== z1tg&E9t6qoOcga&>%(1!z;J>fpbv&4^o@ku$$y3lP0nliV?mO-bdm64c-T9r@x!VV zMX7gd;&_uG^dkjPr^bodsz9dz`6~j5^PDsR5n-2^DtJpExW)4o^|69mzchCGtrJ~I zPag6d^LJ}l!7ckai{ehB;8x1Vc+03L{^m?+;MXe)&836*yECO{U-(PlOGDpS;Igvd zgt9Spy=e6KYddbAfbvI&cMBp=dxRXxK31xp6n~GoFH>6_!DG( zgg5w~qY@u{Nxls>zWR)=uT1km^}aGk^y+v}y}#pWt=QDZV{9qbSb9 z*r)EBh&)M~KJff?;c8vI`vy{G0@Ixef$&NPZl| zasx~?1B=4Cjd^*cv1RUOYNm*q+V2E8hp1!Oz)vwMC6A#dcUM^=a8QdB<;4wl70MgO z7uQKDlwJE=VO`JdxGQdww8f-*pe$14FuJiHTT3)-*2Hckhs!aQ4-|bL2cS}L^n-ol zP_DC;GyJKxQL?eeGVaPIah+{{D*p%8ZeD!5l=k43mVn8#149iht0zOp8alioA9U92 zNUF&6kq%SJ+7F9Ih9tv#7&c@x3iOsEkL#inY(Dl!iEE zshg!=8C$cx`xYu9O@TWWbv_zv8=A@HSU5o_56IU!R~<{l_;lvzDa74AGZFJnJ5ai| z;_!`Q_l+0Ycl+W5e97%krgKnx4y#1`IAc7fc|o~%jj6^X>{slq-EE`Cr&7pz$31f3 zuGs{Sz)&qG_A~G8h;pEM`=84vKd$8e!gkcQ$G40q8%5L~DUNWWlDbOrN@nF3aY>?= z_SdU4O};d}#U8UIKRuQI8+)ymI9KE)m06G_NyLpr4=gUEGgT=x=J z$h=}-S$lCkV)`f!R;sI0u&I3e@=J|}PwpV|IKheseiU+zBQlN{YonW>U6ujd)F?jy z+2nwxQCw{hd|)d`B051_>|fYW?n=nCIc1YB>VMpMySRE6*o+jXSHd0vB9Tz3q(;Y|2Ej+LV-)=aQQN< z46r5|l3PM~a~R3Da09&>GCZ8w%$N66F_k1brxU!-8?3QW+4C)l{s)BK2Z@0^^q{L&YiJKG=~=krl{XW=sz zQ%rl~2W$0E*%3jjLOpFi6iDfkfr3gLSVBuI6z^m1jDL{`1xccyAT`{Eid+UuFFE&A zFWPRf!E_cdc6)WnTz*d@Naxn&CJ^x*P~GTug(RV~`V4y@Eox`X_Mbi5fAVbqh}r&o z-iACP(AD{n@zY=BW1abctk-_*-F*5(0ADd*g(TJZOqK@` zTV_m;T$1YL_1foPvVi#1#S|ENdbPbE%?79)V0D22M?eaFWYd+dPWK@_5gvB5T8+vt z*FVvY8AeJ5!p%@UI z$!BLuy`OodL*Y}US+8$y^2auddw)oG2o5r;G7ASb4oUe)vBaW5AH(M=*sBZEev@2| zcAF7r<_VfNT)Bv8@tIviH-x8n$UjG}4iNyAjNLO?@Hnh~z!$u8ph5{xF?Brq%0?HY z>aCkwRVH3uja@-Go+ymdIFqJ+!BWEe+?=PH!ea_{GAN&7P#C>|i$lzE(Hodz_>z1i zcXc89E|8nG7|Wxi4z5?LVo=+KoyJQ(5WaC3tg$M;N05f5wQ^A)ZXwagppuB0vmD4b z-npsz20r7rL=7N)S`Sa?PrGqZ9%MAU8vLNZs_UaTlMh8;1ydc=g6k*zVKgatPLc)v zowcoVNXlo>SzY?;aIrXOd?{kRelM*|Y{;!J?_OMM49w&TP}y;kL^dkN7p~xeM|lEu z!n9UU;s{=t4IVJ8K-A=C{VyqqMyc0gy%Y%_rfiYP6yezkjJ$OaBe^d6n?YFn-1_w} z7=)EWf|tTgBrD-2SxtBo0|*TL4pY|VEEeLhN`4pDWvFB-34XW#i3UC&l5!ZH=n0%} z14uMDAxsIYYo2HV`z92XD@(7n7d6?ptYn4ePbLugfe&fwb5ZB^NgjbeF1pTQ7LO7q zQw@)Y2lBrYKOoxBSX-}%mCPHoaG@m?H_#Pxhdx~h0)xmeI@p;)xI||rz=o>7w{P+u zYE#^Qp{B;&<&#n8aWjRo8VQlZ%m_$*EYW)gP3O|xmA!U^e&fQ!*gE$#jp?y;(%2Ka zX5<@r=`K*(Q6UjaXz1WF2xfNv#G*2N$5vtrQ|pPf`KiLqk89g;x zo)g^puvm`KzsODsGv2zfMQ#ZIH9Wu!U&ArA4?~vql-=skl@Lmgohj94|i)rWHIN`==raW6qI7US+ ztH-56)d+<^;s9nHs4BEP8nZAhS`S@^}Kp9cOE#A5Z`~3eweq`(zYjXp3~* zAEXb1)UUh;M53Uj^fb2k^6}~Coj}6EtK9K7@iooK*cyBvbAIS}kd3r4s8vGgMp3OE zARpj$uG8`@pG^~d&c*paCLP2j9_kiSL5b(FM*j8NAYMs&C;RREM^q2t5xNAxrD{L+ z6z|$qzN~>V8G26SkozZ`bG*rZY2z^Q2&#tCny_woHkP!A!|n3;@e*ovS#Nl5cokNoGzk^wLZ6X63=AI?IoO7aP#C&@;Jqbj?c-Hcf2U~ zWYteX+m1z^cOfy4RxeNtf&MJcaeR_Z!vK+YsneEvU{?T!wCxM)?~^HetU)*{X21JS zkOz*lx6k7ztbWq^0fdui2>G*F3&Ev;mI-3>yV;g~)gc=X6Ia{u;}+rxCf;jfe|hkF z3tLEIwvO{HXLpRA$j+5Jr52ctc=;XbGtIvJ$|{=Nm(Sg;!SSdV;#Dk1PG{71*~Xpl zWe0efJ~OvRx={sMg!M}~eC{b}u5}z)KZ|$;?;$;K%&_r>+-*fp9fLn~{DHszi7y;wfr7QqBNhr`j%FQk0xGm^bR*P})U=o6;Ut zAcoCSi`mb~P6UAcFw6%5SUZB-GH3Y9K&^~9V0u&rc4Mwtwbe8gSokJbLl|>^97HR? zdPbw?ngX38Oyy7OG6VHH6-Z@6yob_!_8wB2L&FM5E|5OQwEgFFD_*21-WAOr>kP+F z^x#BT6E#wdsBcX7H2@3>Hr(od;lQ(`c;6C>&A_~=ClQ#GNwR4^Yo8QSk*LWMD(yI079CB7D$f{uronhEQ5A_$*@Pp=alB~LG7pMI!|;Vok8F_6s87lu;J(Z<7F zh{HqQGc8p>MF$WQh@z-ns5%0*RFgH|fZYxBi}9lC@E+2rC}>Kg?4REa@&?x-yR^|n z!hhdB)&;Gpyh8m_KvFY{W)aIi8nM4~_^Vz?Kr0EdR317|vJ3c{~gg)kwCZyvG~XkdEpa z21ar26#CYhtKNXGf(xQv*e?o5R2T`xd*~(Fl2NWF1)vC6OG^<3&(|ISMZk(OrW+Lj z7cHU+kJn66_0OTBpsL|^SuBW6qPOx^1en(uSdKziIhqgovEXWecdZf!f~NvKlC>=A z72xOwPbckBweY`0nZF-RhYo_5*J#U5oM@F9?;G$Epi?HgW}DJZX)Q5!3ja;)c!&A{ zTfwPv$VI98Z2!iVs&E`Yc_c2$?1vHzWYRL9Q*q9k`O0E=jKX7vTl`D(;)`8Ro+ecW zfP!zf)fS$Zp4vEHi>Fo`V{YRUH>Z3^g+EJVt0Q2_`Duw-Wo3kDEvUXnqKXG$ z%W@;BM>6);$--6P02(Y)CBY{rNOu^HrpMzj`A&2Ihl$pcb)tGK5{7)DJ!Lu^R5hU# zQfP!v&Z&0E+2iuNP`^_0j7oeih{#2W&-UZmyVxDQ5$scHUAwlq@Z0VGfT%`T4wQrS z!l*{_L5yk`%$7@xHQf8&!0?<8xtWpR5-h!@R-FSVAuKhV@7)+DXCPl0 ze2dTY;*9_iAL!_Z$3Pg#2~zxvBO@MzU>Cxm6GD=q$R7)tEoqsTLca4u#IML$Sr~CN zJH@j~B?RTGSK^2|-;yitVou<#Y-IzdrM0(Z^wd>|n0xCEdjK?!T3$yVyiS4aU(Y)M zMqGTru}93Q&3%|;L-+X)Vo!T;7kv1XR{6?p8Eup^^U8_16T}y%LQ@+$9u7w(Y(xoaEok2i}y5XyVMYJHTn? z4f;DWknV%RfG4jQdt`OTT*V#^AvML?VSOb}>Em39I4(|QJ7;wg%{BTC?@g55el2<0 z09D+v=%2I`b2|VKwmRte6ncP4GkWQs_A8)y$9~`c%@Y?mbEa6wx?RV0_l!@~_Q!gv zv3UQ)HsX;ynns=yYNJu~{8iQ+$uOeU*Geg8X7uu+wTc1vE?Efn#ni@tD z(T)2@uNYr#P3PCStT5vTY^A{m8AiRb;>3>MjBj8j&a-M?M-HXJyWo*eH5+k}UftzS1Re9PfDkl^aLee^%g~K~OzZ~Wed6`%KALiZ!EXuNdAAV+- z!OmCCiWzVo{8XGW{v`}_Zo<2#P;_~s~QnB`gS^}5dMyw0oexaF1>CuWf1 z%F=|3mhV-*IhMI2i}!85A=>U~_eS^U_d2s-Nq@_|uFG=!!FsR1t#IQLWGKY(NY-t6 z_i=w?kFDY%pRF;6kP>%x78?ZS>wAX9k#=ImI%dn(-YFW8D#i-_$Yk?qV*KqX;A4fx z7x~-tzBDD+G9*e+o&Z<=1UWP9nARQOc(E7Gjo|@vrcwN7yeBrk2+o8#UYjvbZ$jsGhc%oKG-&ji-SU@ z&pPabSN7z6^(_8k0Iq~2Qxl3AH)Z@;tFmC-;h-1(co4$+C+Sz)eur2p7u9FDxy0sq#V0lL$+Jm&Ma#9$TF#($^GsizyAmth_X(s|Gw} z-wm?Cr|NTjWr7>_AbJ=yf>4ZSC)pUrSs@OaF3hkYR{NgqhMB0YkgAa@5IlLVQ()nv zSe~f>n7RW}BoC^Eze>0umW*^kd$#M2j!J^10*0(a1J#!I-BKJ~%0Ig^Q0D2qYe(&T zw-hIrIaw5UPo7V1-7WDCmqnH42dCJbMq&-Zo(zD9zaAnkP&qgeDlytx)QmPA%H&yfk$||u z+&>8Hk}sy&%{<_rMw$NK`j6H>cJ#Z9q&*SjNX^&N7Z~TdILWL_E)=ke*~@bJYYRNnTao=5+sFP zmw1c#;BIR^@F6B$8?>b-_$zpaCMm-ktOe_=CX-_)jLXW`Wh4r zAE56WG=czS8jSI=Y>ZPZP#5OFDEijIb^p!jw(1rk?57|%u_8nWBt8^mXfTvuG@};X zpPkgiEwL*bOSrOD1~*$h)*2Z)Y8nr=IsEoALC@qA$3~H&wm~sxy8#E(6CLtfq|$X{ z!i-+t;qb2DTzJ8Ar-LSsr-Q~iLq%s|T0I=TUOI^uV_S?mv^jbWrm|xpavQBP$s-vJ zG*z;D(lCG99rZ^dqs>NJ{~7u%lsX%Iw1raDrqW3%ml(A#lmN&z+dpI#r~=V85Bu_Z zQ_C%|OD8Oa5Fl&?b{jFFDR|rp8B(VpsJKV`JMpML${!ghSo4dUw5 zSy@%RQtQ-&GubgAog}L;Gp~KLiw`wkZ1>wL*H>F2>=U*_jDO+_oETh=4lO?UxbKbX@1TDin&i}m;%9Blg`Hpcf`j)0-pa`*Y&@S0ZUH!KkCGA zO#w7uS}5Fn**cZBhXm_Xh)jYGR{hyeC3F#Gtg_*#K@)zB5jDvSYDevE00}EMlZ|8m?lZk_s`I)Epp=*PMtDHc2w*CkfHRUYc`Ma*Vx6#%_iW3Qev{P`TXYuSeAn}$s<)V`TFw`|KbEjAX!7LRzNa}A9m^E@ z?t|p2Ua#tWOLe16=y_2MPF$e!Scd<{Rl(vHXm1q*EQ9#`ra21iZs}<@<9YwlKI9~O zoy}pI|5Sr@DWd%*iTvJ5efY=j`d(B5vtFao=p<5Us9xxeed}+0>VM92OJ7@YIV+#? zC(frtRn|yCTU?!K{>u(@u+iR!b8oHXYW%mCgy>SnH2FMMt^pnLQL=zH(Zhpj`$<*P z=92mrIxKb~BzB%dcgXBbRw=i8FS-ciPCj*eECu`93aI`?g##tz=GcKmJ&1A3j@gCS zD|6|q+Er=O@zsx@IPi`(woFiurT~0ZDdv5L9vWonUQwUQH{uv+Or|n+GM)I0qkH8! zD$mp3RbXNP$;Udti#7JbSZcod1uY2elYx&l1j}Z5=e&0N9YuANZyd4VlEQo&s6J8P zSZ&}~B+?)|$2IeiAa%{gKOjYm5%7{%lG{o4@gpR8SJDw~L}kQL2@8c(GYC*k*Hy6} z$dCNE#ZJ;qxriZ`35w7dS`25m$At|QiXrTkH@kh;eRpx<)>b7QLm(Y^vrwt^xqm!eQ=E3i#mk(m_GVwupDwSaYQ0*a z7qGN9PysVP=`>weQ@&Qv@wZy?)dcW4Je5i)Q3r?3J6%2iS5?-CfmaLxgK4ZKOFv0# z>k5s}WFZ$w9BMZUZ-wk3qV4cQ9_qJ}Kf{9I+GVEH*`A#!=a7C#x5FO6Z#5G$vWG@t zJSBO)7;U(%Ru5s1Km~@NsEXpThv=f$PLy`+*Z<2BUmj6T{-W{+jm*oE z(wSTOlm5yK8tJ_!?x96AN(X`fWI?wS7>9Jr_t4Ij6v#V_cI}*JdZW~FC^mBXQsgfF zrGkRm^E9|DvYs=Ruc9J25JHyuI$({j99LREbHnAB%q}jKz?<)}_B^!IyT0as0%4)8 zF}GDc2B%C?J&8{X7?bDa_>n{KN;!{O9Fy0$LoQDCHQ<#)!P2~^NLCyS>9KE7Q=S$+ zd%jH;#~<*2h5gc{Ur$}RxKiGv!n8#7h4& zkr8LRd#^Fg)Ftd^E(yu3Y$~bt7;ZGH*Bfehbw#e#d6k#RuuIsyFXCriO-t1GDhJK_ znV$quMAt^;>BICT#~l;HFGu2kri&0Jyvf5cza`vZbu6sn5AxGg9#MoaAblJt^Ltvh zBRqWc77nY7PuP4=g>clYCRC!QEy+@iqvhzV8W@mDr9?N-J1o4?v@MP4X@Y?VmSM}W z;iuit*(f^rT^0o~r&yIQ3n{!ctL`DAX8fG;v1X;Mp&ZFrjlV1U4(h$`QBsFrCk*BI5Xc z-fiyOT^*mbO?+`?Gl_MaO*q0_=HoT468|y3K~;#k2DLOewEIxLP^!UYoC^&cICMQT z^Ub%@gPlgnbPnfrs+DYHdk$SFv%jDkl5m0Ogrd~OTEy*3eXkVnW=|!3YTQr#ifg`S*QVh~bi7z;R1CpI~v6VHpJf%I) zq{!%{5$3TaJKSK{fz9U~tv5;r%Pb@wv(KUhice7-4~Z2$sNSqY(;~G{Ps-8K%`WG` zS655dSiK8V)u;Al_nfd$?Y2WDvQf+jNV=|pEnwTr++GOn3?Q13&1_24r$eZ4pSP<} zPBa);7UZrtOP>1y<{c`woHLCncnw$7Te`Y})e|wODZi;A1;qEK5IE8yd%{_o0iA4x z)L4yZ0eD!c<6}3L1xx)=k2)h{26^$tDIbMt%F7h(67a8gncq0=I^^nOLrXdldU&GN zMy$^#L?$g(j1Bf`7WQLnlA?{9tl6=dJl7-%nze8)DYQ*v%(F^&! zP^tfbxR_D9D3!}rC)p$DxmC=B19l7g6Lm)?TKBl%_Gudc(p`U)-Bwpmx zf6GCL`%C&SRChWTQIznDKS(JR%Qx?h@DH|YCKVwgXD9W=W@RBH{VuMejko%;Rdn6= zLzmvHO^x zIy3JtdT6f`T_-S=%k7=9aA z6DOG_V{7oB#MA!a4ud0_g4eqaE#c_|) z2e2LD^gauX0##YlTNGpcuJCIN2Ea_3&~|(XTw%CMJB$tGk@2VVPJf;|=OgpUxjCc8 zWbV}1>J&n~J3ga_K_duD@a!Zz{olQ*G9^>r!*nr)kQJpTbWq*Hx@;XajbosQGb}-H z2Q|j*GEY#Y)rfZbj`OW{^fEEIFg2Nn9(|-U=!eYvt<)W{FH3^#5m}?IufPBg+}{lo zQWDDX6Ho6PjtLqCgc0ZU?zJkRPS~B7U0yyXh03*tYK5zNLZ%wFZ%8{Qql(}rsQ!(& zxlkUeR61vBkBm=!P!7=p%*fHI4<;ietEuB9_YI`gQ9w?1c67?jjarW^v0iro+M&pT zmyj(1j^N?L+{aFNQ>-}A`!5wIq$gQaY!!>WRrF!onI1YlVU!OdVKgEWLs&2@9`>nF z)htA9qK=p`xz!Ta^pSoa?&eIK8Tw4{2yE^> zqW4;ird%<3^mW{qMG$a@{~Dm_Em(9meMW|)4Gw~bL1P(*ulx_V-e2))%e7-9#;Ub0 zgxUBZBM~ujRtv?IL2em6km3mH{5#S`429Xq2A?ky(vq7{FP=y@LH5v#?0o^Aqod1M zQehM~jpXsplEKW=GUsJa+Iq+%+~AQ$o>uPMWQ>~hXkfT>2#7`E5K3ih9S-5*GWBnV zh-QZ<%_|*&Lu42{(&-Sb><}HK6T!3XD$J}j2UEJ+X41`wn;WHQM_37s!_ijE2le8B z?d0rNF&lF|^odR~#@Z{0ICl@WN#C5S3R0K0DJRsa%b`+7q_+M3uiO_>LL+APTNvI^ z<5jsxREr$QVwP7p?6alRk1EjRSVrJiw2+qa*y<8F#Z8itzfDDlh?_ve#2E|h3 zI`x>Ccao~3v&?M#tUBQNm7M9qkU`uFJq#K_*oNo7=FG#E8`Z7d207VrasP!dW#w8) zNE37y)(Ewdu$$CSLC1_Sp*$rNTz>|~Yivl*u!LbQ$!fKfP`i{iJAk5ES3j?**j_c> ze|)6%>XNMI1E7P_0nmT5Z4Y1YT*{DXKt)C%ssgwnDoQhp@Q%Jxb30~7b#|E+g{4C} zyeDO0=Chu3`DnDJmxK%-86PL#R%uj8bi9|@VwWmm@d!_E)Y?f! z{mau-L7qeOI4M2q{y(NDXLB57O6@);XT zH}#Gs434&3W>lN1w%RBE$Eo;LocQB#cp1rIokT2z;su@}gv^B4LZ-*$S_j9HzARmE z3UK)eb>iZ2$&XVHE<7A;O{QaOLa|w7#jbykn@r2O$GWuso2W1}yq7Kw-Fbbzc3_5Ks z;IlkQ8H=2fR_y@qneaKB*iL=*ps&!v#-zHU{0sPC+YwI%de_xu-scMk%7VP>$#xPK zq@*Z?4M0TKqxmAryM{ch%BpDlH4bfgO^cD@R>_vJwu+Q~q?qih65eAQnCW1iEq7`B zTp&OTf7Ox0u~kvwK0}y;WchJ0FSww1W+A>rN%>34)X^l{0gl+3xP=K&<* z0tdP*K@^LC?aV_2Y=d{|W`*Dtou+q_{_^rEJNEO8xa0=>Tr)70szfO4*_%0W$@@pE zI!u8*cgpS?_Y`ca_EL#C_>>OClJ$^*!ZbCWEH5E+)>l}Bw0fYktq1i9%7I z*y~bp)Q|5cEh}Ey^nP~B``O`8b;H%R#wBkhthK@pN#L^)sPmFM;qK;kZ?jasDO)v1 zp?VrEBrB(ctafHU37#b>v|LQqCHEB7oD8rgNp&f#J!O>b0_u#@7vwihg&B}EtBeUK zfL(d%t>ia2+#2l?3Sc!oIb^KzF9m$>-pMO1h=uoA=>zW*9v{5VB<6kgYTt?sGZCsU zJ^r4(q~=_Ia;FtZlp!PZM8PBSWj~Q`1Y&K7)z*cQBylzp%ZAJi)6}F)AoJK)qXiR= z#2CaRGJKX)Q~oM_Cc^J#r*qvhuz7CkZEkgE_p5))aLjVQcE3^M-*A^oG+=kq3Af50 zAtI1GRQVqk9?vj7x0!k;b3VY}FV)vw-+q|E;-8G{~jjCX5oy<!`2 zw6}vwI0(47#A6QQEttJDpD<56z=1rKf#bAi93xtQKU;J25?7f!D<>lP$O}|X04Vcm zH}{+WO&AcDQ_M8^xYG-%YR0v`-K3XMV{Acr0}b=i+3ov(-kwTPZFeGYJ9ZZ`>}iV! zOd{OkzI|~sLyMOrZV3o?hURzk(ZZTu3}5}>z6WvKq<)~3CH~@9ERC4(il{6-vr}GB)l(bK}#a7ubC)OUNZ|+2Djfz~7J; z^`9(T+tX{$fQ5|jH*>H5D-MIJLj#vsjrrI0RIRHB`B|m;cMG1dWBkqw3S|HKurGs@ zc_o(j693~b_f;)fZo{uKC_a~v5f!q0CW^zaxp=ze)nTX=Nq=qI=pCm+ajuW{F~eZb zU_J;<_gq-{-tP;4KF!9+qPjubMVq0HWAsSk?>m`Udp?s1w^|aMN(VZR^t)=Z9WN9v zXJGi?_#6K1COVvnyv>Vm6$h}$MC)&3mhGT18%w+8%_kT7w5zCIJQ%|kb`N+9tMpd_~F%yzBS_5upziXK)a|KN@Cdv zS~eXpenXKdq$!vRv^>={Wsu7UY9Sn<)jwW;{3ar0#7KALsj=_MHivlTg#?q&-WmVf z_B}L=qCecdOL5}SpDtEcdk+o%kGEE-&L7PAEc0jb{)+mFTDzA$8JrdMIh#^3U+@XW zp3-b^Y5OD|rZC5}$$Y#pQ*2IpA-(m*=p-XY5|Kzj!YvtoJgI-AfL?m(BcMkc)>2_LqAJ z#d(}$l~z0dpI)R&PF|#xF@WZ{CPQQLdjaGzH~*1}-}_JR@5b%lb`8hvGA zHipy%T#M~W3YJj0wRRenWY+U;6LSHyQ%)@iPZ^J0_bAM58)A37O*z;VTG@Sx#rjcn zn$j)h^2;zl{Y&;@XFjEXQ7f~>MN?ozl27~kcE>L&^uL?b*>Kb6;NzaQqXxjTHl@Ak zSSBi|58uAIBKr>=cK=-miI*UE&PMD6h-5S@SYhp_-KAf-+=3+*oN5$WRg{x}EGh(Z zl3XPRNyI=@7x?yqN854`BC~DsyQ0EUWtSH^~c)1j5 z*cn5Dzo0A6wPOlSLs+hZHw95V2HK&lS0QgS@a!-%k96^l}Qys(?>{>wGnC?2KHW(Qyzr>oi+uSKM3NW7GL$*QXm zYP-X#GT@spWE;t&nTxTHnp2_J)Zpb)We*kVF6PKsaf}PsAABke?evV5)u| zEk(7AfA^;5oBw#0fxhY3uImZgX05Orb8?_}D%-mky$M7asSRfmj*?#Ki236$4v5pA zMO}z)MB3&H3F+aG*>Z-mSn130ZUAS9O;G8;sd`R)^Tr0qqOkQvg}esLLP!1qvP8s1 z>yHKDRO8}sm2;;&Jx>XaY7!&mbD3#ayqG;5=F&||5?jcY3rfuOUxNS+MV7jJQ>}4W z|DcN37rp!qFLklbQplo?Y&pdFIlAM?{%EDxQfdDETLVP)XgMj=<8B`YF%vGf;Wjf| zQ{%<(&BOQ~{W(u#Ny1O!tD=MljMy+f=5y6A5$k9ve$3uj9TP`t8R-}m&MR9+W`T8 ziIG1{_>zU$B^GLgZC_~gEOcfKe+63kES%KEqBeET*1= z=ck!$gBN%hG=h+ZXA4i0Hlr8qBa2<}f5v{_(K<8C*Az6P zg(8}!1N$md+dm2msxMsII9X^F=4goG1YsALi{NDc5|R~ z`&+UFp=!~&u0Ju}UZ*_|Jv9=!=&KQSK(gl@tRPVmNp_IbgIAlLLDj0kg=$`1NEMmo zsC0e<*|xM2ta$^Aykc!huN378oCj&e*eLi}d!QIjTA2bn6mfo&8J_EGLO5Q;a|yQ; znGvZm2T?}1LL}?9Sh$>}6t;XM(u>Ug>7<{YlOMr3E5|o~R;|{jrSaLjyh^1!H!Ydh zxMgL8_q?FDjui&!Bd3yJP&(?}PmJz=DOUb>Y|iqx#kA24CyZ{l?+cudHKQ@g zbRSWbD8rQzA;kFrqSRJSv3(YCfRef>qzU>5Vgb@k27}-Q1Lj(~F+FXf%aFIj^cB)g z?SP~7Z;F!)P}`g_+G1~7L|pN7Eu|jMecGPV8cyvnsD7;tG26}?q3Rc{Iu?@|vb^J4 zZQsbd<|VGPH8Di4wj$-oL_$nHky9=4^jIOohS^G)@^`^hpppu}OlEpt%BNDcCCQ5F z*p10v(ykn(tBn#!a#PV_6ml()Tu2s$qVj^I8WeAYeKnUj1rj$hVU{I^)t-~dv~yGxpo0VdCIye1Hj0X z4s!wP6QCcGlNY$Oa`dh#&f`;}Hg-GY(H2+sA-z0Sj5@$&&VZlPRVjUNL6T5`tdDDr z>dgGMu<6Afnpu)gUarZo(&F5~!L3M^)uWme@j~y#D<(yI?cCp}&dqP?@FH?mh)mIq z!lvGO1xx^ddvj)aWC7M%fca?txWPRoDyO%etdIhZ(3R%v8Fvs|!&CX1)8wq-{I&VQ zD>#4dEXm7hA2g~j<@+wd7{EN%*!Q$$7;62=XC220*QDOr#Z43*{ka1ay!x?#_jJaG zG)UL5!s6SNgytX*h7_aBtyD`cFZb0RW{%YfTjcWr0zxS#^eZyuyq2+G)x-6Q1jUV% z9G4j-9_=fk`!!$siyX$MsOIB;C`?!-zuFg3_axFTa{dfm5$hC+1LcS8M_xMol#n89n6@Nr0 zJu#+0=F%e>#Ld}S8+2qZRu;^4nB*sbelWK@ed-Iz+*vf!n#cHIB?J z)LzX(j2B<+?~^;ZAztyu)SUJmSPJjZcKBR9Cgebz?`rqX3#OUDD5lA{N51sOBX%L< zm4iddV0Ezqel~uC?`+R&{{|^B?QQVOtNc(o65^b$U*RSMr#oY0$DsNYF%#L6b5V;QiX%aPU(!8<7h#P}u2apssFYDiF7ee4`WPIQ3nZ4RK%W&=v<)QYAZK=i}^1t?Wp7-kM|h%^U1U z!gtbFaU@MaS}h$(|0X}u{UPZ`V;3i1fbi_hPM~Rw-5J?V7HGo$+q9Ng7Wr?S%?Dtd7TT2C^g7#+U8K zk@6bL6X-~-1FfC#PR>`c|FL$$&tKT=aHCGRG@3f0+ht^cmw2d|oqu$I`N|7AVf}~6 z;-a(fI%3PWv!cBNJqWg6diOh;@sQPX&0flyFzH%o7mB9j4r7<2Pb@2-%ehv*j9t#K z(VAT^v3SAJV(l$jg0LD@7W=Z7pI%m17Yl131E*fok&Vo|F;NQ%HUihWEk@5?o_$Ag zKV~UjcEuX8gB;XDHxAgyhd=evz{W6iht;w?Q>z$B(=-a=9I5wy~C&2%jio zQlwo+C&uM<{J3-E8=_u(>1$0()KUj4$bN09*UUrkTq=#XAoQwV$qXIh*W|VLKx(|r zkGMW8%=&313%4H{DC^U|$*e6?w4`(?Q@*1MFiSvw?A#e-pk!5*#@tC_tX)IG!74g} zaqTDFXzT>9qp?$MoF)@O`yK7p&(jcdJrT6_`i+e7JKWlpIMyjOu}rcn zXn$j|NDQAv348H9m!{*broqk&F z==Xyy6Kid`=ftuH+p#T&Hs@YS=fh-chSXbEV~vaX-SSMnbrGdM1sP-?px z@^@UukVLF=>fW=x&J$_kM`0^`f6hGpZHo=5%t?vBqC$gyi3uGKSsop!fnd6m3*NpT<0}rcFPMZ?GyN{QO%q z?|}RF{g?-zRQGU1otUp4HNJ73@PKR5@Qka6_K2MuJDtn1!0N zH<9>q({G~BwK~ua0(S$EpK)Qy^4`!y1J7@9 zLgV+Dh*~8*N{?6wNTGfi==BynBsxz-KzvSX9Q;NpJT6}pQ#7XY=-MX#GZgr`Q?!){ zU>uR0rgRT`-%H4RaQ-?^t*wvACyBiu&U&$-c_AqNr2i|r2#3({f#cQ_8Wfgw^Ws=* z^DcihI(#Ra50MQ==dvZ@yu;7wLm6dtS^SQ`4!=;m>%sEI{R|h`e2`y>f5MQ=yLhQKu}wpDobO{#Nx zP6cg|FGK=te?C7WuNU?Il`gpAO`ZKhwZr^Q3>IlS{KTT~P#FKGzx2Tset^YUjmP*> zvwrz?1yfoqi7yHqr+-`?Doo6}mma>8D_S%bgs_~BAJJfc+z@PP-0p}O5*z9~gGER8 z^3T*oc{e}X&eyrRXFNVwdwcZIo&0vcf4Z2~-!uBg;&rDvenmP8xR=6X-NX5dGn>B` z*VZ%F+p}wWZ-rL|f^z!Xzwc%$iCZ7t60%m`Xv=zRf>ziuI7?Vw7uf z;)%cvYz7nW6d=I{OK8y$O6&-K#q{V_9~NbM*oQ^gHV*lfl1H+B9ZEHCXEsybjW#jn z4vjt`eDWLHR&hWq{?5Q50YXJm55A=>jV}r0N_tBZ3j@aJ9|OpG4_PV{X^a0efOfm- z*NZK5=Ayyt*|wM5aLaqWuF}~s(q`L=zz`ts7OoB45VLNBe3rjd8(2SIm^G=x z{}qN{%^kI12G$%>gPt56=Q;s&XR>HJC|5AP0}?ztDEo;#9tvt8Dg01vNYb-Jhx-ZV zzMLsJm}qc7&L}eOluF;A8Tvd*<4$O4QG>YxzZXm}8T0vlD?(oh@$6;ORcaIEqHU7; z>i;d2k4OW$VCqw6bATS+OjntH>YRBH=t0lynn+pmR{S6Ffe&mQBnp z{ZaFD1TtDgRlZk$%qMinge{L7>lxv4^_{lfuB7X^Kl`I6)Oq*=pzpzse0=wfvGxEF_|s z;&kb2cNeOqQQ}{k$R8JbCFKz=|C%w4!YC9?fX5s=%dm|IBgmIU6oJ~VG+zsvIn~AW zZA06oyJZT{z}nE;9L>D8(v9*MlK0ZKC}KAnw@+nn3ZKZQG0m?%a$rHRMCrk?YiDim z4A_v^O^UT$d!x-W7crht${Q{-`;PcG%Zo$vBTMkRl_z~vgG?%*DTP-0KPf=_K6^c*8F)}&lU_{C!pJ67!0w8@m- zJ5+g>MzqHg_HNVGv@Sj0aB5Qv7TCq@u9oHKQ=mT5ZB9 z;5YgS1D7Ntl}|~Quxz?grv06>ibg6u{ATD2Xf{Q)^uf@MZ2Ln*>X`J~|LDP4DgB+S<68(5KRg85~VngY)%b+8u zKgZuR*Gd0FZN8N?srj?Ce-VM|RpkgDYV&Qpp}$O<)H9F0jQvtx_+p!H`N8a(=X2$K zYI9Q*+I$AdEGw=|Lz}0s?hp>_!P4fs&v~2MM031>mwDcw@kCu6)5LDhamVDFI%XLE zfKUf$gy&pzq~0fe)Dt?FnZJ?BcaoV#KyJxBb>+;m522Ok*Y&-D@ZT@ft6e^95bX@% znNxz`03VIZ694d6%$;g;8IHOU6?J>K(f2zg=^&-*$|Fu@kNr(d>n$2qXW=gu+`Gu? zmt1-b_fQu@IAgx!0`CLlA2Bvol<+Gn2|~7FmoKcW*CHR0qVGafp3+}u4`GJc z;FT1NgE9HLm?H&Zbge3Vgv}_CHC3P0;f%Wfz- zOn}e94q9@C4B*x$gL%ue6#qn&hRE3?tPN6sn-bC{OukU)P~*cLWfnm!xKNjCux%rDs z4H=9ZtTeVn=U+ud7T~Ev{64&zwM~o z7)(}^hso6Na4;HbeM9;%a*pmEc~Iqy-dZz}(r@b@iV?pnhiBCUTDrdZ=t0(4y0h1L zfY>gPbET(o_wZptX#fep%-rYS0i-HQ)VU1tYIuB)ZVkn`c0MW!=ACA0yl8oKeadi4 zgS&nhBbvlc`x`0M_(LdJk0y>{moHW16?L{K6?NmucaM;)$C8h?`O9&_nIG|{YkCsG z=v!|zqPvmFp#CVK@jhKg`E}c1Hb(|QLmb%xp8T)kgra~k%nkZ2;T&dZaLS~*ivuRZ zLap04l(*KdUk8q$X1ZT83(UwHin05|=x$aPKolC?^+$uwYAr40qdWBLiQ&L!dU`E~ z))-+C+uZK4i+QF>+H{zV_t-kvoAfYf1fd!RtCMWzU-X4XKl!u!hM3i&6)K-KNjeMh ztTBf<@w{6*z31-#6X)jdTpKH=<{$Q{C51*eRE%kflyz*Dt0|@>`^XM5DzrHr%|oiH z2ruR#a|JJ1jxx+9{p=`LVFtFrVh^*S3%yt9JtB zTPlE(WAtQ;{DP?3y$-1#^IoN~=?ccm(iDk#ReFdk+jK{Gixw*Jq$wU|Xb%Np zaDQSmbB;$mjOYR+eZ*n!}&ZvrZ&2b3|EAusC_AHh22dvD;Z)xhy-&Z zaZ7$JS*x|%(gcz?ImIb3v9ly!iy^9{S(46B7|C??`dmnf_3f8Gc-UHxTN0un?^UaX z-HdH=DxTz3vwLZ#5FV*Mf^RlC-X8-}H4>;luWdvvH%kI_Rfc_NspT)znp5_py0`!a z{<*_9gld25og8|A37yXKAlTeb!|hV-C-OI~*;4a1C`7}wbyk_X*D2F9jXlf*$ShYo z1{QFc6VoBHJ?t92J?xrVJxJ#83w&#&S3tm*P#NcMn2{DTSh+oLMr^hX#6$LNxve(a zfU!qr*lq7j$1MKx2k%ohu*e*2Qr$6v=FA%2u7_qJ@9nK=%dDegS79thhrKh!t8gy$ z+4A8CD0pzQ)c7gBN$CYz8La*`t>jyN?8n|sBoHl|`3i-1hqoM}Hi*;S=N9A$r3N7o z+3&~@xy--+)VpaCxS792w^A87;$}h$WjQyVg=lKK($=wn+O>4^uCz~DciAP6 zQF_v$6lft`FA&2q9?S)`RL4!-m)nd}rlJJO99I+nu%tligkh1bpz<{{MMhJD=A1|S z379;3)L9Gf&2kc$c$j89>`=m-v+=>~_9u)}W{`N0Hh{aL6OtjUOLl#V%;gdJ&<#@%3sjfSDdX>YXin3H8; z?9W=Us@!ue);=%0OMD`nXWgtVlwX3e{SjiaJJGu6+P9TYUMW*NZ{0~y2S(xDUF!$R z4*5Lpj#NTXVW@RiRy%Ok)HW$lDu(g5&~^){reliEAW%qX!8-Y{f?a{wpjiP zAKS^250sjuviH1x!a*@Lnte(P6xFwI_1@g^{ z%_oU5r+tssuptA?&t6!=;>Phc>`B=#($khzt7Od;`_Q}|mh82$?j7avw1)Zh=3`4AOY0%DLx`|{0UNI@?fG)`kXvj@BQypqxz%qKHwi91R&v!ulQ zhSjI3wwJ8UUc-Hwo6`3k*0PtHo8=$8=+n$uqLD7+funiTa*m^072hgYcLn#aeH}~2 zf@!DbW64ll=I;*cZ+xklzZ}uu++H4tK{ASV$l0UbX?HwoamXJwJv1+|kdwAr?$;R| zQ`(6-Ms0J$K~OwFgh^Z!^zVHiQcLR7^a*8%cz6=0AXBosy_mxXKuQ=rB$Z+rlUBsE zQAB3q>G8POeJQMSq%Gn_^z=2D}JWY5Oklo3{$pN-raAd%PXCd4lYJB({jgALQ z8z)rg>kgxQFhVf}%{7`ylp(@mHSm^7E>tN(WB*`!5oa1p5czp^pBpa_VrLR!ANJiz z839yRgn}Uyn~CN{7$0pMvz`q0u<19KP*AO>*CWw&S{(@2sffQLS}_8 za$>-B>*1i&u4Gmw@G^|?jbHL?7>XcFnEdnM_fGd>{@I1Yqxc~TZq6R?JP+n6MfR2? zR8e7@j{(fv`l=S6*(T3NoC~~gmY%I$F6Cs!hsb09o`o-yRr)%b)7lROs6Y52&toK*+gvw)N{T1!=0NtgB-2WRE{~3dm zKXv;$)9LxZc~^`X>|-B(z4-tI`YxZP^qpr36=E*?=zdOKOTrOPnS3EIVLvB2<~&xh zK6<)b!!Y;jMaOEK9VFjBrNAkPT$c2yV^PWkw(d2guJW1|<}6K>d1gv!xXV zB^(jM9uKx|_RZpM=ki}Sl8=^p6W$UZF29Z*$tUOmw?8uDMxD}$Sthn5jGX%GK!k5` zmx~j(@<`&H(Ie15r8i%;L=vZrwR**ojRlv*c%r))eOm73|6->Fy%BSiw^9*8li|!S zDn|Klh+h3d9!y@{C&?@gY@1tv9p&QIKaM|2&d%Bu-H-bPqbN-34>c;sPOkY8-KrHAn!2CQZgpm!60qx_oTD|)C*Sc5ry^E$4?FQOP+v5vh6iz*3w-`k zi|5x>Tw%Sg!4{=Us}G6s(LwQF&?S!FAH)4sS&jAJ=TO`e!)X1Z*ORG2)H#o<+-H7w zIaler@_U*!IQbW+c2PH8E~#*9<1OA9j}t0b?=F8da6o`i5ql!gntB#Aq4787=>9sJ zz^FraX8W-9>_Pn30W5AA_0$?>eHMR-mh7R4d&JfroN$XfzmHal!Ipb2V=6H2D8v$U z2ApCh3!qBsf-r9I_?-~1q2|6+_!G;eI${T3R)UxdLMo`obIr=_b;jS|_GUE1Ci|(i zn%wX6gg)So7&Sht2FUXAjJ zC8b$u)fxe+59cAl@n@$$UNzXTH_(?J>+jH|R^2)H-ywq5Uf8v8AXHknP+IgZ z)RH+5bkGbyyZ*S`{>h0Br5%WE zL?lLdXdw!6_Vl4 zGf#GSuWm|FW=M@tp`(h9P0Zj z)NpQD(l=EWNmOfSar6KMh?2i9_N8TEx0N_Bo$C)}trJsDi@0D=2~!3VD`Mn{==96n zO#7B0vo3w(nC3lF&wvT;VH9lFTw>xtlOe@4(*$uW0J^wVdKffzvXGa%7Zk^AjtDazsCpg68bDe$A>PY5X7b~ zAcEMA4#(i>dh}J?AbcYr3?84IvEosNeVw)H6HqR63 zBW#>6;O@cjQ(`=0xI``-V5+rHEO zf7`yq6|hCyQq8z43!?O@P~p_WJflJ=d!3e5_AqD!p$c8$B#V4O3uKJ5eU`qpo%|WF zS!6|;gLPri|5KiUHH*}W!CEyWEu|B5&1#_&8_}70zU5Lld(G))lbqLtR?KQP$qjIS zA?xn1&|r`1r4Z(^#VE>9*43g=6tNy6%LIv*rXia^WFV%?T^Z}vnbgM-piUru_<(62 zxvrQ>2?a<^`J4eUuTrcV^7g3F2KTlpuhs(ew&s}`&?_Pop~q27;MrsNb>xS zsbxWq!!di1v`nxA?Eu=1HZxS1w*DLs$xIsvYIf*sUulSkAQ{V%&zh*DRGo{W|Wu zM<=T85QXnY&Y|x|h4a|Ic9sEZ%E{_}nOeO09Yowk+ZP+*!>eum-M1@~Q2JAK#RTplVBg9#dP}a0RUp zT+fl#yZIz=Ok$Usdr0$WPL_6P#}2(B8l}o`=*J1@N==7V4vKXg#k}ENTY%O;CTz@q2kBFn(u3kgSC=d2#aTDYkubS<@T_C+ZW&G244 zuwHsde^HDeoI0dAOW-C|fTlQabS`y~;s*=t`qW0=Q%#!C`0!!0FLCz6Wgc1&23VGj zRE{7vxW`9)i0zUeA;}UE0$2A<8mc=K72M9Db_}~1{rQx!NORaHP{x6IEU~P|Zeg0v zPWvpH&fj9DU*ww3YvXqWbg-F5(o|o&-KiFB-=FS_I*Dyl`jang;L=r0Og}&78_UNj;w4TFFIkTOP6)=NbLIB?ESHWvnYlU^l@ZWAea@?|GsW5dTeOR$~z%Aj=V@ z^wYdH9r79$oy{fvE$1>#k7>4Car0MOpKoVpNvk0!{*HeHy!nT?=u3x(*Eriu`u^}f z$~)Ape^TX)U}f=Ea__bv&k<>(sK$!;CwYN9hpT}*5vey(6vVeQ2;e|YfaP$lMbIRc z{@QZPuEv|%;H=R3)9a*pcurNc!jVHF#j_A}W}m$tA9KTUnco*Kw!Xb@b6y1bRPeS) z)w9`u99?Zd>1&S$_MfZ@pH;V!N3k~!vEJ}C2reV8c+3sn7~+x*mTb5`Ex%1`Nax9% z2P5F&nyqk1cQLDTYvXN^}3J3mTS^V$*$BmJLR$5BA zuH=QBnhNHULl-y%A$JOkqD5zMiBQg`HKOjSb-zp(!hbM?^itVQ6v~o&Rh{>(vH6e; zaXbtfL70taC)ulPza-wBF06OE`uW;U?VRJZA*d{*ZT`z%DO!zCxve6N&g4Hk*l4Ac zKA|W1&pFZ_SnQ@j9j$G+;+Ns7KV#JMMmRqh?tC}K^;nF1zi3VDyk3TRUa%=8uR_+W z6o=5Qq)es&DF1znwa^zI87v>k2n4Q%0{~h$`)=jGEZ;pLepj-QFjD%}_V3s$h^^rV zraX%O*gJ4-ou0U_jeP?^I-K4D+_-GjcAyrKhrskD2TShZ(MDihp&nMtoa7faj9$@s{Nq`qPL zt)B~O+a134y(V^@J^v-Ik39W@T%1caveU zji~gSazTy7Ima&K&kpT)Xc$2j6_c;dg?x1++2=f4L-~n&iW<(gqL-^MgzYS@1_M{X zvy*H|X5}&}Su&iH3%WnVRk{G(Z)4MQ+fGIWMgU6ppN>^h`mb$zHu!#OHo1Lg4@3xTt-L1&^v$F)lAZ;#Ii~j zjx4j8SuXV=bufOAkIT!wtOwD4Jbq?slICSx`#{z&duiRn4M$uU;80FY4zzHZ=)``@ zV1y%ORhr2UCOdkxKoEs3c4x#l?n3#8xKn%+S^`bp3)jOEpsG_sI{&nUWg6sP=p98=azLAH9KtUg55oOW(;6lWswQD=nGukV^AAHOw{;G z73Ri3bx-g62MM+6C|R`GHpL`&Byg(9!$F0 zHOKSvVEzYY*Btjf!#sgNHRfxHW~XYjS|_D+;vypqM%8ztHKfiX2$XYf+mCfxN^(_T zjlUY@>2|LqI4}vdx!S2_-)Vs z(22pFeE*Y?&m28~YfKJ4t<@F5?7Q&l7*moh4?+kGWj;fwCSNO!cy^NUekZPYVCcaE z%7Ch5VgJt;F+3^4ed}C-`6bTw(BFeV)YnyoYxi>vMbR^BJZz2kP@u*5}!I zO{~v@sn0)P(!*@3Wjnb{_#gT_*4pQ9J@0d0Yo7O#h4fG)!=+P#g;nm$%|cog3PbU zn|Rk3QrD;RuE&@NkIdV~WeA9GNVy`%h{gq=46*{Ef<@H+>QepM_o@Qz3=ZP>TmHfy z4>;P2@>ewV^)a7EG<(}PY}$_%U}SHHa?!ZIg4<&IDD8<#g;r5rPw((?up7^)Ava8g zXX@jAvOdxPQMc>AKU?QMUz<_HO+&b&x}603r8Q@J4iy(y^w7|Th%EQVZ#H95M)fya z6XM@pSYmWWp86yuMx&HsC-#vHnx2p}QjtDz2Gbdo_0m9gc%Q43Ed{8M;3$}OK<$Fl zc8B}@yFvrSqYx#fM*AYAOvp|+4qg{z3dj}Xd974nK%0tW>wC8F=;RLicES%+RF)!C z+Y@ET%r_ZRgizZ+EF{LUu@JR!m3$08I>t{n()%eBUq`WI2oq6>_LS6G`0ltQKbNJ^ zW>)Ot%McR00B+iBo9IKg5Q@rdmo=z{CT#9IPPv<2+_km&FP6QAcuj;gK8;|bK2v{WSzsy zMjRJ{E?o|Y`sIt;vqi-93zD$0V1O3zk8Su18go@ZK9e{G_*~?Cm;cE{n)9K7o#~Lu z2?0@GRO4$}-A7xQ8F0coEU+?2BC*6-Y)7y-3!01VO;hn~(M;j?oPl7if8ycTI3U-K z-a=0NlYaFRkQ0CZ_23{HP~ngG*PKT=LW4rDwTHFfC6=9;hY}T>R!`(%0na@kY1!r`)6N8Sg}KiXg64% z|A{49@{RufY|$*S%AHsa@n1?CR_iRKZgQ>go9OL4{3!0@j@Z@fO>TENqa?mG9_~& zmVTm%UQ2KKK)#UPg(7fwq*REfXzIPjpH^vqNH$y~<$uOYEQ{ZA52a>5W|d-E<48-v zYaw%oV{kDp>z1QI3yE5f2 zTPtPzutFlj)Na5_}@i@h%9C?`Tb-biyRjt`cTmQW<=-8 zJNSEaz9fAkRtaqvP;M{flO8~ZBhz9_3^SgVcB6a!M4rEc!Gd@5iITh8v9>Q{ZQ9ac zJ5Ke`2nzshBGrFIv}VZ$OZpA3vpb1fCjOAOQ2NWG|^x5!KQ0iPDo z0hLsxuP}Qv#D4oTWu&QyrEN5CpT>GmyH!3J5*}qklt1zyQf(T9Y&x^1N_s2gV>DG; zP3TbS*nyg5L|aTrFQ;mFVt?LmQ@7eYlM1F2Ksn!clP+`lWjn}v54`Jbuub}NoYW$P z_bk}|eC5%L4eW@@8BvE^kmvY|wtnY!Dw`XHM*FkP5uk_Aj>J~b_IU+uGr-L2 zf9Y+*Dq?U7zX5VZ*ThcEU5$?`3-nH)GWXAGf3(yy5WMUXu@JLoU-Np_*1~6LpMt*{ zG68Za7%Yg82V#sdrmwypR8=@MnuW;%4B4F4xx{^LBJOFZ4`m#wrG7cH^7b2N@M?Q= z`m2TGvggylaMj~+1<0&BRWd)T-yGy zi>VYbjs4LGu?P~pP2zneK1^Q)i^u`_16nRh8_Iud zM*>bsiIM?LN-p5U>s#(uq6rSQ9Zx}1DA@Dt_D7+E?Y-*q=Vv5F^Qk1b+C5Ub$;PS*Z%vkQ|-S>h-4D5gH|Re%ww z@jNnIb53igG%6Tn6Oj=1 zUPuLWwzr>iO`fK~>NBycL{dAKO-LiC;zXN7T}w0Uy4PHvhF+1+?;IY;5*vHkhWj8@ z@2RQAu~MDg?%)Z9X>2O#6D>fg3%igbN*d9&aq8N4`0Tz`o=K`vUWtbLh*)7;_@zIT zn!;Q&L$oCTlTh$v9l~q3^|Jy z)}EoTi^fLE#YAqz!_3IxcW<1Y*?l||J_j#Z9`RH31l$Z7yqiBe(4$~MM^(6diAj2}{i4w0~!tz9s zf8&8iT|Sa)1{_$BHA*eghCn+lqv8%Raq8UNGe>hy(1y-m!T$j^tc)VzhlsGGK!3;3 z{(e}IgX4)VjYpG>6cC~mR3TAi^r z^#csAMa_L)ls9&_)a#}#C@(Y^|5liGQ-o*GispiMiB6*6ism_OlHM+jxYlJh>%8#R zEKqG|%e#8h4(L5ZspYuyY~&c$GkNjTm3Np1zKoedljbkRi0O+LF$|nvq-dl>g4P98 zVBmfxl*fd4jJD$dVd>>OJz`JJyv3nR^Zv*m0l1o2! z?NwMk!?unaeX9<%)i(*>$5ZjhT!xzJ0d7!OqZ?6Pxmz?F13E1icjKi&qUEoiuNmo@ zV&y~U8)ockZ`m90uXIK0DN_17^H?RZjI!u<#Xl|p&HYT|6ZXiuUwxGd2!XG+&!_kcdGvJzcgS%(rT3TmEc9OLSEnktCOS zZpk`6hayAAtnzP=@!Q|C06MLIBu%^P*a~wGwDEIR56v6UnQ7V{V^#Z51`iU;2H2v3 zkfL+C`cS77by`4H#0#XGTd1x|Qz5`&#%x30&wM6D%{3y$B|*l!Z4Yiv_)qv8&y~3@ zv(K@T!~b-tC%xO?0At4~DVvb!XUJV$gykz|fc>KbeH=U%Ps z5lw+}Q$BJ@6xt^(A~k9g?`cG7)DI%GR+)d}nFSziamAx7u&roBgM^u<%Nl!KX;iDZ zpCLrHf%7GSrhk^-;JJh=5*W|hB^}Y5V>Q8Ff>WJ#)s{3yezjkD-xi16N6&MsxQRKVkc~T()veV;lP9JUQdnMx;Pyc^EC~D7jigoxU1I zT4u}rkbcm#Y5e{;l^}VhsK8-#y&v+<+fB-^9s4N>W6ILH=1_`z@dRW9|56au;QJPv zw5cG5OVNYpa9Ps`jT1`cWVJn-a#GlA#>P3mi1bN%$5zUYy>BIc`%b;JnFTkP&M*L$ z_!XJt;9m`vUJn*jg_k(bHZ?AjcjExRRvdPjZ)^-K)}`Y!I{b`{>lF}RHpb<+|G{-T zR2)JAE5#4ayC6~Bp^8QLl;#IgbEIpj8*#T^OMG=SH02=dHrz->_dE6wPe#BV+R#q7!V9o$EcT zcj)!{pnQNY(N@_%qVetV?C3A2<>gT~7XoDrDLYRAnpTk8>)*N#$l(~d9D>B)Ukj$) z6epSTszvZTExCI+hI&q~yz|Vi%}+oh)teRK;t$FqGQa#)nGgTP!Y*wPq1aK(6E{!O zMT06a`&-Y<`dC!?t7&ui73XTQXbwEDV>SVg2r$NwUms%#b`{#@7IA@!`fKyw!`A#( z@<)T1?ia4dGSB(RBneBzzCN#voPq;R9W@{(cc$W!%W$%NRCu`#P43XQ$0$fRYc3kqN#9yD{raACL!Gaku(#6U$ zGX2t?6ihjZMW6SB;I*!x=B2fDeBZEsoEoLdtBm&7G-bR5-iX;HdTaY{yriIe{rR@& znYcT7l;t+k{Qf3VM$E>E#S*drPd>t(wm04~k)?hb>gB{|OFymR=<^ff?1tGo9ddUy zcLe5hQk2m5MA6shoDj4 z6+hB}K>x*&AmH7ActeyU0yvfeM01k7F?b7y&v7EwWa@u~KG+IQw6wzeYxsPw6c8gF z`4V&|tvN`QEd;_^+)nsbdWH9=i-7Vv4$1|e7{XVbGUm@4pKi*r*#P->B5pV#o~;~@ z@be_D^8&{}SI!p`EcGW}gL59RlXAhW{tz?uo{=gzGUIv!R<;p1>w!lx{uq4rAvhX% z>SYfXJOj)zevJ8!z40iwX~*Ftpi=u{QfBH_rfeK{qcjxD;nDN+-lR7GU9v|C!l4FV zdprl8kYEAvb#fZy2!uYJq~-^>Jmcm1CZ=5%qXrvEZb#s_Hj+z`<|C6&LNbQ$8*j5l zUDbueFJK#&V?_Ub64p&9zAhQq&higm7aKVn@1^xD_ZkPz_L4;t@@ESijzHJ%qBDTa zw`m=d0u z+T@lWL}D>K{YdQN&omI~tT-6gR%HTFW!e?3rzM$`@V`(I#CPGZDYtx}wg#7pR5O18 z_5oBH#9~QpDK*7iUXS?bEA+RfbpJ%%QXYTy!T>HBomGYpO8BhMPb zo(Rz0?}8i*sE~1s@5<+U0}ede%x{Q3V8f1x3NLYj zI;sPp?7w^AfA)@!b1|5dpDbgA6Zj{xqJpU>&bJk@yvdRa47K?zsqT*OyIeWAg!2h2 z8jzy;iui9gS0|Sx@sa{2X z`k}a<4c~x@DnB3sVz(C<+9%z}0)`xh5dibCtpyIV33bzBJ^HQb<3#|oqLS}Eo+T>z zjuuGh=R$Y5g7k!py}517Ew^PrLp5xu}*ODhP#F!`$8bB(JC0Luj{JhYsZKKU)+`sHX& zkZ39BZ@Y7INR!*RO;C|yIcP=e#CT5pkRbm@2FAN89<^)O?hDdyO(BgC)^L2W5$S6~ zTj_9IA#%zRo(zbhO!~ZXd}4~+;w;Ka71|W7EkA|RNqb(n3Gfp;fKX4tSE1$IKs3dc z?+9iY47U7P(xUb}tWJ3eN~Z&W3W&DI08kZ;{DF;~0S82sdV$n6keB+4SJ|#{qSfSa z+R5YC@?^tU!l6*dLiac(7ZP&c;Nz%$X3)n`?MLA$z?$ng?;zHkm9#|-0}5r*-XJvG zG=e1fgCu#K_hk6IEGuaneoiw8*t=TZ2=5lMZdOG4Ofm2Rh-T?BxcH3(PXThlYE4#{ z0WhkY0;kuflyUb!D#4h)=@f|n=!i6PLJL56J2KYeTOKEvnj0Wjpu-*x9%l+7MBJqO zBJD(n3%=a!R~7L>lq$jW(Kt=C{l|U*T8{-0hw;q+Oz}B=zoUR8{ymvQTnN1Y`(0kH@f&Nbf0WELW{)gIe&w2uKKp~#jXg5%Qq3F)(pQBa9B^rl(sn#o z6gtaPeh1h!kp5#mn>>usKDq}5gGLX^FeZF`9m*IROZ8p5$b)o#xj)2eC6-7L`F-G zG18Q3b2X*(7+awH(|M0fcztzXn!L4u7SVc$eX{9^xdSvkyzR^sMjJCY?*?ht3x7P& z?~!Tq*VbThkE$qI*tW?zQRerGRNmbq%XowriSN2S#YM)2yf6qekH~E~N2_+65u18W z^r&P8qav%7GIM3MAzFBf#x$#oe&dW2{|1NBnx^@tt<1ba+q+ef;lgQH!Mt6nxr{&X z*E}#x@Tkb6Q#KhC8T|^CZDi-0#uNg1y3GD0^wtReIYSee`*_C1xU*m=)G;!{id}Ty zFM_|OT>rQ7CPv~`2w~DtX>lOyy+95fPS%!M;LmLGQ89?bl#%%d=7TDrY4Ak+40(h8gLN=7ZprSC`P~H*C z5W}3-DYDakB5MCcx^BqOHFHGm#HQ3&aK@sEj0|O;#7aql+>KDs)0*u+XcMk3gh1Mm z6Xf0*pufJp8z;a)8{MK3#j^pObejs+AtN|G>AW#tK};rYo@g?ogY2+E z0u-K#B%v{^?ZGf3`G?;d%_*8>XGpHj3VUEUJ;FzLEk0?0e^*fOrmNJVLKJ*U(ps8b4=N2~=hd6Zt=AD#Wwj({|6m&d;*F?v27T)a5O&SUykJNGf?lX0 z0z${plowD#PIE1UUCRdUbuDSMp0iCr*cIow#8v-_LU^@fy=;PGg_aj6V(XKohw~dk z{+Q2d_dK**$g-W~XUS2+J9M7Q;jhjo(}UMCpV9UF*^6;W{9oew1E=2s-m~EloZ}pC zmMt9aHu`999FU$OKSFt30|JB$dn%YrNq5Bo*9H#hf34sZNkfptmQEy$RG!%-3* zj`*pnF#~GyPWwOeft}403QPE45!fKCBLd694yuP(3E#sQFvG!^`Zfo{9@@K(;aEUH zPv{j8Wlf$OX2<=@qjm(fOF93tv2&4;C8-3WUEC&J&G`TD(0?GkyIDqyg9E3+SadM_ z8&s!T23N*8s7r;Vy2a?|P>$?9CN~baVP)qnzr#@lIpfV7*tWnNlUkZKi)wIS;J;82 zi**k=-<12w+j?4uz|xFZ@y;zi&pUH3OK6ldI?y)BXS`VeRF1j2L~>}}JBR+CWAwkB z(f@NczabmY)*3k8>%Q_|x+l2Vri4==mLsPk@o%hew|^T~Dj=tEH}N)j(*zyyxVu0( z2jc{%cvWS^TsY^#+6QSYDBJ906+ha%3Ty#?TM#Kn1Sj~;Q1*9tg3p~b{jRW+1mB^g zJxIT17{yr%HeiZVi%LyWAi+KkO~iP!WhV!fP}F;Qc@SgY#NKHDzlESYSSL_{1?vR& zR$r^I0-+T!Yz1;KYR9EU{vl4rNItToS>~}GmN_4ff6Sqt=tI9R-hBeg#l#M0> zOsG;F#&wr|LM3CfyrDp6faeeDFltIY%%| ze|9a#kiQX&7OO*7bT`BgbLSS}AvobMuLsWbpJK%p%G>i;^ksrD7yN+-=nv2`F{?ipqXIpM0qd@d@7kQ1%s$53hM8~h()$>%0J603W&APT4(8p;W4t1K z7w!&ijms(Oh%`gHb;w7`S~_gJFrM-e`ho*L#NGRqxCau$z#Sat0j%aaf$tcW2&O%2 zW84jZZ$zgcI=X`lx%5<$36wn9#9l3!LHG#u?+$FUoq`!-I0wyB$D+%X{0;=H6R+PL z7H4FBfqNgNe^~k`1j{gI)>Oo#K*XPtDk`Lg@vsArT{jbRww*-jELHj}^1NjY6<_M# zI|KEevri+N9thprHrnJvmLA;WN4!V3!FR)cMCZsBYe1J<3g?j&hc9p-v8ILSAUHx+ zLVNra1d!*G%gP(Q_hE5EDB`^w$H7IOpjyRYdD}yv_mmM7%HA;w2t|c3Zs`_o^9|z` z8oH+!3qe!1awM=Uo#?j~3TD~Uv(c+*coB(jf+`X&;zmAZ2MbP)st+LNANlQyFSfKK zYrjjn0273}T(ALu_?w$i@^V2tl;GBbm%I?cN6fn^A%aeP7pk(bpbkigQ{w}>WK}g# z80J}Vip`rsfQ|0Gp4`Q2rCB;uHJs;1mV_*>de3WuvqwAJx#trz;!fAnetO1a;uTCl(0r(03#E7Sxk>jrF*Y z1fF|%=IDKE_;wCtet0MzT)|NpuV0NN>=UoQ8g{_mTn0QNeF(R2P-EH;EL5*C^&kTV zzNPw(cPyR*gA`uNVdg+^hi%oMFTeh)?|Mwl+f$vv|(4D5Q3s)_PHUzk^~ zK(Hf5Fu@M)UR?HWH|HggZQ#@)C#00zglYUv;6LE*6TzN^YJcftw|T{G(3ez2`iLH4 zbL!(pb58*e0xHv_7j-9l&Hac!e?=#$I0KZ94*W_Je5D<}qVv7i?n_Zk1mAm{Y;ibg zkCZ!z+LS#-)Mg5jMJh*Yy}(|i`~G179=zJ%0(ZOg4V`j(1dgy_wsSsde4uY>!J+BY z@-1H1Fr7Lh%Er)cHcRvlR|tEpkPCb5gK=(C$>K}jQ}5`;H^9T&w}9)-g+n1|%OAu< zMR2+OBaTCa#Lu-hv&-;-?0F2T*+Vp8y5f6DDnuj}YYJx8SP%8`3R-GZQ@bLpqS{ z%J~EqsJd@um)7Rl*y^!MYZ&C;KUdFwfSR1Yax7FHfc6@FZ}mNm+&}Ww8**#$E8yVE zY;6L@k907?^vPo9A6168*?!At0rnUFiqwBRntHy|2<-qK^Hr=3eP?^bPcDfNFd2a; z!yZ{@-+~0Q{gqH6qlLJ;@y-2j@ubb?Gg0K`JaG6SxZ1xLknVF&ClV5Yw&dP*?)7}n z!HECD<28eE{hq>Xtp5T9Et>L``z08}UD^8f=P&ouZtZ+N!7`x@gs*N;ji#dzI)e^K zyRRuSL{#E;XI{ObD-=KBjQ@h$Sfw#e~HK=DXre% zbKh##2Vfw;C+HQ3juYXtzlySJL^x-bJh?p&lNwG#)Zg!nZx|?h^pqL_m*IeMjPg?# z$YlbVV^(csqxk|XfTAhl)tO0M?)Li=tVjN2F2RiwYBLKV#y@9@jyAo{6UEye=WirM zO^r~EDw*~D`^t$YM>bI-yRh)}_ z-IPZDFdwc;jgiD<@1CUd@vmMQWRC3bBP!V4g`=?)$>Rch@~0?@MjSScBzTiHZ^TWr zw6H(&rjb7vXWx`GI`~T^^L)d^i9cVrO=uLNQ($AA&<5Q4;PEtuDT$%TSI}9*aUO=o ztoSu;*gDUcF%<857DMr_4ug2Y!}#9nHDDR0H?6u1PYA2pB*j260jRB1@yO*S5I2PW zCJmN?a!oW25frruPm;&cvPcwsgQa>6 z5{}6|jT?SKgsC>L@e;7!jh)^rTl0oq_ip|`Vb^HN8>lJG{B5sn#c&(HUH*-j@$F&CruvmBkYMdc)qBkah|t6)6fOyD`$;RH*n$k_6Up&2{5LU+#Vtst)E^U7KfObS{&#%mjUV^XH z=C%U42Y^=YKE%$@$}3h=Ow2zkGtbb*ak#RSY4TPGR99mypw6NgQWj+*jl1uu3xUjg z;Nq-EW3JFK$NoYP=#-%rT%dnEsbia-Mhk|IsHp~eF6 z$1yl2^RY27GXnW)nNRV6_dR}*xE5Wt{H5K4=KS5V#s4#1H=#!tfoa9LPfEu2dcF#>-q4Osw_MXaIV^TVm~ zSr8OifeM{KRjK~FQag-!V$ek7lYfU^aaO*(>+u&D{uO_4Ze7S?bo%l3Lemw>Nljjdb zy%)x(ygQ_GSX?UjgmJ^GgGK8@C0q;2N6ms|Ra z-~{gtxe!&Xazba`wxl8ul&w>OIUgKRkAw6G0C9@6IZ2~QP2f&*#G&JMA(A3r$$n0o z@m$5Q^Mk>?3OQeiaCjW+gv%1v*0!hMb20 z762CY(em_JFy~8CZOS%2h=ovRx-XEwZE<9X`*-M?i2FKsIOHy(@QI$NRcuSE%%r z!oUEsKmsj5@W%!T*16DV5FY;_$;uEqq-R{R`Ul>a69998d!Bs(VJ^|PfFcBrN)V>< zFi|8N+PI%ob+uGr8=HU*?kvE*d0eF8v~M`>>SK^Rnmgo%b4i>v_mnvT zHKN-*myETl1P}g(sVq^G`FP zfM4Xby7L|5o+9bjkg5wtvzrgO8V_9~S0K8WE4oc)g0>{-DOfY-yR0Xq*4Fm=q3kc_ z(7wqY(IZm-Li%1^nzWSZdu=IiENb?z$Q=WCWOX3|3ZIk>Wut&MnC>3?yt!are-BBu zN7D@=PnecjX0S_G9|5akolkme{Fp7($^_7~LI zx0#x5jSEaBqZvNl!>QHxMWK~H7d@;X6FrB1dE(UX_}IBpnFDJ-7>QIB%lF*@la_dW z^zgX(0F&*KJ_Q#WI9GcFosgapZ*I}Ef^>nfr34>FEgy;nVsW^frnZnPD!C425QI&J zP{c=My)NM=ss5pf71kD=m{>7ws@4ix`XE_-8w}4{A#VxaS4M$_C@((*76Qj_V}HQ_ z3y*NUWmMR44?#`?Ku77tSp9aqa1+g0s9Rxq4yKp7IIs%=B0vl=EV$S%Nwp4v1UkBB zwSNoGuJv-^=u-UD4zeTsx|QmYY=p$iYLki(L@dwjq=Xn(_##XLw;?bM*34~Zrom_; z`gjJGk8pCSCpR(}I@Z&B3FcXu=Zz=9zxrawKQZ|C`-(tQfCM4c7PaqdB8Pq}6lM^} zDZRrx4d@Een>_byLT5O78GG_u)ll}~A*{q|AUgrfGs~hq5q8|vI2)|P98{4yGulHW#a70Fx9_gzS>)s_eCh>AiNcqLu-wC|w$~!#Bv; zj^jOo98j*UJi8sM8b|tcKjpw|Df1R{+b6SxAJC8MS2|k20?V6>3jCxDwe0Gdl!}RZ zHW?FAlY--eMa!Yg@ON}0`jc}BcAM;=kqA|zsT582oN4Acl3y+^7vC_c=RANG!hC-^ zRV%<1RLyg!x1jUAdnN8I%e#|QWjvO*mh@%$Wx;cAh&1e6%XMCpUJs@wE+oTd5x@M0 z8`oj3O@Xl8cZd&5SMlrRN6O7N*{GL8K^6Csb*S7@X|MH`b`8v0(bBs+`2So`uYhmB znl=Ftiyahr2{yg=H&`;gn3rf}Qm$jwjBBnGoxqA+ReMUwmxVvz&92YnV`$w1aw4~p z1t9;GXJLqjs?2#hLD2(Ci2>^VJARe^=yNuz?b$tK>(Q4LL)zG{&KQ8-9Ep#+Qk$ge z)SS>Owuc&Ka+Y8trgZ%IlpLfEzTtiEndqRYKW`{O@v`x!up%!QtJNrS9qzj z>*t8sDkvY*;NX z#{)Z4ByAG1dyNJx!)1BcxYY8{BdpP9BgiGoV!ZSX;F8?wI zZR1f1=AVg>GMb4lfPA0cs2k3w5~gFeVdv2{lz8}EdWJs1GeNs0#0iR}J2w-8CnzHt zOwIya9Q2i8%{+2=rbRqjZ=e9lXcoVme%9r%_W`2oRV2ixH{Gc>j=v$AKJ2d0Slku5 zXKeF&O?L&yH@GXPxih#+XAtq5u_<7FwxvY#Q@4`e6z#GxG9c#1>mOo%hW#l_|ARTO z-e*tXn2aS|^Hzvhak1b&((WF?%ay%k++l=AtfS<$R zCNNTT1$LiPT5U>Ys#g@A|3c$_#K2Z}fRtr6i(DvIEB}<9wB@h$pqUv4+xh&RFnILi zDs3+PSbv-^%<}E(6jh%A%lkESDdhMW4g0$pc3vy%peU%j69CpvD-PVw_l+5da-?2A zK3v~^m^a+CXCcP>d!^&JEE^M03B8}JHb{BZbW zk@Z(;M~e38fn;X8&pfWJ4>`-{J}66ujB4Z)7Corn;{*HS{mAYmI74~wCR!BjUnkXr zdu+ygRKDBkBb~v;g%dY=*smV+t4UDXLfqh=XT2)B2xOOnKatXpwke9n?p4 z=kCIv>-l#3NY}&9L7&WS*i0+aOL$^DdDc}?8z#VpVmo)R<9@xL5oCa`t~a}KCINzh$op0eTucoFO=4|tbOf$TVB$xa;x+oGe%IO9M&w$$zr znYP-ip%aj3DVtA*=hegd1>gnw9vT?zygAEFeMzS8JJ>8olM7s1P<1jnM1PRpCO-%s zzVRVgmz(Ef=(@}rSBB&6gM7QgsIDdx zxF-;>URi_j@tP1mPW1jLG+2GpaDe7l%cSQdoa_+tVA3%L+rYg5tr!l(<1N9bUrF9C z8)L8o-Hsv&=QlRrTUrR(ZBb-Ks>Y_|TSGo;{bxQU`d}?VYTVe+-8v4|bFORww|xOi zxOfs-Tyr+1*I+Q%cAEA>Fb$^+L}u)KQ!-q3(=yDUxwdnv&E`~_#zVK?c?a|RkEo-e zsaC=#W zj9r>u;JSM`qjCmW|DuT-cJg6(3UGMXlQxZ0A3hN(S0CW;;lb@k7?wpQbRY4tykXK_ zCA}Ju`eCFgCjc~ArW@BUfM zsg3j6x|?&kfkY0a5}bV9yN~lX%N6q7+`iBJ zqjub)xHo?L9TvsC)+Gp)#EzsPo~+?1{xU$*Ym&WLBX1<}UFumie zGn_qQwT2ln%|~V)Bgr=6Z|(hlP}j@|4FRlyJb zRc8yAf}Ti>gW%t3`t#1`Ludr=dnh7{T)zGHG!s3L{FRYsWXh`aV(A&*i;kI0$7co! zN&*q=rJ~3sK{C4^@|_`2d*MmSTah>e2qfT}{aZ(ZXrluJJWn`RL4MuOHITy5axrZa zQl4+6HBS`lf@P0ZLb)M%YpLsPN46sjk8n|KBZed3Dvhnlz85@h_PE!L_0U`QqjQ?p zQ3lzon2+gB+Y}Sg;i?bPWcxsW*K5TRZcuL8CX{h1_kYs20tZ{TNUkX@X5wLMe$qm^ zP76d!+yivVL+-mWyFvA~Ob%6E?v@tc_rSEHo&~;h?t1PLR^#`ZifuG@IGfDw<}0$@ zbW`gogga~xy0B|tzGmHF+P=TGYu$%!pu_923@W2UHs(#c&wO$#=gGvW7clSbmIGuR zopes6594}Mgx5}dTJZMo3QsrM0-ZC!$s^wXzMVn6p}_dw%b3lyfXr6^Ru)+bL5d5K zIf2hioPy8$-I8$~A-5VzrTRa)t-Rp5-(_0-g}X(N^NC!`%`z&~STOSfd=H}}+aqe+ zhUu+H2y=xD$gOF|*GZi{KzeiAJ;NrsP-W%A*LhR7g*FyZOazAh|=T-UGy=~ zGuD87)m?eO4f?(>pp|!?RzTYAdL5?>ulI813?rns=3u~T%e__~+T1kFb6r<=z6{kD zLj)S8=e8WHZG*Q=Yh1U0B%bD{h3t6i?T#a#oFt2WbAQ3P8WBwq9f-!YrO*JDf8#Y> zfbQwCppWSUC}-%~3h12#|Ne=7G_f^C6FYeQtS9F4X)tVMQqTfr2AxNW~8ez1270z%#xl4**rE!Qix&8rN8& zwF$rJJRj}FJl{DhhP|aW(4#o3iwt|p_B>|NU}!eG`TavAAe+^g^7o+r-3!RchiD|M=HA-YATq{% zX(8tfT|^06SftL<7BGu4m%I6~o9YK-5TY9UMou6B>5lxXx3SumTUzT%^6RblLLNf1 zZ{=v_D0Q>BC8lj+4E9BH-b@YYv`x*IzGx(`7I$29CFPRcAddknP{m|E@PoYkm96PC z2%DyH|B7_}$Bo4knvq7*VEjv8jGT^ILFw52%=ez8e2x!Tsc5tq33T^`61@P;SM-^4 z8Vi{h%|9|PG|kM5)*~Sae1o6uqWv|OVD46?wVv5YhFuWQc6$S~THf_?kv{BhrZAQz zuXSNucf~15Qm%(dXq!72q@uLr;ZpMa9x-EuZ;fYx@~C?srq|cyq}uX0CMI1ZgvijFE9kZ%67u~?=M(EzaFkBRt#R{={ivO@ST%!Wxzgc-DhRUVW0$fVJ+3H&|djf-kC^FdSOz&kaTRTG21==cJcssHS4qyDfkpkaly{rX+@b57o(5v%uPJRUDKc=}Dm}NTaGOiYJd8NU8Bkf9A@iIizacmO4%UjSAgn z=}P*3Yu54QWNsB4TfMG~Zj7qtk_q&~n9T2pg>8AQJdZuKb)i-7UTF1!whm^DpY+az zO$WNE>1E7%x@@A4tzN4l{b{sHW3E#O(d2)jq5W~MQ2C474JZGb4#F#^L^ofPMn-nz z?`9sfzj(_XYW<#E`iodU;CA)JE+xI&G&5%PAon3ulXtF_d^f(ea31L9`^Y#^0-Cm# zcU8Bbw=25c$N=8;h^2ManhJq)geRx)lI^H^Y2@2H!@{d7tdmL(hhMC$aF`Up)5_|NHtj+37Y)14WfnZ ze*3gyH@}ZbGTi2kjMdpktF@hY>h=LyvwLba=2KlDlO>RT!8Ky_anilDX&n|+OeDw3 z83+F%%O~c^TuWl0DswunEe94@SYy7?ebPmnI!fPb#r3u=E#w=z_qtsP$sTC$4#fpm zm`QFqnV~o{7e9GUB}?RO?^E7bR_if(Us%IIAH%V`>63_bH$Tc13-2mjRO8st?zv0G z(rd6xR?=0wxwRywjvo+yn(1fH*mZ;b9NJbgtwxgCV|v3S6eLnqwK!t1|NZhjCV?)d zyVI2|ZosE3%nEr1miseh$O}5ljbj_#-UUN;vMqV%5)b2m=J)9?x}^W24H@@gjx7a> z=>VwbMQ-tP6<%*YUHJ8Yt^G zK;d&+sEMd`VwuXDi^`eV+FvxH5$id+D-REJ%9H$GsENBgR!$qRRjHYYlOd-Agg^!_ zw<}~VY0T3i1=;glZ(8-$ItnYc5ZYQ~$5v)kOB>&RI!GjpQC!6#i@tYUPFGxQPUHK! z@$c$CLk|{Di`OzU;K|DvX18g5Ig+t&cXveexB$6rM#LM*JjM_GoEp5lpC~ijkhZ!8 zjL#i-w!51Zt&+Dgqe|W2?(S(;SFr7yI(p(rYgMgt{E>gyc5!>FW4uh9==hrLJZ};u zihbY8C-&xevBs|(xcuum&4re9HGcf0 zWMqwwSIDEh!Y_z5eaNa*bTu;_dawD&LcAu(9d*4JO_JFnkFn{Re3ll{O{dG&%L zNMEsPBmL4aUFHaGUP~C)MCTZm=W?SvqN&EoqvIOw#Oba{q0L zJ(Q)^R1&O#LKp19G^>2XM--aAfCMl{{5omSCphcVp7dcyq8e3y;jKGpKB8O4S`VH= zT0A2TyZgyl3CK@-@@$%JR+Yx4Gws{jnklYj7?PTT>{eWB!yL8I5nt0bw3Iy8H8lSo zLnHhIh-{QA=(@|E*z?EFib)^kb{LEzGQhR(=nvAQt4g~%Fx3oHw2qNA4}0xupkNaZ z!(H)(8{L2VVl`KouFC4T76X$sL6i5KNm}hXd`A&;5$ka~Ox=$`1VnCm9DW!-h)A z#5bQ=p~HFHlr@Yn5s-zU_D{>>z1fJdJn}q9rmU*}4DJR?`b%f(AgyUJqhL#|8fRRn zIOcBPXb9-bHL_?t%H;idD;uaE|8t)57QJ$Nfl-Yv<2snO;6O*RKY^6|)1J-=SR#{# z34es$2fUdjnq&tbD1MUZQVX2sMQw#!=r2w*PNIDECH->%y17wF>k-dQ3BSvLI=2*0 z3l{1IVtT|M^yZzVe>6zq8~tQ1uZ`<16ThypB!F2N13|g(Vx-~byn|W1B^We?iIE zrftf4cQPfln}-9}kPSJX9QYfe|HZ*^@E3DHQHMuxjp0@f(Q|xOvahkg@X~jmetF8^ z)1%43hfZ-*c!om0Ubby@sM$FOaga(XO0Muo4_}zZdw;h7e(ubGO7Z-7>p5PA-mLD9 zTvjxS- zu;c=j(##JsP6tyQlT{)!DP%Y%jf9$@QYa2O8+4}UEP^+dsz51a?iXf0UQOOMaGC#~ zoXY34&qK-G)G>~Wy#L0wJ{r~oS2D`*Oa)ax~ndVNHN($o-Ynr{9~ zMQ*TKfJ8#GEyBQ&m|{k2Q0~sh8kFM<Cb^8JCh4Fx z4T(eQ>)ul^GUg__D-y9jr9WF9oa#Uc7xR$lmoCPX$x~0uJ%uppDpfhbEu| zG^T4~4@}zXVFzSsY3Lg;F0!maTv#{F3TJ z-v~at5#u}^;tUdtOwbzv6v#T+k(6=1>qC!}nN^#UVhMrk%TYcSNNuXDq%6!PTv0X* zh*c#QkU?W;mM&&VU&Q(dZ*unPQ~lBcln}^{f)VnzcxVIZMaS^fs~M0|AHV(x>qI0F z5Fw8dh_E2g5{yLHqV=I;Amq=ecXyBKnr6m!fO+~5lumZ*A(gKMD3R+%g6#4plE?R0 z2*ir=cZ425Auvkag!IJV(a`kwE1+BkchJtnHMyb~-5&A}aB5tm-jL_$soD#|6=52*}>Z6Wu|=(uU=h zFL9dlKC##GoU=#Pv!EFP*lO(-b~dmSVNK4kKU+{AY{fZde*0Y@Kx_h8;camN5Rfm6 z^brzTSCm=eh zrjo)cFKIZ|+h9cIE4K3Q{<=l$THb9+4aRisy)WOo2(D zZzBcznDd4NRV+zwj4w5pC2&~$?5h}mCHiMjTloYu%#1To6-xYK#!4Py#rGmvUfyyKt z)eF)&oEGzcuyedV5@@L~brr8f>q>>Ga|u_o0r;eoAp;RCOJs-|FW6qtJ&KT7I3>d% zI{3h_UL^XNG!Rk`OQ3;q5rRDEYHq?k7Ugz9Skq|T5QqrMjjDk=3E6$Z2%DMErS%_D zK5w8 z@j}DfdR%z0d$=;>h8x`Hh~Qo9Xb9=+yKhTS?F_?;0^RU+$rv)UErlYKP%erH?SOWq zBNq}(UaNO1tV3W3+m0D897^*YUxe802kUDIm)62lXjQj?XbAc8Z_J~e)L_u|SjG!2 zv@3vUw22+t8R;V>S&CKc(OlcHKo9#2DKezKn0xuf1Y{3&0~@y70GGKhp;!5l z=adcc^ohu=Vn}d{x7)2-30e{$n0%N|V$q>fbJxHwIY_WMV9erwO+Q;VwF*BQAlR^f zi{qb##7G!%-;W>oBf&-sw9BKEV523p%l5c2Tp2JMfp%F|ET4pI7?Ej-Hh{8W&VGzt z)T0{CxdU8GV6y(XLii&X5q{PXVlQ?~Z3zMrU*C#UQ$kywjYO|c$_&_P@HuQMyQUr* zibSt=nM3+PNfoIoxX%@Dz4RH&R;S*Mc0NB_?XafqNz5f@!KZh!v(E-7D?% zCyx=dC3G3sZn-oO)}0d^9kx1iY^D<`7wdLX2z1{dO(A1~9dGD}K^2Xti%8n(nFksF zlL&2s@EM=!1@b!=qG_%Anwr+|$z+PQUkqFiQ?z~y6c+-zh8esIebjSNIu#feP;NGj zk_4|zJz4{7jH6c|se*nb@lxbe>_(|Y32P-oD%y(O=pARqIWdC8&mTH)eEB^0o);ca zf}z57coL*C2*108M)ZW^Q1-2%SmauJ7_}J!LXW7xu+7J<6287_QNVWkdZjN<~f^!v`;R6 zeG`K2OQZd%yS=pSQZ0#HY>QzJ0@hJX94&v9<~-_IzrM~*9Z|#mw4CT#m%e6nwtEY5 z8pIS{%#T_985u19oc=iurk?u2G!RhRwM_S_zk?3INu6Hv$+q?3hWj8E){EDJm`HD) zD`t{56^D{PFVjR&TL~Bf%j_}wew5Kj_HVnrfGX?0fue+xB{3b3bPv-}Xwx9^T_O^o zGuYVknu)@F66-@z-Iy2|eNn2o=A5h*?w4l#s*^OEO+R_9$U>ldOUzhbibBSQJi!#s z`>iw=H$QgtTiRvQ2T{gF9mQ8`AT1MtMS@%G!U_Sc4LoZB9Hx_N#Ylgi3E7JhjOpPS=Llqm1ZQ z&oTyiv87!vVCYSsV|aBs$@HyF)3{ND#3zd)tQWfGObx>%(mgpOUAM%j!HyZp&{O|v zt}>%8pl5X2_@xQhGC{{!8dQrtQ(Y2YtP{eih}K zM~L|Y1}JZo7!8Ozuls^x2Tdh$RAhQ(m-#HDAoMcNu~S**9G}=yN)vx4E<`A%>kZS!qUqHTUr@e2v!XFpx$H~uZ<>P2mNPPZwV z)>HzuqzR3uY zgZ?!|o|NuyB$55BC(Aq_vM=;^_1FAGIch%NhuEc&^*VRula3P-&Yo*aKS&vxtZy6!8lrcJ~$NQocbF&^&#A zQ{?5*>9!=TRhN~nxp=QZj6}3{{(PsSd+AoH=%0wVDxl(rT5tQg03ob}8A^|c42gaN zf6L0uiD_{X@0FS}x-a%OQ)Dy@BsX3BZiIa;xlY(~`3kFU9FK9M7p-FCI@4-3|LnDq zEhvB5M<2LGsTp5Ok4x`0UbJC$7=-$6#klWeTar58(!zlGkQyFoEDq|w?!&s4WWnNAB3P! zhxthHkR!w=IhoJiFLQ+hG2~=+ug*@x1R#sY8Ng??A(B@@ZXQu*iUQ>xxsk>^-q?KI zki@u8v$|O})v9DF=}a`8^#?=@Eg~UE2B7i}&Obhsy&L6k4%K?$5cUmK#H8f1ChuV_E? z!e3MFBGM1|J(*ANp}EB)NJst8gz*85KV9y*F6Vqu%bDi`3B25MLdcd!vUOsv5DRfa zzg2)!+@i9Z6J!aAX7NxRo5crr1t__Ryhwmez<=eKnv0-6fs*WpV2qH@o<^>5Hdl_w z0p!P)Rm9H*Z+s$)Kd4^0Y7Leudq_yj-L7;5*=!OUxgtIHUOGG==*k@eLsU z?tP#?4xL}_5W8VWy#|?Q1TQ_4!1Aq7=39;eg~26_w0!PBSI3ThdPO!Yh;O=c=Y)H=&# z(u*LQ!+9F?0}c6{5konPUfHm)8fQLnwm#oj1F^%V!cg+3Ad37c{<=mO5Z*zTLf;e@ z;3A!N-VH2Xq^k}ihqji&?KOtJ!}L{C?0!8LX$J;LV48d4gfYs4+w7fPY1Da0h#P0^bv zTk2u_)T+vMTKuN5iA2$4-JoiQyu=yVI8)L7<~rZ>ktLZrUGee*L5(Am4?+t?wbB*I zpa}fqnzlLr5uF6Way$R}2uddgj{}W+#`lKkR5m)N;=gEh2D-N0$=dcJYa7=-NLH9F znZ_Qlb2w*&ELfa?jduQ!ehsnFzV{sghYBQ_uyJpOUc~AHZ$=yd;7P<+2?_k>9i$?v zv*X07QJ6+Tpi8?@8!U_L(-8Fa-X%breFcSruE_kL>p?!o@@uR)d-}TFY#FN(<%hpT{a{zPF#H!P zVzIiwXqj?14Ad-@`RqQlgT)Kvya&;va8_F2QdH!y1i_A90~0{BBQ$X07DrB?sm$jA zNOZ^~hh&QmEwDLkuy*lyp0~tIfY<%M*uDSQIbA_fSfN#OSu%nGODijyL#*OQnST(Z zCMa-fJ^~m%!azWDpz7N&!CCR<+sV=to-_UYDET}=n65Vn;RbHu*B=A;RK3&+V0#xe zR6YiKGuFIGUFgP@i<{0%y;$w>u8ai5UIf!c`{YN|>X8#zqRmw1;#$0Q&+TMZ8c%`> z^#j!}XG^UJQuU#@#VbO=ZwZozK`9D;_j0U8mf%T-_HIyh!u>nK5|B~k@Yv~szoib^ zE;%WB2F*#RCgu;KME_uOwuqa~L9z*ise}ZfwX{`B2zDy^jJFv}2daPMyn~S&B|m_q zp(hU6;6H@LF9nkb2>UK^(FH`<1I?8=-@0+n+CTmnuSPRq^)ekfCukhWH#lQGModnN zOJE}rR?v3?gNw+!UyD^C??V~S5YcZS5P>-^dMzF`*+FY`dpPFr|QCpMGiy{4uN}Oh7KC9L~IF3p6Rp(jDVG~KE@2c0b_rWX=tl_Mr z0R85nWcA!VFDKIRk-^&vzlZ9dg^rDoVI*8bV?Nu0JyM`od(PL_fZ!#TD*gdB zTK2CXa{+z&n^>ENeY(Z`@0lcO;i={Qt%d*xcNl4B*@d$C0Oh5w&mME2n(JGgcrp-A17jc333$x(a%}_>@-01>3J#>L;x*^l&Wn}M;dabcG5X=I%yMLV!mJ^ zV8GldP*wLYS`$=kuU-O3>hk5OL$EOG*~C>^6KI+cYJ`I11%$6aBx3`%D`R8!1n8>t zdE{MrW4tE>VYFv>qr38q*Z~3$dsv-bUaV6z_|ut}PJ%zt%hf{wp>3z{KFd=tgbsPO zk$q#j!iRO66C@y35yD(P4hvY)4Z7l-p_8UZKygm*g*c&UZc^FAPgRgajtlgHc`WeW zxEt&fufhP=7h|HR@HZMs`oKP8DLl{Z<$+E#V)-HtvYl*sOl+qlU#mgGt6kpW0PT{1 zW+aBH^1CtOqy8||9=cwIOEm2U4V7Fn563c^TkTsIVU^2h1u}9~w`p5S&6W81PW#8q z=ez{?T%D_eByBt#)tlcZp_UDT?;tpm*h$}QFfYSjowo1BCx9usm23g!8wGv#V6|BJ zyergdHC;rj_VWlKRh2Be!&wg94#hVcV8TJgg4`{LeBT}sxPc6dP{T>Z!Ae)KU8yyq z1rfXEbHhiGM{Ow(y$_FCq$qb~9yR{MBchW{bea?}SUW2lYL2A$e(1BQ%ZuiJ+S-g1_no z*TU!`fQU^slOgM5^TtQohCw=#&sH{Z-FAMe=fI6xxZ>gL!w~j|#oKFNwG1Z8}+@xsNlm}XB%ZVoJ{$A#L6tO6TtM0p*iL|a(W6n5cG(jBaaoCp{UQ5A1L ztbw>x!MLfAjGg_0v{zk~)Qw%aTQI44qgA}Ah4)HgBC;znOPuuwZN!wRN8g7=1g%gR z4iF(*!ga9b{1rA}xm1 zB9SQyNtk^F#!P6Mhl$jQpF${TvNwi;qKRmRlO@)xjoiQ35Tlk*oD_blhCeq{K_oy_ zLIOnVr4HVe)M)})B-UK!yqfv<-cWY!seX5gzhpJeWnMHV6ACW~q_w_gii>sheL?-{ zj>4pywxqPfUwOTCB6!7e9bGVwqWB=C_mh+VLYdSvb~ruX%}}&D^G4WjQ6@`vN3zoX z4`Xj0(A2qgjh}=h1QRd;L=@2AfT%&41;+%U#R?h}6~qCYZ5zZodkZEELMvFDwP=mj zTHC7@WmLg3Nhy;EC|I7|z&vc$)t+m%y*17ML z0VD+=xkq&48~;wPnjl%RE6BPRC(?6v@{>_4EYXtZR3#VOlt|Ow?#o~k5`ero2Oz+C zl{W7v9ulQVVlSMjxdKr%es!*ceiysjCB7V9)BkOJx_r;7JxE}b-#d}7Ljt2R;61ov zedrZLST(66xkFTHF8=R$>NtQyL83P=xgM0dD0+PrQRo)Oci(SUWf_!l_bAv)!xIfCR#V&SLVLEq^0hane3)OAX#J%^Qh{Fb$G@!8+Ze$T1`rIE< zg2Z#`Hr)k00B+f(`P~)5;098xKmEyVIRKfc>pSTNY5B}u9%j5_({zN$1765te8gSJ zjcK@RJYNOzOS6g(v^h*{;l&S?nrHe$gY3V~zTGop;yl0N1NB=BQtzg>fiOHk6W(!U zbomHcnV5&Y8&+M797ajP@PN$Yp`$Cg>e>y^?~S>S>E%whz+psvbNMfBCW?TcExZSA zp?dDSFI^~@T|Z+o-0t+Vl1ccdjU|t2pL9uQC=;e=QazN??ko{ z;xRKK>PTfTwygee#pFc2BvwbVHx~bfIb-q0d5vRfS+g})UAZHJo!I}uiJQB*p$*ep zY?6CI;McsBPrBLrENR-}{SB?@{ns1lbX=bqz~*eMzk0sL8J@B^t&4*JHifWb(kA!w z3i{q|S}>L1&~HgZGZZuv0BMLf>N=kK7X{gK9~y+Y9@j>LH{6h;@`|R)oeo_w z&{*3E5V30#y`R1j>~%3|To!9Yn%wwkVyq;vRmGVf>_QQ4kE&%9^iEz9I)bop^_SZrXzhgbxJ8HNT<6Wm=y@;eOIo66U4cx{*`wZt!KU@8P=k8<5<#Np} z&HlG@|9|702JxriFN=Fts5-cI`8|q$u$QtYNieL#F$so>BS1q-Nthjaal2^2&@zae z;sT8T2Fy2cB(_$v1bz@XFBkb-gZ&zumtRak!H`Z^Nz;sz}*m=|FaMV zPy25#DQXFZQmh;=NuVuFvL~%Rlz%b=aT(j6U{kCZ{;fCfnNw1cyvT?Tqeq_M3r7w` zI`5`jr^+Iw)_IFg)d38*(W-eel-lPq$gLI={p~6z^vzQ7(|H5_fFyJ|_W9n_5I$|) z{o{Oap&EQvZ#37*K{uGns6ZLB(eFWs0>((;z!(mjrmmCF6`6c@Gd$*iktQ5-a?-TL zx?L`;-Bif2cPJS99l>ahWA$ZoM)IL??-6GWagLb?8l)!_>>;~)ClNHwR_CkOH1Q$a zFYnU)mpiRCeGkL%AGv-9L3>!proGZ$xXylv&mtJNckQj2Pay?eq_1-gIv+(YQFMR+ zlpdh;^53ITC-fQ0mKjh2P5yy=6;dX^S3g@WkxT^-8OVZx17jU$B%IpQYPcUl={ZW~ zKz~p)dg?+1&cayj-yFtAMjikBMLY43D?7t~MbvANdbCMA`|=NUN0=0TI`V!f`pCf3 zt(sYpfpRsy!k#r^v^H`TmX09zOIxS>8qlH0+L$@&6qCz(hnF#5k>pk&+0%*>VYow~ zn%5PKg3(%C8}kVntzIH(`&CHPt*(k#kj9FEreK6ODSoih>Bw{#lVyt>KZay9hI6H7 zATN%JL-m<@D|mMNKDIv(`DBKj-KYaW6ifw-DSBxZ(=VlEHshDpeteRA39ww0d;)Tj zZS~+(wkIU9JdlmhA~&mA)V-XZV#kOW;Zd5lVvAEVmf_DuIkXHkhs(*i*LR-7#5r2r(D1So{wf+GnrMZYnB8zNtl!|ZO)6f3B zRk-P*tcE=CFvaA+X<4ZeZSn-*!5M*v0-Fl+x18hD&@$Vp0`D9dnnUlbOTs%l8*h+E z4A=yBDIz1;{Hfr#2*}9UFhoW+f)T}adWri^FYyw^p+XN*c;y~?iOrG}4Vm`BeuD!w z6y9rn_(Lqb%V+b(7C0Q26|7@r!8T^NFN+o8Fl7J-x&mrv|)4 zcW5=e1ZS`S@YNLK9g^yQkxO(m6-K}%nBw?l^b&W;CH@7MxJfTDVqC>#Kr3U+2iELC z9sXzIK(?wSvek})Atbp5tPN*#!j{4q2;QK)2Qx~39iWhZ(^_8VPaTLW)&rmZ{cuH+ zN%NRCv;hW(&$TKrmI4z^xIlG|^Y4hTeY9BSt3%oMn3#bbiPVQ{;w}(Xy;JY0Y15D7aN?F-|4{a zD9=CZp_Ex{OBS23eOcqXBshU-Y7cn>hwXMG<39n7SC|+Nbc9#dRat`~Z@VFPW!4m^ zH^wT~z6yY-E%D!$fyE(o``P;Hu>!d6a{Jeix>|LU_CHy(PrL`LYi>7z>JgGr z+N6sCvWRkfPfFMH)}#;ah+9$)x%mEgL{ft^Lr69JuWJVDYf)J%m=%vyKD*#LVq9X99@6T(o2ScJzLfD_ttUlXt-Yf`#%{s7p+ z&-^PQl^m;4^#k19zGpKgVk(Q)y!$sW)a#!Xzy0%383~@c28HHd5kFCZVZ)mwI4LhN zXdcs>1k+HJRsTvy@AmZdy}tND)$#fT^y9bZ-Fw?E?(z*sf_~lVit>7|mD(=H8w7`M zlRovYwUDZpJS!PnBu?Z3YA|KC`<;h)N}p}>x&mxx=GDG?`2L-GvPdP`uY7xhrcJ$r zYSTGiH$K5Sp6c~L4noPyd!Y02nO@#szI%AX zKWs5HEuIGVg=cwvkc>$UTMy6m^=^UzP995AFI3cE&H!W>FGGeA7jS;MPd=&){V~a0 zs*RKw87(du4^YjgtXeWp^EuwPE6Ro{TsvPoQN*U@ksr2f(_i2ArgKbiFC)-km!@%i zsS>792J z9@5sOTs&4EbKd#*RZg`mHBf9D6}q6KdK(&T%( zrpy~I_9BF6bQxCi7lX0cz-8>&#c&x;%MMm!9XR@6bF8+6!#w7yvZ zENpb-3Y`|aB7S3GBM;3B_Dffemeb>SUG_SZ5Ll1JTAgoPFsU}!EK@9XkxA|S7ffX% zjoGBXS2RDc^~hYB`ZoqJa|~+Os{r&+j9~Ba#%5ZN37WGMLuxrB{|}IvH*Z16=(#+but+;?*LQ_idEAqXOcBV`;66ERvEOGJ9$(_d1xHsj9_;1B+HBK(R;anl#Q_H#w<2_ z@3R?Kid{{N7DKb_UD-y8u}S3-@z6B@)O9M=G#Hd&yQl+GQ|2HxTDkGj*x~9JCtAX& zHY@Mp>V%P1eKjjQ4~R4A)uKEb$W9;LKfKblAH7N3P!m$=Tu4X!0l9~ODot~vJjrs_ za&-y4aB|BTR&HArI>PiDNpa`2J?^)>GzG4J@Bj>g19DzoOV%_Berf7g14cgEt?siZ zNAkG6%nPUiFP6G(QR68Xwk2Brp0>aK@@86{eN6-RlC@{olWuy$%@HR)BxzPhQ<&*; zG@nj%nV=8{kx1qgSPME^*RTqc&eapCG;nq(i~CK~P%EZPdWTcbtf=u)8_Os(X5FN9 z1YJC9!j;_E{b3Qf1HSzd!0E3;e-|t5c0>I#MMS;R=6;Shu7!+|Wx|0k@5#cT}8O?a$!;}eCY zHAdkUPiKN4bZND3b)k<)1iCUfO%9iVChb(|V;R#9EFwf+%@&bhTsUF4$hDV{QXgbh zIGONe2?MtQA?AEnayJbLu>y&jTCkdlx*!@3(;7^YpS^@GnK7=Q3j^>5&ePU$0H%~i zgZ3?iyGKqa^88@0SWv0OT}&xQp09?S4rMFCO(CjET@o`6-IddX3dqyAjYI(_jzA;^ z1apey_|1<~ObZ5!TI6cy!W{i!h?O&=NQ{;sF<*?3Q6+}rzd@S@qul2I0Bs--i8sCK zm;BUkK;Ho}ys1{VLokd?dF64WZ^zGg2DhE5*h(Q3M*wx;tgJY|KTfyxr}1;yOn|wb zD#!4Ep7s5V!WN@N%MrGiXBDJF``UkN2cC zSR=o@a6BHz^9R15Bevq|aZ&c^@-7c3p~TM&P8RkTIu>A<&zF2u|5`9E2&S za1a`2fYgP%r=vI2R=KRsLE4_Fcny^YD`7v;saks*?p~{xi}Yb}8#sRLeAz{ibV9Ts z*fe9|M>!>dwJiGQp3cxh0!xrUKAjC2XAhw?CA@|^%!CZ^#f#2<4g)+lL%$VW)7Gm{G>mFB?ZOjq5NU{px!S5YkCh6ES9MKN$vC% z2m$7_kHmmARR9L8zV6z@t0B5{QzLChVHLqRSOmUkU zOUABH-vAHBDdm&VnZc5VgoVJq9M3;zoX9U`txqOvw(i-Q4P?6CLbJBrrI>kT9vfJ5 zS(Ax@H51o28?tsMhdw|WMCI?`wF2a9cXL6(53)Da?9hi|3+cQ#6SG_X+aWT+U*#`# zfGDenm)FrR>`BcO)6Gr9E7$2N#a7K-SJ)43)?8zEK_%lsEVrqN;^bT8D1>alH5dqq zo3Is7Y5n(gl~Jbbh=D1K?oZdEZ9C1$GS{A=tb%RMk!-r+`f3`VCIS1}Dy%y7tc^X; zJy|dok~6BD_Fpgek_M{HUEbDMN|_b)xY+=UyemMC(Z!$}R%M_JyEPYk{Z+H6s*;T; zyFK2*jt5quRNcO*1r&ZLZl>&YD7!85)MP+){iUnBS&Ho4boTU@_e+^9C<8O}b&rju zywK5HTJYH8sV%U%r_H(A%V@evIkUK9);tv>o;@^y=r0Gpm$-3ZN1xfBM-)xp_Z0k| ztU;Q1IogEofUFEVptdt|Hx+NC7WvTZ=)t7np5`qf-+rx0qpp{>G;Zjxh$eO))D<NAB$0)+3pJCV)ITKRn(DTZ=iN^qKx}kyYTu$lim*=xrMt?4FAfVPELcl1Ik(R ztqCj}Ui$(2qRDeSl0D!X1RFLQQu6gOHdE(?)O4{_TCI8HT4v$Bf4JAIO5n#gphN85 z&ru7|dUYo1aIMpTdqskLez~O-+HX+bfw6dWpFp5Ez~-_)@s|zEYlNc$ZorL}HeNu+ z{eG3Dl=DaC#d6!5Bc@0>A-$RHK+ZrcZM@fCU`eyRdqSV#xe#_06R|fTM6B_<3dQtt zsaLNqffw;_w;3>wmo}aw;`V#4yL&S>(zu!3zlAOXz zfl==sKaVMjY)hbndPPeX{e5{vXqK4hBrMkdM1yRezGhEkP3(zmPva#+M!G>yDj;Ae z?y)E3wooi85-Nnnb-@aOLMB#)+xnf7`?pM1j|d1_6~6F{=5E{Oa7M74IfIlI`4=u@ zn5D20vfzC}xGPh57d=nJ8sMge;}&RYd{6{`A*66OIpAyBFQ`BWB33VuwFWxyVP_<~ zscwL&tXIR^r&awQ1|_}R6tjtGG8%2rtoHro!TY|B?{Qag!w7dZBHS4@{9FMqWf=pq zE1440>ij%`$soWUe_E6x+GT5$d~=)&a10838HYBs8m%-)Ze#%%di0j>LV&7Zz$8Lf6@ufdfK# zcuYvlE-LQ_)v8MOK)Y*ifv{$vjo_9Q7yLfbd6f#jUE+f@VFkzsH<9JEV6^Ca#lI9q zrD43syG?yR5kakzz>q^9V|Hvt{ctK6fRrHc$;8_|JkO8jFyU z9%dFK!f1n(YYomh*%HXPc4TC}U`)GWr17jA;XqQ4;5FfPSPv{!(hhrVN`XTP$5eR@ zTH>@RXR_#7im!vh$DuWDTeaxH{fI>4JOymX9tedplff}{;XI#q@=Zu-|3;3xa0PQ3 zwmqP^Ldf3aI~%?+hE} zPn8jD^7abzI8Ff%S-bW&OtD?8Fy&sNJExLGuf9X|Y-YX%*1Fv!S1+fv29^iDS^{1e zh45AAy4#DqFvS=?Proi|){y7v%6AZ2vKXHygS<^% z(%qY#uXi9%J5OUE3qN$=e-q&9&Sm z;7bxCI%6EW@r!q(VK7+{R}iNJ-@hGTEJi^c=}t(A3)!Y4J14O5zuB&PT7~^;#KjMd ziX=xN6SC#CG>IapHWTmy<^6^EKGK2V2+73WC%TUs>ErAG8a7ziCLpM~-v_6Ax()bx z{TUiZCu&N)j96*_MES#?CCfO(>DxL&??#Nt2jx@%ZZ=Q4H_oea1BKmsBmFY!XN>=b zMuOhDqO2NG8aZWe(cR12QTO#SOG8kx8mS$D%^<84BFgN&dXZw@`e$y^4O8NrZ@EWF z!0>&_`d`WR(@4C_$rlX!2L0_%Eb%?^SUhT?=68fGqavEAiMh>15`h-_qj-aV?M7}X zSlB}C^U8@&zZW|CHVRlXgzBEdk<|Ec7wfig7<4mY2w+=L!#4fo2sXuU!^_bIa$p_1 zJ%k*_BZ|A~+?Uk8c9K)#K&7#Hguh>PmyP_5in5^_VDI(SMEtW!m8;Rag7z+MgCY7@ zAZJs4FQ(zge?{EEJ^f_B{$T^SH3|Y6-DAPUcG`5y4d!&K*ge`1w&OsyidS8ApN{C; z*4?bN@@9MB-kXz9TufU029pEei#+>s-j_FTP_x|H?Ca&$5D4TEjbZW-&YTx*u^Vt4 zxLJ792ZU9Ky-&VzJ?x6>e(lh3Ti?6)r7gk#`P zpDGI!LL?mdIV4D6cc!bI_S1~%cei-cedyAr4_M;^P@_R{m$$9Ch|l0Wl{7m_M*HJx z#LpNI)@|3f=ZxFHN~4;yLGed!Gbj_Io;MpfipT8c^P0`o3Z1y#!aFImTtiF_4AG%#VU4_L*FLBrWL|g18N;6!3f;{L@}QeG#AL=GZMenJTMr*dpoo6eqhs~$-}+&-s#ny_R7E}M%1__ zklAVV_!Ur&y4;6lUIG_9Q|-m*w*g-e#4on85o?Ir-+)GkalXQe^kuBW!k4KeN;Hy# z&*4zJeJ9yj=zi|&DtVRLyW~ztO@8MO+ODw?jepWz`;~}F5Xf;XHdrRX9nikHA?JSC z2vB_?7QCu_ggDc`G+lDItGqYj_{i^Y5iG*&Wk$oiDw}~i=wt&5H%EXw1^Bjt2}KDu z-OrAu!rjFjw;L@$xWCfDKse$aV1PWJZS}(LuN4?LWWdoZP9{>mGPCYr{Qb z!BXqQ0_zmzpd$r?^vc0!3kIhtZE^~1@|Cuw1-8{nyM_Y0X62Cff*~Esp|1*tYJD6N z3rFjHMnk&F6z=%bF=Nhg$7aNg&E?9AW8@WFr@9!YyWDZDG2@>4jDN-TJ`n4bg8 z>vg2aTW>V!T}IRQ;8&6_?1w z#rdXX`Qj?Zv_@fiTWk8O!t9aO?Du@L-x#w8&1N04{@~2?CcppRVf_{Mma1?|zmt|# zb-~S0S<4dLh_XUSM*wsn{0o;c%rp3F!COGEXE=&68Nc8ei;E%P|K%GwNl6oA|99MT z?^&xiVKzNW!KT#^|BQM+M;>5X!cio@vZ7EJmk8dC5bp=s#hiI@jH1+9_mbh+>t$Nl zCBtb%kAO0-2of2kC}qNQF>gS%5p!}iaURpgFc3TToX1hjVeE|t!@gEM0e~{ceOfsq z41}bwp6wi=FGzUkhmuk7q4Pei7XxmQ5Vi!nCtE+o5GL-5)UUq+1Ez<0J;75H1ZFRX zFb#M$<^>q$RZE6b?cIU+LFNTuG+BZ_b^lPY98O4D0Z0=o0x^(!waHmAejS3fbw@Ft zsfZURFxbT{LAy8|_fsRhd00JO!E25}gICxEGOitv*G(^f@tM$7$RwJf25@-F5G|Vh zsT6=87r0?^YIQoVMqZ$TSk24Y{s3F%#A>08Q10dZ-;&b)8XHh3xR0nbv&9Lf!+Cdd zO{vViW@wBK^~s0G+xK3Mes59Hm4Sacq$WCtL{Rq_)*|ERMOG#~zy7uymV|k2yWqF^ zmm2bpmdQBt5pxna;rl(tfVY5K?*WV`0|bn2LDF zZdeHDnwELJ42_nogT1)f zXg6L^_zlnzxX-U#7Ef@oh40~FA84TzumapGOz$=7uls8xRhwI1f~{`A{Knf5b6pg6 z)|IpTt}8Xgs$XLBJvCBs7`p-i*7BK@KyN!V#=_5FAJN7FiYuNC#M_8a5`tG;1-=sK z#>9qeXGe+qwjJU1eO?f|LQ{bDA^*Z<3?qS87QDXLW_KT@@d0?x@@t+!reo9t2?|kR z15#mDPmF#FkS&1y7cOI%q43&*SLDw=;k{a92x=t5ifpYaR%w`&J_kpB(J0Q|y zm|l%)oTS2BIM@vDfq0OyT2g5lJ}Qjt^0$}q>i9JEM8kJUO5CJbjUi2hUnT#-WegJy zuimeV%6F#a^pHM`2M;rK*BkXAA%nseE83R7bF1L zP-Y1y4?hG4S@=+D)%{-|R^o>M&A^8iR;@|zDGZgoO((#-b(6vPv=hLzwyiv$08N-o?L) z>7#pNlvRpR@S&fW{IVhZ!Y=j z(y)uJ37!6lwSMp@PR`$COO8$<{}#Vs_O0~38TN~-pOho;b>9!Ye_%klrDVG5$iXt} zeUTDzc&2OdeLo0immE;3;D+!oTn4@zgbQ6q@IYLT=vcm~HjnR%)pwIpPZGmlh@*pW zd>j+3{b&9ZZYw}zyFmH|6y^lp7@`sk6L1DGDG@EbJ{&+uev1r?U4YfG9cC|DhiLTCY32DvCTwp=T#U^0FHI?F)zvlvGIu>!eLIefTXKS@O1d1M`W7^5E z2up}xgrVzD3y7$NM3qV zzO}H>OFsvU4jL^=UW!~GF6ktW{`43kjmOY(C`00}E5GfbJ-i$(BNWRQ<`vV3d3tKkjR{_95iD;3ja6ZMPS6I^AJawMY-s z>0L=8jdAUuRgwr=>9tzZW#+U>7D!<##bq-6X1J9*1d&5YUZqFk$E-~@jB6P@S)=gOZeVD6CRA0l)}j_d}6024yb=6b>fjgI252oIn6f zr?b%)z?!CUlolLRLQoZbul4pP_Nz+9{!4f~lyMHu}6Uxb|zcw@j^GGoj}8QFlG zr&e`!G%1SFZ@`QI{W7<4+FkLliIvgVT8&+rppml@vk6qeF(IA`PbK=h*x zto%TVH614UB;VhLQufSyJp>Ptnbl$JJXoijOUBaeRRC3WgXDz}Cx)gDcet6-!w5R!N$DQBvJ+63cQ*zR$^pYuz( zHNu9jxr?uZ1B%=$)Sg03_Bh@WG-vj}65ayeFt?_#? zHq=?S56O~ZvEJrM(p;6cKvG%U@@V2WwBes$?jqHE9W|2NtmEBY(uMh*g0UO@3YE^q zz^NvTu;ux-uBLCqMLeeEZ+^L*mj5Zlh&uL{%{*jbnx(06Ei>}l_fQoJ*)@{bRjsXu zWg4H&7*Big0=lWfX4PY-3At_EJDLroy1s-cYumH$(^~GU%^I_Ul*53LWSX)V$rB9Q zhDf-gXFn79V{GLzDu3LvzT369MYUf;yhQ(s;=?{!<@Rz7E1Rm{%D#BEg|eNyXQw_$ zdd}3IYy{K=7UlLFWtBBF_>PEu^oZYn<#@RSI@_2^;wqO>E6lCykGmPGq|&UGL*5&4 zj9%58pl`G-n6w|pzlUXQ?HM9$?J$U~8#2Ewvqp$#`90Uq$#Biq+-F}+h-hJ7ZH*Su z!O|UZh(#GPwwDS0R-9!2_r?Tz35IL~?Dk=>BB=-e!etEeFJKETcz==ofHAyB_k)%* zwjc1@TP<7#C)Hns3R5-1hfU{mXUORQ-xm42r8b?kilz^hE%O0|52~P z|HP>TMhZ*Q77!Ida_f$8d$Fsv{TZ80A0D`74+5GXO4ftO6`bQ_{~;(I#6zs$h|Uf|tdtY02a~l_^0UuG zve7XWdJy+CKcmUWt!mWpfoyAsp8rfMi zXti*B24-$T`+11R@-sd~cPcM~^C#d6D=4;w+s{fd+eG(0FE8pbX9Ec1CXw5ojSWQ8 zw&iAXCkdHLub@Bk+TwEcWvP(4VoSJ)Z{dy~tF)zrqwT%cFOjcKqw4QM?EB;q2M|9swwAZfEQEwdC zznPdYnZtw0k~i`rQ>B|s1VPmrWj3tp%LiaiYVB$h*F}8XaWTK)rTl^wbPH7AB+4dx z!w6w13E(pkodvNNl(u12_~G{s8^_|y(E#LmKMtpQEbaigT{wJnSGZpQWeQ|lVThwK zXw_Qj<|!pT#f)g25*eW9ei*A?2F`2DZH(4=OtfyBA+}HDRhNy%F!ged=d6@U=q40{ zL3=!rpM|X2IN)RnS|-sJ_dLpI(qoL9NA`P({A%Ygc*Yl#I5`)uSZxs5Btb%t-`w>O7U@KP=P#P1B%53Y9NWq4Fgwk;z(;?S z+)?&jd>VWip86vs8fhiincRaoJLrWeP6zl<&=9U0?6zWc{S-2zAwgxVsZ^{>;1hen z?ok-;c?5|?y)EW!fJ#d~zMsXOAxIEaieN3yB;k8M0{xl3KRlHF`QQh{179E5DjvxU zBfHZ3yTYpQ7^aT(5GKmWh14G_&$E-kYefjAMpa#hO2M>3{2!?5Zs5)IMqa|TPLP)*CtD9Aj2w9+ z#+xMSU^2o3$==rNk*wWZta;v6ctWItLW9b$J+pZrjP4oYl=(oMODt{=5x%f$P7_|? z#V$^{qWB$v$%|IFEvCE(XTFJ3^+>5X{$M{EbAdp{JTgA2aq;vk5E4v7BMAze@*kHh=Iy81?{SP-~-C z9|Dxg`xxS3&$$44IawP`fteRpCC)hZmaAW4cxmvfvC_rTeEwq&%)g(&w==+RD$#R> z0n*4wz;Se03OWV>9u7;lBK5Dbw}cgJ`IN<;bOi%1qUs%Vv1p1pii^cr$T~5w`hz5E zStiVq9TppAS^Fx6S`J|(T*v{z?~zVn!i9d5XUJ4ThNoD>)PxnsPsQrO;oNyV9%4ox@KM+k7@^>E(aCXexH~%1 z86tk?S)XNibG386wLGgLEgifeypBF8oGMXxN`cVjp8m`DX;$3x;3otRpv$<^SLivo zV>?!LHfI2L2P9hn$mXNPYd0hMBv+1s<*iV`mmTBo9&=XVz(set(xtHM&q#c{Yo9#m zlEiO184&~UT43FsD$MJ!?iJkgV=@$5=@n0ia&7QH9U%-_hL1^TPQ138M~;u` zf%y|)z+obYTLT?I<*bN>UUL};*h99n`l5w=z9`0NrL&L!gpO6Z!|{r5X)pdD`klRE zB)Q_^(s=D$3Lh>Uco(neI!iA~=Us7DbA&nCOCOF?|C@|J=O;eDu((VIJ|y7-x7q81 z!Q>T?zT5E!aMVC{80Ia%A4?r@e#EBC7a0whq+57J_LQ_^(K@ROA;OHYq#NR{I(O1; z$bW}T+8)15*uIbqC&#V#AF&T^C7Jkj4iWHqraz`iI{+Hy|~BxC30 z63HN#Hqv=5&a<4&j0R{WW?BDEEJ{?4w2%n}D?WYUyTj_OqW_;^Kv0P;>ieCM_1ly$ z_-#MT4RKfDX@3ej=Cw=u08GS@Q;OtDZ%HnhKdo$`1@GHdkgd_kq*&OuRU7Xc$OxZ{ z$kvpH`%1;G)_D8?)LYA!EsX@5xR_1)C=Pizy>LOD*y^k3f;*Ki>%G&lcu7hr+=3{? z2M=Nu;?05tXx^}d&9K5G9tdvhg_x<8)&iJuA`wsWb0ZnJvI0ocRqG#KTOC3nbn< z6;x>et}o~PV=TqPX8NrN{z+^ESwl?Yn6PfmF`8-vvT6Qk$VwhPtWPd-vdv-9exg&4 z>X|?javyJ-vG^NVva=-SAOF3N%WaJU;baP$+PMS@Sb55g4@cN7p6`Wn*7vYMvv=QZ zaH6CXB%<%6IL2pD6W;&o)tRgW>B;R6HzI6uIpU&QBH{(@+0O~GkfpikZVUj*@ty^f zV(}y&cfsZwq0F#G1KFI)EnqoLWh_r}y2=nV+M)S3TUW337Z5($9}zm98qQ>18yZ63 z1J4V~*caD^S`7!Oz#QrHhE3}mT}ufDQG}t+2<*H*4lf|)`Dvc6OwwNxaCwk0=pdf2d53T>Zhy-G%rb)d7@}SDFAK5}~2XVa# zM6E@7)vPRHy9Uxj!!cgv*5GZ3P~O5u3g@-$3Z?yY{Ml{8tDe<{S1mtNz+`{zVRWRE zn-?^Fun*M=pnLiG5TS>TKe3{obK5jA?s3iTx6aclcI1WBV8&99Jx%@lGL}Mu-aHlu zs$JUH!Qwy}EhPrQQp0n@dry9TkJS@QAzj8hVbeuN=;ZZZVf959nrbh4?L{$K885+u zO+DY4IiOrDwIB34$yIV4z`KAps{m5VS(Qx-ypiv)_GB%Cer$ASUws)mr4qoG@Y=tQ zvN>zF?R0`>0|C>!DCfSReY3NBv~RGn^U?486-UQZBK`>3+siRUOSV(3Es!D}b57XI z_1ZfgM0FczyHAW}BZYUY?;_^roO)ZJH?wA+xXlVn>a(WbmQ#*2D-Wa8r(X0^1@s)6 zvk^+$;Gv0kpZUn0=UTTlBG!XuEj_%XGix^abW_xlzDFUv@%8s?`7cK;MXd|bUA;Wd zzPUZ3gdHhYBK~kIQ&_?fha9zrltJs4rBc}Lc&F!V+Gh7!tR|yW=V{M9nk4;Mm(+z7 zryYlYe)8E>Z#I+tlXo}ix1L-+PLc?Fer?l+sFv;-XuF^?&AFe~ur=L0JN0c6Y5||r z*Y){rgUi;+*}gL0J)M2`qxwD8TF>D{6CoAw}O3 zZAdmllx4tizXd1`gmgU-XWRwO;>{5@V*>Vho9e`yqirsVUF52bVW@P&G&N0Y*!w-p z7<~f)+(|n>MPj^0_+2sk1a)12NNMW>P9vGOv_W-=rFYwWsgSo zOmIMp=NydhY{-acb2A0H+*88U-g+5vpU`n5>+xaBsv7#$u#mqMmQ1Gqnhd-R$h>w$ ztzZk4+|;v+vg60`sR5e(R*jqjrkT+;m#A-F)~xi&+7ThM-RrJItJ$^;?7aG}_nW_^ z{)zp0v34tgA&q9U$oDoj3Z*&gk6IYr;w@1&5TfB#lOd@**sDxxaOI7Z?gcR%Vvlnh z(r6OvBB;yYWT=NU@Y^LmvBt2zs> z?_v$z_pq3~V3FY$6L#7WfVZ`4JHeGx8V^Alb!g2jO}1-Uy1GVzX_qflMBaszEVfl{ z_OplIajT@bvAQ#B?``>Xp0)UXCZ1oS~@qEKO)Gou0cQa#;*@ z`_6s|Xj4&}9qD&yC~vdoqU$e4s{N>^_}U`@MoZMQQJHL4O^I5Fsx}xu;kU5~yOWpQ zVjHCA>dhM%&Fitg&HZO1{}1lTQ!I;66wp zm$!McFmq+-FtYA9cdWnU`XM~bt+2=~3B*NoVE!;^=Iqc1v_*T+TNeVKmo~C)coWvAy8nD1%t1T5 z$C1@Rb-uC7pX2U3C)63MqkfiESuR7$IkuXY!! z8r@^lPRqV+eVXg%n;FvSI=U@s`0G0B$gv3`x_N1mWC&y9b{-Rv4aJn`!8mBNO^_Rn z&45Ech>CV)HK0+A?`Y3J4xqFO7fFnpq$sejH;R)_%qEx0)ci-zoGT&Z;q*As#C{yL zjD4}BaSB}uJu7YgVJ}_TG}q7*UDq0yn{oqHad)~kw_JDO)@t$BWSxr3Yg#}fz-R3V zy-(NYt(s@pga-qf7OJt257EVBcR=mHTZV?J>|FQ_>miuAnUretvQRJ5bv->%wm2rD z8!wBWd)-`F;Z}0r&tlHdQXDp|Z{o>^*M=4l_U^JByJc&7^BOlFmFlL9gYVv!^1UJ@D(w+dKQpLg^I*{Gav{IMdk_(cCu={K+<>_P7nJHJ!LK$S|bp@}j+Hhh+wYg1||pgw?z4nl@NS! zzw{s@vhj*XjX2-A0kV*xEa@#vDK_N2V*}tD7f^4T@~>?i*qzVUa3tu{CwxQ9Q}@{w-vsINwp{Sdq$*qO(CVS(ZDAN~uzga5*146~nbJ|mBamicr%>7d78diP2befH;d_;4HqR5&=!LcFJ|^a zzHCs(Xn*#Z1mR*l8}g>qmb?k67_LFaf(Qwm+&QXGDgHlHbP7;n-f1TZbCVKA(eiV5 z(>V6Vq%YS23K7g_=55H=#w5+c7>ZjvN%KkI+^v;Oz~v056{f9PLUVX`wN)-NNJg0UfI zInn(;c0MDpIs3X=pn_{jV^0kP4Nc*L$)AI*LK@%Y$g2EH(D~~4XiWdGS2ho58+8rR zHW^6U7=6b-O@2nDHxF79;AfCB7)qVv1b9JM!6Q9^KiL6TKvz|FQSn0Vg5nT+^lBb45ie? zF@7qVUoIkXO=95!XtBqXP-~SZ+5vUJN?ksQ5uT+|9j`SfpTaM~uAwkQ0y&H4>X*@L z9gk0k8|-tKl~LkQ$RO-2p)#e4W$XR8{W`v*l)EMlr{~0Z@Mmz zdlt8?xH-;_t z>La_n0gd0Nu!ls-p0cIGkPF@`I}CA+5Oc`VGuq@gwsFU-W(y029unPx4Nt6R=k#SW2nQsQ{!UKo5?)1`M!KFcvdDdaAHS3L+ zBG_pbi<96u@PoKa!WU&^{(Hgn=Y9l3va3&jdxg2F1SiXvT97mKN@$O@1JK#dsf3>b z8M7O4#u+iIK_E7*x9*I?j7=y}Kji>X!^cNLVjCc_41?Q8*zSOcx$bKO_^ZLP5DK&Q z`40%yB^9$B#7lw>QUQ&o@P?~K2;Y#L)6+U)wS|WuyAec0vSO_?6U0}4jah*Bs1lw_52%O=UK9T8Sqn>-Ns`&F6+dF$Z$lHN$N{&PmdG{9E4-s=8tDpGX%M_(|3g zeDn%@>k%nT9TX;=cTTYd=pgctzubWj`T1%Q=OLeoBkWl*uxAgr0K(^R<-EAT)Nys! zLT$Vjz+tEm@3NG62^AUw@M{hfI&KDD^Qz($z28$vmR7{+nn9zf?^{LUD2R@2!U;Q{f5j9)aSpH06a{xuAxCi;7)y?ja}1W% z;s{*b^r8$KM)EuPUYvMsqSR>R0O;-FmDi06EBG7aTrOno=&umIfiW)m5@(uC;fKNo zt~S}GD*>*}ND?!7AWY0Ja4Odhzh2;V&A__xC36(u-djlVtK&1;af*W3XLIs2-GDGhUgVJC`M1?k3Qb1Xc_VL_uzN^T=#tciXpY$=nj`vv z5Hu2Yg!8qnwkHmqOkCIpgmv;|=P$KYI8dXeoFn+;Mw&g6R3`#i%lI@8r@hBMla9OH zM#cc=U4hS(m+>Z{BQSbE&w5$VVK7`UeY{p?eIVY>9QI929vdVTy*TJpyTVaW4--{hr z6Mjf$yV~Tou4V)sPx)rAB$DG~SJm9c&837_%q>!NySw(X$%ODy)bV%x2P=Ga7EImG zfH(xMXoW1psA}M!&}+wL!qe?A9JWXKU07Xh!Zt|4PWUaq&EZYRZxzGGq6H&&FohD* z=oo~vU?k*6c@VB&KI)U-?ReYh>iB4ckU6yftZKxEG{OK*erQF~y^R4(8_MFAQTxTelys1#=)}(=@^;{Xs_C6kvHS`U7`0 zpD{4i4RJUJ=lK+pIhY6e;Nx~szHsBfPnYVE@(z27i>d!pCnfLn7sH9)1!-)RO&B z#V|;t*2m?0`@?`863mYFV~2+ieFd}oE8`cy%jID?@}1GR z=`hm-$?R>o2g#rq`qp0m8LV0EKU^8Zph7dgIUBGxj8@h_V|sRq>j8i zF>5s23I{}1?i;(ToS;aVf0TiLsb9Yrej=G&345fDs?TDb<&HP5_Uk2{=HDjl&hn-= zEKJ>$op&2>wFd8qucLaS>(KuE& zJZLnYx97Lz0ug|C&;XW=YS~3k+oGRN9HY3prcpqYr43g%utjNkIiG^pb+4iq(c}EY zs8IT1hvqn9ga?!B1qPSewi$+3om*)+Aa4pw5=Dj4pS=NJNJ>4$Uam!OV~eKoVuivz zhSE-gUfOAsrpiD&-KVg9%NuVcz|nty>Ibg1D$SEEvj8TYcWcM`bjm-4bW<4Q9eBBt zEI;?yibXYAK}P!7Zg&roiUu5SF(B?uR}0vxw!LQ6$VXTPt?O$W4GYkKn7hIplS35E znZEmRnd1$gnX2JlM&VkI1V+AF)3kU8czbh&y2_LFxvs|k#1fQWh@i;S@cd?tSeDU zC^>Lj9(gAgEw?N60j9v3rNTDP87dtfGWEG^_X;o{J&du$Uh9wIpKUw;MeDoef{h2c zeNQ&Q6N5INH~}fTF|AW{lX^HyL3rF7sv1Tw6#Nq)v$4rd?3XSqo7oqh*YFo1fm$AY zh*hnd7(Ia1Vu!pp5|7uf5jf3m9iPyOu&~FEHmePN*p$10w7}*Yso}{SajfRqu3+Ge z!Wwf&-Ui;NVav`aTIj6V%fhtuDLmh{dXAf4P}oT_xRP6}#>}%6h53~%B8}}G96qGo;wsj?8r4GPhQt= zjcW`gZRxqiet5Z(5=>Q%PbxTosXorFBwW>1O$K3g_cR@)qxxR`nMpVnpT6CIXd~FU zMkc@Tx>=`AI{)NnDgzG~3IHy&e8Bq9;esmqJlHkDOW%bfe zgC_AJ{= z?015f)PL|P)+r}?3jIl57s~-Q_BfF(fx0ovlqFaiuWlz(t!IGE-z-BE&^WphCSBC@ z)Ud`S*;E-4@Wf&EH%t)>oRziR-_qSh?d79%NnKw1SNsU_Y~9azUMr`S&I(A)O0q`* zQVC_yW<@k!s<wN`iAn;cV9~_p(?u1**Kh@Gc3onq;@M?+xpA* z%Ot>_95(#_?e~N^x&Ze2&l^0W$6`08bQX+EH~1U6Q%`Gj4dAx4g z4|+oPQCFfrq^ncrl2n$f%33m%6=4K)_OK=I<%Pn!+>D&XKa)P&v3?(tZ1a=rXBdd2 zwgm=1<+cQ>-C5Cidn#F1yP^W$vwv>N4kz0rk1Cc2Ykb41lp6BxkeY427y6^vS78a1 zCho(s*pQ#sdG_#p0Wn{~+7JF_!~w3z2zZ;&U0HiiImQ0tXHNMeGk8zr-s>gexDRYG z&`acLKr(-T^GxYV%VHUixO~VGJ~k5#mPvL^pP5qRn0N~#nJK5FfWHBz-bf>q>qBl-N72f9d={}yrT~w4CrW4e z2+d+|L!@U)Z-7R=L!6>WN4P(_!gP-w?hiXt2|S~oV>bHl!NQ+%ohkKBf>%7`3HeYq z(LP2ZIOS~S>|rJ0$kHCcTjXE3jA7E?%x1ycN@Br)B7{Da9$=_fBnPsbgJ+4F0qE_2 z;r|Te-2dxeL!g!l$-B5hgCm0f{~+!DD~1e)NYZo|BE@s1=yP1XNrFC+04@%fF*S4G zG;U^S#@KYkufXn4Ylg8odV)y{mCm0i{3oGDiq1|AdTtlzDu9$2hucxYs^c)aP61xQ zMMdjW5^n6mt0Pw*gJRbhM}p_%Bd&pXm!lAJnK5zA-}Oq2A6deXjFln@p?sd^%w%u? z`c2vhn2=v`^oW?raDyC(xiP{Ue1tbB((zg$UJO{1^N0p2;3K%A3_>$l(XtZ7uD*pl zjP;Tlwb%mgH+RK=&lO)omEE9j6@)IVCUjw$xdbA);9`2<6OW7xUTtDM7ebs8bsNk; z)B1hEK2_u#XgT2T6dw~N;RT6qDKR-~N^q!B2=U>XVa>L|)xDZOMj~v;a){mn6zj#J zUgwww5#T+Fxrz-yuK-Z#*b5YW*bh+sVWVY}i1a$&60R~Cu|>sKz_~%37GPbDnqKj= z%oT7BMF^)0*g$~P&MA}(wUhB01bD;Qb6OR!C7>n`>ASI|b%l8_Na1x>mW%v-Jjx@( zIS09>Mn(s$Fnyd?d>Dh_>TsJJV8&udbk-3egj_-V$$EqVQ*;mlt-m>@+Sys#!tkJ} z7C>gN9OcFLmmhDr$0v#g9|eO^>i}xzB52lpMH>kw9e^J_ zwBx}r`rrz*rKgPBX~u;-bEzY%SDOH~qc=rX3`*i`Z0O2@MF=NbCn*)p^cUSg_m+@4 z#%w`E82B;h0NXlyX!ZvD1dyy_08cAFI^ZD9zXfB;jKh(5Ll@g{Ut0knq!U-m^c&wR z^7k`&BV7RG1~$tQ;?@D@Bf;v9v2Mb(wu~$T-xJu&kXM6{rV3Jx9727qQT#~?74r_O z5oRic@b%$>5^tDBPw)D~TsI3IJdCrtZiM{JE5b^GI}-OR$jk=wmv);3u(XeyXQhGM z{}bm~)dEW(qrM`+UHSaK^M?xrc&Xyg|3B*91S+a)>lQxM0HqXKG$Ja70y{)hL_{=d zs-QF&!IW)KG*Z~aG$1ypF``8)Mv2(OOQJ^XF^LH(oec_tO=uJa6$1v0MorAUnuwxN zlYg$g&nZZ9@ArMJpkU`;1X{ks_c7B9q8jY3+Es-P*EUtK7GC%&o~3zrMtK!+{f#v z-)L+WFez{jKp*iEjdIrtz0QaEr}gWQTMYpLc({M^Aibg?naHb_*^V-zO>~4mwM>rE zY*CS0QH?mZedYZdh&te;2viQhi-Mcd3nih(af-qDj2v_>>ol=}N%tUOBkB(%h>f9AJ{Bz-Ywtzj;()hjx) zD?;q&R>8INViw)FdDS9o|CnfhUaC&%KTw+%^Aa>rWmUm_Yq@k&>W4_*Qbx2?$ zat$OgzIdgK%O;)aE9xpDG&DjJUs0)1vEWI_TS`L*J9x0d}TiB5bWG>V)`i(F!p|%BX%2d0N=u+)vVW z%)N1*d6PmLlBBKFViCcI+&3JcJb2!zfn;`uKHLo7M8$;a+#wfS$J`8wtpuW*6h51K zabMl8=EV?!f-DkGd9pmtWi@a9i0^#i6Z^PwJKrB4U(ts(+Jj>|%DT(6q{w$Mm+!cm z^QeT0)y~Xmdh1v*J<`Uf2l=lLuSf;I!CWhVeqDV^050rNYmZ!J#}dA_V(S#w< zpLD(M3y3o)JM^9GjZN6hpQx6XuW!j#^IjU;pH;Jopk)rfggunDadn?p{9-^drFF7$ z*CL-M7o4{7d)vJZXs1jaw9<_W3iw0*yp4|<+v0plMD*5?UwB{HP}j`Lka(c(7>%&x zn zJGc7}R3}AzNRGhYRt)63me}caHyDY+y=2cFYbaJ+Jfx}YA#Q}EoVzv8r+bP!qQxCV z@Z1r8Ow+T`>`}(tKf`>k5Aye%2YxN=rg+iZ>djn_YmJHI<9~iWh@V%R-|2!&aJQOA zQNM{z@_y8pz5vFqG7RgeXmK|UN(&d^qR)_%#vlYIO%j1{_pFDB3kWSdHDDF2>jV0+HtB2mO|{f>GGhMd#;a z_1|e4{8doE0v5}p9K1&0*CdlSiw@lcQ}!>=xA%12ooH)w&VcA2K>;X6sItxO4)avr zMrC$l_SLKw`|6ep>?`Fotdri~kJSi+C#da5-4NiFLs>uzJ@a&zwTPi6w8RF#BMSOQeNcu{AuU-(nP4=XksUEr zK?;GW!X~{=V8(0WE;3%1o$9f=v0?Sg;8xcI6E`Krs*Q?UpH&J=VO^Q6<}J(Rmf=ci zaduac0cPB6zQuWl<8j-&S~AUNZ#KIRMLdh*#1yi8&aQpC4OyMi+MF1!xahawF-6gpS4{(o0t!vvY z_|?dOwnZ;EY_VU1A<; zSNd{eJ+GZYNUAk4iv}H4b(bvJ5ebyMm+wKMOrHj6e*@LuzCDb%VQY24FA=IFkYF9# zI--f2g~hCQ9#*ygQYqYN#ul@vgf^HNCYgv+WYsjk#hmm(pVj5kBpP{j z761I*mO~*}Dx<=Aa(kknAx9QDPH%gQYw_hH_UE;v)s}vBPCz1~#6)xQ!6!FqRXEXL zV8yWes!JgWH_qk;NA+f|0CzEpf4<*r<__JkTyajFU46zY$kp~@MxOKqBzAG{nGYo= zLR)c=^o zxl2)>`&NSEpzui|r;=R@4Q>9-+kGg4b<5X=Sp-ON$B6{&)JcBZ^t@-MZTU)#1EM~WRLsx2aeFX+V8jwp zwy1d&Q}Jxz3Q9}j+VPcr!+|n2`WEHQyznOMq4mU%8r7EsH*2|5%jK@LxZmr^jpOnY zbqDETjKBIS8y<=i%%=#q5!T@)f6~m%!*`C#@fLp|hm{+Zv+@0(b%dk^^shkg|KKBn z+s8+lK8A9IxUgIy%GYd_SZUN_geo}4m@462G0T=puOk!(lP*gcz>mxP><0RwoU^-hwL= zVVtOazN3P|&=tN8A$xTDDK;@a8|lhe6Vr;~S-5zBXe&O_)AzyMY7ebV5Mw{LdsBu} zxiwK&Gxk?J2wDG6rXJgz9=!SWVduVgxx=mQG>j@3xIXS3OuI#=>P2@;i1TwuS+Z!$ zwKDK)TxC3lx!4Z7FND9H5k4a&*wR3!ja|!~Kr^HbD-*^#EpG5~UX(e(LHktZWEeOy z0|CC^ZV&Pqap{Gf7G;JvJf#oq{A`jDO^EoK2%hB~FtL#?)@JVs+B9QBYktK9)}P65 zO8wh0MbP1e{h73a(2RGE$_cE0EAgK7@7X%prt#}LgiVqChd%z-zW&!fFa6G6(L-g- z&pAw)KDMR9Cp(fQiPhUfD+E$MRsvb;&Vf$W?y9*AQnU|FtQhCx0fYc%6ndQ<@#4d% z54+$HzO2R!C8H>??Kym*0C-g+hneZQ7RDuk5;rgx*3#L)r)4sjc@nMY9-oUwm3zvN zyIS3}nt`$&hg zisCYPnWHS88+-3!B&X_Wh}fn9p`Reg*Yh84P?DB8pcH^Ipq9bYR6!I55#4o0vLZd- zLRpQ8q(7xH!M|3+EX9O{z_P3S;fn-9@~&1$wPO_vrh{Yn!8@4y&K*)$aKJ`vga43R zp%{kBmyxy;Z%!NQ4e+qSo_QXt5x6ez9Q1{hzmC6=<=$d! zwkG`Z5Jxr!ZXg;6Ay+IjO=C(Ik~XtpVEyAh76cU3T(LSok$^ZbLjpo`A;m03Tn9y8 z^;L^j&E+Gr%YCHi@4b#(;5lM@OHiYvFI&Kk)nEk@7Ds}6)aJEZZ>1eyAs@v#aAjy~ zuS7$sJS2Fe%jasiG-zQ{eK_l>Vw_Opd+l>|{IChLzLEy*KmRmn+q3<1P2s^Z&G~^N z_t89qT*9BT(Hm8$E2-V51oeo;Hz8l(JC^dY|VWb9je!&n^@$|D>8eYtBUY6~)a zz!a!MV*szvAaM3}#6I6OL80vjk>v3x?#R$n=z1DA|I*^rEMneT-+6{*Y}44aO%cvj znu;|-!H^Iaxq#gx-$!z-W>3F=%Vj z$SDr`_Bt2Zj@rUo- znIgvDexWY570VI$tVzk_nb|5AS@~a(18_{#0eV>zwU_syu+J-a!26rl>jDybvm##3 zUC-iqDSZeFQ`6K#qCT^y&!2xV>gcF6Se`$L_FHrhG3wO{B+%@ZC}i-E_ul z0*3mJ)?PDJBs85{M)S!rs6(?=b3e6}Eq97@v@0$$o({k03Xq3_8K%vdIatLqkv-8>cv38*8T( zNPpl!Ou~!CRMl+5mKuDvHUv%Cq-1L*t+oFJuTUcU{l&@RXkR5;-hPLVql{j6|NYex zM^uV==wj%#Rh~Kv=}$5{|H>znK3hVRmP`IQW&&=0QrV8?MeX-)?)l7B<5l>9BjL696|;cRJRfar`t9PBGP?sdk;uZlG5)W=UcQr zx2EOo1k=HW17j)0BNLg6s8h}yqF24GHvt~-o^nBaR~?@pBH;$ggc}G`i|%VIksc2~ zU<}4$x-HRN{bXw6yQb2{CuHQA~e?^xm$Bo_OAlLgfr)PW8Q-wG1u z?Gq&$=Q3Xk2Ay51F_`&ME+vqpHX@MMoEfu#^sI(h!Br93G2N4SiXtq5ANh7U?5KUV zcOf2$sNY>Q&Z+kBnZ3e8q4_NV-6_fN36)s+f$E3I)7pF;+bv+WbxrUCB!8#b$itpZ zEjPWLj+;(!GWKCNt@=(5js>`GH>_h-mmm;*O1=T4KVlk$TSBE-#?BSKAz`|Fwoiy3 z&MY$Wj7@D1hn<&~_Dyc+xLIoUg!Gd-I2!}lO&~!nhP320RI~GK&mn+_ngz6x+;sZ$ zh-WI6SW#3FHOW?rrAlesZAEd?Y;z-pFd4B)|N75AKKR{GbQQa-OtuWZH-*vJ1_T(1 z($VYrqSTchPu?{ZxX)!;?*7Dhe9hxN>-y&qjKr;Du$ao-XxVI3xiPbMH0^w<>=6wF zu_OJarClDhMF_U|o`)9=eIzn`;3^Jx*Y&FahQtx7}lrdvzRt2>R#$=X2`{0Mu7 zjee+nW@pRu`i?kB0X~W5UwP%Ppz^Z!ER~xaju54F0OG&Dv)|=YEoyBQqo|{SL@8Tu z&75yXTIv+t4RyMrwUfVQ$I85Xy42UQyXeu^vh=RXTb+5IJ|^{P_u75v(_x8Fg7oLT zr@hpB;@zwf{;#rrPos%ukFV$@sRjv66h!q0OK};e2|bl=rMcA!7F1Du7iD+wj?gNN zHkMYgQlQn$iGx*lhp}7TwcJX!!WOp@Y~~YjY(IW%7YPHMWzB>?azT zDcUR41Ka&eoB4>jhvWK@ySb}+(a%Y?m*Z_O#z)v3RxeG*TxP>sdQU%;?IE^t#Wr?| z#0eb<&yc<@0;bzt^Q}aZ7~6f+jED0 zA4o-a?=aOpvm@KSa##P)b|_SszJvTzdqzHE%^xud%^%-kvU_HiR)>D4gi#e{%ADD2 z`RESIdv{2hR3MC9x;Yb4jf>^mjQWV=Db{Z+O*Suwq9LaJ_raP|`S60MLI5!6DWp4% zI){Ib37DPEbcb9sV?agxMuvS6=z~tZ1P$a9RolK%0lT%I48rYCW<+WdjP65GkWYE^ z1htj@Y=b?l&USY%sID%bT6H5uxJVHpc4&NJ|WgvN&hE- z=*gSL*xIn33{$D#+!(?5C6c{NqqaOt=)juOciRPK_w$4FBTSTOSgRLuF5P#@vDl8G z0RZHQuKL!?bx}|{kK*!LlPY=sj{AcV8e~CI|`Z&D6FI@;SLh! zW8~au@8{1;VZ9tm02SD`L#x^E3gACgc+bI2#Zy$p(9Bj(6jUQrPjykqcJ1Fz|DA1t zEAI_W{;W6rT$oudL!mKWbRb$@2R2_M+-6TL;bg}LbFh9*o=?u@6`2KW zaD2%`I$ud2saptFA0PSJp0k$HvT%tl3m_z-&7WA0AcA_Z?WHadeSjQgX`_ye`b$|i z^hH}}G;fIz&P7uc6%UZ$Q4SvVn(shtv{PMd!-lzPk)W*^jI2ysm|r`!cs|+ubBaq8 z1Mv8g8k7p%il7oq5|JeOnzCNI+N@iZ0*`*ySpHmhvl3GBHm&!SPf)_8^HrGAcXS`? zp}mZStMN81Tm>}T6Gv|~_>9SPxHVMJOzld;z(k(K{_ba)bin73?%dywWj7;t{^7) zGLHkRruLN&aYaXXP90%K&-bV!oI5+&7DM1}oAGXFnc{eA*5Soh5)U}*yS787oZs1c z;229$V+^wnlla-vdp9Pp5!$Z;5b+P11J1SCMyuPS;>!t`0~SLB z!?-=1iXPDmY;{Nx;AJ@os(2|%sNVv$>E9S)VgfdJ0k-a$&)5tdp+R6IW@p^K?Zrmknfn+R`dkpE!rAx+_nB?18&c^pE*^A@{^R0*xIkF0*pH-iH)+s^ zgSU6mox+P81as=%VlkafLtQ=#%26QNI+REc*8-wyh+Xh;S_7p51d7X_lOcvi*YfZ0 zTO(>*bf_tXf4^*Au1FDGYDa2v_3Wr^)mQk>FGn|1!1&|QoSpeyxEGQ2LhI&?Rg9hp zlE|%BSKYET`+agS#9W&l@}RZ{r#BW5Y<@ncDl{}~WfaF0?}dIzkLnlCtDsoRnq>BC z?7A)|*P?c@SHa}85C#2#8v|tP*~iwNoNbaHwP}!bP~XL`H@t1;38+`xdrVS*$i2A2 zg?p-pMYG(i9iqc;(iM~Mk9v1kaG)~eRD47J^=~~lXk;5>8V7>_%M#KIbM|Jir?mIW z)Dv^I^0YUhuOqgKb3eWcC>U}z{)0%MlfG)W#B~=BNP2>U)571a9M2?h7gZnW&9lWu zZl$9?elz?oU1HC@ULb*xqr0x~lk*f>{~+oMI^gnGTaJp6)Je_Uqy3K@3SwV$zg7^H z@29w=>eVTeof==ATg*;f9(CML5|6w#XytoAalt>Hzb!nYqTU_?*G#0&rogt0f-WtUE_KNg?v3 zajjzNre;eN{l-zNE8U53WV)YgC%wx%&GiILb#q>0R5Zxh<@HVEaraJrMD@J1F1N&| z@^Q6|yoIwG8yfzD^uwLU{bsUkLiUuHvNEEfe~|eGLO^A4PAM!uFqSiDp!`>$%a#8G~u@)n_*> zSiEkn_&{~fE4dzF?V_lYoGo1IAGMbgo$D7xof5yxi(4f=>E`ow@A4`SKCmUHLQt2C zZjm1}eAECkDSW?qX-HAeK?b?iuQFy>N$A7Dtq5`N&)YBciO;sTYa!p)K7y3-YSI}* z!q3t{)>Z2K16v+c@M}$~ZnEN(vbyJStpt-pZ%z*3k0$Eg8{*xX7h8~ii=xj-Fk;Zt z0Oy2@KJOC|$^0^hG%h~S#h2IX@$~In)_F;2o%GeV@V;qMfZCtyB$rRGLmn&M3w~*` z=f!HsUwy^W;hJB3th3~!H>6d+(W?5(R=&y~+u)U>_?zbFV^aFXr<^#y;Og-o%b2jh zpbOp{gc}PbY^g1-KK`Wj%irJ z7t|d)T}|=|%i`W4%2xs#Z+oyr>hz z3|=$6dGBi?cJo?O+@Kb6u&MgUY^i~AogTh`ziXa8V?A$$xO*vt8Jfvh-_!(G3kQkyZIBcW!iMs*7N2Mc zX9J-*u5O`tp~4wwT88_BX9K#TZx{xKy;F(ktb5nj`Mzyo_E}xIU^+4YyOJ$G?W442ncn1lR{pY zeWnGr6fI*>rLTR(L#P=vya=TRBn@-F=obv2756SbH$TnoEiPuT^!f~1B|t^D8~d>5 z>wFjSLo$4(_m?qY>Ak@vaRhNAh{j1c%$Uom% ztWd)eT7C&Jc=hohQNbRX(x+Rb5AGJ6w%q$f`1im}wO`@J1vM(;?oFP4I7Imnn%VUM zar1d=H&?oC;+=5Y!^tA)v#=rWO+F~M-CHcZyLy(1gOqG*xGjCvoFbjjyo5Jv;T`9> zSVdy)Kb_5It^3E`|CaPZ0;0m3)&ie6{btHL?9#Sx-dP0;6QuUI8Au3#i9Pm0!(9H{ zpM-92-4@TIKcvapf1cZ9cHrZ$>Rw2VdMEz}h7z(X(%ccdMMK^Y>K2X1f00@u_WX=F zVn2HG-rje`HfU^K;n_0M$K820Wte43E&ZtO7TWIh=*0f=pNNa@(dc+dHsC-*-VFYT4?Nu0YIe^(vBevj59>mk=LAc`dg#0&sk2Ab<#QGC zg?I8Q#Tn{eek`^3-N#eJN$=$qE5u3fMBQw0(wevBF4}Y52{#je#LZ*3WQvp5S8i)r z2MoP_-&)M^aQ%KW?@!lnZf2Fb`Y4|Fr{*JRkW>H%C+e6VhVA0C@GP3-5~`05|JD^~ zvBBHB45u$5?;VY23g&~)hyO;+6ZbH`RW%<)hwrk3vh}PrQiGt+zeCN{=pUVK`R-w} zSlfF|Z;O>11|4EiFMnI}D1OSIsC~p?I2N^vuSE63;&zI2CbUBMgML3ckC2kK7rNX- zLtHpf_w!nUhTL&}n?Huid;f4@qr9ZDZlCn7p`!~Q?+foeiIoa4?+>4ij~I zO49B;9zmVxWv;b&|q|DSb*X2|S0sgnU3)4@n~8Vg7Wkb&;@T zgrqQX@7UXyL<3>ag&CjGoKA8ntC)#R>M?Q6&M#x>Dyh2zTNyLc%;x-Ye9>Oe+|)^& zkS za5+%dYl-?JBE+BdH3WrSXd?}pBR{g^-jDvlFWq1TVhePKP6)vpe_#!gf1(aL#^@an z3*)3}#jbRFTby>Lcj+y)Me_@HsqD++wu=ulFY4wXFhb6zH9Pkm=u;DUlAe0uiZ$YF zF!&^N!Uey?^`d0P&BdaKdtu!l)CCVzPv+V?aS$XSv5SwwzZTcS_=e;5m#AMagEk6T zB-ih44yDn2^LPg~3p9VXB~L9=m#mo9GG&<_BBMya#GL0g+81nRktStwsJt`zP0Hj@ zKP2jR)?S5I??^qVxp}x$v%=_uqUrQF`XL7=*5>zM<#;*jIvZba*6n0Q#KVG%W!i~3 zPk>yy9ZY@f{?iWDEoO2l1Z+A-Ff{fzv;kRTaQUSIo3=^Sk1n#^0diMFlnuo0e^Tgu z|Iu`ThdCxzvnA`g^dyy;$~$>)v-xWHyef9!^oBXZnOH*XylqsL*w^a@+a2^fzo-i* zJw2Mw=DDgmD3*Y8#^v~%@>jF+$E`>M9LX>7r0WKxtC-)M`@?z8gzD7H%2juykZtn) z4{UkDzG!&VRRoUa>|kDwM}^xt1V6NLOE$2g7q4k~R)xniQ2d4W^ODPbU^&<7RKnz| z`&JP^2qxDN3${Bp`d_RXX$|=p*EBM2j(UaFXX#3j9W)3K5~h=_z-xHQo6tHaxh82H zw8wY0-wCRuc+a(p(chZwuITJ833lg;)MaM%8J+r+pdRt{P5-_n{l3`Qvv22-`w`Caoao@#?5N^EbMWqlF@GXbYE0?^!Vi2(HB6gm87a}8k>hD+$o z*biM$CTp*a!*qTGh0F7z=V!$PS6n$?tXV`8x_lmj;W|D%E2OG+AK%^g^qSyjbxFhB z6NC9Q0gVKP75dD#6qyh{VR)%tur8?8scq@cq!k1&V1XQ!lNe5l@H>oVHB#P!m9p^r zB@m5;BxM27SaQSu8CKWAulo1jqjen!BD+IJc$)4P1o$F@+t@0oO?|-gM`ER-9G0$B zR?XD-6d_RRhC&~C{zPW{{ErNpvxotYL%_t2{Q~DO-m~~_Hp3$%X%PzWWI>+BO$hQt zg1FU_D|Qm!iZaUico${sm_|2GM{n%`ARUEJIy=v0Y3wCO|JL6qU^0n-FUn9s12pYK znQpv``ve#F*Hv=GK$Yx!hSr-(?p33!?0uFOG3j8swNsU@U)38V2l`|OX!H~!c5-d#9Sj#3OlKFNV8+#m>d>B?R zunC;kwOsAc!R1KB4VE8-8@d~0;KgQp7mOCyy=p!-uP`C08WHrK|6`d8TcoavU;GxT zZa3&!zL>l`qKaUCV^%t_o7O(na~rm96z3kT-&W>g?>?@4)&+9;mT)Im`V0~BFVRDh zg4zk`k}mWWXYwbVx&uoO*}+nY6mTqABtkb_@frwNaJ{(d_d28G-{$qMy&5-T5)(&e=&6#sJ1kdGIYLEa#|)+r6)ep6D`7po9wCj1-Ys6=?S z<@pyE$uKN6ujw2~|2iW>O( z0m^lrNoRHezI&j<{58&|kmj#Q@K_OXnO}8PjzCQ?#(O2r4n+Yr01DJ(jP{s&1UF=Y zCYf{F(UdBi%cj(1y)KsH;@kj>LNIOA%M^tyZ|e!VDCRulw|b%KB}oo;ZYhMj9c_I|;Ty}j8qYeF&O+y3SaW$SnsO>Z6#Zwu&wH)3<9nC z_sqeH<4!D7&$SfYuXP5N&r~hc?I| zh9tkPHq56nWZpOA1bY{QUbX}!5o2J2u zhLF%=PGwlLtwD@Go#=9i!Z4HSZhI{RcND3~+}T|HvnWiFUEQ-!qSN{kcw)DvvcyhT zt6B(!H7+#(q9B9_9=5bEFQaD|WNR0na{%Y{ZAwvuo0ZO4Q=kHK-M z*cg6-^K6I4Y1lREbN81G6L*eO$Zbm25u2mV_$Cz%dohkJz%lpo0$6LTIUoK-1#(Ia zDTkPXOHN3F`l{oQkixngF1>liYnP@{V=!lGHWrt2-og)$NH>EhYrjor*D~J}P4a~b z;;Lyej%+{FtIP{}I2(0ZwZY^Xywkf~^)O@i)%&xx?aVrt)KdZJhAA0mR=*VdX;#_M z?2x*G^UsR3>e2}HxlDCMBV>i_Y9j1vGwtdd?MiFHG}e~ugxth+LMP6i9=12G%hmTy z?|5gM&6*VPg715@`7~>W6H36>*#~%aRC4}|72ZP=uAS3FlcST&%BUj>0RDdQ!Cnoo z!2HWwjC~1&pEQK<{Cj*HiycI~{&S+tk?z7@CFG=y7iPLdm90Xj0FZJ76Nd6kkOiBR zKh9CN8N)dDHAD5nw)O6BzrABmvY0yIoy7d)h@aM~%g5OE@0%W2Qe@s_rNNY+5h09s z(I4%k@T(?F88FUGZYitwT73%Kxk^wL7xjo-?=nC)8D_UGWW`cV&YQgwelO8p&xxs) zkH#t)HicHngtpe&Wc%G)21LBvmyBv7kR4E>(xRy0M;vM6GS`i$0+Z}$TJ$lFEXiC0 z%%@g47YbRPG80H5qtc_#G$!Y2jLh2Qz?j<`2u;yXD>x+Dt71VYtrAkYq+|jQ*|u9o z52L4=2_3l5G#sOq?cqGS6U3u?m-Fay^g=qRHMra$z8vx6HVZraNy4GZ$Cs*|*rk-+ za>t-n(n&v#b_vwklv;Pw?Bv>DNdUWJnav#R5})1`m(yTlTEysa4xcJITU-Cj+f4f~ z8-m-Yb70hCVG;hR6|US`9ixrJv!4T*90d3ZhO|ugva^j(z+rwXg88dJT4^_^uVJBz z4Y8VIR^^}qWqeT)Ps3$xVVNjsY2AlK_Z03zMsL!TsX6krOw_`OjoR&-6ch^cT>Rou zRK0Ja!3xu!HZ3ANPoxTslYWk!S3pz$n&>0+QjTDh@{;NWUmPx%Y0t$BUtdxWV;3jy z^-XkYL(C@H7FYR}=v4oRfjVWkw3xP>M<)@n?=AK^9DM25Hw@j~$Ii@?Vm^=nx4NYA z$5Jx-G5cwu5(?53W`9)Ho!zG<$F5v_m$#=(nYzDBxjIz(=Je}+D+tr^D)FGm zf1)fh+KdoRbg7E}wEd!@6Q^5!GBzkK8qH?2e2_}zsT0((jf%!&vaZNdWz%O0PHnNN z0jhFU_(Voz5MeEVi10J>FTfj%nZvi#a+FTQ@x7YS*P83C$xuh&dks@7~P(>grDIxu>a*DgAm01dng z>?u?02G(;4iOHZ#6&<3w(fmvM4Dbm9UYKO=N+Hb=?}cw7@xExS10`asUm0dp2MSex zWSj9ATvuBqX@u`z@ph5x+}2nH3A+a$j8K`UzC@Q}ZBGiDj-sw6_pLnr!wugJv=`?{ z4nrKHsc=v^(OC9N42ejL(c0k{RMI#mXaL_g_VgME9KtTz=v{8(LZFO@Oy9P-eoi;B zN=+{s5P&X6jf6jwRuKNped*EvSN9eEH{JJ-KmK^-zqqfW^Z(cPB~GYc;8Wa}{n`AN z^zSoBq%1`0)GC;LM5v+Yh( z1@LFm{@cESI;{L3KePY0b@0Ib9hD5D;%(+|v)kx~L5tAow# zc}x}+Te2u!?E7U-mo6FCrZJ1%8e<=Wh{ir2HZe-9O)wr?KS|yW|Gqr`z8(HgmFGXr z9j(iAPWiv5eOk{c|9_4#XVyI6sl?cK&3#g@ ziRkY|JIaH!s}!K)pQzK^`a1n2QM{@S>Vz*&1_o#-U#hUZepZO;A z2+LBB*V-P`USgWb3LIb7Qg3uYSt;*3-9(N5H^pNXHhe1FLNHHkS5)#uA|jm_B=mXv@hL=n5&0erT`B zB2ONPo0I)yju4_Bk#xW(*#XLAr`$fpFhVy=cV>*=Ce-)|? z2D_Ek%o4B7QV$3j%e&c^VmF(0l=KiC?FS8p6M}`-$d07>k(Ac0cZNAw4Ox3x?0T&4 z1+czwTIvg}<~5a)_L0S87lTfMy<~-hrn{gUIy)%+WZ>^GuMNgaa+wC*VH5ECZDZ*< z6bIuufbcoNU-_a>4SUi((9~VKXU6l2XUuz&%b zc105rkTki>d*e-IDmgzyvoZrKsce#gcY6pJ1e1WlM~>Pv;{L=XYppv)EEjtP3FS1I z;?JZ-55}vb(o#=0*7>XjvwwXr8I7+?y+K;&@ZgP194-wtjjV%^KK7dC=dZKbz~71p zAcAdO*_TaU8!6alzX@M%VomelWZ+BGd1BBsG(-hQ+*hh&`2G-kc#1s9K?vUWp6d5E&dsDR$4=D>^t1$_ zEB;G$nIU6H`dSD^i0WmSbWw>{VUwcc$5}JOrg4e5m)+xQ&~>;d&cR)EdcO%tu>G`M z6PQ30qBOKgDi`+>`=S2pH!6C&FG~#1XKa&J5YUxT=d)6sEw7S{0))G)sm})LNdZA8 zdPd+VIIJx7)(;pHQH30@G9j=8j7pJKl3HTYB+ydQ3D^Ex-7BCc)R&$Cato#kdQ9eq&KBM`Z-l6;a(P)6w)w+oA#rI(turzRaU>eXx>E^m ztY6rrcGC*uS(gYf-B@SU7D|fN1_zDMx0`0_C~Yrgj2_aA5Q*TfrdAD#`4N%}1G;G- z3WMRj)TF=Q=@PFVtcgdksQYU=X9Q6gy;8Bo$Q09jMo_}yb$eO1Kc=H^7~?ahsKUX| zkVYMJ9Xw83d%;`w)jI6JwTGxAN@rRt{Kgn79fFh6bgC}6fl7uHz9AEJbuhvQzzMXI zO8`d5am04qZ?g|3G+pxrAf|})>eh{mDQbmLk zyi9T(#J}f6p1BM?WZH3o8!6_m$V*V0jp$Q1S45GU_+_&X7M+p*iS8GSm=M)}=8ZH8 zb<{Gwdq47NVIX}U#?+ypd#@D^@vm-&G2tiGV@9`JOBM$HKgU#MEF&EbyKV7CN zI;2XGI3hQ4ua&!C$_R)P2he7(AZ=w#*CaM4T;X`?&TQTo9m=3;*AfLQG zgh)}GW3IhC3U5EGdDH>vg`fg{V{bo^pmCkgQW;QzE)DccvFDyV_+r$>WPG3H8@4MX z0_F4ibvM51G_92^3+Sl^d%DmS^+}{_^X1N1f4gm2L6vyFCwS{Tr zE~wy=s3TAf3XnxkgZv$(M-#p5HF>eDzW$Pqc5?chI+P#HrlMvO;kVM@v@=6-(aLul>FYtkXh)gW_99hiavw0)G{X*NhVXwz%?i1loM z%q14zCDDyk+KZvvxgWxkb;iH{OkDN)i$N^Sld+nz10pZoND)X4=#}pfq}^+VLrI3o zoYs_ZYokR!i~Iz(r-UcRKdQ@7AM*fcs?9qYr{CYC9I`gSB`IPAbDrQBlNR$OUjLi5 zz=~!&xn6+LB1t8$$>^SdKrV|XBLWQ{AD~a0GeLXKg5)m}`9@+c5M@Tr-9Y|irUTpB zPO+?eJA709M$%56uh$XVdFLruU8bxQ*SSs%8nvNiy%+s9k9!Xco-iwuFK?aps}T;P zreO7Yjn%8{?^rO|U(|?1Q~;`|q(nERF-*?R1&l%3im@#?Hv$ZTE){-wf`l=J6roqx zQnV&AekaH>kuSPllax(l(R0MTT!U~2BpdLq{8OZ4)(6^(IXJtaT$c4Qf!Vlk@X@ol zZeNAbr~1#$@T4m+h8X){Sv-m;ZY<~Q@(nHyq179A(EyZDaK3SpS-QmX{?UbW!yOUrs5p2zlF#$;R@Se`KSZHdpF4=9h(Q=M%rAoEK z^q!_2Y&3V2$wK%EV}1^a121 z(VcY3=buv2ei^nU?6{9BuSl)1U;c% z@Se^mF7Sj|WM*s25VFy1px|R5ft1!dRw;!a-&gBxZI_Oc+1*N*=nO3w zGfCWa+S(J4BwQp$y2xx?WR)g|HvI3=ce)&zZrMvg#*#ogTXb=h@*tJ+Mk=6>gcnRa z=uG@^52%vyar`>kt0P!Daro~Phs8s^DYVFNX-(W6}Y=F-&TT0CN}yHUF0u1G_j3-y=E)( zYy~pU*83_M+rMM;(}VRvbGC4bY<(cE_t0j*CDq)Sz`DPXURZjCgZ38dNg1ps`M|jF zSY{$cf(?Mv0yz~41Aj_Fl80~(mV_tDI!E#&?e;Y&d`hkUgj;kai1dOwQ3CU6C*G&- z5)Rvb9C7#d=Z^qu%i{06soVlIjy22{1o%HgYg*BAv+_Bqd#aL4t-`Z$<61! zBcU!Hr(}!nG`^Z+LcvXB}_`+_cYgq{AF z;*>QjC{B5e4%R$7E%(rvuk?4;#0y*5_m|j3emkAup|RFBt+6s_g_U$}=6&4SM^*G4 zUGv;Cy5)UU0y_7>V|L9vcFoMVgPE!%na{IGID3U_bgqWKukC1?suPx< z2t)9y=pmgVY@^f752^g`oIv@DD(HCgQ@WQo-Anfa-79lB-D?9Y=Y4kK$sRaSxKAh6 z7veJ>o^ZWFE7~Tg8O5o(t~D|QhS;`&0g#lrF6{Nr3V|^a5lxJUq~0pSwf|H)DP#HzoT<2j)fU9!K__! z(5x|QkK=faFf5qb>bq4q{=s4#FI?|OU9OS6ucLEyb#(5mV`1sIuhSV>5&P*X{gnPK z>rvJ8-uUh51TU5avHLjZ+i$yiZs-}2L&Zp<qS#MgA# zt=NMRVwKIu=wKfljOTKco=Z4;F88P<-=zv>e#u%XmbD(mDWpIJ`F#LzM3zI1Np50QEY zm13NWjlh1Ib|kEdeca$_tI1wK#hBF3c^EZyeD~K5`{>MNbcGOh1y8zy@B`Ir#WX7X zx;0jBhM`l$upDr?l?k=1?ozR~*IIwBsx_fT{Hti+POa5Oe>I=e*DupJS z4mJ;Vqlcc!P8`TOz*_db4_&0HgbEN@fGX&0sQ_U&r~tjG0F6o1dYfYCK}4|kPv#wL zBqEUTdta*lNjmpIK2`sPGgZHV&iyqU=L#$6+=6*jfJbz2`UyJtJPx*^>aW+9{Tg7W z7^!|epc4zL8oL_JvsSM-oS5XGfhz zeJZjqsUbzkpn78yvPCgx0k9Y&|xLpxUqI*OSbo-QMG7gdO&sT2b;X8U}E z3p@xR$DYgQqqGy#bYoTKFIgJG2x}BQLMAh=L4d1_z|%~*EoT*xd1m19$m7{XeuPX4 zcRiUDc9HBd@UA(qt$`wHgIxkmH`D=2!KP9(65owFO5Wjm3wiG z%ecl*{2Jz;TduW72kOj@VXdyEMN-6=wg#jy`W0Tye-^8f5H1YdMUX?rEGp`|e4}To zo=}J5Ro3PQP}wDHyC^W6-Ns!@$&k8ezS01(E(`ifC+Z$8Lf<^&RU*_ZQgJ&pi`3l* zj@;XCqrme{=SlCbE@9?$37O`UB@R)BfSMdl+BapIYk_|GqE+qI%BrsYqT+jFb)X+P zD1IP=+9j((W~_GCCWbQ4VczU=5grIn7d%_Fc~6-hcrK^cJnj%+p{E<7Z}}q2+9T28 zsuxqXJocV|^O`10IqWVUPa}U@&C%R4@Alf!SID&PL?Ss3xgmMpK|)D(m&0%|D&~FR ztJa0Snxdwn?Jw)D@R8BGUntP6cJ8xr7-W=$L0zSdg^IIV21VugmLAqr_7-8s%~m4Y z2AbzCbi0UL-*bnBVC34iF9#sGaSo+-*|jBG4gNE7rPDIW5k&dHW0izMb2OJ{B|tx`uRkVWCgg3%;NmSPs> zG8cMpa-l2imEE_qV*|inQ3bs=KQwEZ9$kVzSP}kJpWXc-l znZ;!N;=u^SPzhc{q!O!<5Q0O{0J*8;=5%FC&oA2`_Iz(fxbzXzO$lD8Gdw)3lTyMM`ply}=2*oLmJj0`o7Y9pRlYP2A1Fu^1G3!Rgw*wc}*ABZuwnLtX9` z-$V`OJIsTkb1lo)kgG}ixXimlwy~6ATvOO^3iO-P>It%bVCE^Sdtubj&Q*b;vUP*U z&v{`4H`ayLn8Pj@wj)8(ZQbWapbtR zZQBTq+@7MEye<>*>ZmOJPjzVV$%-o$YGOs5OgW!AndmZk-bXDUWGpQt2|Z~calt~O zVC#|>)}>AiwjA&_gi%=s^kgv{A7zf9vuJ3?c7VI%l%`4{KpQyFB7~>dsv3g`4x~Zb zf~FIpO-(tdr!ce79sm7X+G^I<#DVBo)k5!>?6pyKHuCP1K)>6)XR>!~xQn*-%MkdC zBH_4W6KS3ZSVidl)Ipb_|3atW@!IPgqI#Pt`gaohNzYdOWS`jVj0Px%s#zcTfY}zW zv2jh`Q>;_pX_LXUY1I5p*x>)q$M|1%_kVjL6=VrCD4@mvmz;`N;CC`^?=0$t-I+CU zj%EKg(bpzsO*r)f$qGHS2I2hOY+JvLt-%_3q<}@5r?{}1O1io6wEfp&9@xQTH@Qvm zWeZ|?6Q9v~5Gg{d-R}x@F zIE~UlKH5i6g+h)u@p~tjBQ-&;t0H*FT5&1(mv|R=tP;Hh z+EADmb+>-+Kyofr-!qXeVo~>$$^*&%nObwY%p^$lE#3~!I(x8kK!&50MC zZ{bv713UG0QI6F(%PoJ_<|Z%0g><|)!y=;e+qjH9E)?JX&2S?=xv7DSHmRmZ-gqy|Rx>;Wd0pV=z>i+GIhLpy4`BK(-Q@qRaX>&r2yIc);#+iXSAqhcI z(A!wDZ5`QTSyt(+x#z+b`2yC@6y%}wCac4N%%>RJC*4!^$F1nO%yD-S#!mt#IQvhW z;CC1&xQTIs+dL9up4-uV?HK!qAbk(7ZIo~PbUHuG!Gj_!3KfO;gN4>qU&p* z>ATax3a!t&A6eqJCG(ou@r7Fst2s+;cDW@6@yQn<9whFVokmhyBHw z`M$x1;C0o(N&0eP$vyVkg*ksXSxbPy!EW;JOU-sUAIYOhDKk39cU6q{nLxkI{QG0` z`S&Z^FtvjW)Bxf&b(3MVR1cbRgMGSpMk>JdoIKM(dup9y-`ht>Y~P918eKHgt_ z#;h(YQlA&>khs0H@dPw25G&0fUoHKaw1N=A=KMF=oKFCC;6~dMx&^t-kT&-ZqZ1{- z!5?8=Xf1BZ)AF+Z&wS{=&H0jtSK3EP`C7zRgy$T{$QWh7(rjQ!&-4ubqVnlV8B*+v z77=m*Nfi(XgfK%Ao5C>trk`R-l?*(IA7(^+SM>%MPd*wX*HNplFq-mC$PyRmS;(PH zDzfUB6|#166U%hglch75N{R-bn}uMN7718>M8*VfAi_#JFhdmnoiQ3nd6W5g5J|;+ z*(r1AlstCIEFE%#WKX7mtc?R|;noR)(E3+jvJ|uAgc2zT(miFXISK1H;qGQJ64oz! z^oZAZ!XR9*I30PlsUYJXDp_so!Up`|ZBm-)rEY&#(6Pek~E}1yT$KDJf%X=UPylyD(aE z_IX0X*|1zS3ESGDuGy6ib8m^M)vVv4?6LuwGfmhN=S`7E!9T7T>P&XbuEAoK#aVCY z79jI(gk#3+qC+%cD~7QHw)CjNxkEJn)C$C`Mt%o+0dOsg5~$TCGJ>*+(yOKY#?!fc zKwy?vDAFIXV}!s+%kS98beR|`udt8tB;`@+nI4FiTIAPuOA?E&Z9-psV}9^vH)Vbl zz?7s~SpOFL+zfq&^?tI8-CsESc74S##L-k}Nd?>KuqF4|qc}&t`5GL@gW9f~om*MC zeU!(P5x;2H%*@zVp$)y*n{P{RT6;lqW}toLtnI!dt-PH~`M$8+_F|t1!MZ%J680Mz zvDZ(x3ho@i2F?I^1kon0v!rjkc2qBFJlsFK9@H`DrPehYsXiSUq$IJhA%UklGv0Ys z%o3Y%AcSbc+Y@=7#5r}F`%unw@74tr- z_6TLW#{<6c5!b~VzG%}DEGg|kX&Axk+v~M!Vo@MVA3w+w*9K~Iah$pgxxkuXEk%wiYxg!qL9T$v0IZX?ExhH&0OS|9y{ML^Wk$0tPYW;L z70zEF1G|nCwx)|Sb&;>Fm__e~zxQD=W9_(hGR)5k^sDd`KjarL87}Du(Y)sfXFF28 zu|Jbm5C~81sMK5bz%)&ENm9t@SiXhB8~mBHf-nfiw4-ts!w}LO>lZkhrdYqgx1Az% zvbLLy@nmN6IhO9v=h%yF<3Idgvbq0?Ka~7<(rbKMkze~n;@7UAQ;^R*$xWo-j%zO- zQXn1jNIb+aTs*|0dSSVWBiOncuyr%((4`!}}J|rcx z4-?;FzszPILT0lMyMg`2<}(+Y&j*gjMmx<4NiTM3^@V0;2$srLU#KHP?jG{7#zix6 zs>WLQF;-nM#rCbfi#l3cAF#@CUe;By@k-!S+rp3H$GxjR0I7q$ZZP9l>~UI^;FGvR ztps)rlUo1)I4mJc#zC6z<2A;>5-bE~AnPzCVZhy3^`&szd6c~B4i(MeUa<1r5J3Lk zAxWJQ9oWA~oqoQ8*=w!->zSFirlz-S1R_qmXJY#6&JiM6t;k{HLsK_YOtj!aS3-)r+~OSB;-anj4lz zh#9Ud45`i0eU0Z6tNz^hUEurZW~L4m;XXJ|a&W!wfsCnRiAg@ZY=KJD{MXtYd#SBQ z=G0bKTRL3%L&%dHmfLHD`asopfgjjjUsc?pK0K!7YEN2S?b}vYJ4shV@-J)+-^`e2 zIw29@-<0Rr&=%^{juTeU{9o$n3KXwh{LAU^vURueYu7FPgH^ht?Sleth9iu*)mgWHYIlM{2iw;ym`>z z)T^r_M7Z;#h)Q=Csh=+Uz%$kS#FD{G_V)9~nry#u-^!mVgrr7nMSo#?OwPow*o5cx zAz@^U?Z0(R5c4Vo?>fFJL6zE_I*F5jO;B-}~knE%p;+aA2_kz+AM)Njtf{Np13n1>f&mPJ5CkPSAR=HG#ep`2h*$w}EEWgiRQuKd zj@7nc0s*mt#i169Lr`n2tt~3EQUMVugCbDHq5^6KtF5$vpw;$UYwwdld+&Sid%x%V z@AG+l63#g}XYYOXUVHEL`>o$H%8J`iRtGIbvP6U=T{Lz&sZ?*~0=PoxmYjF``-ETn z2HxfN@|fc{J=-b{3O0E3Oi4MY-JrgzZ{ef!2U=!=q4Q%D+!QK9lq+LEK zIOYL$IxF6!ZW_4T!hySqt`C%L4c_hHpu08q3)B3{TDd>K-CmbyFP{>8<n&8;b1`&m-aBo@IHpGIu0-T2)eLerca@68jUx5IwY-LS5$G5vtLCoYHS89J zUxKe>vs9r=xqS3)&^r6#Fo?=?EUM%`;NAu{JJ%2M>UEy<15ux3C*SHNF7IXE^!z%d zNbnFEEv3=_z4qJ5ua(6O@AS}~mjWmS^Gr_muZhKiS89&$jU|!qfgO8yv=6xEMZWIKn512B3QySorgpo<=~#x#r*I&bw;RiwdUh!7*Um~ACst; zwF>sMlc*c#SPPNqnfr9y9zxDKbn}_VC6=0*d8Y;3Fahb8uc53mXp+CI1sB5HmO`^@ ztYE~n*vqWixos;5C6lw~%jo6GtUu|2SF6U5wQ*0rVU1fx_sgr^PT`{ubcL2h2rk;Q zKPm#oIXq*t@)3&m>^ua?A>d}qAD?j3t5@WaEBv;pgnlFi$b*|1#O0sVvYPze6AZaMKw)E2Y#sGa^%OhRQ02GZun;v% zvWURX`WBGM(|q>Iv0_y(Ii4Q%9X@z{2gS~A7yLp>))!OiWs)Nb*Mu6c_>)|CCo3n7 zJNeo&053vL5S;Dy3s!8hxlLbAe~{B)9X)mpqL9%|{>mNRrmQ4I`vs?~I_b}pr$$q7 zL$V~5Y8W4C{DN+b>hC|JRq>DgOQ+-=-(eG?6ICvV`3uV<2)CzRpN`d#SOnyUi|>GN z#`vq)@LOWf4f6Q}>Yus4)n>A;bt89W{iHAT-c|0Tan|HS;(XA|bhc{!3VV9Y>F zSeT;$+2#4g7Z|C8b$$o>C_DI%w@X8lS|_uZJP zYg^H>WfgP$cYo}Y_!|)weouMHE2Z8)U7Fb&Y9O~zp%{s;vSrX8@j9`ri&=dGm(;Zk z`s0rMH>OUZH#Z7d?UY|gDW)mE!%_%hk>TvHGyA@gI}Mm{uR--?A~I`#PA`FyKmD4n z1K#L!cGuCiMKN`H+V-6e(k=!GQF;2GT{v*fM|ZcIg@*?HQRDxOd0{Ps{#cUrYT(T2s6Pk(sB3u$F)uq6tP6pa ziOhFLxer!|v8jL+Xq?;aHw83n;zrIQ5;KwUtuv^H;k&HgL)AXAZT2Ta182&6bWtDq z%ClZWz(I?C>O<5y@PRT_pPA-|LghyTe}L#Zrn^}%J8D#z{zWEajUM>pyOu#`4o3|- z^Gz!iH+#lvKibupW^{{An~t`alg!s(?^m;)b;#RIJ?l;Ab1^8KxJmlIorr|fRxVP!OpFVWgjg-jKEn}#bx9?s1esZ&$xyfY8 zfwUs*foH5NXLG@BdM4if1--QRb9$g8i#>4R3_Wls>NIjDyfGBU0(=bU>p+Yz$|whX z9ZAZNhW*(yj++o4HS&s3PmK9)q|KT^I$+Y-K67p?nAv;)1L5JHLJapH{^L2s4}!iA zYpKOB8~FV9SfLL8*XQll^NMtspgulQM|;=DN$On5Iv0lir+VRK`Ch~c%c9Yv;AV^d z<&O|Pl+VS(>IgjSV1oZvSGq$fg7}+>$KvUDsa*Ws(mRB1&aFT35fQ19M ztd!=%4wV@NdY{qYJe45HXN(UgF`Dr>?hhg8d=BL7b$bKpNFX}B88)4a^Y6R)D>F04 zMgkZqv;%bC6iH4dVJKL+)73o4%t}@d6*IHS*ae%d;biZ>4pYL>&6a&XdNrizy_SI^ zI=c+w7sc5oAYvM)zO1NM$oQQ=+h51!qGsS*1<%B}HmS=rw$^jHG+iSX<5wNjS;G6}k zvTZ2UAk4d7EdB4+t)=vAQCt;-&YY>Ru~CNRel zRZ23B^D(`#Zc1847{- z@Fv|0B}JW1Ym+-uQS6#{W9W-GXiUhU>5VC52aSzekpCRWu>=7#)s7LD*%kd_c7{_P zq4W|P*GvA_H2&#`c#Ke!z)|q>=TGqVx7ap>E>ioc(q=@*6*`Viw|o(bOeY7_(LNI* zk0sofVApw}yJS8cgfW%AquK>1PB{5*Gy;?YqGKm%F$EoZ@3&SvkiFHSuW*>nwP!;X zbwrr-YE!FjHqZ)y5?Fj^eM=|ZP0BMk{B|n8B+QrIYFwcC#+&WfBo@G68WjH$@VEGv zJkp1$mZbrFNBK%nj3$UE;-O%c&{xm(w)o$$Q2m^z!$AKrfx&!ajPsG^H$)%jfU^8r zsn86kDFZ8*6{VfHDJJe^#;WZ#J~)6;xZV(bl$j)4Mk5BRIot(0jrCgt9GK~mmK^B! zkTsn$XW`!2^+1{dDGm1l#F1l)dveG}5THBe!)igNh+(=JGFtpEo~#)H_$PwYqzXix z(*RBt!^+SoJ9Cx)9w0PgM*A4VMhgix3c`ERllJN!hKKVKcNCOL_yW9D$FV{RfI!{K zq^l4P7wN7^EHvkWFDlZ&4}~p~Z$$6S0lHKKwC@SpU3bPCRRLB6yOZ8(YoG%Zydock zBL>MwQdElwF@i1!AB7kj_$OQqJWG4uEd6~VC0=|53M_S9ukTuU)Qf-J^kN(X3SVeZ zql-{&=@UY)?0k~|Zr7dcaziO2<1(y~vFnO*fVXjNJfT`{;MEOe#V}^~AnrQisg3J7 z3H#g?UwG|^b4x)>e8ekB7Jb9jO6=$69Woz?nQs7+i0qC7r&%@111th|mLgyx(v#=f zpE5lv%*0Va0=_mIuz;3tjcLee5fMRO{*{**sSv^A4tr_h+z@NRbsnzEqKsbqTi;G1 zm{c3Vq;MSwct3^xhcyM_`Vjj!_WAz|i;}ZY&p$u^$qA58WlTud3iN)9=>P65ZT=O+ZOHWYjZyWZ$y}|IRJn_wP z-J~_=a8O1iOj`AoxCHf|Q(tG_r2Qtj7y_o*NwCKu(bpL!L4UkqyPA8Hmi0lT7+GbN zh97EeUzUL~r(D7SNigHJ7UAtP(OF=kEUM07JJq|XC-nHGOzD5O{aZcsAbV}QYS#{6 z{eO(XdKsrw4Y&++B$cSYA`8Gu=vTL+#FJpXd*_0BXn2&r61c@UkrSmP|*U*)tBXNfmoioTa@j21Lcu#kKTvn z`2@?8b5`{`mS+MjPjzC*Kg#nuEe~X&EgW2)Q?xv*7fFds50od0mS?}=Cv17{k@9TD z@=Vm+rsd&adEV+*wigVPCwRMbKbGfHEKmJyH1BK6E*OFe2zfNewlYeD&=1=b*zs+_ z?+P#vRQhM~kOF+jQB5?2JJR9x>PQO?0ud$SbE&B;TWZ(6Ugdatq}sZmg^_M zptuNPI-rcNgf-!ilJv4M(Ti0BNRj9Vr~bF0%_GUwephA9ZGdXZB;bNSXQrMdIRE!H zcmXFH>g?a*UNLmAWd{wU&K75pVyI3eciH=i6V(iV9B8!VJLSBicuB{`3J-YUK@O$3 zO77Qmf{sMl#Eso4pD`Oawfdg8eBt)e&!Hzqe?dlS(qw)oy-(*moL=ZcOaX$2qU4yn zTB}ta`-=32uI*=Gl@Ay?RUQI%8zYQ4y8-$DtF_!c_byn6v^=y9N5SAE$m$Gzq2z4D z`O*>GEHF5UXVKu4ng1%*=8~GUeQkIPYQpWp@Ncno@m7OH7mB(b>P?x`H$mD)=z?0Z zn{Epn$$MZ!UVctq+y^ieR388rm>F{Cf|GmaV(o?jVD6?<*E`VMTL{~?CweINGXZ(^ z_ugtNfv6t;ST&f>Kebtt3a1|yYz5RtbOO3^m*tZwyyamq+( zt(Ee6XFvrLpmDn{7m>yV>r>{&ajCV`l)I_nBMm-Wd;E-wyEc>o++}bHNyJM>E!|%F zHMF?+TWoO`!}qf{(Wp`%B?tDV(!eZL%KD*;M%u%9fWl5SqUM zn_pqG#!37Gqtb!C1gzG&t=!9p8Q}-KLSYFcCr&Ti@ixZT_KiFa+@kJ6H1ck(=TyzlB!0DjI$ z2_1HjiNbgbYNvDw=8t4EQAl8c^pI|0`&fN|&M%G;G-X~ZWJx56bLVyxaP*7KmCar{ z2;)}40o?`Xchu;7$*cPwPTPRKht2Vp)LmE*FNQC$p?N>Hk$C--Pg!VTLw7KB6AEIZ zdTKdtDf3zii>e_#e5l;}z$3baxe#*$F^-*KQTgcmSbqNsTfX~wCWM@de(lvi>q~W~ zZv@Hm81eYoSoTZ*c=k&X$}8o#J$GmSE>;j1VQ>7AdBpFZcQ@+{?w`t+v43AZGM(iK zXZ4cuwdQW3Ke?0jgqE*FnFPXL{pB)d&Yk;L_7SY@^wa!+4d5+lDuCoYupCXHAlRh% zk!iT`0#Nn?Yo|NEjg@TdqYo=- zJfX+QM2DBnCpGDfv40gxq>Os+w$eI;g=hUyi!8dQ{n_ACfm{(?Mc>mbb>Fp|M#ssf z;q-+S#k6@F1K^e3^6WK|SaMbg3yHNod&d_jY>*ET5+Z3RJXRRTj33W_iRmU|p`_bb$9hbs&H-hIGeORt3BTs6cVv z+l&Pqf5=rH#cMu{pG<4kyQHN{kE{6JaioC9d)qMKIBIj1MExAfnLHG7jbiJT_kquj z=)`}1%_XpXqPe7LYwS5as@8kKOb;@pWIcu-&Yo@m1V5HVozY`Q=bZ+@Mg6^yyBT_6 zQ@@gRz%<=pJv7QI)FaaqOklR2SL{x;ZlE@P@gm}DdC+SCO^vsitUOKWsSN{H<;Q&G zb@_pdd_}8Qa74eQ=dF^oc5E-oQw*l*X=a^{DyX%v{_`GliDrY;-rO9}s8cbDZ`ppF zzU{{a>jsM7`qB=GqCn;x_XF#u34-*m5Xlxk@79d7cnHp&k6|;FHTQ0k+)%q|Acdv2 z^#pw`q{V4E%ha{a*gpSh@zxqKbR+>sJ}wbW$fbl!SSK`=i|7)M&Zt8n+AlSRYWL3cB6yzX0Z zNwve?V=p-i7B5&aqDqD-E_|1g4_4W|b8UYDzyX^9VP&{;@GT8#JB|U?1C(f9IMm$Nl{7`~$?r3?AF-TZw^* zZp@pbyYfQsperwoXb^)>Tz&_V&u>64?|U&%y=I^z`*E;80kdWuj=D$7yfwDe+muoQ z<~0^QzbYwR?r-5WA~fti$S7gtNaOc3F?my-veTOnm?9_S%60ZoF92)wl}<`PcpCv^XWti7kIh9PJJ@EoMqI(mJ$-9NQ)@1c%KP$~8|^cB;r6-oSmBq| zlH?%Yq~Nga&7nGH&H?shQ6O#Iqfc+Ld3GCnZn1@Wro7_K%MtC`%C^n@Twnc^zOZFG z+sZAko};<0i@0BCL9KLH>umC7d=E$End)%RP1^#Y)L>8h6J+#@f9&_f+%4&-boCCc z-M}We%16gNoy%Y?6lIMBN0UCN!o&7`l8vei>rFuLs z#Sgj5QGn;QFJ$pNjQ0?@(wGy?JNxCJZ1LG~$uJZe$?b%5_)j5bnD5}ziq#fCpOLk6 zSQGjSC0mp2{-q*0Yv z_yO#xWMl`zC;~yebnu?4o{L+XGQJ?5s1t(@HRxE?T3TbMuf~Ba#zP~!{^=V5J?ga> z4dMcHLU{y$ci^!($1`pp2P(ls$ezr`Mz%-`i$R?$NXS`2mdO`#q}AoH2YEuAp;e%t z_a{~fM5%A3NK*_Wao;xZn@!|5O*xWx;W?;44Z$1dc!J$PrE`*yW?;4_umAgR(y51L zs++b2o^z1wbxc2@2Ls%?R$<$`2B;~DoI-QG?soD=xK4Ejd|M!13M+Zd83|~j!b<+O zbYk4&=O|; z`zLI`nNkic7>KqJK;U>N*Db}$sj)2bt6C={kQ5B7abrjCAy)LPc`Q|w{2^}yt{RTh zwSwS#qU7ltbBYo;n$Lzhg_X)8&zV|Uf0rYaZq!MAPOcH5^<4Qq;A5g)kaQBQO1vQz z0xgDeYm`1MMP=D??7u}!s;t`D zg5y?8v$KFdIHS8M-?Ii*A}}o)^!za<6{wK_=^Va_#KSB4x0$tw5|HicsvH?aAtq)F33m2Xg7^~0`oZTwy zAp4DCkodX+)wc64?h z*TuI}ddZgj~Ph{#3|3dHV5tOVnR2n$ea zU&l#?J3!UQKZTfK=D{~zo)H{ZJ~BJv6UXlq^U;wLbe}A?sShwGvZm@khrnJ_h@xpR z{H91L@SN5BRM5}}yi{7c%g~}Kng@|*a?DO_IXu{CG$1J=E(rw#hcr#q_`TWC85_&x zU_$GIE|o^pBxOhO1#v;{dkmCkp)15GtoYK)*lY3Z2a*#2Q9~}Ms<=bAbHK#z$GkY} zd30t?afNK_>kTM20@0qP8lMBelbSq#jF7GdZ@4CjFZIgJ=Vg7xVjrvQ0bc+-8RGe+ zAw=>r+iT~8h}{Ga_nUy!B3*n92nWN)auDVa1`#aupF+$q%M7tizaW?c&My#OJ_qF6 z{s*qeKk(a#D8hgDC_4u!QLbOi1t|B3NO) zieeym5=Jyke>s;DmtvA=aM+AQcT6CkTTUj~enr{DByf+^uR`w?uYnxouTXr7GcN!j zQ3!yjOgT7F{UPyR>z)Gu11qU}@G<701Bu2mMmPg|ZareuMo0No#}rVQf1%ckdVB<6 z4#h(a#@m(ES7kG)guI*Zs-OQ5AEUx)SIqJ z1+OH*4?+&AdLSC)J$jj=;F%jhhb$8(I&}V4{}qYow}xzYs%GLE$|YH;cVgh?vC zMd#_;=*fqq4ne0$%{cA?XLoFXHk&T)V%h*=0uXG`YG+7J%C-pF-D@r7`vgqJqQo^? zu6QKpC`BMjKQ+uk1R`Q0;wmJVK(u$$$nXO$7z3~-S;d@$z!vBhA7HnT%mkNNpt(D` z%uYz}LuviQ8?z54bHq!Cn&?B4EPR3C{I6hnwi*K_*n}s1&U1*h2V%u`v`?YxQc|^q z!0!y7+jQD6Vhxl`7lmVD-qYY&2yv%5J+2F?a%- zhh+p%K<66wNBV;o<^XEscywBr{vLO)e1{;Hq6MkB;s!3Lv;PkHZ2@0;rdk=J#?|C52Afb%>ATxu8kx`OZkfD_UtI=ZPpqXujs{7pE3>eJ|(#WiQ#dwgf zAVSB?NJCGa&slg0Qauc!4&!r*05tqSl2h@q;B}84e#$3<9r~R>(qELgYb|s`KfTs; zbZG7SqIYCCNcO=XiGaJ^79KA`|LGB1sORhI_sJmHXGPYgs=T%jD4ODjXbQ))LaaSZ z(T1-Le*deFE(8G%5)eQkHsU-dW$WP`6vXM`ADEG{h(`HAfi<}6e=X~> zTJKR+R6km@X8G0R$vRj-yEBlF07gJ!ne)$!PlETJW`^+m{&Cp}!heeyC1!rd2$yMt zBV1JLp)LS#$PsK4xOwog2d z1~nU?BJnwRm2xQEKsZCEJI2ygEJa#R^bl)XEIDI)%phAQrGCqCsi-Z|EdO zR5JoiIYsWUZO9+AWs*s^f}4A!>3i8fC!P`nBxZXoToSp7g(nP(MHYDDdOxWuvUs#IJ?^WQ|l zg8F=M62}nuArRzI;?V;!CprC)UZE^g(^q;^b55L$K^n&}x+rjX58vpA{!Q&S4L>s@ zV`5`ey%NSm$j8xZ(%0EmE@9)rqC>BKAW|MhCekQhWGRIhykUlfEbXsoOutqS$6%H% z$D=VB!3pU_cpU(2j=lhEEt1Um)}jTZYl(n+(}YQ zy1gXsJ@smc9?2!|omySl{=Zq>>Lt)G3jWqFssJts5LFzzoBX~lSlunn=cAtvvbvlv zjmdiaH}|w6X&`f-`=V6vbC9>z32=`;uwRs!-4%n~=xBeMcu{bU7bktjVGfK{C8>v~ z;tbl&^f;W|2xtp#0ARB{1Z5pJ5m8o$3IyGHw%cKj?C2pI9m%-rFDTuPF9hbbpAh@W zG?>b-3IHA`J)KsV(}8B`#ZbB_>kM?{<&I{AbLr`O zizVbV8z;J=p(7~WN)9ikA09fU62px^rEp+!Q=5>e(0DZU{n115#m+AGBx@J3ClMA~ zWr?H3vHl>bvbLjqrV%xijabUEp)x0}546Z(+9Dm?S$LX_`xNb6;8<}`40lZogYM$* z42|PF*ydD)kr1jUI7Kr{@+Pm2C?m@Kv0r2u)X2Lq*$loTX*9b-OJM6j! zzA78nP;gDgFhhzxhX!5w)Ih+A2_;eP}dIGsr$cHXcKWvFD znI%Ks)bA}}+8N;Z2Gmi9!u+SNET~pbr!DJ$Yb_|Lmdw{ciY}z&o&cd00NP&Fu|B-M z1Yhbho2+bNk&fpvJ$eY~R`D--m)`2`N9SXsO%v0Wf z7(kq#f+JD=)ay1a_8QTP!OXgLew4DG7v55mhVb0e8EjGSUr27G;LGFwA_-^!0%9ar zK3*M85v9}J!Fs5ux#S3yHZWUiKfVs`GPkw2m--nW|1k%?K$?cO{@>Um#ou2eKH`SQ z3t1NN^J^mTfaEGuyn)D;bf>{O9U>&$NleUpu}|5SI3Mp1zy{DhH(gyusm1Ae4dA74 z3yp`&B1v*hkAJ#6av%<>Fy^2h-DrOqppzxsqz@iS0Yqe;N%%aA>piot4h`WZ;w!l^ zYXiO#{{#`d33%Anm@*PgmHs$5be@kaz0a5h?e5#MUpj)r_rgwJUbRv3-fwQ<4<>GZ zU|WiQQ1Kv=-4t5%yrqt{s7VM8*p?CnsbGHs;x+K3yu+1Rhf8MK&nkKbg!JS|{PwceOb zUuE5WqcBqItugfkpwoFrMBj#vLKoY`eRn=)x!SEZ1krhL!Gb#5!yZ@8JjP4D=wBMq zk~g-IypKaI!Ki}?v0>L65u0eR_+e`7dHu_HR5T2|a^(XD&Y!u8Y<7*AKA`DDcLy!y zxt1HWY%d7w7hTe90NLZWuMf1gEyPHIXyCc-{o$9`m(d%Z_4R<(=5F+^0nT?|S{*3) zZDbneJT3m@Dx~yz&}+g%eHUo>)y{7KH-lU~yX;-l0se~bm;~?<+Z z#mw)^4<{}6LA-$A8qLqrX?O2>;Y$FH=#Gce=1H%f>v)rv@KRsCUTSgmG!lcB`=|lC zf1$FTz=YqlOvLA=cdT|b7~DG}d-d-5Y04Y=#``T#p)XElOa6ov*g-0&uzy_R{@J8> zFO{l+z^5MNGoLpi`nlpT-`QE>fpDioSp}x#b#F=-M?3$kn3O?3i%Imw_@cUQkmmG} zDO-GYbTh)~O~uMy?->y3cfD_a0M@6g;7+x_1!s=N=M_3dS6-oX(9Gxh;>Rn0(HFnB zph#c*8~2T7C1HQ-z0>kie|5mNiRoY!mN5Vk`o$je+1}<86yG?BfUX8H%P8u(C8i6p z(Rkn*=yHbl-k5L+Ww}sC$1~DdU(Zc}1|s2#XVwsH{5|%AF0G4tfkv^R z#W)*8a{3K(LNp8XFli;rCr_E+?I4AOOqV##Z^KwbT)87JdEnM9=WkUzfGeA`Ak#OU zpqG`Qq?(%&vI-Hm95sT?)BO$`6xZT6n;lb6&nL5PVO@+{Z%n0+K?DB_3OX;%I$0Zt zZp$ky@_GLzJ#n|?OVf2sgQA!ymMQ)uadCiQEosRKUC%Ulj!0bzoOTSJ6P>5Cf}irR zjt8M^eda-be~N~0wWq~ zJnE1MsZoG3+Z&?vjNYJjQQ6@)Wd&H12f4}B4x~pPXoG^mtlD^}LGU@QA$n3_vR9IFN9U zW|f%Bg?&y+61x9K5mp^+NcWk;<|0tS^@1P^HwnN_pji$85m6EaN6yP3u=NoJK}@42 zk)e8dT`NGG4g#11As4nQ-0(Q=8-{#Fq}n8_fJ}W7*Yo_&*C51bfnMMA#~|1vq`HZj zYO)cTja!L0e-04gVY@GYgcX=^rOXh(Tb0llpDzLW=O%Pj%(SW}2SC~s3e+Tk0?|-J zeIc9d@K`7Yh5#a>_5km1g&nB3LUyB7uAr^Q34#znIK!EUXNL25QW>Leq8f6`Ktm3_ zyRfeirT{frnreowH@Wa83hnvxfR>J;adV*U-=ncm=N!ukZ3U7dj9!($woKdX@+B*B$Cp2co1U$XJ4yrSRKj@FV!A5dYsa)kFZqS@GtP@rCg# zJ~Ga*AxbZ<)W=#Z7IXg-Oi70g{R8uXU3Cf~v-0aC+(d$1&~y}09CpeDz5txbfULn0 zgS<@}_W&I>k>t{Ha^cDb$gbQAL%<=O%}>RRFq@lh`Aps$;E|L7wi1NcN+gN@Q}e5` z5nGvujoHpVVcb3geq!Kk?O(#$iDlL0aY1ny-Qwjk6C~}9LrlxJZcw|#?OQOE*TKs#X1i7pDY-W_zDG@ytbSM$4f>h zP$(D;qjP_y?r2~`>KlH$Pd?0 zUZ2KtTnYj!gHQ=$D#+Y@$gzUv8~3eoxXcypSz@18JI77sbgLksW^kA?e~<;Kp`_qe zjHtYBx+(Uo7p%N&0ROI?*K)#*#ewapaxiLaEF`BMSCY8s=HlO~t?^0Mi7tJVoAx=cmhrhnw?NT-`)RJiy}%=5QyKt+1LhBr*W&zmL$Ho=?+4?6h=-c>oSWA|BC@q?Usv(>J>|;*-)=VyiA>)g+3j30%)EvNi)@<+3I~6VK*y^V?=Yva^d$ znqChTtT;`!>>R>ICR)Al3W-e$Aa*8HZ)f(A7|>|L1(6sH`afaU`j}6hec5dVVv0#F zweortQBMSS{ttuddKWV;IkE z|3K6w*d=8`z`e_8+5mFI@OrWH+zgzi$B3A@UKYgZ2hnb;!Ra@K3tW zn3gXKL5@H?-U_s4*99?lX+p@`3_`Q0G60%!J5jfw*$y%|TL()=GAr4bpop12IAttb z-mGGhZa@fsV)DX$;4n019_=wJ8!9NE*efYYsdK6dPYOjVM|p`r#f-=mtohhU>_sd< zX__HU-Ko)H#)}$>`bg$&>adL@nlm3m)JzvM0ff?dv6Q zeM$qSTqHi1w#WpCI_ zU`OpDGV`ZLkpR%;RK0uA*;+5%v#0|ny2ZxBDonak*!Zzea`!~}iasOv#!&X}d3|4y z$m^t%Wz<0A$DGtF`m_-5Ws2#i={iT?BN9?uOe1ScFtWe<_M7bP=rOp;D68a$&14YU zeT$2rm@=}23Cqe0)iuJdczZ~0>13y%=_q`O$i9leI}?K^m^uI^dn*S{&DR zf@ZELwcI~L4hf}*8g_MYPH0Qv)jvwbrWK%LsWq)_Gp!e!HL1*QXw7c7nYD?{A4HpX zYR#XtnRkhYLikU=cBr&$=$~S1xxzXm+d8z}I>Kq#e8sTH>|u-BhebQttc0kTY@4<1 zHgQh28x^)&vTZ+Xw=H#Ys8BdmWjoZiJJdUkXi|)5&K_~QeMFnn$Onp%o!KLww2$m^ za_mt!_6LrUamV~w=J-M}CgkXt(0gMdMva}nd~D>=v5W7GjUMH^a=G)Gqt0vZIme9} zw{iKnEl0Yom4IRsV9!WM#ltD)vFe zQ$y1YH!?iTQ>7kLUG8($V0wdm!HwiqKUQwKYitBS?1~7Z)p15^q(=YBFczm?Tq-vDjAJHkgpheJU}-RCVO!RDR%Lr!y;^D@^y3z(%pi_Qm2XjH z*zVS57^k(XXT})8PVAu+ZgLVtSZuZDRJOPA@`&MSQjdCrI+c+aQa~;4y2@SJW{h`_ zk#LK|)_9+L(Y*EQ0Kt~P@oS8Hn4e%d^gCj9LL*;JVzk&fZ(1(L^`&G^wQRiLbGLnG z#T&key9VF?6>YSlYh5HBoWJ{+LlA!9a~?r9sR$?LM@V61g3WqVh=3L>gECyfdTvc} zsmd3(a3NK_252j?FL2Gp=838zd7?1!Zanm#8?Ki^Xac2Y#JRyKGk!$^jW?o$G0{$2<_c zYRxAfkDXnU9CrEmGC`4pT-Jl4qrUN~YY&+R2{qAr_v!(mJLs6Qv{;ZTrQ#8GXJFxz z^aB=#30d(RtvqPuozhVp?arEVe1eoUUc7qKg0VFyMvxy+Bb0h~R>I;cd|tb=dk|As zYM+an$-Jn%P^S@d!dNe1GdcK!eE}Xk6m=n#W13XgLO$+9ogpl{uk_kmcHdwNJ+Mxu zQd0XN8H4$K>tw27orf8t+C%nkrRFuJo!H?!S+F$)(|grRvr%634msx=bHU3%VhXvq zNS+H+^}1CE&)*%ERg52y${yM@Xh~E)e#En>;{7IUfK@7QzTzjm@h8ft0z7-#zL*%? z`_DXrkYY*KPEW`sB?j=;soijcPb=P~P?oI+OBp`61cbt^u#>Q4#7oXPl`iA#Lhx6& zl;&B$b_&-Ie-7C|7~mlF0)4KY91Q$x$Qr-3Qr@2vgp}lL1^3_V+O3=BVA^9NLs<@?P9~>4;f__?miMA*uff^4@PPY4@#TV81@=XWG= zO|v+{yK=K^L^CkmvhyT37s&VDBwWkLrDQHxyp?b*6+Z#j5>9?XPtJ#v(zR&zBv)~< z?Ynvpe?DYL=;U&>=E#~-5o)0f)}y$qOxpnBT_NdNW4ODAgVM4XvJ7+8GGtsjv-&$;%%6 zW3wWJK$(Q4^-_2ef9IVsz#rhkRh^g3VoQJIzAG4QlrkO!y>9ayEz4Yi3-<+*_mbA} ze1P!Ch8)X2U%FkIwgc3I%%Y>Ph{tUw)pFJfa)52el9<|O0&%B;JWy5dLKf1c)!YdJ zAQyS08jgtJFI|K(Mw%gOhQSC|JDJBtm4Y+^C21W#c`J|~@fPe>A|PFl%n&J{(i-A} zm?b?$D4;8eoYFjPBrNJ7)6WaDpph^0yMPB-rpDLhKj)(g)WNNoz%!73OW4$#@qtDs zOk8Ymvo80*&3g2Zm5|ABNU{b05SP)&6}*O6k(^Uv*kc1XbU9v-aTh2)NAZU3*FVzC zf&69A9gBpf%uhgDEOc^t8<`yk$7zw~XfM1^d9FS7M)Trg%Sw{JDOC-5>VBa>+DM4Si?i&qLq{wcB`%kPbkhFsTf{+A158SDlgF-!?=4DL1KjD+Thh7WLM_gCq;gzsT zffK;okX=-$3}4!GMRg7_J)6-gOAzFm<0?agQdJd6wmSm(r3we|uxx_#i%pQ$2)1PB z(52d7Eu2dDQ17#RCD+OBgr@Wx9A6_7IpPlp8*3DigxF-L8H$4R+%YIfFG)_g6ftyy z$Jd4R!$hU(%Z4^^3*jQTMZd|Mu^QF4hM#m!GVQCsC)+82#2=lgilRm$@L~T2qcVPz z!aBEAvhUJP!93(5pk-p;y1GIAtk|_^~_`vS)3|SyxsGg{wE8X?C=tUI;HWDl z+6Wt$N|y&B@w#agAumB)#?9%F9TIE=jwAG%(md^5*_+Y)uEnJrpg3u)>;Z9Lw%MZ-F;ah}T=r=&2TUm*iD3)ZJ`w&2=)0A$PKRJ)vSyObG;YwpiIxkW^SKozlqw?6P=!IrYExaKZFP3>M>>hDR1Mg2;+ z@2}agsF&MABisYlAg9w07WH2jscf6J!=k=E1|Cp46c_ca@BncKcWJ33KHw*KK-=rM zsISKd9EJy^;sd_C0uQjd4iEU($M66xJirzBT#U6NJm4)kJRtQoc)-D8m2E{TJ|F=e zptZmU`~?qa`kP*=E16F<)su&E(yd_TIh?ryeMl!Hv+6<8B}Tf= zi~H!I*}AzeWKv*RXHO#c(x)Z)bCxhD+SPg-@x+zyg}2Ft+PqI{V_$1o%DL_drfM=_ z&V2zs`DiN`Y(nF6y!Fx#y|_+(cItydChvRf|1RNVn|fQATMh2~TFwYwuIs>@zUs*K zwpyIi7xYkyBB5k*r;1-Q5wFZKsr9}ReX)p zkQR#lf%KFmO%&CZ^cw%%y`D!TE0znn?;U`P{`H9k|5Y^%3=S-x;!Hq5q;2SG6RA3G zELHLm4mm2UFHD17>!rfm7ll3dQkIl$pY6X7@0w=~W zpZ;n4VwrY{9jK^^e}nhXWwkNXR8~6i9PgO)f)_V?Gwk)n;B5HK1AGJ}WC^#W{XGTa zvJ_2w;6*g;QlMGF%Y8BGV@lHeNq}NrRXa`0o&AL+X;S_&2#J`epY3mRx9>2xIp>i8Ckf#J8d)Jvp<4GBxC|3a#MhhpbU6(tQ8L?#o4t1^C$c#&=8@M< zx#6GQ)4!7&esRon7lwtkJfmUE(XF|s2b4_`^{k>>g}#jQ9O@Dw1lRAD-=uEO7lJKj(E$lFL_>RS@^M;ga8D6HF$ zs7o{#m0c4-M&^yNPxU;^5tLw;uI%Vz>)4v_sps=;ZruD9Er0s`NrcCjl-@F+|K5Bk z>w%sxRRB9`kc_NR?$_7v&dWgRgKWzyA_6Ms%gDzCr7m4SKx`>#sMD?EDDN)mDKa6U zo!(bg&@(K7Fe&}56mGst9|W;$bjze%tHw9?aPO0C|A) z@Y9spE0{~sjTg2OGUk?;BwyVv`tse5!B%_zGhj`jL?FJ7K}O_ zwX%-QqS*qvzcfHK^JgTW?RomHD)CLrDy>U%Vr{ zA;@4>ci547<$YrwlUH-6@5Wmj(5>RX&5e?~;$u>Mq3h=_$y%+eRBQ3|fhgHKJ1Cv0 zu64h@WX<9Bd7+3KE_$jj;Q4s>Y7(}+>D#Pd^+!L5_k&<=xp%W~Ou4?`znmZ7kLGs= zPt!F`^IgdH;OTFwViU3_=>+=Cjzqnd?j-p*tZ%e& z4|FJ<*22q#5w!mXBv6gz+l8DO;r7vC+bNk)ar46N8`#nNl|NFV<tg&uNUd;qZMKwl!i zF6vdSc*JhQ8X+hIOj=Kd#b%n0p!u87hENNq07%$fWIAS!`mfO47ajIYWEwWg=#QV> zvCmCw2<0rWmRH3J2#9U-K|B2|u;#(N8Q-@$G|5^J9g_E5mY3OF=#W3WAKT__ z5agah%GBCV1NRrzm`c4PzoR_1-UM4xkGsc2+dmAL z;?S8Q`ts_o;pDUl65bmBAWrlau6`XSl$-hOP?-p#s5OSC!OnY{0&50#*j0`GhN)BItS3%UHU z(F9%2+UsAE;U3Xl5>PXSOoBf>x3jbGoHJ*G9jVciVx6W)W4_@HQ-is8W>CWxM$+e= z38_%S>;jbb#$JTFP|7E71Sx91G8v1Sx1?oMI@Cnjkv|J-(or&*oPHMb37dxCW=R&C zw>FqwQ5ZlAy1s?YeiQb%V-FETxbxJ;6=_-y%36xr@yfu zMHU(@1(&Z<4#TbSJxg*;-F{lcPhP0vcOE3f>5E;}CN zgK|Y}#w_a<7rcVKr)zpdk7-Ysylo;iqJGL{X=Fyo47*=R+5bD2bUb_m8>^#-GEKED zW5|PA^DdK;7R4J;`{WBUPv4hgoW*oS9_fOIqkdr*MV~)DF_RRxAm$L65#qaNz(NAJ z(CWTVSs=DMWfpnP`9)+&)f?|fqgFO6TXOz}7c4}B0(e0HSx!8QxjR5B{xHFp)?{;h z)^bXk%};N+ptpN@%7@+v8IUJE?)iyy%;=WfWb#PgrO2%ZFrX#)4N}^EH_hU*~rJF)0a$pL` zmgu>#=&MJpR|B5{QxIHh3*K(Hnc*AE5gG4s5j6S_wVr9UV3DmzqwYhnGgFktvD>G% zJIEP+Ts{12j(x7${sQDqRy*K+Y4c*YwtuEit}g#3^xb(YIIe)L3MqdrT*qH?gxiYJ z0#7IxckCwoH7&`?Tv%ogDVdwpBW~;N+|L>LKt1va$FZl(Q6+OpErQnE|B>7tcUw0zi+xhSJl811XW#VBj!Rk+zm}=kZfGqO0V+(}YIl#c;B_~Zq4Yn4%%jbk|69mhHS|U4 z&}VH!rB44HWbV}e%W{qzQzm8`Q%?qT6vZ9-^qr^yG9YbCOm1CfUmEC8Rp!uKHUe}! zn>Zsn%SLtuI`$84%<}PCnd`}N*Bse|!o+_K!Hxm{6k>*X3qExmXV@MAH_&1qeEcu^ z9sdLJR@! zW{`Wnx>_W-E^1uIWd+91RI@2>o{jeo*&Thti?cir@x6tv=Kwk-!YdnDtq-FKgS0-7 zT&3}``_gpO^hD&IQ!eNkFB7uXe^Z&ye!HnWrqlV@sFU?*uLhNIC>ICD9kyqbk>qb$ z;s@ZE6|X9kr$e-K=>0!G^}y1T`R=~(?;RvgSv1L}d3wc~lG~+TI=+z3`|LY_VLWsb|3Ira?0#`^cHH#hij1=1U zP0A_Fx1rz$Ta38x4CfZ->eta^$*czX_xc z!TlGz#o6z=7k+?=?2$}UJI_%~E+dFLOyU%E2AZ8d7|+Nx2=H|~BBDc*l+}|G`Y9I8Re8l&}FykfcE<1re$UVV$)i7!Y#EN4Aiq=oymzbJ1zs&;-mQ!cV7a zE%9=s1Ka`v5~LOx9|XHqAfmuOg_!1nvEo(y?|to`eNPXe(!K{>W(MKfl@T_G8)174 z!JZUE#=Ee*oPlxegy{x}tGz5Uw=3ej2K_m55MRO2V{Rq_I)QvZ+>UNN2hfNp6_lCa zMYEM9VakJqy=JKsz%8Gs_84Ai z)Gmd10jPV5>p8Nv!m(>WB8DPQ(Jm0I?*a>5_d;9Y8?}X(0aVNt=kR6BQf9MCOkbsW zPFCM{Gjd(Q;|W0m#~N0unYRf0^BF5Hc@!^&r9Yco1MaSFom@waM8ganpH#H&yIS|aPJQ^6*^?wdMovNik3rCg zqlzE|FNpHj4_E-(ojM`Xcg$)F# zr~{)27?u~qEw)PZ zsY1u=iqvJriKpF(*od7m#gvTQ1Vl`Ss`*e7PwTDQ49`#`(|kUR)mf}ji-k^9Jqlv#ppWiuf$&hz*3!#{;p(ELvUDxCl6 zz(Btg&8xusRxs@dAg^Ck2AcSw9l5&DiLXGYK6RA#CP=feZt{wXcP(*ob-scKNJdaO z$nVF2Mdric*J%{tC6~!U4ul`QW@*>>3mIlS)Fqf5%kc)VWrtw$qHG!&l;{XU2|RXY zv0u?a{^Z$sgYmq4|H@@z!Eck8pvC&vN5gJT5Z^J|zNg59m_WmYB1!I|h9fvOubcYD zvpL6lokZv@j5EGM+;o(-8>GwvCM{%Q<2_dZwTLM4yBg{VY>CKwF$wR*i-P zF&WQuam}EPH0IQ|h;onEB)lc=CViH`h!^CsmNIxPsz4FgkU&{<&P=lA3xKw&)b&S0 z+5rkJXsRw<>aGiisvQIkLc#TebcOevUEyVZ8G2T1M$!t=P&ES*sz&l|L8nuKfOzS& z;$P4f%^$qL193oL{9V-T31V}+z(4b8w7fz-J^d%$zQb?AF;)~h(@+-zvPlVK??fMs ziC$S_VG9Iwhs=-TUDeaR6~Njg(#x=>z$vqaEWC&DJ9~* zh1*9?H~|T*Ilj1I5nI7JryL_Ub_ihg_eHC}+f;WDsI_7=hb^j7Iim!KTzh5#56Th4 zHm88aJg#D1q#N*VBtj43EyZL>b0d*C8JFRMU3?lq;nIC7H-`TXBLo(5024^NZ_whn z8rf<|Vh_U`qZO;9t$?EXK~C^dKsW20WZoJjC3vX7o|zxXA*@p4Md^X z+$YHbBFDrWLk@2_P=yV*;vN~;VfC>N&A!~Cxdys=B9|ugCBM;it)A%TG?jX`*gM^zsRRqdyd=5mPNW!ICpd0}}4IBCQavVvn zB?6iu(m+NnQvmin0dF&e!|Ac#9+9dHgf@aO*^}0QvjQ>9HQ53LHifLfrfqHFpeFbR z3Kne(1ydzs!ICEQlY((9U?iKBl|ut9g9eh>;4(0BjSW;wWdH@w6AGml*JUREW}|`T z>q=(CQIOTle*0T4vB@nwRTm738w+bG*N7#dWnl8&nVkl89D-U$w0&txj*F0ve z5G?ZN(AOW1pXVl(y5-aOuvziC;m^5h9WwfMu^IU&vAfC!U==D;Sr4#nLd*HkMAMsA zlhaD<&!L0Aq}t!oNnQc_Ib8UC10XQp!V`B0)Y@M%^U(*JY90~3aDg(}+pvMZ1+*Ao z^xtsXK;%FnOodNTL4DkpuTtxkg10-6$NDc9-1M6e-|zE0 z|2)_AbX~3)bsygE_v?Jd@B%ibXq-J&b#d{F>*m+OU3Zr^zjic-X~`b8tvOdJwRVkV z8oB0Z!Qf(ukgC;ayiG1Ki;Zlk zw_=X-9+=oLvhJG_a1{|X(6?1}QFk7RI=2==NV`_=&Ra79oHnSaQFMLH1(NQK^)=}G zQG-vvL|^PLK2ufmi!z;OOnQr_j$KfD+gHS)&gjE0;YTW(wvq!zN)EWcXr+kVlXDv!?6$OeZV1LWwoSZ>JvW4NE%rAH2FSF@i zx&tRPeLn^KCoF6D76o;?7A%P-sqR7>#~yua>p1ib0kOpH>-a^WSwlHDEh8JDP7B8a zz*I_%#158@OnKw-Ow{MR0QqM@G-yQz8dp4cF#Jdb6ooZ`!#Jf|Su9}wsR^HWpk|?5 zqjfC!0zXm#)JMSQFb=I3p-zQ9N->MAGk)(`QGik$_i67Z>Xwh)I8!mpAO@yRI{dw0 zVgkrSmA-AOr}9_EGa28ib5tdZ19MVGamBIL6B`8>FI$`nq9x$Cg6d>zapv-Bfx*{+ zT{TvN1By=gRI90Q!z?kikW?IQ$BIK_U^?5WB1+Az4u&FwIVG#Zf_n3KNSn%vC=eD9 zxtBOr30Xgq(Y$EZamYynK`=~Ra@Vq0QlaWka>g6nSFB{d^7%(wwQ*V)_^d@6#a zk$g(s7CE#K-r@djz1t#u2Va8)iM;&TtY zB~B~&@d5O!RU1$GW}ENT3@Y?5iyd-|FV~t)x&;8704`VQTEOC5aCAVF2%S`Bv^7u# zg%wbt@&m0ldtWyY+cxGysXYlM)ng4yROlW2=nKt5Ryy9o-E(0HRA?}ft-AwhD|gN@ zh+9D6 z&D8xxgHW@Q#d(#=7n09>`#IziVP_-g8j_GBBv-_m zW^SP+s6ZBKU)RzrP5W)`7~u%iHPMv;i6`-TSiZMJLOUN~OipQyox@`VY=J?SYjAQp zM4zXH6*1;0)WewV4k1M{yHiZ^@PDUGU~FE-R}uGGXsG^j!>zlaLR03iII>_m0ssy)_zpROs<3GgR!TnDmH|%B%^{@sO1lJ9#I15YH8&%0P%kO795R%Y zqYqG(8Yqh8T%am&h?x*01el)h8Dw>(9{QNb-U^R+Fo&HPUSi=WGncer*p<>;4Q;aN$=-y9`J%u6M;^ziIZ_EcUsVp z%th>#VAQL9(uT_SfH5|7<@#7HWvt$|wx9P=DB^`Sgo6&zxMK_C*=p}|$^ zi={voQ!KQoX;kXYJN)cyYH~Z)e@iwlhwL-7qFo>tlS4gD)0SxQtVtody&zKtiQ-#- zIia8gL#WyjChU=hzKfJlg0os|$6~=mgvZ6&rP{pX77_J{RFb+i5_2>E+VAKqh~wkq z7HY9{d3l5C+6Cj^`g5VF`tOwB&~_oUT*5R}myo9FqSavV-8%F;CIxdsSn*o+alB^P z4%;J0+wT%X_aR3eP0SU`#kuH=_LgH+NYXYpCWr*iN!UMA>Pe zBrQo%w*~L?;eZMm1x(?ZoTG^q^Ctqit-d~3G4C0+JX&$l@a1Bqy;92b8WE2i=b+`5 zTFQm3R!GFuZD^%2?+T1(Wcd|HAIdsbD_ z(e*prFKM=K*#X@}vlI(Z%qI0=c`0e|EXm61;%^mMd$samcI!Y>kVrGO-gr24=ZOhm z1cuMn;!-g2e96^tU?Q&t0!km|r2es*>$ZsdJuIF3p%g7+UozCsaJ)JSm8 z?eAqtegWQq39ro89!VO+z zyfWjwJtx;9b(0wCYUN8ycu^8a)(3vO6dlMsZ`)(#Bo8W`uqQIvxGX>pG>n!_IR?d>FK$HFt!s zrGfhe>Emi9!nJ^`#y@177+iT7KT(JEf=wO!+M4soLY50i$9YL?@Yx+q^pT*VAJ1jIJ%bx}*agg7)BgW*+jW}W< z4|ue$(l)A^kV^ZrlCP-a+dHg-9(`2piXL)HiXYw7wWDwH*LE<_#Smt9SFE^da}`&W zmZ!Crs>ljpk#8}vCm*Es!{(==3Y_3pqWigB~OAFY8pptk>rOs~86u7G4YIlkL{gP6ZK1Oj^Fe%9z;hQ|H>b00FXmQivA#JdAG7GA*nrBN zdwlXbkBWsXuaHWcKM2TX0~$d3RpF3oX0BU56D2-kv#p&wv{tJkQk(9WSFSgxnH6oM z=4c5W<$<6(n_E7z`r5N1qGk3JcVA7>fd}-F=g0DCOt268Wb?%=kGQdV%!sn-hPc=l=OF*B%;2#~2KBv>Ke-kV(jE)Gyy^B@PL}X@jv*h+p493_ z{_X6VN{|vnU}W=Q6cq`Qp29GiAX(-@dH%4P8|9mZ3>+EQM&APbI>5lBkKC~N8&uw& z*Gj-q2`jVFt_#O+O7hKT_u(hk?1B z9$~pOk~Xd<9_}i2yMe#OpR6<`?x)6IRn}T5eeu)2$;*+taJ~-jM|?HTm_1U=HKxK2Rx`-@YWx-17L8pImmYlU_Erv>(t3uTD`AKbxZI zl$JhnN_W(RfnQBxx|y~>n@zH5rQh$!4ZdnZtfO%<7(Rz_{`}u_A_lzM11c3K4g;&! zB<{}DVDU-R$cIFYWZY{5!wLAqo=)X}qneA3YJnDDW=1<{m~+jd)H+byjD5w<78HoC z2N=NL&ULE(CK*D-gN?IQvIc8ypJZ%z7tsm>Ye`N4!9#s5$`TbD!CrOIwSf4vP*16F zFZzwsu*OszoXPak62abpt&kY|fFqPiiju-eB49`8**uR3P(Ff0(NkM!x87TI_%9~B zoVWpgo_3c;1}%QEaWhY&lNgTLK=-HJJpq_+0{%sIkExva;J#qk)G?duZgy8mhiF44 zX$2;kk=A;@p&RHr6XQEW{u6o@KX_p$i9XMC4{Agx(Qv|8+c1uV@D5PDk#|rg@oFsO zBmeCm`hr|L`!k;*-KPF0TXlfX{FfpPlm@O6Ao*}D0JUBk_lv4|> zxGWpEY?g>xhy}`QJ}MLbo-8# zWT-;XzzK{odIT9y@Lv3p3MgtSeE#=&e)f+I*d}PpV-HOR+pl7nL?Xe2f?%Z-lT56| z&q1vcFJ0?z96y#s-zW-QnD&#~m@NT*FxfJ3WV4@F`gz-l(EqXIcR(x0S`Y?0Y!=7a~Q{C0LC8fi`3Zg;{Urn7-KMsdxe5^KTf9mW%$4r zV9+;=@F6wZT<{2R+{7A0W(X`~*(fvi2PmP=69j~w;alh$MA>+Wv=&mH0xsg88LR_R zO^ALMm_}6@&2y@qn)|OBSt?TXfFBU4~7Zp=#s=_}~+kpJvn`V03dENJOtu zUDYLiTctVlze3vD$7nXUCn%W~(1Y`Y&?W_+>E}ElCXWy{%E8c4sfaQsE|=8HZs|2* zMpBl0@=6&7V}I+N8_G+NX&)e+f)d?T=dWegZ&9D zP>Qvo1xjIEqzU`eaQ&f!(jDILSTOq!?%tZ+igz1JOEb_mBbg48xu-7k`Cz_+c{_yH zhPN9S9)}>6a%CLEC^?vIN>QWX-}uR2dkz!nX$&NiB~D%kS^ReKFiTkTma(V%fXncA z`u|VAr9-$oib?L+8#fN zNCgz72cLs*02mgRgNR$9bimY)^pY51O*mYKE^MS{LVT}Oii`m(Dw@fNIItb3Km-#*#csom*_Z)8@X?O|X z%>5DJ%&q;5Fq}`k(r|Yf>HcXvOKhe(UPT&JDkRg_NNZ2pT6YWY4AGMMpjV!$2UhOj z>bS`?n8Aec+ke$bNY=+4LUKL&9wjU2XmRiTL~*kEr^iLwrN+Dv_&bM?@sHxGC_+qg zz@tHuMvyiPEocMsPde2m5IWs5vm{5HBYI9(6n({oam2)&7IwoX3D8Sgr}84I(?&pK zEM2~23LZyDt;r3kvf(1`Hs;cqtWm^g$S8uv`zj$@n$D59N9V7Cafd|kXv#YLm=*$= z)zWJNE_w*YN$fOg`MG~pn&OSSo0tU2Jcbe;)4wlej6Tw}FEc%xE*+T`nnP$JuIWTF zdCdMP%keE2K2!?uX$u;z5}#r3ej-DfDPpNrVLx4z9Vqj79%|fpp~UcS(N;Oh&3p3u z?<6s=Osr*>Y@@IdD{KV{>j1Us!HVg=SVJ%bbMqic4+hmhw%*ec-M30i)%!>pd zRGVTiz|Ryw9HckZoD(W?7wSQ8C71RoVDZ_V~bu;}!>w zTj)0RiJR5SK&#i8R_`B9eO@-TGjQrx>~VA5%s;a2DqxT%hb{iKTrQ+$NBW9bbep@O zbq?3nW|eju!EuovsQ~&!!MDLVhrkQ=e)@#H>;4b@K+ga<&ar-b&f6)C^BO|9ecy>- zToTw%6EW-5-G{S+5^oH1e}1{_S;W0WDn20r4W2kD>bT+OKDw2_rDHA9pu3KUQ$dNd zpe^V9#FBXR7f1<1c;NL?WqMc3KPCjId`ai(N*m{ofvj>*wycKmYZi~!iF9meDEiC> z4kmmAfyXeH%o7S$CX(KYv39^*u7aWl-$fV#h?9&U(N2o8fW6m~T7qLX2}m;o`f`LC zxZWWW1DZ8q&M_KvN-=}wZ&aG|X&UQcHZL7NK0(KA=tgOaeocnazaF>0AQ7MO})-&%8-dl<2%Msd83GrTVH)q+W3N= zK#3YB0h)|JFGIE}%0u(|AK_Zy^)6cQiSqS-p3O?0|%f+lb4F*JGk$>0Rw4*v{5w+{e7;x<%Ei@qf#4Oa!!m(YSoTjE91dbC*9 z1DCHJGdl^wKhet;Lz@Y?!WjFcKfn$NK72LMKS{IHR*P1D>_jsGFOiL*xU;aWx*VEa z?QazfrGA%Snj$Dd(8HY8yU)=qbFE31ie(O-___u`3~sXhB$9o*Z_;vf&Ft6)9vi9g zskvZ6%Au(pd@#L5&Ekj-9>gSPjW8u?7fW!4EOr>D#Wo}d^2T`2CR}Ps=>mt{yX-)T zfQ=GgiC^OU?XWz;vrz8xbOiiFd1I-RC8SD^;FNM2WeBNB-cO1=X0&9=9af<9zgklm$V-h6uE) z5!M0<6pWv@Zjmx>;GeU%K$;XwhDqZ;K%)z0C~Es<5tlWM;>%HTU%q@+Y{Iy6SS~^{2GFf1WA*zx~ncUGrqDtke{0f9>u0!1Q zYK05$R@#XhBI}#9nnma97XV2vbe~fZaEd0$gR}_+QVjDJW=}pp_XboGqiKB9=30dd zD&b%?le)%ViDLmW_wjz5+C1Xd8`*pmHt-`AP}Cau{Qn(%vj4w>&t%x|zu;3v#~;I0 z{!@m8=(D}bNc@;e<6%9ZMI5#%uW+GN(jX$mTftS}qdiVfQAI$Szpv7vmep7|bpc7& zQQB;aprXz|eJMB>5VmMk*-uu?y@A+p;8!gq$xPaGPCI$SZQ5QBErec1r55kjApQvX zzje}5KDEio!k8_dpQP?iwLi`d;L4oQoFhL{0YwGEw_zOGkAVCU=TLmk9Z|)*Rkz zFhtgXH3@pLvAN~irCyrgKl0%t`E10@$5LRC5SOyP7f|H!Sf34LaC(a6h7i~i$2V)b zb8%AnGW+@J@m%YX>->@ zj@fL3{uW3AIp`fyq<|6n4W9OKRgdMRw48sii+$mCJpA=^svKRb<)> z)tfbsR8!G}rZL$aJo9NJS0V6-jk|dG7fjq1xCZb;HCQ9q`?APDfKkwV_}^f8b!EWP zU?2cR4q6;B#9_eY`+7=YF?^ zAx$tui97bMO0BYpJ52QqO^g$0wFJvtu&jRkWCiUsZlX!-B;)<9pG?+J0sIf)hBh(4 z&3CY$26_ns4Xq(_%Q4>#a!Furxj6kcWN0~jzi^&9{PKlpu>SF1y5(ojtRC8x8KPmT zn81L~P9^bFp97VUsz<3v^mBL4|Gs3P@o^*7K3oh`JeQB|zqNW4RJ=gETm>&sDqzav z7!rbA;VT-xC)jvIvY_~!v~?v$N|n%ajZMPTi3z)=lA-ketBuPRb0>m($%Oxnh+4rC zJ1uvwDR3@QUnZv7$pDLd!y1_JFcHT`sFdssx8K}-E>wW0StAUi z>*3;60JUl8(j-HnDWmZY*mH5WMk(bplDIUdqf4{YfxQ@}KmhO3#70adr4}q3uhdkS zUk>}=|54^duk0?_N8AGTS_rK}c;kt0G=$b6Ri@mT#{v^y_REZ zr?i5Gq{Zz#Bp8xlt}i|CeQ=FH;DTglnh#FaRHNuQoRgMhgpVdnat#kwX z;h?RRopG|p>slq?}f+IF*8V;RScOt z?gkpH-82LF%>oo!2v!%cTG*hwrXH8ggQ&TexJutgZFq#hGtXfzfN2s(P5djp9ShzR zOR^o`l|p<+<k-pAP6yA^ zNB3}0tb9cjHz*Czx;DcMa+N5Zpdn>gqv_TO;IkHCJe`_4dkq#2J~WlHlxb z2v{C84D!Rr9WvAaI5!T#PXJBu1bP(gG*DDDru;kK;0;r*_*8Syc+k99!(=9Rpt;cc zx)_|)@giZ$3or1k9Cv0iDPQD$z_dlJ{?OAZr~Hb1TMrNJzSETskgnxv%l{dbgv+)= z`Plc$XcyzTJnlGl$h9wErvmiR-JpUf1)ivk7A|LsaNb9hI(9ekhQ)w5)gqNQa``*M3 zA&CmSdA6kb88YuQ!L0R|RdtSjQP)+dI;su)-6lSg`UzZh-^S1Nux@;wZ0_Lg&K*{3 zd>OnTrCmSJQ$&w;8-lB1r_w;7&GgCX(XhlAj_H@oq^)Ki@g;7KHUFGyn9=avpcOem z>n}(v@j7hs5CE&Y)9;@f=o5LK6LS4uAbb^)Vhd;N5Y}R|2ja!Txt`14qqF=_Q^CI$ zx1jrHW(aG;deA3fLg7-TOIU8qWE#fKvBP&TX&Y@PYCa!M19M}4(m6yv(1h1R@d4yP zf=iRG;kc|ydaSCPIIN7XGwnk%69E{(pJ2iF8%AI)-=s_f{d4=U5}i9BHJs6CTPsJhDR1qn4$1j zsAjW`2e{ri+Vqhy%+fJUZbA{&!Y z*6Pq8$cr(;oFyQO(@jqS?l-IbJ&4OT9(rR0R>j&-BIO+s?x7j=BY;)s?A45|AX$Uy7m9*^WT-_ zwtD|y#Ai_d{DD`hdYC-WU^?5YR{Q_iyW0O{X8 zBS?fZys~T(+GgMfv?22hjn(cNlDUTXDXW2bhah{uF$|8YmC>@-MB}a@n?UZf0L|$kh27`6+$!QqV#$8>pF!V%a=Vfo zqHjQd1sItKCPU}%qDQR9;1q|*>P3q*cmLJgYkm_oiPl*ALGD@4kbFj zk%dc~d8g`znXuOz-dL=J5SN!2!qnRZT0~#vh_lH>aW1@fHN#Eh8w~47>U}dzkVBQ~ zik^=peTp~PS(*_%vW52ZBK??iLhc%gInlm21*S5I#@LDo#Y|qbC6`z}LdP}2&SY(g zCr=1^u-b^w#vg^ybwZ)W0BsD>nhmh7o(l5#8`c zV!(0rWxBzm$g8qeKA7+}(7mQjKA))M+)hVIp*4H!V~srIFa>GQcO8uG{Bt*flXRqcR$`$f|d~nrimAk0E?BoKm+JSKaT+sK5A^iAbMqWbo zUH-w`RztH~q4>wRzX1L>^hIDFluRsxeBtNrpzQ0@dDgi;MoZ5LgMZAp2x>3*0Xm4< zTjRni2E7t6V~u6!Cb2aHs?)Sfm+)e48JWmkjb6*qa&i~cv5ZO6gw|X^iyZK!*2H9w zkC7ZQ%%0|EH(+o22Z?VD<)Dv-AC|2J{cw|s{IX%QU*{=pRxmHJeu0U+#?Z~LbEkG( zFt6XzhoTOQlXXrY+n5*v8{T?ccAsdr@APXgAW=hxy5BzRvM#+y17lglqA zEbhwEmPGR&SVsJjD88uPOQZNLe*!e0`|K11nkX#86@V6gzib2V-Z`N-tkf0!I5*IE zlZ_ox2RT?qkmkOMV0y`Yw-}&cWpRRy5uxCNg@l45)q6)0;8o-+`&m~Y83f?eW7+!! zP;lSUR$W5DajO{$mbJ(aswmiP8B%a|OIa*U!B3VT1(z1FE44{d^GCn%b(qvFn0njq zix95c5~@i?D0ucIvRl?R-a6c^vO?YPah7)6Hs1Fp1ZX81lc}rvXTZ*~XR`&pkH159C$Zx->97`Mt?AJOa z*eAZI^s2hAQ9P7w-ET~Ne~}Nymf(*BQ~Eq^6!9T;r^r*!8BNZkx1dHLS-+aQd5Py0 zdfi_@G!QEW(s+UfGZVJ8(PC=?mJ)5?JmXiFYs7DcY)o@-x20*v9pHu40_U+cid{$oyFZzJ{H~+~trs8h?RltrDNkVTm)zZLC7x zKX~|SjW#YLhyT2X9RBxUNgoLJ3(7tf zCwfmf(TxitI9%jJc}B>IL}=`POIS?7`qHP!Vp=cM!~%=CwqE!QouTJB!Qwo459C~2 z=KW}e_}-$v2l4$fFUpF5Lk!@MS*tzJ0$K14INZY3N%hHYquynRU#rF0U!oRJ@oRyS z55BCGA}^&z@00;|YM|Q;3>g|jC-C4U=;bN>6T^xytc~we2nN6Q)`%fsHJ8lbE+v5W z*&q!9Kxe-!>!bnwr9T2XL;Jo!8ASv7Z}lYxo%GdPH%NZ~K&L7c)ij`6T^T^98wL0? zfPSfPM=5jAXf1u-qIU$)Fe;994?3Acpxo6e`%=v!6ZR3KAW>(QcIi!Cp%wP9|A+pw z)T)I1`J7Sh@uT*f(I{PF|eCpnH?uxXPT5KodE}>4v?X8MWqaL;v zCppw~3w1m;Z&lb%Yp1+Z9F48%I9=*3^ei91q8@JSqI9S)$x_oF@!3T}0oe=A7rO7f%@!)!i7u4Te_kPX{$`BW#&O}c+oY?JA*^`UB< zNzwbK0?uYzCMcP8uwR_&jOo>`%MYV#vr%)O7D@bzwR&AF#{4O25tg<@&Z!e}&tG12 zB`z9r#y6R;Zy7!G2N7G^$;)tu%L;_DE7(w{SEkDzYC;(OJpb%1$mp}Invav}mAX=1 z&=;h7MP6?N=OERETApuwtWVC(Z^ZpK5Y`f_L(#cz(g57&*N*8M5(C z?Kq;t9-?#60ZwZ(IE%AWp7N=4&?Aw3=MD^@2>}6-kF)fgomY!Xyu}n}IyAg^KBER2 zFod$%%3^}g%6|185FT;eJbMQsJW5K5@R;#hA%ko{RJ>jo)qf?pMXr{;SMPtkL!0HS z^N%|b<;EWvQC{nBT+WE{Z7w<}${YOywh&RS7@>or9QsajjyaJGtdh&m74AQTa3A`M z{!ju=zqC4~tIkU1HELR28(k$!gc{3d{@Ah1hf0tI!74zVd2dt`4rd+rkte(j>dXhD z&LlZ?RsEI1XlrVa*d4M)1P+*BGEwFx&bNiJep@0MW!Da2J3_a(RS<%{VW&|#>EKD> z(BM_cWxl${1jjWdz3&$f?RHI-$HIRfs!if|k+b%ZyARPJv7OX!U?PvNQM8%-;{xFU zQ*IPNLC;d5x+d^16&!fQIxKEss<+O0PL?pPxXp09p|510ya_NoY#Ifnu16s19s^a_Sv5K){Aa`X zRGcosOhUbXAo-C6AI%H@#0DCBiVjgAe$N zOQx@i;;#m`@{ombfn3Bhxua?4X?J^0ghO^4kV>1}wv6}DlO`3yGNi+O(SHi#qmx(y zex@|QXO|imsCJBjmU!q`&-GHi5c=c7KEjVu0{u*^42&>J)OV^98e5B3!8=SX4OzKRc61Y%oj*q!YzE&-XEAi8pGyi*}S-ASP~2205B2%)Y`J zuQ_zK02%}^6>G;5b#!L|?Z5Vch!1&3i3`3XHNh9NXHYx2iMvn$O04h| zBApz*&uEA#1-U=pq2?5MC6O}KJZMUk-_CZT{8~11X&r>tOA1VHue2R zxrSV=G*9~Z$qsGF4xOp92qP1G!J=)Fg=+;>3?ut9nJ}`&YlHtJjI4YmVPu_UQ#m>F z$m%NEssG^WR;+cng^bMBG2VdKOv?n(Y?8P(KB?B!=|}hQpA_>WZzoa{G=IuOi@b!V zHk>-jE1TLoGBIF6(jnvp{F&s4TYoBF1OREBkkmv2r2P>Ah}C;Hu@DMv!9MiWc{;hq zlU(hyzuXT1qV(3xrvZ|Bi~-0h$J7o6AS>n(fP^^a{7nGzz=Z$=2JW&KPa*($xR$z! z09osJa3uglUT9jjofsqz{JDUMVeSDxyKm3|yQ<)N=~=L=WIrnwEkG-hN&*G#h57>{ zz}D=a-D7mXvbRyPm?~D!lr5tw1VFSNlc8XB5<)opSA_6ZcL(HE^G}ixv@V2RD4B(MLS@eeEi92 zi4H50@w5atrNwYsK8MRwkc@+d)JT==fEyAA&BaqFZU$XJ_QdhVci*k%)~_?JqfOrf zIv6NDR_?^Py_gt57dvG6>|*-r7miQA1N-x3WQ`Raw_H7x_8 zTB%&mY~d-uY;&h9V}jXH##xkcB)>lH29Ib524;b$z%4V$DgFt;E$PA}bj#d*V8&i- zMFhp-i0q|tcgfXqBeS)qtn4|{om-8e!Wc@jU75-y<*m|hG=-#y&fL|RbLgC~;MRlL z;3NZA$vGzu@T^vyZoW?pIo|A}ieK?~TW<-26u=dFJC%Xtcw6Io;XR<4iOiNog0>(@ z(+LLW2iw|gSu#Oq7p;Xbyuw7v|fSElHs!$EJbLqEO~;%ubTE@;(<4 zwD*IQXjD6AjP4Iv9ZHF3tkLYX))-G0E+lB&maM^01E3g1?hotvsQ25?FvZB5A=G(O<$4G@nmBQGR4063Al# z3HHYDUxO9lb6!Sy!gb}^anDe+JlFk*74WO`E~r6+#P@3FMxbPDy@z`i2b!~Mtx0xE zP-NO)Kr`Gc@aKV)!7i90Xd?H+Q-<;0W0a0+GM_^%Rc;h__#Si4Ckv49Za2TQ$Efx@ zrIVVhX7Ckz&Ew&UMe^NBS2beaf2X;w3)I`QI`+=AdV2?@g2o=vHknwPAn+QqdSAf; za4YYcDhe(CJ@pCxss|dN4bWu0a zJ@OE4B7C8APU;vVXWHg20Yn?W5%)XPNTRfBjGsdd7(a1 zFE>FQme*ID4pBfZWw!1UxMJU+E8@J|Ce}gHwC|9>X#^@?MoqkfD`xVsV;0X|qI1O(;8R~kaqrRMu#@nq?07FuPAKiHc^Yt?ol9SB<=nmm_*7_gi6iYNyTI@% z@p(m;icf8fMm`mOzPyU&Q-SM|Pi2f-GDf+XKqTOYq(eGI%iT-PyH^r<6Fua~bb_w2 zQO{ctT?3qRObJf@j5xWUzXThl=7ZYYj5t|pqKg{UFk3yJ3jhJg+saeiK~_BR-e>)N zN3t$ESTo!OiZmsrc)ehlwO;Cn^KSMKyK0j9q)wfe&fr6l zMI^cCpwKB&JRwI`GDP2*2zj6N1uZD#Pdb+@1F^MmeY7jVK?lG=k-e}PaPZbz=;m>k zCBF7I9uKqgSbg~gL)JZ0VtHgcmpntuV+9QARaqV-Z@}`y6$8R1$Q|@s7 zIQB+M(04CfFO?GWVzUm>tDDS1*Q0q64XX#y{7k2<0sK<;%z~ncAonRJg53GmFxD$G zf`6BtmAT?AXJP(2RKBA+piwte05wO6xTbtw8JYuGxWxOVRlm>JpBRQ zdLz?G6Z$-iUn(N&0E3)bCCy1ENjOI`qZ#~WVI{$pcnVf z5$x`1BNQsgmyGO%lfKYBtG)m$k-yO0}D_Lskc+vF|!w9|9 z_v(C`Mo!R(&P+?TTPfh*J57|^y&Dm3`O!OMZvk#zlo2Gx0a;_A4o5@#*FvX2Hd-#*vzvP_p10_MdDggEbZK{BKNme2^3O9<@;}3WsABYUzROI#H%4Fz_Z*WGaQgg%2i_ZK#SVlmg1G_P*^JxSDD1CX#&ovf zPk#2LL7pEdFEJ7eSRlxq2Hat(mB(0tAv_GcZ4>{_*h{-QNCD_U^^dwtTfTz$M%}R* zq-{zGe02jOG+D~$Qz=sLdW3RUZ^F~ROr^*wVV5=9uzaQsjc55&O`-U)v_KgBH?Go6 z&5pge901`=4vC~ebBD){i+^c}qFzTaLyNd*v$O{#`n^2s;d4p-A2=$&1eT?44r0PU z4amGyE+ZuihUAZy`)CF0sDW(6mC@b@!NR%w`StnWeeh6Jin#PB&*a2a9FIhZ(*h-cA}+^?(!K5#&g;l=Nenkj(QC--F6(X9UPC}i~l?K*Cj z0i;0wv6@@GLAEY#9yHa1fP>&r(grPz4zws-G-z(W(2(Z#rH3?gMlsyJxt~N}4ktyA zA`0NCSIF(%SEkJtpM_%rgUsiq+9Kpk*&Whi)Pb9Os9n%WHknsuUBY{B4Rdt2K1h@u zL2Jr0rH;!rg0(<9o%b7pyHEyva!Ff(mUrr?m)1&wY)zb#Ms(>M4H$2WMtv{pz$e#? zWR(UIXs+0d(7Y{9kpsjdaRaG>!~*5tHFG&849RHtBkvZel6pL{qoXF#{geo7utGsShz4VzOMKXPs} z53qM_#0N0SqFPbFCt>g>>3-QXt|{HaY3;^qkBRO=&kpZ$lY1yzB%T^UGx&~l&!*nq z8i3J&&}8t{4IUA3J5hW}^SLhU5I9fR3_SZEOJ<7& zkYE6qwHEZRf)wBJ@_kwp&FOQk-kALlo@=n{#qZI8&KXrb6Q$dDxMS-mdWCm426v&( zdvXP!Ed)K5=w5aOfh{oYqG@EQbVP$ilaReS^9syQ|o$3wr{!e(`AFEphfiV+H4dbQolb-~K_rbgB{L zo%(6K8cn1?&0=^Mq)p`X1*D^FT(U{@g2+a-?L;=-z8b>e{0vK7ZqNDM_31_NT6|TI zySPaarU9YC)>j$R)#&7kB|O?RPHier)@4lNiWpQmOPbWebct!adNZn=rS_p?1(#`( zrn*`0(cFpe4>$}ImCB28?OQ?4F z3$5qu*IF=t8YEwMH?p|!vD4W_*XiSXJ?i#ma(r~F!=hv3^csVdMcc95u9*+NvO zq6a3dVki>>o)?4}x>ixS{9A(Ps(^xw%fv>HDxc2&PnCcXjwYA%_^W6*#=p+)ApVvr zgfp|yr{jbNf5?964mNW3d*lz7ZkezWe!%CG3}C^+M`_$uMKF0-+vXt@U#)|c@s;*)FP?vmBR(lG#gMYG8$%auOLWt*?vQlficW@|90E}&V5hcO0N z@aFJWi~%<1rY^=8LN^!Cc;S9Z7vl@EFQPdMj{shP^TK&X)>{mzjT#*|143$&UAnF_ zAX}j1k0fjDiCozdK_+XN&+#}qZm=B5TM?c0h4>SkKC;$FYNwI4ih44#tCXEd<`6YDU+T?_pI6PyMMkz(N z;4SriJr;DpoF71YDExs?@59Xwz*k>P+$FnjOLC^y%{W+Up|)Y~7vlFcCirxeUqDRA znxQsQ<6iK91S_$cx5qeM=7G)dz&^a0v~e^rtJGKxJFO?T$mz>xj{a&I=3PA2Ju$Op z7q9{d?$3j&T1KyboiJDbn%)ily_&mM;$unuWXbs2RBqN>ke2&aVs5v1Entq=zc!UW z&o1qQ5M+sN4|n2hnu#oo5xhZucA6}UAVKT6h&_Bc_;vn5G7<0U;a>Ab)XW)r={*6_PSde7Bww1)MM{O!%#)agWff?D%L5{cCbLGIyQYQ{P%POwxREgsC|fP<;=RjIl9 zP`1D*{zoN**1=dji|SVPsF!*)z~a2J$1#2KN*7(6go~Il64Dql=% z@AebIgK9x|D0jW#Zv7VF!D2xG@!*cL`o$@63)S?@JyMNn&4^kWyN}O~)nt2;7PI5UiZ^BUM$p;kXG!} z!J$yIJp~^z|{TF>!ako!b4D`pxA`52)xAzo|FjF||#7voz_^n9m(!t64B> z6{>eP&ujTXMyHnE@3?9)s2|O4VUM}KaL(2`fnwXUiIN9aI-=(hp_MLQk|uN?iqlW; zgv8Wk4Ucv%=id0KBj?Zi#*l998q>_G8JH?_t08CHeY-#GTt5wSG>Ymd+R$wZ+2t

    Ud>n!^k2z8b9BZr-J)Cp+~GK0c(>{M%+%9ff9io?qN!y%r&PmX4=}6D`lgt#_$1X6D z9E<%zI>_7OUE^bWuHJyxKtI3REycrc(lBYwJ^9QtrDvwtPFOO=l&XFHD&*L7*u|D? zhf)}k?Fwz{Y}@-*Lfadyj|K}oVmjy^dTG5og>!hjTIyXCFobPxqkH3VZCnjBhiP;U zlTU{??~^h+=`V=6Yaw~S#F_optbUK zU7tE@sjjph0nZkAyWWSM@=R}<1Fx~lK-o|~wGPtUu{G07n z=5-&p!mRn9oRiwQmG_$xSDlCBvf%LVxP}~afhD;vZJM+T5Mq8u;zkuUG*&ew9ze|M zDX4nL95v^DSI3BKOg{Ip?TiU&vmHW;7K%dNPQL*N*5_3#@95p2I@3cPePk(ZdAA52 zZHjGFA^j0QCqfck`I4Ik`qmHL|HU+TOq_Myct_jB+v~imKF<}&v`cEWgSqfum=2=O zP4oRMan1fciND#p((TqRx7w)(KAjf&+@X$M&P(3BuLZLYw@e>3=+2lkO`jMXztWvM z{D}&W&h&qKjlr@P7eeKBiLG{OyZpuwYy|kXz75%9w}XacP50I7a5i;K1#4a+)^5Ih zgge%us&&5JtlOJH6?XKwYz{r(pgNcCH%sjR*J4=~`U@J07StkP#e_B5>@c_7GRs5% zq1|{dsE4t=9ToD}Ho;@=+t3{@b7y&Y#?2WfTCivLGX~FGibtoYdND?&sX*m>sZJvr zy3s8!M__*NZnEC>(u1q!;k%_Hv5}#Sp4Vmw7kt08=i5eGAAMuS0PpW9W(>3frj{kyMb$3z))5&rDq4Z5E zFm!H+9gj6Z$b$Qeue4dPUz&RKT5YvE@Lr3IT43vWzl$+RflILE=a>P_eqLKCMOzI*<;@a9#lu4-MK z#gnen9X%d9|B0PCpKl0#uKE_1=A?prPmy+=0P9p@S`z0I1auC$Z+|n#bLK6o)a`xA zOS`KDDl}`X?ixRJ9jUPmc*#7=DJGM}K;v9P|34}yA8wi+kF89nFCDEnW>GA^IVW~8 zbJ?2yi{G?NB+VCF?PFfBU{EnMZnX1m@x;v=m5kAQRh@2C4d|9yS2(F2PiEQ?|FZK` zRjXA}I}liN;r9*3Pz&52+G4jA%6%4e@$lbzm9xQr!g|iOZIA>%MQh@b?o36>j|#8T!g$r_4oD z?*p{Q*l?!BPj%;pl=QPZ#|myrJU+=i>z4KRS-5MJaMIf5VwF(Z*qizWm$Lcdik^aR z?&DVS&zM}OqO{7VxeWB8^f==enGJ&p*ewXasuMO9tnJAj$d&bIH45p`%?L*CMx z7N`!zyL#;OJ6#1;f@|w~<1|&ma7)wdO?VK^#UZW8^e^)*)qm$tNJU`^m0a~du7kp< z=7`Wjdr)|;d$-hE{e)Avu7%%gV1HIgqhgvKFzx8}rHfR6ZRvY44R8y2`|gf{Y1K^g z-uF^Qsmt|l2^Onhw5ix{A_L~?hQXr*6E~2P$iMHuhwe@l(h_x;L6f$N|KM3P7u;(i zTHM;UyuVf7UR#gD0{rl{oFO;yn&K-r&F9C9#PR>+{iC|3Xhai=$@Sh%zagsM>$d+9 zQN6$TFVz*fuJjefO=rCycuX($%f^o?6MNMr+b)jlfDVO(|7JAhnKc;eTi>yd^`h12 z{*b1%2=0*X{Vo7uMccR0G?pEzi&A}SyE@}2m*-~p6Ugv6^qM>RyqPcgk`9EjeOSMW z5uEF;w>%1%!xP6@#4oL7v;+_DhDY9vmhe|$j47?~yQe_=X9Wz;1skDp1wo&loO5l2 zv+nHAJB^TkS`b>}@FxywY>$eWPcM7=VZXk)AZ-qh-bKY|o0F{ZX3;{MR2baaEmp*TsZK$h9_v`7`S~)S$5$)XVs~{5S-5XYU9N zm0GjA=i;mP__}SEl76%bH0;2xi}&h5UN`2(MAO$y4}C;f&EcMJy;KrA zHzqwS1;$e>?Y565gcZHT>9bWN?Z|yx$FQ$gp`$|w4rkMu(bwp*K%cIhLru&j{VC~1 z%!x#{6rJwE6S)xUw;A#6P?OOK!T^41>Z_VWy3w{rg&wx2jWqlD>5u7MPM@D{brWP- zP1D=IRF{Rl!INC&VWR0 zeHG(6Xm?#jtTxq6#Vv;jVtL25vKx+C<4a@U(C&vs&;j_$q?G~^sg!kaF*wjn7OdXL^g`bq8IMF`F7aDU!! zG|4UNGRy+%{-x`}0{YU^es;u&0+a6c>kuVw7YrHuu=MX$h}NIC=n)~7>K2VyTxLto zh-w3<-7Z*D&uk^~?C3uk*z^>H(Bx<}$IH7d=@*&<_vF54F@;;AmziYGv%xXQ7rfJt zBan)_^O!}RY066m`)p4`(TFa>$bN4s$fz?v*hkeZ==kt~@PgE?+*wV0md%`RgKep* zfJO&k$X>B^>qo+%4=4x??KVuKcYLO6f-(7>`H4P5LL_J=b7^L_E?X8NR38!qa-q)GDmrqEyQ7_INChQgG)$UZm21U3CK7!s~m z-a-xgO7Ak2mO~%iyF*P<8W-KG8jepb2R`^U@qifTG8Yt^gm|m0*eLI&mq2d1%NmSE zsW^(qu7*730Ad@Witzy23g@%{>9)QK{f8_CwXLpv=`$p#O=tZ?x~MwzMr}F9n28sb z9yvl|@0mJHW7_ZVQ&;~!4cd$HG%B=kU`tI!ix`Nu^{O)$w7(6#<3u>_(}Iwr&NNNB zoNgMAs4nj=id5Zk;aoQo!<*2f(?J92uQoZM?QSQ|=5Gze#N40DT2w&bFw&-E2BF zaB1=BflI4Ro~l?)PqFYJ0O>(dNI8M(A-}OZg?huzbmWhukK%kwQ9=h|yi@FvRkRPO zDz<6%85-*jx7q)P#?$*PUzpIid${Qb)wh=Ys=s#cSKZOyS4rRD-*UBxcHC4n6b|n~ zdcP3kcMLgdaoq_9)$jM$Z#q8_6w@8US|dVajz}hFIuchR-|8-0+9!a!rg=Avcd&(D zlrg>+*1V3NH9qSzuXp+d>yCkD=XDXGyQU#}B2M&NxO1PO`t`exY%T$ban94jyDonp z`oVyHUf69p&ESahGQY_>nf%6?;37HZx)s*oU3YO`x3Ol87Ek(*izXS%{H?djl%00w z$a*o6Krx5>E--B3uzwi+y9+!0LclS$YhIfn2qGwCpB`(S0D}_3_YHDYWwhlATU6#_ zVqNhAf&#BYKiO1Td*A#7X5xV^aDah?9p>MCJX$4^)?Z3rNpE#p$Ps6dg)TAvEex4< zTnKrF?62Z}e*@!Rt7~{IRH3nJ=m`h7!Qpbc`FwB)Svh#e8N1x{D`qHhnO|-dZDvF? z^^P03DeMh{`_7?9T@X0)>&91=d(wKa>tT~H-08A9BU2hTE_DS};+}i$LLbNCn}NI{63~!h3sMJFOdgq>8U>i4?5aX{3lJE_tOi}RcOV()eCmw?~YXrCO*yy zd5#d<6mkfi8!q1d8)!@~K4WsJ8f=u`yYv70jLdC?y9u15Lw`X4JM1!Pr7yau{tTJG zyZcQS>0k6#sg}BFo{8utZDIb^^xjPM>ka;X;7ZjSwySBvD4Jc>b>xm{W9)RVWi9rL zR6vZJpWa61kl`nVwtoqiScNovB@t* z3g_$)Ep^%Hx2Afq*C(UlLm^|%#fP-?ZCyT*li2m{g=)taLetw+zT)PMA-~ye13LrR z(noZ=4!vAge~sa(J^cq%>vsy<=1Pl~&9RfOqASGrP0BgGc5H{C6S2Tyh{Uw8v(w^X zQpEQ?2!ohd6Z@M0x!R6ANi7)ry@f*B(F=y>rH1bY2QV&Hw``z^#`|*9w@Yoo;yR>q z)UNF=_=b3-YV}^kgmg>?V|{pRm&X6a+M7T%b#-CGnSjV-5M>HVa4ISyB12HofJm`| zf>nzG3eH*+Z~$=t6Gp9|pw`kN3RbOc9Z+TjWRju`B0)d{CWs1(Em(#)VEy+w_ufF? z_j~{Kt$+Ql;9+iG zows|#M2{b)J=4~d80XjUypnz;{Iau_R44Yf{Yk7FMElKPGU zAtcddN0=?JNP+#sY)Egwn#A&_kEhf5ADBn|azNou0nHq=p=VV)!QEsoV!&5#` z{o7Tj_BRYl?``1`Y&@ysdZ0F? zQ-?Tq0xr#^2K&{gh%KaBRMMSIe?W>9I|Sw8`33Qm2HAj+^6f~ZgU)0Z&5P)xYvK5z zooCNh9FYMh(xB))*&PGxQYO}tGrm9jl8jiut@}hT?TP+UhRbY7-(;h_&|8j7@US-7 zCskmo@VM+6xN4d`WtDY%c;zqjn>XFIhs%XS0yisuj9&c%j)7FU1}W!tT}Xm}Y%QRH8emfe~mV?6QXoqA* zbmXidTw-4<^Y6-RNxkb(d0|Kcvc&CDeREJ1g&mix{uPw!JtUM9-rN4U!spb)i|}=7IkU!W(D&n4?^6SGh)y^+60^KfWLq zdd;<-)jr7AiGyB6%0UraxD^6!b4EV< zacGd#23ih5OoJnMg6|hK+u;+dWuNG_Eu3s$342~Hq^Q^i+pz5wATQKwAZK%-sK*BT zt@{rJH9H{Blth-JHb_|lca)W9aVIK{glv?yPNonlI+2JQ6uU5+1KW~aWold?sp3BM+X{&MfUoy z4~G*Ru8wy8vPxglEATj5l*UKXu}&Iy3yr4hoR%z6`utOzLw@VHzT`ZP?&P4)?3e8;T|n%fE~QCUsPsC z7{WgYrBi1TL~6T;vTf@%Ms!nHgv$}QB?Tx8)H?A3U)MR+v7ACxcyi5gOhDlnR0Tn; zaaAs@YpGL;FXwh@Q(go+Q3h_+(~exS{++iM4_aWwy#7zZKHQ1ddMf?EM%f@M{8f&P z#7KGJ%_l~JIW112b91Yi?k8WkMm?2=eudiBJm}~QY+pbdj9i=va<_HpL~Y@VUfRJC zdn}=I3vz3LIkHzaV5~toGE1AYe#OnSuaj?9`34VM=jM8lHuiGB1q9UUVK1upOLG4@ zBph@^N9*-ww-c&Wc&@YQcj}kQb$yi)c#>!xm*o<-=%{7VocTy?Fx{S5R72q#v0GCS z7QTUa!4Geu=51+T|4j`G?4KJ57vM;=Y%xv<7Rwjlk#J!s$5Vp zF4wl6Jz~fXL|7A^>!@&P(`~f=dL4uk`$&D`zf|LqE6nGk^}VcF{a3s~=LMA_{|G-p zmH}SDW|8dj4r0!?$qX;!nH?oB8t8z7;Kf|gXWYftq=u*QbZhHe?SY0wo|j*(O@HRI zfvEJ?wQ_sMMc_C$?kD{oG0g=D&(JJl)yem^0=6IL~$ zEjMJnZzifug#6`MqBf%LElVhq)5lY~+7}xw5bFu`m)U|3V|hYHYy_GJ3Z*E@K1Tm> zfw0MenCXV1W(P{ZD0;gTErYP2SB_}ir+4;;4DT6zAHN^5tJW&jf5SagBs^hHu9<5} zw^X7&5z;MAs?`u-mWW+i32k!q{m9ebS|CiHx4dI$G{=*j!PXGlzWkAzFm83qFO2bB zCMrVaK)sT?%{#Ty6{1-im9aaaOZPNq$KaYeMywomD(>pcU-g7E<_05tXTt^S>vgir z;Qg#P-JBmIhmA?GFFcVnoC}I%htLM`j24wD-%>zK(&ft4Kfwv|z4HBdyOS?QyVAX? z_crG}Y@qDL)v%2>q2RZ!wa;7R4--oZi*QZmMywi9lkTj$PtXn%`XI##b^kSGrN^n@ zwGvC$aHU2LIl@X|0eS8IVVTm{K^xpTdz zX*rslJ$as;sHO#NzMrY-*qKA`B>V9|g6tyR%DN5-|FHcRSRuT7s~N%kuR}TP!-`Y3 zQJ0aHz2Vu2&>9puD)++>?Cr_DOZY3wWLZa_g3F`rqv#(;yaja472TePU-jA_zDHt$ zLPh_~1?%f$@%kOKEPm1*(~}6?@Ww%S$$m7B)YIwir)qnCAt%Z8Zgo%95=f9WZAUjx zen~)2Q9_*&S~Nk;NH0EV3IX8)WEVJsOh#a2=J|7HA&A&AxqUqJ%qeNnVia|0oPT)D zh>`6B=0_vAE@g)w7=AaYBdfN~f{fJdx=%JBN0g8KdtlRUXnyBEyxI2M9*-gse+~(c z^I>zzyKc6Ja8V2;r2I-2kYsYaNwgX!ds&hU1z!1zolK3adxj z*UI>{BQNgWogbX2TY5nP_Y3j@8PoI8oC4&93SZCH0k4lehan!AD~fU=b{nVVW>1Jq zm$S%cwiY6GQjriZ1ZUZKzH*^&ENFzv7EdkhKY4&pkla{ZdEKc8ob32(KpB z@Q~0qyM||XwI4$RNs2pYT~(r!hUjr z9S~kalP+w%>=2YVcCPPBvZ*)ZtJhN?IY&`3Mj;+<4vqgA9Nr57c~JgIT`+7}6w3yG zgRaPw=8wYw%b{!MLq|9O`}>8zJHT1(aDoZxQ?qHb0UB_ER?yhd5{r1|lG8C*@9F4o zSGB6MYP<7BYkNHMsaF^9v|R&D-7i>rbjqeMh4DwqW%wUh12y)i?C+A8)80 zkg?r3bj@cgOE0m&NVAO3@wPMIxX`W)Ae{*LRD*arhrMX{A>NPnuJOs)?$;R}z)`O_ zY^e1YjiY|ST6Z!bDSu(=sNb*7K$7wctl7-jz=$n~vh|9xvqswT_P{0`#^fJiIwmvc zUWuZG9#gXzL&L&M)(NL9K$vO8W`Cc{o{g0uPc={t19|G31Jt*Q)jm)pSCUMAyJ>Rup~>~PCK-C%9B=L&`h<4p2`>UC zbV???N}tgCaKc}2Cv=xics6?iWGTE&;uhTG7VhHanR7FpxdY~Aea>csyUgAtnSHov zHuTW!pSNbbF%u`+Oq{%8;?%Oy^E@o;X@NY=4ljerfhL`jiQ6ws?=FjMoMmvuou|$6 zGSWC{p(W*y9=k+;)f&Sy+qupA&5VGm9~9g!N=&Yn8YMa#C)2rE5^f>gw947EhCaSg zGQO2Q;kjhO8@d??eGSnqq9ZNh8PiTjPCLt(elc?TRmP00$QgwU%Zf23juQKOlMa?UWnqR|oYK(F!Sv0?ux!`%! zf;Y^C{ZR`OE8LH`x(_kkAuIhX>#K{=UtO*6sCV_OVlB;zURnrI5Z1ERXwT=-%c5g^ z;_oi&bzT0hV!2pt&FPpmXVunTUA*>+nr~K&Z{cFUk{G`lHUGvK|JKFp6fx`GsIBk6 zyX|!B_Ot5Sqhq(dySrYjzT;x-4oKC?iv6}weJ5lR)u;;_V}-5iqUW)qH|jzCu|Y%X zVbO76@f!P2$L&9>ao}RyfvXw^v*HdGY8G;r_V8LmEe- zj~t0-A3c5K=vnr6XMep3Ypr-ZENT2NkVm6|)}KmGLJQt?U9<%26Q;z|>e(+Adi}Ey z*nKrmPj^ikJBFnCJ*}7E#YYeLf8pKzzt@yd@$8Z^hx#hYUX|dIioBNM!=;|C(r9XB zjxSMqY5wmD?G$)yL=1P)lhv65eVp{fw^U#`(iU+VP<#=*8siPt#Sk(RK|77^uSMKH zGkCNDNJF@3PTNTT0nzP2GKv8Q)M%}j@`(Hf`kK}|0%M%-xY4rz)^N^ORC39FM72~L zKs@54q&Zb?9?JEdnaJ?oK) zX(-VLsQZtrg&3ezfz%k3D$vS1j`W?x%(?K4;6*pokOqJ${Tk%&%mEH4%e+kModTA^ z9yQ&x@g_?A2o`*cl4fZ5xrvk09Ej(hP}`558*mOk_YLm^er}W=6ZAVc+F^`^N9~RN z6pVF|JcG0tV=lwVplc0OAo75LdO!t15%)qP4rrrvffS8zB=Hk#g*i`yWJJA6rrPid3DMLP8%x5<$ZFj^F~`x#rzl@fLz1*Uw;YI%H2NW_AG&Bao{ojx(*XEOgiA_RDG{ zxys9#DEEc7m424sp#{ZqNP2;^?E%oefYhnymNi+3_hq-i-rs@u<)x)K+j=R-n~yW2 z#C2t!h+WlvtND1ySWK&9tkKG3Jrt;=&1cxcc#Ws`+p7mB2L%?ZeTY#>SO1wF3)0m% zjZBg})Mu@Tl8q^~ENzq-Rkat#d^B*=j`xR*O7YQ$lOuDdY#DWVP2`Riu|-^%5p8aq zo_o+nzQ!kmeqU9FiU^b@B7m}xJsvSy4Pa`N&Fb`<r`k#b zoNsw0yM7C%WnSPyaQr@58$1X2cYxeElO-42HL^%m=x{j;^-zM_-$<@;KK(}Y@;Cbf za$F##oKpZvh>9^czd}@)kP0->i1uL=TH1nUr0gn|7_qVpP@jtb0Y*)bA>^gqObhIv z7klg7p7sYZWOBIQB|i=GVBf$q0_`JKG~TD<^qH>yoDfMQ?JIR#$W~S0hsD#4S)Yze zW_tKrhXkHU)2^~Ylx#RdJ*&b)x75Q+Od9dD&em{&luHRC&=35L|toxXYLK(W`F(+eL4iail?R*Mcnu@~lx_zG;p zqQu*nI4xIh5bOv045_py2`YTXxf;78aR-t$iR?8%%mq46c)X`HvDdft)?Ice1sBsu zMt`L}x_q?0i{J)yiHIHShxl>q0;0s5nCNMznIKQUylYB(gR7#WEO=4kQ#70zr6#OR z6Y#vbnp=Mmjuyd72Fh?NwUlrZ_oECyGC$9B0%Ok9Eu&h+4NRKLYs?Z{dQhwVOFE+P zR+N(TkxhPKe+tN)wX|6!2l$a|A{}6Wo<$WC$HaG|O)Ayf1vFYI9kiBbfF}q%IJ;RO zAp!|r1>a*?+mHyPObfpcr4#6-MrHUk0t7lxBv&Pm3`ESrUcbiu;YP!N=k(5;1?Wc9 zXfM1mQe1t_KQ#~uULh;|{sHNt2uYB=Mu|uldX!is0({7}5yqsG`eu*16@X*EZr(C$ zBRs98U`-tbLkOKg)Wt3$G(Oghd`!JdI^LZl?`{R8AI8St0& zk%5;--AxN|Jsm(H1gn$$nCmf8n&Tn25T1U*GX?(;a_^uh9ZL0TX$MvH+JJXRr(`gK zRJJ5jvR-O4UG>B|(X;^m;n7FoiU+A5fmt?{0uS0P(?5n219}TDRdXVxE2l2ObqEWe zLbx~=37ae7-n#7TM<1uzsxWlX@3AgP7I-kA5n-Yqk<5qIb>DWV;DdzW9IMAKRwfzBdm)WJtT{2Z(qL%C0yZH@`H0{6` z+b=QnGSm`6dIPSy8`BU1b-(ENoG4ch15#WgQ#N%j%#u@m;Hp4=VdZ|xG43tR8AXBI zS?5!3X^+9;@!?;<+yT#4cB=1R+7IDtaz+Hr@7~vT9sBqd8uf^jZuH}+Zy#z#ea9f5 zic0gtCsT2j#t=X`Lk|q3azEBUF)taw9FXV9At-N7MZ5bcdNl;YeEvkEbPghZIQTu4 zkAmOHeZ-XYIG^&)gPJlS{$|n0AAk}|a&W+-qwvxL%0sfcc_bI#vIO~>t&`8u8V`Q#FAj&pL2^GCoLWU>7SOsE`b0>P@ z2Mr{wF9Rg-P4{RWyqy@?_$h^t=RhcAm8aZ(9u5P~6P3=XAu&mB^Rh{?;iF_6w7JN4 zs%Hbot45GyKCGWZI~URR-5RO`L{g*44tLO zDZS5OTGLn0IK}a{<>-qoFY~daxw_-O;=%qJWY$cht?-mB_9Qpv3BR{>TVzx#^<$CV zv9ZuZShV}YEs3`BMYpKoh&X?DcvpRXI|0`yL}<2%h+HI`UrK}|udgTHX)_xcTk6+E zJ}zAv@^J~+;{Wz>VOjH*MxR7eH)m}ZT4H}j0G$Co4d#;Lb0@>c@V`JFjphdDsXl9& zB?sP7ga59Js0%aJ#Q}XrbYG^FVgA>Rb|+l5=wK0*+n@^@t*ng3Ap`-~S|KiKRNnoJ znTYfg3`l$l^=*K0|SzVx&K3fSA8pGlI(rMtUEtjlug)JRjRtp*}4)f#9Pz!&)8W z%B^@zf^)jW2eI7TWnUq9KsX!CF9P+Pb!DUph`8nl=n#}1{Edjx!(bB69vkYsgcwIK z)Fmcb&p=`j)E9VLF~`NEQ5L$`P!HbNUd;T7Ah=NYR7HWIuE`xGHcE&n)Vfk=@-?q(w(3{JId2(ht zX_v7{Ybdb8ekQdU`}lM7h{Ge^lbabokp$UZp2Zv~5a)9ngDesJ)>3s{xe+ak)2VAYl_F;BR_pgSEOE z`-$VF?fzuqS;xj#6Cu3hUnzaB$C)0)=3gPZp-mWp!d}$cV|!hd!Yiabdcy zO~Z)f?buYn79u-93A-r($<3V6{sk$4$=At5xK%Qc?t-1NgjA<9jL`bynJYjhVlAVH zG)avJz0L^IuTP45R8jWr!zhQ6lWsIO`{4mNWszV=Hx_CTV3!TwW z0jh9d%PeFK`efEnNXmku>dAN%TXO=dac&{xyQG3^5&sM1(P&5U{^*1EM-6z_*5&=@ z&z~299vJ-i47y=F=l7#II%?=||E&ql`k$UZN(n2A@&Ho)M3qLZ%AZITrGEaWI2O=0 z2C%@{WZjIEu#PQ8Tkr}!a9<^Pv4G?hZLc#eqct5d1I*JF>((sfsaqnTod$xDjf;5Y zk<+m>gU*pDJh2{=0lpaCv3^5$6A-gvorT*T%LNFUK}`CdSREwU)u(rXz=1Q|&MpEo z70_ua5|?EZq6@PmJyMV9VhBf@pNst{L@A~2Y681rkTnAs?%u6M zyJ975^KQJNgh1V)wY}d45|n(*y^l+s*&hPV1Wa_mv_1!r6l%G?+E@+b0TIZ-1493f zagu4`7PPTGs=?qZ%DGjts%a00u>$zE4se-fXLEv|FxsH4q^saeS}C{+2sS6z&O zN}$h4%Xq?=4&zz+tp=!t@@mI;Y|_N%MDneG`^e`2>KB?fW)|iMB49VC91UF|MlL|~ zG8YtN!OfXhhGxz+aV27@@yldAvXm^o1g*5^`I&?IbmTF=K-Mj1KC%(c!GG%hy`k9# z={AOQVf%nPat}yR6RGQ6HriyM_woD1C@6W%wdMA&)zo!vOJ7_7PV`zuQBwSRpQm#d z#crFXOW7;4*mVN*OK$zJGUHUZUc!Ak>(hO0MxW318i{tZzGM8W`=o72?syP!O}<7+ zl%q&0x`J=UdwX8#{jr{|v?#r5B5~yns{66FltR_j*CB$?DSv1a1DOP(Uv1zboPbnK z<>ba*_!b_`vw#c#YRV>6L%AyfH*MSn<6=N4JsUeB9KuJ%!P{Q4%ISS91ZyTG)US`Y zw2i8Ud$jfzqP60S1%^7GN2`mqA?6TS);&|CB4*6TKcz zivi3q*pV3F+h|L`Ll3Ex**%d&Rfi*FKqLN=iK@oR^pbdbHPI`p;BHnOAebSui*~ z%DutGHAz2JOkFLBxGpkYwLYM@uJw0RTzB&CKV5;iF1C5g1lpBi?fWI#bu^s@fliZH z=ShjqQ=0BGf$mGO?&}iWzi6ZX7K|QLcqFLpr?DWos=j-^*F}f`Pd??ks_FYclidAn z8Yr^5QShI^)ewOO8D9<72=z)Si!`V04uSfhe}OzW8yLuz{sx~FY@u3N-yM!zZ<$+z=c17qFj7 zfc9K_Wdc$J*fJ_sqB)lqBjCWkJI#m|i7B!afu(0qY^s7T=(+$3kpTje{#n{C zP>q068pjP;pcOvu;FP?e$p%vB>9OK?we{$<@%nO@=Bj@^QlH+S9Z64{4O?zzy|dt+ z(rYNlJ0mEtL|KoNA>n%kLZp@K6Q!@q1|}<$*}T2rbuF2)@)Tmz1%VW2YuY4r7E~eF z%9;-yvjqrEe=J4k)|GFO)emQlt&s#`9Cmr%wqK`Q#q}}j8s-^MYZ$RLIQ&y{6UA|k zj^TiM`T=e^w>P__xs0SYyFT$;6z2^@KN@64&q{8n-7(mvJHmObsatxabT(3R=S}P@ z=L|UqZM?#KXz&lzn(Z-<4O{W%Gh*`v_~wyzB4z>V2Jl?Zw-%OWsiD9W#X@`QdU-Gq zsd<^~P;@i!ozNU9MOta)6IUkombFMR-Cc9;@$wn*xzxL}86d?pl(J`~7;ZZ1hL ziW!6;6K0kb7_Ksn7LTXs&BpyWp1p1gIGc}F(UF`O>y0(Cp5`X+7C^+&;1cn?*OpiC z^XfnWeuLLp26)7m4z+VsK@Te&^q`K`y`dI0-y1PD5VGp^<>+YrTX7#9tv-#qSjszb zYaq=6qF2xzu%Mh+EZ~Ipc8V9+vo&A~q1C~EH`2$wL4nWM1X&(&#v(;yaBN7q`S|y~ zGgjp!)F|0srXcc3vH<_tp!fK<_(_n1Ys=jA9-XE5#Eq)G&rS*^eQSfHJFQ!N`W$Q4 zM&dvWPszcaX59n5mhnqtyZ9qyY?`k_}T4fv<5T4<01Wp%4!Cib^$+xRBg3~E1 zXaG5@Ll2W@;TAsCR-@x7#7*Yd9LmyYzkT#Rk1=j$zv+W5K3OmGx_upv~=n-k8v zz*z{1v#GLcHC}p2mxu#zw}G3h$I8ZJ1=&|2$}>n(d$)QlSOsZZbcOZY++i?-JmP-5 zr48oOhJG8sR()UV`y37I$>!C3Fb$%bV;zwZ^E@AfxUuQc0-*xYH5MGfmCC1q3?sAjqkcl^O$ZCwS5VOP?qK1o$ypOZ~fxzwVmw+kLB=hGDdp4Uaj8&$M+1K|KQ_ra6mt zU0174z@|<1*6iS&N!P9lfWW49iK1_=NNV%uH;ZpiPVCxcQfU^amg!|w5zJ!L^H1Ee z9u@7{KvV+*x&Du~2Eexd8_N~mtC6PA_@6+ow3B6#_9MK3U;boafe~;2wu~AS+Vx-= z3A{dTaGuSk2mfBqm`G#U*ctHY6dtZ7*#!C!{R`yLXsh5S=&j-;+L=zg&U zUcFSkdaio)O!Z2kdi7NGs#W#siRx90>Q$5KRio-v1AY~&POHMP#0k)bW(+B=olTj( zo6gxV^%j2-fRdZCW61T)LJK!|J+@U9Tk+rWVYhJ|i+0vH{QJi#Mz9R%hw&96R1DtF#Nxm?s?UPoA1X4eX)LUNl34Dd zOS&4S^2A`T&Hh$GbJI@z23!t`QEih?-_nH@M6kn_Ole$iG#j(hDl8kFW3CpQ)z%!^E*#OXx(VnPxLvo$ zDsIF8_{Ta{T&7~hcJ_!?aJ;xILTW%0iLg8;fJuoOYe&%7yIfzyxdE~pvo&^N^6U8= zE=W8Qeq+T(`d9$2)c@h)L;zR*TEhmvLA!uaMmUpQ)_A=Y_Y+*d-Uc2B`t$qDWCHpl zh$n$7g3ZnsDd5UY4E^!h9QZxqW1oV6D@(=NE8nnujmnZr*|XccZn5r-p={Okh8yJ} zw_F8>2>6nv*7OnZC50u(3(id_x9H6&kx`#;dK(qRX)S|mgeCx|rUUi)I0VrFOAjzc zi5AH0-EQh-UKrDBuw~R45Hk29$<<3`i=7_--49b3E^45R1qL6m@E2RQWQ{MC|S__a&v{_kij8jO~-&WZA#-cYE9y3f&oaG<70Bly>h@D2N)GhcS2Qi zfhi-;;DaxFmpRi!jLc8cwDd@P#z~xyiHiZXv=Ef3#pl%uh*&^NHbOfwJ6L;1V;_$= zEAch`1!1L5oO#+66n9qoSzuq44ycR~^yk41F54(&>Ht4Pf1cJr;mO>6+2H9)-^G|t zK#2gglnn7e)6&jhlfL9~%!k*=OH8)^Nd=BA>IkE=A_BdPUz#y&W4>ZD@S}7x)KJ) zA1Th3N*QAa74i+fv|UKE;MUCNZlHd%#kY4Mf{E(T^U!itY^UcFlIOWI-?#ywE!Y=i zB9JzFRJ;}vsoCi-$izWDdXUy;GcO^Yu?m?>SpVJFlGd1BLZPNVgjA^MnAx942}HKx z>*C9q$+`HtNUw=O0+D%EX>D+weHtq$0_AZ~r^|TC$OF|xaZ!vl!c~Dc`n?sjG)k#S zkI}$r#on1ic?hle&Y<^aKr8+|^K3qvW&i`+hh}TxH*8V^JtN3@A?&8X^0E|SH+|-Z zcT=q>@pAxBfjZM*O1$E8a;%1*#&h~LDRrDNB`n|`{jk8iL%}5ogYk;M!$C<5)hBDlo%(Tz_`%*my8<-7aF`LeHq|F zdtWm0(dykYswNn)s?e8pclNUI)Zh=f!4 zQMPQ0Wq4uK?+Ik7{X~?0=lAXuER4kB-YG;tlShwE1F(#bSt-n%?7KXS{Z3WRc z?{4FTVRF$Ki>8C*#&23mDtP`frUGYYctXr3J7~g0qB>z;fQv(#2B;aj?MY=$hZ9(#T2B zC2@&o7yqaWf0w}DIltk>__raP<`RU-TTO@ah(lvXmgWz=s+Sq9-aHiZ)==fJ@ERXo z;x~LqPB>CHmGRX$ycb6J=i%y6{QAz97YVMyELf>6$(yMU4#HEs z(Y7;aoM-T1Ko{QkcmDwfAo;eUj~IXqJOIH=KHI_%4}jOcKwUKxLtMJWKkNq>fciVV zR>T0Tq6Xk;Og1$DU3c&RJXJeD3_xBH299$}oCU9-S}*{`T3eCOJ5R2rL<3N)wb>XC zz!Bzd_#PO55B>oM(E$8ob=m_4;2(dlYB8E?&ZaN`HC%Qui6ky9NPFEIqg}-UFTFB#8TX@k$w zyu#pPj8vku^{g5XI7@?rlZ^=}k=x{1>eW})O`WC40NS`n+{dURwvowOxR+Py15PbSBrFJwvk2JInmz#5+N! z9E_P9!>aXQf`alo8{B}_+-zeIPu!n8rJng3iM|tpId2-SFG`GCG(mSi@_Ys$t!W*! zleUzjozyjOG-GZGc`TYmy9hQjY34bEg!o@Eg-AlYP3x~&7y%(Zj1M>@A^r?1074)| zhHfj;@(Bs?o|rpGLVTL;VM0Q@v_arMSaG5E0PdD?SS{z zwBq2;Xm4GyzPB7H@BTKcaVy&S&(OwJ1rg$I;gZj2Pt7a#ng@L!7Vf-|==(Hlkh_cE z4S}asf?&+)W%BY)xhtUDH7A2UIoW?3%C^Rdze4ib*x@JfRJ`GEy0CE)@G(+LcZ6|r zG<7_~WISGwyVoBnMaIefUHEzvD%uJ$$LEsO8Z?*7FyNq7)uUxg2!oS$Y*;7{^cfUN zbRrn3tzuV>6pD8JXG_6E*1%bwM!+B($Lm|2C}u1$0(l%<2c>Z`h^VHL!-uSM6gN z3^Tk!8`dW-l~mx;kpqUUzrcN%pHRjgii3$>H?z=uY+gj^HvKrq~+B%CtdZhJTK+L;A+`pBbazq%Qd! zW2*xvHK>@E3DioGBZDRBUhHR_7qD5fV`?6mU0Rm6n5F0ch5?IN90Bi&nk zSnOi$IJ?)NN@J{>VS+cm;22o!fokdFREvGB*@87+Fv`qTJu}<+&LY7)q*6|HN9#UN zFIy+siABm8_NFyRq@21!_+0HlA^r_xIkck>+0pfcz&hXb^%a;xyZKiLU2e&EJcRf@>ZDX}S9$vcY6@L;#MvZw>0=40-Vb;R zakOr6yvAbzMFB9}qbX!@*LfD2Ldnl)C(A8MExjh-Ka0OBcS3)5ze_)Z5=tPXr<=*j zgcWLWlUD_IIla9s!C_kzZ{M~D;_d2dyJEy1gq-&`rdxi6=49~Gp5qnaJOwvrN4o)I zEy#?+3Ab%mm$zgsF3s>Y-Tf;xr`YlN7~GsRU9veXchjd*&3TTS(|fnnkZ2Cy5w8fX zT#lC&c3|+1N9Cyl_{!*yz_SQ^m9~sfOgr0wt}l5RT677Kr1grQwxu30SRtm3M-c|= z?L{mxBblcQOH8bFo8#q33K8yhHe{H50fIYH_9imUKN!|wp0>vXvKH_yl{0Ccrr3-XFH-eIOglX4qLP`4vtRki0>C)SXHt`%U z{w8>jOH15!rywQmapS-Gj!@D*P6}|Iea`ubQqnfUO4?VRr=28}v>Qy304G~x7yHUZ z0vmU)bTg9LDtz9%0$n$^O)FGfCa;_K(6LilYRcF#4G-qd-B%tUoh=8)*0E}!%C$pt z*1Ks0a4&2(f@18ljuYF>C@j}a_$5XcEYFzdPrzbL*RJE+!?q%irrP;NE&cyM!xCm z-(YecnAD!+VbMXfnBG;F zhDKcn-Ky6a-(V}eMbZV|bC4VP(DeBp(72;-*S*c%`zThtD(=n&*fo}x=ps3K-Lknb zy+X!uXanOQgU{T(77f9(^zn>>8AvKF;CCc-mA7a<>-je{P8l=n@}I-(!Sj#=7`G-ej8~66a3%H{ zhDhmHrQ|fviDe5a=#WG695mXIy4>k*0d1@=jzGV8>4o3w3bux~kl0;WP9#1IZp|d~ zMGk_adT^Mip|)pmM~A!XO1+0bNRd zmmBf`gEMaR4IY4G_NboRHO;E;2c?)Sn`5?%k60tGa_nJMHBZY6etb%DGO(_956;5i zJ|;k2_TzenAGRQ=w*sZgT_ly9t5CiLDGx>U6nPSa4nXsl&}@Jc4ix#u5NFG<%<;xQ z@&fUX{Pre_ec@X7)I(&YmDv*f*CP5eRaIZ)38VO`u5pa;y{01n%q`}2)Q)6^kaXnS zt43ItN+CrOv+qI59Tlm7gYXGOn0T@|=N_r|q$t>bA3kL3wv3{~3kgcOLVc*!QFP5N z4x(kLouPhIfx)M;=Lp@n`Gf<(ai({?!@x3XY*IP!!TWqbX(45OgZ>m}M{--AMj1jI z0;`+dQ*LGrZ%MTi5tQu8UGtPwYzSLtMnYAJeQ)A0-6aQ#TCV*-!~(M8cQxm|QuT6? z>`cTQ_pkTr69KS~5hlYzJG&4j9H!X8pmY@TdX(VXkwAeF?PrmwRNyxxf&6WsM42}5 z9l#B?z*_rZ5jnWg2_0L6r%VNNEGybNW1Xm|Xv^{SZWM0PPUw3})m?`~3AWH(i~M_D zy8n!WwqG|F4m_|uGTGY|r7}qK{~Qs%i#_-+UNuEwxHs8MNi%TLQz)*==F11DzJIsO zY!rovzb*O;HEmH)%4>?lPm%TFDTZlI^(=8+QhAW1eP}-fh|+Qw+uREnqaWB@0MbMl zy!59{^mF!iMWoPFzw#259}_737(%`FmfikSigIy6h1|Eb1j000nfp-cPPVHbc$0y( zD~3NZ>7>G#R8Xl%mAMhA6a2$=)B@_c{o>yrw-cVV9W!ysSUsR@`&9ajHQ>peK`7kh zW>ch{d{MCtbCGopP+x)igl*7i2hYWzE9At|YYz*0V@L3uIJ9y9`j^5@U_Ti~{w7tW zN&}Qs6pdbzEceekgd3)GZypy=nJPY?Jb-FQF55!TF&6G>BKWad_8n$dfrJN8s5_#W zg4HUz?Jd8C(0b#`WmtQ_-jh3-(9f|CH&30u*Wg#k=nTk1@|V=5w^tjJK?9-bdr=HQ zm)L0lL|dT#G9Y^9K+LrLwZ8TV(PTFOWuJ4cT-}f8s*OE4`x}UKA9?mQ+=!4n+<7F6 zX$q3q%{}!ddc@9H1QV&%o7!UbT~FDH>)8?}{0%q%TJvf^ z2>?7@J?LNQGLH%3(7pn5OyL+3F1w-{ntkWwXE2C@bq*2$384Myj@TWliIJ+ToF%1> z?3I1ZClO>Z3RFnusX*Yr$}k1bI_Xv^>Q7*zi>__XZ6aU0in{lyhW2=m!C~BA`-FAG z(Dvkp--p=)!Y3{N#KXGsly{~R$wTrS^Jdkc_hqTc&?Hk9r`$mhj1|htg+O$*LYfD9 zco<&(D!YyB+s<6`I$O%Fc$_ziA_tv!*q_Mb%M;%DXu`UvAVe_Jw`WQCou8=o|kIbqr={$#QC-QdZl{juDAP!se#! zcpq?hn(_=aV?$>SQM#ZMj`_aEyd^kU6GU1N^d?)BfO0mE70IR{Wsnu}Pilmii!85{ zs*qEJ3!G`Lb6V|#KHDPBKmSg3pFIe9J0Ox^hC2VgsebrN2SK(cUQcgKwg&-gY0cV< zzipo|4Sh{@IClz&NqjBr2(?n>J1pM_)P2&tHYrk5umycFR8W{Q6&LKw*@l-}b$G|+ zovImA+x-QcC@B4_vuH6Mw0%L`1qr}D59j1%3 zjTl9NYj5I3R@@m%w8&m`grL`y7kWOWq;e!3h2xq~nr@DeyOUtf41K!(YigM|+>wuD za#V_*<3}XPKu(g_5EQo~5OW!r1%K2JOO3_h>|(G^oPwU%sCXv_hnv|Zbqo3zlW2QL zkkkPuqdm73ov{Oktnb1*Vo|2)p1!ST(6U*yO#Th|LKa89=x%1tR0(oA2)WZK#gL9H zJ)9Q0H>i_jsciP_{Doq}3<0)Ka>gZeenG7@R$ZS1Dc2;=Ekb#`3Z)*Q#sbv1$~l_k zQTk&Znop5ZKs9PvxvRHxy;D4XEWfbk5C zP{Y9H#zA9@T=J54j?i=(6moCG>mg`TlVubrquv+GA#~8St2-=e^h!2~~eJt$B*+Uc0K7k=Mgdh%bFcV zbWHYfUrKi;Mp`tUQtZht=KhJhM=>wxPipM_rJ*3{35pH5N1M=E3==)ZYw?`#B{Y_x zSM_}z#S9qQ9l92++m52Zr}(&u?9AOxy~^L-jNjX!%zK6TC3A|`FTS06sJ6)}{qX`n*4Ev0m^fJ@`hNKy&1L4fK9qhWPUF-D%Z7+`_g*NoK*JW^X|Nxc z);iv;euyG_RIgLo`=CB;{*+40$>)1TwbU#wl4)e269aa#9N}N~FvcJ&`-yyRLP{ZQ zIQr{)Vxe6P8#=RgVIiFT;amlt$nxwZXoGt6QS=he-!{474|u^HZ?+GDPee8k?ZU$- z?jG1rzEFmfFY=Byqx+_<@HbnOm=4E$txEF&^cvKL=^&-IFX5s%@^{k^!!k1V z0?&}tn9T|DFGsBEoOA2P4QIeBLJ!X-()OcLW#6zyEdFIO5jkr%cNgBplk6RkZU2E3 zwcdn!qJ_{m5J+^L!ZBhEk&qj9-S<7fB}bp&{z85_q@yrUiuTvS@cBfU&^z)Jyj(mZ zlp18uNGT3l<@MRPrAYL9{HbGgDw zv^@;gac|&d)010^lhO;05{Vltq@g=t!tCxWbbd;Z;kSp0iivGqF(j%(DU6VwuD%v^ zPDjot%m!K@Y{6}8ljneS19(xT=!HFW1wYkyLxQS%gq@W>DzCyOS-}+i*||ZlNov+_ zM4h4g;o1*uz0sXHMRL-5$ZzxQtOZjcvh%jFN)*apmIEZg6`T5U)-=o?ao_S$l0Eo+ zb6&a}mc$EtQH>oC0NNjxy;J?E$e3gnR_5!}k@+e)hlmyXw69VGZHsEop7I1O3os6B zsr&FFr7+zAc1Nx2QbQtjW!ZTa-Z~BnucNUKy^b|>9)$O)dr~-=n!}Fo_VEAq~ z1kW|XM72d7an!1xD=eaxPf^F#U9fy%MU|`GQtrznwuhEOqCQF#X@fNXsEQA@Qnq>t zbtBGB<#ywpp(i^Vcf+9QwgVxL#6Pi~J6xaVN}&=BRi2Owo&})D?<;tW*fv`}gpb2V zT5pz96GddXMOGMyJB2S2+p8Qfxz}WAs!^5-dzyUF+~_VkipTd*Q0$1JZL*&!H&&}s zB*jarO|CIQFevXSw^x;(8!N=eYmul5O>2h}+&i$nju!RAhQn6?WvPxF<|tfI+lz#k zs6JUCFSL`v$hXZ8I*yyn)aFOXlZn&vY4?{TkFm1IQ3iWN>!G0YsQvqv$rR|>5%NL& z?B@43XTr7y*+lO>xk9SWEd|0?Xp;;%?^}S9d-c%X&~i|8jbaxrmR$~_20jl&DS+M- z$pqDPSI$E-8x)yezFsC(4_B?i)6(o$b#Q%v zMB?W;KO&i<=b^%Tc#1#m*<$rG$?%=rjz|4KP}v-mB+S%y462wz=Kn79eM>g-X-6kD zm&1iws^RF&_EtIe!sVBNmjjK?2yV|lr6eCCl&-%*7@G3>Geo5 zCcKsxWc$R(Jbh@srcWEIzZHm%54);zMR(9RD$k`{qeiQBZcq&J1x1C+83ZRnfI{UY zmFDQFoTS$}?blK($Nsu(r^=m}v(C3z^-Er=?||wT$0AuT$~m4m-utO+kf_gXUCjMy z2sm0T3v=2C-p!MWMjr*OR4_JjmxcQ+>!2N$JO(|uIk1#N`*W`4Hbx-rNEtuTbcP4qcNx)%&cioq;x;_Cp0Ed_6r04~Kt&JQ{5q_?GoqH!yY=;JYZ_ z%f@9QM`y9SR~J2oNqcKeqamR04A!)@<{l3;^#8)@{#UNB3ak5HiNF7e)%{<; z|F5r7<&3F_2vu-kDh-)J5dY`T|C^8gXVUZkKn&NoQVsk6>*s&A0)VLMyD@#DNd=u= zZ-PNl!IfpkBnTPh|2`pT0qqPbP$n|u00CNvb{Y`E5OT=68H_=`BqpG4;!q3#C=wxM z%3T*D<dr|%^4*S!rmieIwiOc9n zI?oBG2#4VmVF9ZGQiKDUjIk(;5gbEgD+eDPYf2&^`NzhZ;tw(yfav%j#%zZcS4M9$ zLLY2bHy1#V^yhI5O+eAcFd%c709-bP9d<@xss(I>08vCW8K9q4=%*N96D|>|N-He= zg4rZSmG?udVQkvzm~WD&@Q;k8QH)_%mul%s3iES%H2~sm#$pMsKx*cyw7^6Qn!sYL z8x$KgQ_M4Zqjf^7f^#F9Qx8C373$T*lyTZ%hi{b-P_F@bz$Af?e~FWmr+94{HTD41 zIvXKt)A$G`nt27~J7a1zv0wdqBgR?)*`5hV9|_={&u5u8%OYn$$L%dcef&BWv>VeSC+C27>IR-5S3Yi{P&14=yF3OeN_ zbjseeKn_5DuNV$@%CU1=6(zR-3Osj2r#PB2G7Vn(<^|zSp@`DVElxNO9BzHWmaJ1qTtL5OS;`o zK}orj76dQ7^yb%F9|3Aar$5ZAwwj+OkRPrn`Q5-EaRCgV8U9=E*3#<;f_Qo~W(}Ai zwq}h5U{#tq2~kKq$~8TC3uVq7`$rNhao(oIgNjAFBAUEMmdBIfJZWp^tw=yOX zO;~dtZ3V!BZ?bfv+!-_%-fV{PZ1-)Dg&DB^kUuXrXG*kqEdv78m@Trjpye6oN=|S` z*>Nol^SX+u7Sn{KmUM@uCBQ~FrM-iJGFT^*KPRD|iGU#{tJ#|{+jMo=WQNTs6u_jt zMBH_IH*h$f(9kI~UfXx(CEMx0poUITkDUgSwvc6_3s4}1_p%YgvkOj2?jFfh0GphF z9peC0e4%rBS_%*zERBb+8nYJi7g~M@Gd$8BG|HTpF#=!yiq9&Vc_m-*67c0E!R0|1 z$8;zF@?s$%>TFaq<_JATZFs`d{y@B|yC?E!K($H3WhZc>UbQe$vymVA7+;P9eXxk4Q24IsZkXZNMCl*=D8CSF} zT5S?AwH+EUiDZ=VSzwigImFs#y)+Si><}CR-o-mWjNzu5pVh{SpTH7KduuE3@kUqeVmj^%p!Vek%s zFJY5~#9fE9CK$^d!*$h4fx0rw5s+@(#4qB^VXZTPlu^|U7fvneJ$&0L1JLJsCUiOi zKX=)0GwO#bO-w+N@n+!} zR*{b(q~jGZ!xA+zS^EXR)tdehhARR#viYc1-%W>wTe8$$w}Mw=ZC>sw7=jX?pu}My zx*S_U}{yY{Xb%=jBV|v6{5x61lsMrfid;ulKr3coJERhT) zXdBC*gb$RM0VNF60}~I8c*ajqg12#E{84cLl$Zr2jMD?X!bg-i3nc^_Bjb+(xMy_L zV%5-`jqyY%<6UN8?BMb^)ubv3X7k646CZd(XmoLoy@KoD$QqbE$Y^KNqDAmE^IXc) zpwHrsEPkU!2GC{&I&z{iDl549^tVtV6iO^~Dd&A2QDQTc=&g)4)u&5F(V`=u#71}q z2Z2+`XKaTO)_=H;*QX~ziApH36`nC>LydL0f2#Yv&3Z7M7&vK9L+R^vti7v7h*D+e4sw_0j;|V{ybqAY#zW zZ2_Zb8Yiez3qk1vUMcm~Hb%||Xk{EPj-W~$OA-nTrmo)OzU)WXZd@cUqv0$o!e?3I z5_Faw2Id>hi(d>+?ai)nwDHUa!`DD9Q=cTJRV{~nvgx+kW%_`DsT!WzNu?5_bw6?# zn&XD2_Js?J6g_3HwQdkoTU?0Y>C;XFy-t8;ChM~G(qPS%(`g(N^cm_1{|W8iX^eEu z;oa=$L-UM31cNc&K+sYLNpTy-(b)N#I#C{KG?yJV!zXGCt? z6nOz}%jX*WM*jeIl6!Ry?VpTQoc_%9B(ASz-Ax21Yu0<5D;z3po`VUZdW+~p%u589 zRfu1u%Gz;ctXti3j_a6!4>%AO;XpVt?TXhYuHYw~uyrYFcAF8!^K2i|dYBx5YO_I_ z9fF}UxddV+Zwjv4fRKcc=tOYyJ)m5fFaFU0F^Ndqn7&!AQn>-ar`w-7}gf_@=b!i+mmWp~S)a2T&O&k46hDLRdv^R+2B zUwpUn3`!^8*cW$F`#6MwJY_kSiv%I(QhGfYma+Qg(o%vMY!4ZSiY2}zOqh!6lOP); z-gqZ`Zxao;ny>-*TurH%8(yEdg8D{bg|zr^8>#zPTS_mD3WJLG}vcaLCyI*i9GAcZr5KSK=dLxd)w@(S#ZFepcm1LFH4ZWrpN zlhR7dMMfdlxi68!dY!BrzuEWF5#`$V#9hSFUaR|V58(EN1g-xPH>P&o`4!m97;=LP zF=7Y{b+}p1(H;{#|LCUo6;YPQca0*VPeq_qS{3Y+RBrSadh!L?Wx!iOXehT9kII2? zS8^5w`69m7MsWaWKq^qN3! z!UV|2qaa1Yw#}q#Wpp-zLjcvTF!<8d_W;6#;;)!t$Sdo-=6{AK9gHaNq-u(^s4Lv6C{s1Bl{kI zd1STfds%r**im+7h-_K7gs19mcFge=UgsN6R}rd&BDirI`=sR%`{e$F6%^jyPpLN9--0w#-COr$+gE_O7JRbP zZ~`kHpUNbcXhAbcM}|J{@EC|q3hDe^OERsc&F>}R{pNiIK7+%-i}|Q*0_mBj_R-PQ zP<#g!lc%kWpF>4WSC%v%5j_h`Th;?cy4FjzDq#>iDuQ=@fZ031qw{GGx$#+an@m?a zrfQUqdX<8f2iswvf{dN!*X9?;X`1(XLG*f7*R?Z#IGuM!02fMl&F=Dfaqy+*6Jkgw zPjJ9da8(pHas*!8OB?~nF9JoNk0$^`6Cv-yz>a6s)vcv?8_mMV`{*o zcRpRMetMfsdQ54H88v7OZ7vyHEBeRa+3HNQ&xmi)3gS{k{fWS+D7W3>(0}Jr6bX245)-&^E=S6j zf7-)#9msgRk0A-cX?MY+Eq?;h<)Sz(hdWnnIlr$Q++slB_P@qtjcDiJAxsvVh0R%t z0u+OkS5f)E-;?h-SI)rBZ>aU}wHFn+6Blq_J$%TA9eDvp0Rve+w-95yUD_sQ6Ark&P(8?8a zKr8pyeQ{-;7-Vk;WCHKq0%WfA`cL`G{ok0vIYeM_qFoY4j%o+asjVr=VW@Uc?+YQL z{8Ip7THjl;*)>Tb%H?T7MsR=T2=L7L3!VAQ8slbZZvVH*nlb3?z*Ge|M8ufx;#k6t zTo2k=C;6s1P%o>Ckuc0CxaK3MR*?>76UdSbcRuL80!3SeUzz~hMd{Vn3&s#E9g*i` z6>vD=i;VsAOmdgj*K&hT#;1TTU{rszUH_2qlnG%H6qURrW2y$-k0Z{ z#@S&ZwFO*L!`I~0xY%s62CnSJ-nFdSO`MyKKkY847&(_w4ejkU4jPp8J1PU6ze!OC z=oHxWEtQlRKO_`Z?AwFLLlf0BN&$U7AU+fhS%ER@gy?T%<28PwGKX(PFkoP#0po-V z?G*|*f+cbA1pd?#hKYpEX3H-i`2lly&miTI?C))7k`W@wpJ@a0s(U0g_rXDwbC`pOUieHi4s<@%DR&XPxomrZoXIC8I7}7S zfrangvB<96CQ^+8pX-k57{Jb43$3`U%yU)PA{`XCW*#rCr3J2Y?6JaFkfNy~su^5w z`+KAHGE(v_M;Yh!mf8s63aHn>;)lCzS>lgjfeYEPMDtHb$@hb>%t*T198KUnfkM8F z2rp}$h5GuQj)|k~e+_F}Ysu*=YGy0|9beOg!gk_dm~_;I1U6U&-D43BxHQBud6PSiagYbuHewk7Dqkss1te$_D75*4ZU{tVMI!%SuPP%slK)KwaaQ%FAtSNBUIFTy9 zqy+|JpHG8a+z`=SxY%J*2~$o_>a+0n?ci0?bwbrZyh<)}h6S2YuaYXF zA3e`J*B*h2i|&Bdw3;loc`R-NKM~bsL@r$?!M)b#)=w=W(P~ zAPE9UJcuB?L6L{M6Ls*#CX+W-TzIU<$G=E$l(r)7c3zBq?=IX$QK>sec}`v-iNR!z zfYYZ=rkpBo1sFkPTO{eXI!oRsx5@mKCTUTY+D)hV0a7XtjoBWF&+-^jhUCQM>X(DU zfpe;AZ*n{pZ{V-=Kt+$~Ca{Q%(I}y?OSJ`{{d4!lZ%(#fA^kRm3F1MU^Nzu(>diKx z3gEx8n6KmLFYQm>h`*Hi0ZLdTVUf{^;etRw_~S21<%|9EDY#9LyIte@AUrgs2V9J? zjQsTmMd`J~#n=;B*d@)}*C|mn9+r;&{oq`;Kx0?b`%6rJ8@p&o`0D*V28i#GWW-fO zH`O@@m7cdfQKvm`CFeMwNswl@&&z2IlJKpCL@f?TFz7skk-TRi#0?UM9pA%{Z*StYbME-5rY;; zwV{0Xw==r>LV)z30*^lz;2L(`DRB+$gdi7t`1Ddi0R9dMjWAj+n-FipINsmHQhOg*-nt^nYsl=A{EUO5P< zu*%Den(j&3La-&{K+n*UGe@}4vsP@jTpWTzCzfd^1R!3*0NVUeQ$yre-W0?@1}Ii+ z!P#iSB-P_D(Ne)r+wV#EEbzO_WEepg?Ezg3Cu1oL1x0eKL9Jvhe!*;>lH{oZSAxfzA@aRHHPDLl*5-*n8aVk%ZVtfiJ`>_f6B{s1icz!^$0o3u z1cl7+L|)L@r}P+we6k`n}R5A3nSiEBIPb!3(VG^6H0`qzHZ`=l82OFo>V zTzI{o5r2FH_~RpX+tdOKZ(8W^D8DDM@f{KG*v<9MX*B(i(n)vUe@XX2zVZFu`S;F7 zVydp#{qzz0YBxV`ikSRpv3(@cq)@z!ihW7?7h^)JUF9q0wq+3-Y?qCHtBKxRYKN( z?aZPveqTpnOtGe$uoz!P z-J{TG$LU)jfd?ix^U7qVc|m}55_QVuErr7nPHcSWZs6%>d4SrqR~SVbpPph*`H>MX zS`%+UDehFzdY7E_7`Xi*03pW%`CrW$Pj|-~z~Kn1_?lU-fyVf;@6#U-=v4JJqB_Ea=0kP;S&H@M?=SN!{MoDXSyZu%Gq+skKey1UBJ=Sh1VP+wt~O@9 zk04D$K|H}}S0?nMXkW&L=Cg*%wd?V;@-7r>HQW^pK49uM?B9;Ers`< z6y5@y>iP8-@%;_J;-E|Slz%J_M0W48_u!6_+QHMZ>brrVJkO-zSRn?^2HOi+L3B%k zbDfELD>HZj-8yxl#=%zHyK-J0p5d#gbNI04OE>ysZ{kM-_=46_M|TzxYpGWfFxnf)dAwJk8C9JAFR|(eT8rwRTXI^jeBkWW+**_u15ssv(tdQ5B!eIu14X%8nI}21Cz7$E(xvLG-vQ zkL@frDCa&(p%uK%Y-iy}mT}>t@n%6RdKy?)x`fatg zw(aTjaeH^UNkP09oiM!Pg)mZ~N4$KW&XB>6&AtvZJ0U&?cf;T-l}YD^+l3cu(d^zQ z!PH>+((F5uTC-#{pHG)bt~G#L*`ql2y-Tx>f=`el)|E0_I}T6?vC-G>Yf)MUn7=g@ zZ@nxADs~lHA~^f`OE=y`wqE-IN)dw}AAoy}XVy>{E3rAnZ-wNe1AkUW?)9n!fWRL$ zZ=EveWD?vm!-GW*XB*yny6v4-uZpUajaPVFvkQlW5`u;=exmuKX2{;q^`rUi&+J>T zp0Q7gPuI9W#Tb_4E=Kj+vRf=_xDwo~Y7Diz>;Y##DjZ76BB5D6@qQHQTzLl*Vc@y) z^yB3O*NyprUj0)Ea{8n*p(i|n+fWq!#0w|z;QMhf$JRy8`klaj4X4+DQvUPSUgX|D z+93M^#ThRFx(Ynv7;Een{hY7Simi~A;$^jV*Z4t6)7f_2?_5LlkdGPM+*Ms(JWo*; zTfms{G;SCbcn*F3F$3r3+l` zIUYmsM0fx^@fqNWyo^8_s_E|l?+Mcwap}r1v8mQmoV<)#d%`p0xqPFy!C!m2boC_I zORFX6_vGC0q4vshhHtcP|8}r@dlKV78JyWwYxIFTa%;}y1vM89_ZcJx^#+Iw@J}sa z7*7CKZ24+}$>6!5&T73NIT)T2>;*px*bBGY^U6T3{BMyBBUtixaO8jYwNb#|c*wuw zGltg&kmYaC5A0nV$D@$>0o3%jE&&17SPGt0a78S5G8n;=fPXJW4V|>yLng>4)bAm@ zz}2741OgIKTFq9YS}4Y$N;^bno@oGxu_KbGstT?<-8)i2%WaLlxWl^^YaM+h*%}5Q zM2HmUW2C4P^D8;9#iWj)Jwu%n`woPd{%IWqhou8N84aAS3b=dz0}K(OJn3a}zJ0j_ zPU#%5N61h8iv*p+`7Yh!tpUl?Q{_Qx)x1Q}4@)3iA7g{ss%)BCOJLXi084H$#n@S& zjd@Vh_^k>l1PfAMXGoIWk3E( zh}#h}5QT#;kLsxixftO5&VJla*wHHyATG3~9?fVnof)|RKqB@$^Q&G9b>g%_*d(_f z&xCEqTANJJ`!}9LtTXq0Jcp3L0z8L6_~!0)(ymBk{o#+Wm;k^eu(O79AZ7uM+(raQ zwBcMgR9B@egq+`wDJ0)i0uE=9hb-40QQ`Ffq9Xo^Z{-#GDevt5UJirZp8^Sm8|*R% z!wG}zKTEFLKmHFPUezvtIrG2_*jwF47*>`@wie&H!?v-4XF_clT5aAA6Au9ySwcP~ zyPe7le?p_7#~c$QNaQ_9ym4r~r|0U$96mJl6WrM9bHa@0qp}_4$F~C>Cv2XIu>

    cz-e-$PXlihJPXnt+|R*YwspvRegc1w`f~T`0Cza%ad0=k zW8|mucFN17l5j%b9f`eDG2g@vup5J3==}MqnvbD(&UI>v!rplX*sbK-l!h0l29uyB z&KBL>6wNL?wbEmnx_3^k^odwA1d(+`F*&tIFj)fp1da>rPP@MEa6i7cm3O*9;P$5l zsfiIlKwQr9y$-+1EbG*N-RDu4k7v6`(`A{QT#Xyl=k8EbK(^zIB3Tcej62C!Tm^jY#R$l#g#; zYZ*sR^~dJ(bsF#T>Fn>EMz0&(C%wQH)XsK1hlgI?jMWy9O*r#{P)<6dkH`|ew;v-e zp>s;Lm=4UKLMJcX6i}GDotXCCnRP})d_P}CT_bdh0@l;#Q77H2ZGOIhusvD}f5Lqr z`1BBZL05EvY=R=f_JwG?o2_KQ5HDrrypuA8a$205?U+VPx(g?JWw+8=iB(I>Wl6wx z2_|1X9d%Ha0%8BaaN@TvwKvnZi)>c5}cr0Cu z(goY5plJFr`J7oP z*_r*}5pzXW@F+}SS{v0`e@5&1;BlTxze?Q?Fst-%Wws}u zF@x{npIX8&ZSZKzzZPUn)fn`kJWs}~Nh^zDADBfjEhyq=I#)o4u!+n^Eoc4VLFsc|K zJVR~3O9xmOxsc#&(xk!aD8S>jk>i=$)YB>6Fc76ay440vGfpXoqg#T3UBELO-K1f*esB_oM7 z1$2zZ2q5Q4PK?f~YPzvOPo_p!)bP6qg8gz=FqQrPA}tU~l8zKFPXPPJgIY`id(F z_8sB{n~f_tovn{={tg*0@v~0g!=+hAf}oct(i!sBQG9V?RvsOpD-$fq-ma-2qs9ef zSa6TzPY3zqEVoEylG0-{41d_D;=fp<-O8ny7R=0E6}>j0E|pE-?IONv@Y8H6x`k3u z(*QWaWbg?b%hR9sQWJ|YFzlo!eU+T_srGKixPk-`9jU%iIc$pe8=B&s;ihm`hVDEp zf~<6W5Bj0F=tHt`@}A?O_RFs7ye)^1nWh(KBPq*@kjb)7;$i1En}S0oC|dyM2ZuSE z;Ev?cagF0#m?mfLv8G^Z3B$k^2gYfc!I1%?JpmsoZVcTxyMB$7tdKaiX|fqs$-s4( zpUxrk^O_pLCj4ReQ%e}e5gy<9J>&RaA{X#++?IJVE{r@-4`y0Ku0FHR`@;lf#O{I- z!gmeF@RC%_*UM7(qtD)WSbIuOWFJbG47PXENh*GVeKxygBFFr{p$(JCbyE@!2wqN- zdxu9a>(Tz;nUU1(nemTgINfXky~7=+N09|y<^VE1YQ*5#A?|~tnO2V^t?3Z};doje zPJCLi7`OpoacmB^n+>iuHmK!O0&oLSWe#~fNdBmHFkq^gcFSdn*b4Xp1K^xSP(H&} z!!X&nyT%)!DnOiI%xsLW@do7W;-5@|QhA9TF%E}8RwdNLy~>TkV#zfUUjMQ11$w&| zxDi0;PhOC%wGWOvb7Hct+9RuEf`BvOO+SpkezXSd_e|Y%P8+;^7zLaS?RP)Jqb+|D zxqdu&4n8FoNTI=h$2!Mi*Cl0f0p`^lO(rZYG}j~X z`S24=%a$9>>mufMf~OmiPreLKVGdseON(ju(lXw<&c@Z{ouy?fZqI;bqj6&bSE;jO zXVxz^xB%=?t??I(+Q&$MZ^Kr#Tm&hC+>HK#cF+a_hQxm zVKM~O@-!Z7M_9Xx2gCRaLT;8%SO61_mtGy)E5%d(FV0buK0GF{ahaehtZhDuF>VK! zw8wt@1@76$VUL7ws6)YvXo*H-AH%(! z;f?|9^-};@L%;ALGApp`oPpV$&fy!St$5|-c_;L`DAYFJm|Ip@I3ysWu}De z^Ta^*IUqA%7Q6{(R`b6GYrv885;xBKRyIN7cU}=Zhq*F? z@g8_?P5GzM6VwT5z1S_?Gn5<%wcb@1B;z8j897^|HBfM*%Nr2pbE zX#&iTTgrnBT(~827cowO)i^jS@8aN8d*jS#M=ang1DHEH|FFgC116&&M#7Ou>f^+l z9s8z?9}nA85*yZ&SWPPipUE67Paym8vPt@433Ny(M37q>C(V^P@zUy(JM4Erh-5C% zxH5uZ@AO~G+FSEA4cu{zII+9BQn*HF0+v?uaT7id)9^QwJCm8LWUwTeNy@D<=aX`) zeK2LDhjSGbTDUySSonXCn*zFPST3Qk9*}(x^CI?9K8>=@9;k7l)9+Pw#*LsM%Nt84 zLT0~}n=bZ#PlcRN-O(D+6}xb7%!YvBkStI!9OqTo<-vG)IT)Sx%4I-Wd+7GH!MJaG z4Wy;1`z>2g;P6e5Ox*)XYuib9H5Jl>5OK_HK0+gyhlHKh3dVijb}OiBZKV!VJV=ZQU|6F=JYuN;UeHq2mmL`d2$?ijwVt@EMwOhlBRAK ze$mSmYd5#3m_VrK3V;oaIME9<-P3SVRfa=SJ`orIX(3_wEU`Z;Ps_mNXAZhysJ%zV ziD7|}q6~wF@pw0#yOLNi9uCrE=caS8n=EisNQ74-Sp2|fQby+42Xw`^e|Pr$n8p)1 zG>j&}9(eJJLz1<)4TckdKedEmroy9PjYpoWQX!RXkt(cZTOaPKwbqX{8-@dM54w_mY94|eXGW=kbw1o#u z7l(n95Xr-5gN)DKGd^=QJ{xR&=4O1h`a}F~0Bl2bF%oAu=R?%bjUA;<#DVSlc-VMU zPUEcKO{e$eW@yi*>6eHk@COeEqcA}WMMk1y`$iXme+m;F8BRmMN z+POdnl>;5L*f8S{!(Z9&Y4`{XgGu9={8LIweUg$WX$^_4zOm-r>kIShXUP|n!&9^v z$etfqh{Vgj4)%z>_6Gw3P?~nImxqJWv{ocsd~>=Zcenj0Od?ov!jR$-;=q|gTpVua zscO*0Atr3~Nf4~o6nL5f8Et|2hVaBlJy&dzJpr&yQiU7My_Bp6XSlS_f!Nd5)2A1T z2Eb8A^&>~!F)#$iYn=$;fYKVwUVx)*b{RAz9F1IsiwB6Wp(}BK9OCkHTWYuBf3*EU zeN-PmnSFJbL$DarAp(KE*?aW@cg;!99da-`P6Cjb?Zp2+{;kfj-XUE+RKshF5Jl!y zmG=?a!Al3I1ayGXS#So1iq#0sWp3=y6mJUkFOu{ULB|$xIEF*!{{)9@(r-u}Wk24Q z52q{Ua@%|@qhl@xj1hiqu7rt5z~RIWHTA2GlzwGmfomH&5{C?l9T~gRbYyF!_N(Np zd=9idNyD58<~esA*IX%I#I=UT2FRJ+>&vX<;q?oFpc-g8Kro0S$m|Cv8Dat!zQWhx zMVBuy7P;>F6A%|ZNYtjnBqz~Om5E#^r8^U>aLqeWT2sC#5pf^*y*mfhb`jz7#cFSI zv*FX1FN9d+xtHQE%&XKe&>23R?~@wc5My!Dz3znP4he(>aNXpm76&HJwEtwLL$Cyb zWW2O1h94>S5DrHhtnXF)G8cyPO|o^h$$K89mgLg4UMpWY)HH%w=np0Nc z8W3jo^Gea((jNgY(zNoS&ikXZ!PZ>?qjM`D2hj>f#d>GFn5i0wUb8;AD7ShFwr=tV zp4{&>rjiwKYcwCvW_oy2f}H=k2WM5{GWRmCx$@gQP{jZ4$=MkHG41X;u1QHoj`Ob| z#Q<9~!OPLEnjfoLt-3r~Pq8?ac1inLah+mmq{i&6ea9@lL<7Lnn^m~qv+fC2%xl_~ z=9~xJ4%%zyK1gO<483;iCg`>M2g99fm+nR8f9?Wv*E8L64LNfQ6{@PrG|sXfK(8!W z{#$_QfXZ0j2f{ZJxEF7LjOy+`?hT8mmopHvkofm{;oBMlqc7h{Ve>~bJR*Z`46`oB zI2k;4J7&;=jaJrnkp568;ACb|jmxHD;%A}wQB-if$eAGQ#aC-Z+ib%h07#yAxYi}~ zMW~JRdP&b(KypM?exVVQW1ky#1Urpd>UUqWw!jZMdP0I78U(LNU1@}Ouw z{=~EeAma(5wvPAGBfTw?WpN zOJavdxI;;NYC6PLGHA$vpsm`=22Ja%#zJur4^eX}2r;O9q!Vn6lwMF@3Zw+pcc}M$k*)vhT~Nn}Dx4*hGBgP8 zTj&cd(=whsG_yck=w2<-#(I_Zx4ucYQ$8>Zx_JerSy-nOY~U5x!M_Pb z5^>tyKax$BlNzN|ZE2Zfk-uYJS)W}0K4AQt?cY1I%puL+;R{vf;+>7ln&wZr;WDoN zzIWX|mt`Z}9k`MsYfUBqF3;&`$7A82TEZ}I$l6YM1eo7aDz4f|6y`EJsiL>cu0Jm$ zM6Ohr+tdpNhCqz;ml`7j4q`;+4g3J(+Wprst2^xK3k!D$EZqOqzZ>3vsGwUmV{)Lo z$Rfl6H*C)|WjMcI9)URieIyB##bONX?u0RL4RQx6IX6K{1?rM~B^w|IPf~w#NtQE& zzl8`X8QokRLA?gR41ZVdr=)_RO`Vg9Ddv(>(k^w`R&-&~91p>zJ;gDx5I?GR<^Dz@ z>)sd-$Q?LZQgp#AM8^q>0hmezTm;M!<&m5W{3%#cdWo5h@Tu%HEAE7IsTDz%4}voI z!IlGqGsXp5g4r;b2)F&482m1TXVh32pHX9Bd`69h@fkH1#%Hbc8(FPC_Z97l5H9z~ z>|O84;x*#U@Au{Vrp@Z#)>otsX$+W+4zLbb640eZ_=#RsTgDy03W(Y3rq;52_I#eQkbtWT+YtbJOEoh*7tK#?itK$e~Ni+ ze^Bhn)wbBcp+c;k@lc89xR4BaY>{gPG;>tq@rQuN7t-BOJHop<5D3Gnug8#7^jJQu zMPc@teZj+t3DEz*HQ^+Q7G(az_)we3fF6y&o+E$*u7RZXPjF#b(WR`` zmAH?2Bf%g(BM2%P`~k%513^wZG-eSPx^_Sl*afc6<+cfaIuPQ5aBftV>hVL%eR<90 z(ZW~@M!e1huS!g9fWth`fS?f%hHB3y$qz$@eL7Hv-S9GJ$3i$K-W=C=Q$+i0u9WPc zropyrDt@zKn9v^zEn+^AA3?fC5&(W*XrX_M8m6BGMLW+;!^4)UOHAM><4p$`^h5Ub zKgnBmxg4@8t55R#Jp(zYYAqU!W)`r{hieYSakuiAq#8BU8W3d}ZEo9>7*PN!Hf@KF zN1!j}28`Jmv|epJIG7U&)CZ=+yaF%I{ZXciRi@HR?25*PWYb@`$J}Q~ z!^0sff*L!9DOXsK*NqorFc*|sp%0*D@Y}BJl5s`!1r)i1q)9&d@}18Vi}S9WhMiyuSPybJ%qTW z*YM-a(t8vDYbp#UBqZWbFMOO@CV zr1W|V#5k~n2dGdo9)&rx4+Y62*3zJ~1}Fb+Px>Yz%8=MHVHx3PE)#c?wWmBCG>ly+ z@0=R>&SLKChFd!UG2?D7An?aVvIZwW3d_aslG3~30}8Y3u6*Z61+dBjv#yAWldoBt zj*MBqFMClwp6^mEo9uo$)@9RAwmnYxRhhh#M=Pntg8Wla9k4Ki!N*Q;7V-S*XYyue z^e^n1yX{4dBz@i+X!%RG`=UUl!1f-}2{%r`BR@DZ5EY|m10x!!(UnK%(7N=v1hZu5 z0Kn>mAMSas-^K1zZawp?#%WXj8_x6yC1pN>`m{*uc?Fj8+Wf#Tz25?QwSegNJJ4i! zGp3oaN6g!YOY$MoZ7c5V)%6emLvF`_Li>=&X-b#ijX#qUg|GV#F+dR|ux#tpwT7T+ z#v{Ns2^$w!y3@Y)-f-hKJ&BC?y_7AH0V=zMDBx!)1Go;jp1|dO z7EG~u(DkLd%ta)Z+f`{@zbAFX(Vw~pnyDG?KF z)g;umoI;edwU-BtjbEpe0P#m zA|e)qp7y0jz<^8boO$ zeF9+hgYwDNuzD;DtvsFy+K%3UU9BW#p)q|){h`%p{*NCLZB?PY>rS* z%R=)EWuaYRd4{skiHk{D=pSKSv@BHdJ}C=@WdG-+EVRs3`1MWjf}3jpCS0%L%O;7h z0!?q!0!2(sV))97Da=+ADB*L^*4Zd|JtOsFxZX?TX#sM^#R7`B_Y4;t^Y(G^@j2+@ z*<9l@6?q1gg0PKEzJ>LX%z#k1UasBOYunjg z{ON+_v*3CynT7R09zuvIrf1^TvY~57r zjY)o&t}u;bS<{iE-8&D}NrD=OlRRY%r4(E*D65f_$D%uy5t>^_j(sZn3_|MT-B|;r z^M+X#^?1P3VsNdTDtOlp^9$BGjK>u+v~$of>Yy9iXEiSL^Xo4dnMys8 z=&ij|<9gA1?4Q8PUr*(yQZ}&*1W!!7{*}7t#v`GyRLGHrDZH zTh!iiLjJnsK@WT#(n7FIdqdL8d|Lh+xI#UxC#E&L5nT&AoBpnwmin>p-#-$w+fYm6 zZ~~|Ns4`g+2*C8Lb%6w!gDe6}zJMp*@zPxf^SN}gt|i$p#h+3W4h3xA;lwLVyoL25 zC^dmicct2$UD!&RPt;ApyOXgUS1^%pywyAF?xP7B*o8wWzZ2i!cJVU7dL3L0(0>VT z{+1@CQvi+t3d{OeHCU@*KMW%g;p9+B%B8&oNo`xD!T{!XsRLYL&eGpx;GSf2&-(*j zL>v+V!40BhFI_%XM_rXAgSAxjD;jm&E}0E&%X1$;L@^Ss**ll*w#KkgobmU6i{aoJ z?J zGEM(gY8usQN_8++5Y>xS8nZQevu;5QiN)7M2jh^&0z@#V8pd~w@T6Q=pc0kbvaT+Wz7^T?lC!Z6A3%$85N4+u}&$^HMsI`j|z zgJHjF$kVfrz!d9&yTz2h3SacHBp)norEYlMOVl*;6i=Y6RS&pUDQ+kIuIGy}k2dd+EKPxgCXjA%4LnKTJ1jH1hB=u+HyyJP z6L#Up(yxlgKlf%y9KY0H{QJVd(*VT?h@|snRcNUY#!SYtLK$J6#7_=o`~`FjS>K&}c(@?aAgf9tCMNCy5-|NU>L0Nwf%2uXl0 zf1HR^+$M?@$Ejk)O!8u54*8d+-uSU)+sTU=y~QY?0=C0x$0b$Rt06QJVy+_ZvIHw7 zjHT00hCy0pZwhl@EC|t1 zLx_graq>?gF9iV-O9PYldO1|UIgZ3LQj^R(le?hA+^%$Ai)gYHJg?%NN*0fSm zM=It+#3UY(&&`teOoL(um^1!`b4I-%2S_hTe=tnIDv)S+9~({hGJ5;L!%%&|X3R7| zBcPr^@CQZ`5wMH!ljmd@jM5`_1V_-fR3uWmqNp!rQkP|}e#8AI5UL;^Z87Jc3 zF>O(z1DVYM(L(kL=+`@21%w!0C9OMeRe8q-a>P<$J`s!vth34G=77XTCu(X`PHBu1 zED0|nXqIK!YCLmIFy|^MCs1KQ`Hku|((L*AW13HlRRCp^>hFoWJOIDwIDsjKtv#U& z7Pr=xgHD8|(!I=Ql4hej@#=1`E$_SXP71RtIYv*)Qu0sX7q&ZKhZ>SO)Sr0(RS?k^ z+ASWqXPyM8kI&`A4lxaLU3m9UG6a!nOSMcOXkG(m=eJP3vgl+!T^0s;;^n$^*7;Hu(^E0B?WDXB zN8H_%)=KPsUB#Mv#>?xUtN%sZJ{0RebRXc<&)Dqmfmcay^{4xT0=aRx=(e?et`@+c zJ4XONQMp9_xp8cX-J(bH?@o#xlCny&xa>Q;!3K7((hZAi{A~t#h(J&x5I(Znb1~;# zO^&8Y_=tO%gZKmNYP5Q2>uKl2-=K0QZFAsajKE2chnH*g%ZTH-;c+#-UgUx!!9N50 zliqZ`m|igLq$Bq{4JyKI_Yhd@gc7SeP_j`ZtzO1~4OCsLh}#EsG&me6dfFu%YgLk= zb%}{6UB*(_c(I2s`U@7#r2|G6@^iB`W=?;&xpU_pq&N59W{jYO4|57-H?F*O!9Ul0 zhk$4-C+@Vr1_U?DYZ6Hoqd~=O_Pz;vUUTNZ9?0#F$7YMQ)EiJ!w2l7}y$Prw?Ms9T z>LXxdlH#M%X<|U?VN$*678~%NPxN)jWzu}aO{`utFS|8fs#*alyD$*QNE=AzhMjmt zAjT3?J#eBcn`XWmb!A8Bw~+~T`OqW~GH@>SmyZDm7xh+o1HCe2PHynkH-%)QEwsBVYq}5^LZ!yzSJ%;NPYyOu(^Cp{Ty-P z&UW*iu+M5G`_j?5I!z5KSI{YN?q-+*J%wX?bwn7a!06>-?pfm$n6OF`mMy4$ue)O< z{f?Dm{=MR8$EyDbFE1;d+u4h|10*kYqvAIepxBm+^8c`8VDG(a)h^MW>K<8|pI~IQ zCSEt0+RHGqw&gh`G2X_;b~vZ?8I%~#4b_*xot$axsH@H2^h#0{Nn4lVhWs~q5AGQ_ z?pr)AnPYV!Yg+v4)u5E`X<~uu+3eje`x8mBy9#lF`XUdcGC;{A5OpYG^bi*M=hi=! zba?{RGMjq=eyd2Dw-SHw80i z!FdzTnh24T;kA0LEzBE5QhgNuY5>QM`vVG`({uCPxLG0p#;6A(nHI2Ga6KCvu)~rO zyn07O-TH!m+lUw>mr8Eq#NuEwMd0e)eTOPPvf`AzqX9DVu5@+eT#)rxVEzVp5_T}2 zZxk)V;T@#?5F5{G)3o0chy2Ufj6Cz>u!!QdqpNG|aGk<4i+9=-HL3*Ux`*7ggNAa) zRL&wD5u6lEPQbYm{So#yEW7KU8;K*gQddkz?mhU)7zOhbC)@mTH~w`{D8HK`{}EfV z$Yh3K5h`++Dp&LQ^80W#d?n=r5aIt=(*DlXUk+E_RJjy&I9e^PJ3d73y@)JFd14{B*pI1$lJ)Jt<}H#ot-_nIKx@za6tuw)m;qd` zOY#31Zvb&=kb7JP5o0Oj%1uBdTu=fZxCXyRdkSZ9?p;p-=;(Whrqyd@Laql)b8Xfl zCdUjfPu>dr?Ik(Axa;7nx5)8A*5G^5oL<~=&^2-QA6jSgpj>Vuxt$m>s0gLSL7^|= z69hwMHzjL2;J!>M6`tf5dxmfXXEa&g4`o9Ov0Ka-m%<=B9EAM`4JETXv#Vzn@bL8txfgscTF^n77%NZJR2vWDpZnxDaR)ZBc;YU$iGvu>*f)-`VL2N}E$Xkh z66i)9QOFnLQP~Kmbd4Zjhu#@Q%*iCAvRye6hr#aKr;!;b@gIX9CVEGugPtr0qUjIX zrgx5>{#=~yjTd<09(weX{NLoDiw>(p2QGG|t5>ILethQ(+0VsW@C$9`d%M2?tD*6X zF0T=MxC5@k%l%jA;I6SXUW|p$HsQ)zJWK2kLM)&al z5V{9HH|-2<#d2dSTHP-b)uxfay?qGhbz59|4tv)NRS(V$ENx)TTGB4z&A16SV! z|MbqkECN>xgTB%a%N)3$b)TQ_@f`|KKksoJCDvK$egD3=r%BtaVO+^6k~-x|Wi$=| z>3d~N<}Q*D-7A9q&)vQqQvE37&4{soLFT00(92gETOb+qWSL-S+8X~UEUVA7BkTP-&=cd zenC}s+Wzdk@3ADI9F>()5?WI=ON_K;|J?iz@qQn;he@?XhI{x2WRZJ7zbWb{rdRxK zfT33QGM8Z*4LU|ItSO7Z`;|+JWErq;`t1Yj zse}1(i>S;*T)g8TR!n_EKUPpE{^k@vM*isd!d+=rob5fW+ad=yoDk5%qXR5Pr5PKME{evCy<7g}&h( zT}j_)w4X$5fqg!5^ty!E(uT7miBz=jrCBoi#;Z$+2t#d{Pki$;ng<>8WgH~ppdfd| z(%%UsDPt%5VYbS)Fd=}p-sh8@X9&5*GKoe-abDz zkEWOEW&BPRedc>^ujZuRMo<|-6`I>wtYp;D=L>>K(^kg!rqyFbQFmonF%bO#AB0Qa zl1mW(XdAuK8J(;`#)t$~q`WIyhu2_IeCJK}r@$PSywQAf4AD=S^i}gv;=y|TZB!B_ zEo*1b>Y!I(?9vqSMtn;RtD@9ivXwBaK0ZVhRa=TkVQ|w+g9Or==%cKh@$c~~XoFt{ zx3CQ2-Z!Zq>!Sj;7TFJLk#DI{5oP|PmnBq2smV9N%wUVW-sgJ+u$o>aIMEC6D*iKi zQ$|LWdXWS$anB5STAV}fXyK(fb4Ug-?#Gs?-FZu@7nS&E6?@+Ii-30p1Ra#Oc};!Xv6Uteo)m5* z%27Vie~`vyJbLJ+6Et8Y-yK@=`67N0Z9kYzUovtG)Hl6S0ZSz&=!{V z?E4`Z>t~|6=ub8rq>Wx3^({7feS#ykJ-Gimp1oUdqON+IUv&snH2K7<*kQG|UpTq( zAf`_(AcHS;zSn^51DkebaPuldTMK^N`JJf0XGIGL20igY4g09(UyV0&^p~#m^v6W6 zBUY!oANL|TYh6k6QISHq(e^E8x}7rC%Agr_z4!*HZ2vu~kPMa$j*l@fv!O+YV+MuP ztB5Gqlain5=MrY(S3yo}%G093S1{R862E{pVr9#m?QB~8@y#L6v9D}Vz9IGgg=83C zx{sn_sA=^GNqkE0pNj7iQ8AzI_R{42sf1pnF822CYQhwWdA@BwTaDgOM(<%q$&H#Z z7TUKxBolA8!i}4KgPv)~<5O?RDSi?4qc>caxTCY4A-SadQJj0|n3~ElS$-=5Z9T15 zftWnOl^uSCmR{L2E3dBo`pfT!(^O7M)YB|-YCjjQyyDH)M$Kr|vpY_ip!sck;aH-zRgw_Sdg_)mW{o6`TK%O7aRiQt z7{C$}3Xjg&Oo$Q6-3^VDZF8%i)k=f?0oMy4u*;KQpn?? zDOae%R6_^H)PZXH zjf(hxx7UI+_f7P7-Z(LoJY7f+H@kU|yVn@&<XhJEs- z2Te#S=Cs)MN5<2us6CXx^PsT6nBJWzC0+qf4~`_Ks+_#nA5+)aKhq_5&C(a_eHanX zI>D?wI?I>N&2drvgoga**r+b{gPl=d%hKrWc*Wl6me&W!vZ!k88q6ksI}Gw%Z;rD6 zR5G9HcpYu|YOZs206HX8jU_X2?9xY=+AV>4c*rSbxfADrq~5hIcE5R5#`@{r(nRi0 ztQeVZ!f?Zk)=*$=Q2ol^*g#kN=FVRXA6(jrsd(M&Ijl=-Occ3xO>t3Qv8!)a^hsGd zG)ChGE9BLlbaB7mX~{k*Tth7gX7{5$DL%(o&zp?+=Kk~|`E2MHLAqAq?&hvKT)Y}j zZKvNVndQQM=Cb2!`cEZSY2P`~xWMge2zx)!xPG$L|^A|fj()M4w!_B?H_wt!hPkA~|v2M6T zC-VdblFlnc2RNl~jBbQR=a;D)sn?Cl(~U0GjcMYIZ6yq(HeHA~c?!t40t3m@WX2+s zk5?y82PzUWkW6M~8yQH+vkmm4IjzZ`NK%)}Q&$9gvqYHTu-g z@=`x9P5q)iHNG`9p*{6WW^JZ;?MBJkO`dBv%hzrRS-UkXG?K#=R6@bccUHoEa*#+1 z>ytXg%4Llv)Y(2i5vA7nm%XNJH5qrU+&gezg#1zb4^{J3nq;j*I;Zy*ZSP&2KKr$O zj&L0FwT{Icr%J6;9mn~)*7-K4?*nb$C!BsA+J2e<*R*oiH=My+5(k6K?EXZzBitQ* zfH4Dy3&~ypu4|ki)GyH>?+gFb5{BsmkAKlIpxHy%;fayr#OHA`;pQPyACiZ;;!lBq zzsOHaGz{$BHoFHZaF%~3bGl%!tTNF%Noz=mQc(jq3O(L!NP61xrxV_mDZB@@Z9UC1 zLbytWI)s^zkDvoL$mc)h#s7;u_&@WM|Hw}&v2jU8i2(qK!myF9Ju!d2)&jPKa|sk2 zne(_D^tl00``c?d!TT1eIhMf3lIRJdR-A_-TjdDt+lX*iDWAe;a*_cYW2Kwh&PWiL zuoE-mNdDsx?)+UbLsIl9Rv~iN4I+f7C1H7LNT2})Yl;b9-kV8s=~KnRjfbVbCgK5R z$eDQ@c_2>{TbH6wP4)s#lz+HzzK6^3fPKw>CoKco-LdMP^=#5%U|N&VZvuJ6wQ>wwwzINK7-ehxskcIqAz^ z<6bm^fpqC}rPKXaF6IWV@1A$Jym z5+EcEDjxR5P*K1dVHs#a0~fnaCjSUJ-;nP(u08e|7jW1x26geo<96cIy}nhP+NCV)y4#J)Nx0Fh3dbO$Iy{ikUE4B9ws ziuO`1n45z@?X6erf_FQAYpsio6v$1I3YPqIyVH`&Q9P5Oxp}PeWxN%Q^*jHvRry|) zsWkb+YaDQtz|wv5PqpGn_k-eyOwG?S5J&~lnk>SsZmjZPiC~QeBAAvE!KAfDRe%Sw zi?&jcSbdWcv_XvZ)LpWQ_%8iMw#migyfP3-NYxmKZ!fBoSZ}^jV~4^!&&b26-L;^+ z3&!_%6jTpvG9_#GJ{|;1+X=^lpx>02lizO2cYteR9eQc!={jq>KkhNQ!>r!e)0b`y zfgALaOY(?6y~b6!pA4MV`a$S}9)a^u$~K-9oj0C<>WWcO^wy!E0TXM7S#L`6vy^2Q zr-QY9o>)HbzNv>ng}Kl}0WnziSvb0Yr_2s^gn}QCA$x8Lo0iE9;&N}swtYawO6tGz z;Jp}%792tTS_X$Owa@$n9Fpfvt1>Z`gB|EiclgE7-X$~)DvSm}veGfdAZdURh@mdl znMYRk5n$HD3eNh_P0phUYClBp0RRhorP{*%A|QGfPy2?#E9*O7_R6CvWOJ6j_Vbx z=x|Y%^gysKoT}AE?LlDR<g|Oj+;B)MbIA1Xom~b-1buSL`s9&SH{ai>y3DEG-?^y_d{Fzg zmGy1+@7GnvF1(omgR{#A>jT_!x$b!ZLyF2lnBBd)+`Ycsqbb0nHDG94`Ox-&VO{0J zcJcg@bbjf)ky{`-QH;v17?r0OT~sl;Qa7elF}4o4(iLM{6-bwUqWC~l`9YT=Fs(8$ zQ#moaa^n7^50CICK4KU#4ehiXcAlSnCrRHw?px2X++ZIaqCuiCR%oHq!3~tw~{i^KlBJlXcGdA3D7sgWH4NeMPTH?BuVz0Sa1c9&75ckDI!Q~fgam! zA~qm$Hqziexi>UbKYcBb8NS5DT(S-p^RN!Gn5Ups6idO$*``o^QwgeL^69XmxvFtRBjwcl8o`JnOCtq2HA5Oo^H7}Y2B5c|Xd2bnzzSwJ z1nmJz;n}oT;Mg*$R6LGA*CU|K3s}9fsKYE6@Nlpqs7bMlDm-2S0Yp+t(`G*efwJqJ zJ&6LCW-o;zFFBK!rTti|wAp*vC%aoTL?Ub(EH&U?88t`#4lYXpF3|fTCu-OkFNXUB&JP%swwN`=Z(`zR4`1&FsrAvyBes zn_SH|``Sxt{9l7Q^i_CXbo9}Ki-vha&F7rHr@VJBU zL~iPA*UOusndDC`VVD?rX3GyGu`~8{)Gffj|AlXwAx8ciajs6u#>5bh9!F-Jzbg?G z{2rO2+yIDTAT2Bh5z-sBFtf=Rqd4r?~`!XIrXW6!8$6fH`%wMpWwQ z@Qo-3ticY+HXZllCqfs#M91aw}=9w_vk zJy4nHmL*I^$R9kVVq(4Er#}_mcHm$3%=3Sx=Vd4^H9Y=zJWxYD%M!W78uvM7N~kJL zdWLs@$`(+hhFidCfD%(eFG$lc;|bAD;~qCh0*PKs6cbhvFYeYd|Lny%H&BmD&gH^C zLJIPFKBnNbxHqZA{nI4L#=i;)?I)X`BwJCbf!}lvNyfpLfAXpYvNAfRvWkfb*!+c$i10`QSXN^_~Q-QH<0A`Y5R()Mc0;5_Bek0FzFHqu1MHnsz6Q%Za%3 zl~hdRW-c&iGw*)A{CWXj#6!aT0J;`WIG<=tcW^A>C-!sTyu3e>t3UujZV4L{;I)LI zSyap(Ri%ajZHDT7e7r~|Dc@tLLj)7?l%w0wyVUwl2l>HGPUu+QSMXV&nZH0sg z2eEQAT|H?EvTX(}x;{lEzg{G;nv^B4r~pCv&J%SKXOKD)mB;R;^Ytn^Uk5jz4B~j} zf}0PE`Uh=8pj1e3$m?fd_;881FX~f-;!Wj`;pv6}@6P*t-l%3YIl`UWqqf zhYlWQmo>e=6}@CO&9giYb3Y@f`DmgN!evz*8GJt7#Suvd{({oqsi5KM;TnaN$7`9Tc9$M^s9x&)PSP%lS| zwi&JoX@8Ab}4 zx1ch}I$-RLR3qtXQ#e-#5mSu9vw@3aI}i@*J(x(E2Y|;|ALHSME&DftKtgb~FdzF4 zE8u0ahRQg>bjkR#V`iRSRta{l&UC~)SqM`0B`!0we^?FPvU*nfD=z6k# zB(T9gQ1|uDT*LUl86C|Z4&e9*J6s2;Khjqael^D+X}!|nuu&xJaGltCa~WA)I%x?L z-L008UUvw3U5;#BfQl?;P2Z5X*_?M(G=gs24f>^6G$M542u#_&g?;GY3TJyejzsk9 zXm<%$9@fZ)xFp8?fZTt@{~|7+YXsb3PgWmFwI3%~xR0m`Ri?E7WMr)MHbv>7BnOz5 z%l@!X!xS!>_9ThNij`W!Z=1TE3=B>3PQeK70F4{3)4a}m8r(Ueszkap*!r47FY@}T zwD)0b+uVJ0Wrd$0_^%y23M&}_-?OWDLvz09tn0Ts_6t7Sl@h*%KQcYh;o-8ddQ)hl z(NMww0Y^nVidTtE=X#pXSD7xR}}&tq8f zm2nIUdgE4R9xC%Sjk{=)b09gC7#s-D@JtVtL1<-wD?86x%rh{Ym_eUK20RDsKm5U$Ns5@oPk2z-&mp z-?&pb2zu>7revYJP5b%`@}lGA-~p0L17WQT>s~mjhy>YfhB9|ZZ8eSk{Gn+2i@(Hv zQRF^X|6@P;_tF?B-!jFSIKUsvw+z0JYn|XWS&b4{bp1cfy?b2D*&jdto@r*9nyIGS zG)YVsL=)*k?lUzgid@!~T$;qXl@N;+(>*H6HA@t+u`WdsYPXW4n^edaO0ikl4Y_XY z?{&_3&y?NIe!idY?~mW(*Tdt{nC3n2^FHtMKIgn%uji#7^Fu%85H-y8Q1lK2M4kb7 zD-6~3#!}!cOSDU)buB!*@&xnJZbaygWLZf7QFl$sss|GSh7xw{v@IevsCb?TS;i$1 zp}a-=(g1Qh32z7s2mB7OXpE<8mXyrnE@difSgN7XJOCpA&-%lRu6sqLn{5Zz`YqAC z%cZ4}j!1ifPBJTH7HA&Tfq4`(g&IzJqJ@{lf&qTCNVE`ldo$!6yyHMc9|FR7S_t%* zLm31GPvqD1N!k+J;%oQ=@yFXZblT}Yo{O(;D;FDCBEsr7DlIt^Z^U){I!&cS5Ax1N z0mo6G$-{FMimwb~C>!{Ne-vVhLL@9h*1z97kPKs^d&ZDaK(0{TGp#T0nPtyCn+W$T z#7$X?Hnm(i(r{N{*cw(_=D}Q7AC#QHnqM(H(QecQR!?8%q7uBToM&0BR?02D z0h;O**SRN25r72aEVUt%(3}<*lP!a?4K*09fxaha{)c;#Lhgwlj?V)cPm;L3bjU17 z8jyPuN@Oojq0Xm!y@I|W#Mn7Fi`+C0ZKb9->cEY5NB5nLJ)4Yec0JLPGrTKcZe&J7 z)&K?p&=VmLMA0p8J0*zuWG>`0nv1VRSWt5}Kn{=M>HYoQ9LM*@eJme-qqUKE2mPO7 zBegKkKXyp!IJu++ZH~TBR&{_qQ%M?n+XBRQVVh)$_bb3mkL2_z)ne439Gf7*0fZP6 zz&V_2?v%ir6JY77LJjt|+n}3M`sa2H0@<;AeT;-a%xs zi7FO&Ls3E*Q<%1&El2~B**r0d{Gd8iX#f#C%PcMg?Wi=ffsz#&B1Zb$>(y}w?3MtM z_YG0~4Pg_Z;1feG*sv}V+T|6LhJH)m?>w|c-y2pg(sc%ZzDl&e{%Sr*){`{QakFgt z)pfH|2@yc6L^JP_UcAoZDqiR9^1hg+?sGj+h2Q`oklty5W8!K+sW55-CN|y zb8A~UA5a>nJe58W;PBmo%v6-lA&%5FNZqsT`EMW<1~>pT@JNtvj*z*Uv;Qo{ic4^u733tzlwz29w-N({nyu+e{&1R=)~Yzgn$+rBJ_`p?)P(zZ$N7WubnhuYSc) zzj}FAb>0^BtJ~^VMe0}C8Qyfk?LI1s@g@yz)LJDgytRpfI z-p^x(^hgZNr_;GJNIuI@H3c7bh_$xcIuY2?DAQ()Gi{LnDs(T^LAO;F#=?VOA=U+G zg8GvEF2t!$#s6<6`=MAo4n7XXY5`k$SlnkJmU8X*7XRro$h;yr)EXv|%LyTPuDW}; z@$15LapN1|a`0S_w4ZrK{#;h8Si1zm+@%z&7)j7r#}_;8Fp}Mpe`UJf_m`(({)Oul zgu?I7flzy?mKYDa3=|*ti}fAK`*DxFG4J&2pX{MBCI(TONC#=;aCePSaT+cgG)69s z90dWlH`b*o(-@nlF&5o5T1z+sRiS;EAv5RJXDWhqpZ_fOi8{!;$zDng|g6d(4g!z=-V z3P243W*F+C1BvqhnqKgaLQGNBINvxE$A{=y#aN30-YmJ>j6D-Q0BvEZyeK0<;#+o2QAzzDzsh_&(8^%0KOW{ORe;Y*}${E;G* zSL1t2&8Q534~&uQVW5v!Qo~#{&>{994s#<$oDl7tCZ^Uf%$nIjX{I%TYdVwBSy)D3 z2_e0*$W2)q(bro*U6$&0GDp|&mvWZ_O5xj;+$Ntw4Ro?*#)33WNaPJ~3PIQ4EoIyR zECifzoure&22Kk3c&E>M4Qxb6Z;5HZeQUqWxOOG-YluPAZ1Wd-4wo%3Buof z(-6O!R#b2M6@+Yc!fjCEGepWr20k*JAw!aH24`?!;|5LhO&UqgFc{8|FOSnj&g+?& za?CYC4s38Wh2^g9$eXUr7Pm zIHWIF))%+U<(nco-DRY0Ddd9iL3|^@7;-_?5!3MnnUf3p#^UrB7xX>3AbgOHkzgD- z)2)c{-f%%c|3w#cIC@L(&MtX|FK9fvpk}xr4cyt?k|-9sAfQ6S-T&+>*6MvhhsgzD z%DJ8qEII>L8!!Nvp#!fJ_|*)Ll?JFr@d2KpC8Ljxb*~d#13MQRW7Uy*5(*1IKT4yHYevIT8D|(oO zCAf1DG8qI|PF2^t}% z@hpvW09+yMd=f)6;8mFTYC&DeVQmM$mf7eO6dwa{`0`5zjATa!vC^cD0j!4PW=QNttW&<#9Ba z>97lOsiR9JfczDp*9IBoY5j|O?odMxv0WP# z{JR4OU06ykX~FKqMqE)~|Z&ususGchr(QnW7^;Tbd^a znf*-amhXdpQ2}UFFox!<6MOFW6L5k?$@a4eGxhan`s>N$cWu|gJ*R2|v4M7c@WNhA zY|33+JytzbzWwP)@4sC-g8}JRwrKXK0j++%Z}c^KY^EIc`-yKQ;okOy(Xt^ZfyUeB znpRs!4F}kZVD}7y@7(ok=_r!Te`t0wVHRo^Xc6rR{B_@u-TXop+NsBO_Mk*u!nAr$ z7~c9r?>_+n3SxqHS}y9Rf)#wqVXB+pnk)L6Nu%+3;*Mo)6knh6ktX&7Q)fglD@ks3_vhd>mW%mQIGB%2TQBAl{` zvrGfBYm*=c&qI@tnmEr8WxNMdNeiwClCqj_pk*}x&~h;rE(#0PvWli*O#}+4HA0`B zh(CQgD+`JD2)@Uk4p9_EqlqE_{x1)Fn(oLVl-?0WrrS02Z_1CooXvk7XIPk{z z8zIgYLo&zU)d($Yf`)XOVpN!dQzQx8P)gpY2-ActIRuJ-(gmt!Rl1!?0?1gLeb-oZ z%wbBnycTI+nqu$88X8Ri+E8$JL1j|S@oG57&vvQ~Jc~3Di38eIhwH9R&b{sCS8LHY z18|#%N)H5fQ1UWj8+d@R8JQMNko_zknot&<%wj zg_xq&!p%2it;XKOCSf% z;Y=a(Fcy99T-*{DDo9B4v;-choq?q(g1vxw4Lm> z$M8l?#v()wSY==ja$9JU^~2Y@L`xJvHZyI$?Ux}D)QMXl+C<)L_jO-^0L3A0g2yPw z=;SSZIt6SG`{7oXeN%LX?6WYj_YhmZhHR~BZbi&P3d>M4dO{lYm!t-Zu;f`l83iy( z{RTlJJ}a#0Mp%OW2-;Cinp?O6kYn5h^H7>1PD%oVUBXE_aU;a7s1fd8N#8*uGC?i{ zy3TtUpth98j{|8AxbN;k7S7P?uozy%?0(Y>ne;ojDK^gd z&mloY=+89R2tA^w$@Q<~od^0h8Wt;XJEV=wAkrV0@Xc{@iG)WqO{a-|M7=e3>EJ#N z@heP(2SofWdPM7$5CKB)%6uSP6N$%W$nU5>PKTSZO0GbEgp#&D5^hF+?zt~Wo&)Yn z!XBe;Qo1Hm!!$=rQD%00vuW5Ub*k22gk^?m-xPj3)o$#Gd7{lXhwJFwG@9w zWAsk1VkGWa46!-^YiLyab&z%I&oEoUe|(eJ*q!i7?B&M)+0}o^(A_j_cAxuhv}u_c z_Um2Mt3M!l$%eiOLW7Fwa3^m7+MhuT(>`a|Zh9-H z3Bun{vdgYJA%V^F&+d~0cROv9PBgZ-^FFBAaffoOrv4|MrI&L7q@76<_YipDeH>%} zU^}P3j9|tOH(FvA?<1t%jL##=L7V!=l$)2|YjXKvVSEf}X$PljI-a_`x>sX!g6hbo zwd?9O)kVGy(<8?e99O+HVpS`-?)&d)7|cA7W(HU_Yn9p02}R5F?9F47aBuCd6QaNj z-NO1e1IS%!LvbH&U_(yJEhp?PYs;F`cnMUjNyxQ+s4C)!N>@>28&`Yy%Ys}w0cejmYKJCcbh>lukxBTHfILK)z+;0eRF_m=$HC1vuL$#Ng}cCpA)y29`h!={=mVO>1GA@a zjquH*g7-nAAl7WVw6WTTejY=`geB>;>Ja_MPl<5P4XeEGT`izli}x-MpoyHVG5Gv2 z=KpxBYG>11+M1;!Zyf!xcLUwkV<7C_e!|h++Sn6!K2^n?4;-ecg0PtnXhv~C@NqOo z;&&{JC7f%o)~|tFjZnXJb0&}x5OnWdI(`gi)LmiF%*Mv6rWG!-mdVIr7=}iuH6b*w ztLi@m-~ZeP2LUZIYPPjtj-3WOy1%|bt|yB56CcUR<2e1`Q}WDh3@&ukB7-gziM~UG zk-x=)rh?dSmIGo*SOveX3i+16lCx|e>-^y!s>(*dVk-8#^1=* ze^hBYj9UfR8#J?}ZX;J5)F`xFi>KhVgGg`WR;j3)Zyqe1N*=QX2merCCTnXWp{l=r zM{Z$a>xp3)7#Dw>a6f|{0UQtJA$hggd6Jg^r(2E$avxDf4Q_(lLGK*mkz$8rTF4(G zMqlIdT%C4H<-4~uK2zrxHU*z_OrWzO&#qKeNP7)}=T8Acq-(5&QQ)u%#A%f7%Rqbu zNJf2L7#lygAfHduP2WM-h3f)P9>SQRD27K|v5QK1zDFOptlp=S5snCyh{sW-F>x2r zDAyq#$Ac7v;XywNF-2?d_KM;E9Xm}JkSa7?7GpS$<+&Uv84*uRp!oF;>zP{ZW3?!* zF%G%A&n2M%J*kyRgC)|&A##8_$e&@rY(9?bV^LhczTKBC2FC(U7sxm4{6QG~H@k}qr=n6rdjr8PDWsR08{^w9-A8x-_MdHAEW@~&$i z{Jl<+nk=U;*JVGC^wKEYZZo-U%B{J3`X@4rJ1h##!v0}nSilHiO+JRBI zTFB`Is=^emJAFf7YLN$jti-6^(e z;{0b{LJ)9%g$U zKMFBLb-^nYCl%p70EBHc(YL2A30pmHB!Dmd)dMWO@kY*nYxJmIL8QN-9B?-%q5s*o zAsg+KhuFap;h6YOBIScU!KPVA7d}c`vuO^iO&O~Yp#Ex z>%sW|{}^^iPdpm#C19+>JKcsX`(U_yF?bMF8rXn?-(HB%EawIAbmkkfDW@22MFgVN+d63M2i60i-ZO3+)Lo^Ax%+KvHuabzLyNBu6m!Nq|cV zAW4IAA0??I;9#|ZrH^EAac!r#FFMtHbSkRKKpuJwPSr+Et=b`M>Z`vsQa8+27;$rgPFdt91220}gYg4B0HC0!^MQ(i=OX-|v>1LJ|#+x8@w zAA+b6Ow;%O93@6$*ZbXF+uedv@u&z_&x=DAp>0CcxC$G3*S21}tQnA#^^go!Zvtq( z!5sMTFB+b)iV6vxO1cSSmUSiPOfRMcR$E*1N|EZ4%zKqYl#tX;rL-meMFwel%PxpO_bQLpJaPMJ=wFN z$smIO?sWLsd|fJe%~h|2&RaFfpYuH`?CFbKa&K}7`d*FTJ6LN6Egu{pRmdGX-jQZ6 zsUy{7lVp4qOCF7+U%-m77Ij%k7!%v(rkv%g7H#=fF6p}*Mg^S*o)y$z!@&gvfpT@> z0frxi7@lePjcTg2+@=1b;t4$K!z?Pp)`9ibw&7fjp=rdQ#=n1^rsSMQ;3&jLC#`up z7_kR|*%s~;4FD0Q1N?=2=g;ulkmddV5@!VNwj4&yMgtToDo1X^P+V9YTsp8DZ7d(< zY6u>TF9*wP5KH%;ZYf5Nm>(7@AaL!cJ)Nn9EW+uY>~Lj2M7!uzhsxIDy9PptY=afA zr%I_D9Hj5ZilZTb2Me%Jpl=e)T`Dq75Qil*#%QgVbvEe6KK3`;Qu z&g!Z-d_?j)H<%|5!8C)eyatTIP*ski5O(QndW`~7!EF#QqBGS^D5M5z^aVe9>H4UT z32y!ePm`rAe`9%HhS&z7IxD44cTDkLlNJ*AL}E+1z4FrR-N(|8^TTw82LU^d# zd^(c0!$ei@=f9FTxZqJFc0QbgAQp?xIcPe}o8D&6v5h45hzHIj5Lnb#b^B=>z60kx z36vc)gikxt0sS zsGk58pi{wjx1youG>s(pMLF`2Ul)|?z{QP1*bByR!k_euA=o8^zte#Cc}8ME(lwj7 zmIQA-S@d&FOjka0!QHdtt`SOS2dI0dE9 zhKoU?H!>ULNUVTl8WFCGolOMry+p3Ria?UKLBB_OlKzbhry0aYFbpdh13N(|jX+Gk zV4o_)fLX_F3`f&6h1PWPT*C|aQHUwZ8)G77;F=EltdpxuS3tQLGX(L)BIQY$l@C*( zGlTgz4wlNySH-YUajX80-c|o!&A7;7(Vl?}_$|wYtT`& z5HLrhM|`S%&1RS-d?OTTOfgdi&&oa}1*D3a4QTG*VDt0@m5Or3{up|5EhlsLl23!zzv++SkL15ogUz#Kr&|Qu?Vu8*3xmXd-ZTi;7>~W zsm%XK$uu5-9$_1~yN(JRJ>ds{7Z0+zmc8&M4vO_4Ly-xP#K8$k@NW=HwhU)5UH8BVCdEDD2nKxK zEwIsHa!pqCTl;2-2}&~jh!KY zi6+qieNbWq{yr@+X*npvzcd9tYs0R?Mmg7O)BoHxe; z>Sn%BH=~jd_viE~(y;^rdgJ#}=hD4dY3cfy#QGvoqm_6$KX;tf1R5{pyMnB`T5 z^Y>4mw|j5}_L@C!mZKJVD5A+OolAz+5fy`}v%O!(`lFaVGP~SJPoST8rkwkg|6zwo zQe(FMfeU_)&kDf$w~|F8FHuHu+zp^OwoBfA0a`%w^;3`;c`p4 zm{{999qQ;l+rPy@)1D8y5OaoFd0-KRVX=TP2zbtgbNbZ?X!idHtlP zrG+WN&mG97>(?jCS!Fu3-|9X)mBXJ;nAsH)`;Q39pqbLN4QtF0!?8C=VsO#DU+EXE zU!yaCW2_Gt4nfy2k-!$x7lW~*p3gaRlPux?Xg)W9-@LH|Fo!gkmV=8M&6(C68O`R2 zSsF7$n!C!*W;H(tJV#c=sZ5XUX*ZUoO!PoYfQ+jQ?I$#f6i`DDhM?Kx!Cl}?@+HRfc|8mIjqPYaUk5&6sJFH zw@4`pVZ4PyT4~vio>eehr6QIbrq-w+N}4_AGRNnV_0;m!d4Rw1X#w|Uglo4Y6a@Pg z;W6105q=(>n+#)eJxDl2IONMK1A4oai&vzR#%h$S>^ZjuKDWBBRDI^DT19$sKG6Ij zpmZoeu!)@#q;qyehrpT%$Aev*$=4L|DV=NDgJzqcM)KCq3-<;e7!j` zemMpU5Tr}s&dG*TRve-mToT3`UxS)KJVT*@xzC4(wPl6oKjsZJ}*_)HnJbolbASOof?#biRNLH8A+W35yZ`VbG+O zOTq9f${ye$Ta#4R24@Y!M zf3=zY@Z?9u9su=}{RPCk3ISTZ6p%lF08``4AgFk4=NJ8@%>@JpBoLx%?72u_xo;*F z;oodhg1ZoS)v&$NAxRoEzUY1lFBe4C31EoQ4~dHKNE8)7uoW`$##s$?zs!Ne`ZO%$ zHR+!{L|c>lA9DcJS?s@b*a7L(9Kap3Z-}E7QncwBIn7W4Iy#ADh~Y6d2KN>06Ti%; z^?tqyU#4f2M1}FJ(J1-YGfEV-C`#u?(W9i>wnG~_WHczy*B^W``S4g;dBmgj^oRqi)~K2uG$~}z0BL}DUJt1gm2_EE z$>lm(?kY|T-jS;M;;4gGtXM-*a;f@zlQjaAp&^F*lTGSw3y593*(YyCi9 zE8O%{`lf%@o-h%TcDk55LR)Wr1UipzgzQ>4Wdi4*?{jpy3oXW@&Vj9G;$)jB)6>$$ zs}&x4kSnqr6%hf`kuR)7k{$ByX>KW*c*UT%&EzR*pjA2G+sRl*q4a;4+vU)NFXwd{ zAqHOqukhjc{{L^sKOO8ib{5=^GRKMVyy=s}@$sTB&#xLsFf)ItO?Q5k1ZFK*+u-wL zZsw>_YY;mj$;&8M2S6!FI0Wp%;D69rz1sP2YuJ6C|FDMr%eDU7cTAl7zkkR7?VMbT z`==)kQ_VJpYUffalzOBwxKgfmFjW(R(^2#xvqmc%Jv9N*5TU`ad5H^eZoksqux*Wj zr~{YjB?z+?DL|SZ=a)c40Y(gz1)Fj$=LQnen#LRV>mV=h;tgIaN~h3`a41lpoO`ka z5&Jb!%x`UsSW5olZG@19Vo7=|?=6>9CQUU$Ll)A#Mf?x0PO53^9HNj-RZm+#@FSe` zoPlF>7`QuQ>jMeHj7E3;;1GTP$aigE_1# zVpun`M?dP2#^?<2M$j0O6FDYdV=PEWfqqnd|PhffM ziSjtan(|*Hq&isByP~FdvwWi1zI&p553%QFM9)3V_RER(%V*CkiJn)StZ3hl%eV?)I`_oznbG99{USuJ3oF@@e7AZjr27?>ElE>ppxdDD~ zbKyrJrZCyF_u38~eCoBGxowcXw9MZSk>?>q6t&@u9TZ-~(<8Xlkm&%RF*c3pHZDs* zfDr}*;?snQ@No4-JUc!tRU}14p*fL^cRI(B*el0zjb4v@2z{PbOY-^qyiB<18sR-H zQkL$9DhcfY(T_q*Q8(eY3jeABujOv0GpMhSR_A})1NP`~b}}L7Aw@Y4tT{B?Mneio zSkRgjOQNR4t^|&2!=i9L&M*w~7tMj3Ay*ujr3E=8Ik+ZAiTbEyFhgEG#2OG@_EbIg zo-jsfO&K^@fB+Gv#0WM+G6yKm0l6eaC!EI{DnXf!;Wj=nC;2=7=Eq%Pnt<$g&IZAL z(%?Kcu}o4F&2B%6GnS<>;Xgzp>*W!WD9lSKmJZ`anvW32DXDfSlT^m|$3}l`VV_2S z8j>F9(-S1!S#YOWS0Jd!g+c=C+GHX?UBUuh173JbrGMMa)`~^c6pcQmA#Ne1C{re$ zECp6LvXSn?TSi)pJx-dZd9UZzo@sQ-W0>()N)iTg5#yA_stM}TT$soX6;3ilctimc zAYRg?y0{C>QSLOU##}w#po~S$0i$|AOH9R8Rw$xlVwS~>ioiQ0snB?;vd7yNw!->Q zd_&lSkRwD}>7#0!1hofn%{<|-1K=IC{1T*UZ+Z&iaJjYMqC|u212yA89B@&S602!^ zOCr@-tuX}QOA3H*f`6tXX_HkL;sXOP*{ebX3-r3+n-0-X9tSVqNeCX~`y=E#fL@t! zS(R&8FWHS*nX~GEDM50ncXE5efB}#XoH1k3b%!Wxy8=c9e-FrWkkTQ?mK407;ml#) z$#Mb1!Gk;sLOLT6W_GSp>=Dn#lnPyYAJ{IDEz|)zQ&9=>%RmCH&?2%T4R47M&j{#b z_)&-jiF`Z2%AK z=SrhCWfMGABM~gr(k-jB*oC0j1wN3CYu0*e9d}iiIYvB+QhEan89Jr2v^Xyb9thGY zN%wH4j1t~O_4J5HmBJYqrYc`sy7O5G|JIKAb7Xp4K|OWSfRp5D)VDi|VI#|3uY$mxENV@~g_> z;e}L+zWyw>WIg@xrk3+}<)oZP`nK~y%L;xa9#IZQg+Gv-b+4WI2i!KC>q50Zo|M7m zDr^!od{gAhAlH>KxDMsC{^lz!)u|Ep_)0&P>ONIlOH1|MD)l}V>fN1zz7{{PtSo;-%S=-27|z|E-7n7GInI|E1^Ux) z!~&mAe1yGZB^(i_u!uoNlw}p-BY1fkD}m)HW-SHMV_(K<^~TipX8?Kl46gy~B;B6d6qmH=bK$ynrEGA`=FL3zruO!AEZmcusuP$x4futHN(7CW_~x^{Ffs0hm3xYWk9U{%w#S6yTm@|D?R8XBoFZj zQJ3!>m1GtV0ae=!*S=+pe~oTH^S01cQUfsyNZPCI(SOR~<=4>m=&e%SC;qy>Ds`Ww z={~Q~eH)_pK1uJRSnst|?@hDrAC%t9LcLGTdVf&{78V9p*?QJ93_6kwhGZK^ZW|0$ z7z_$G7{)LhZei#sGjvuMjtn;(m2Nnu$Z%YX;RJ?IVIf>36E0Q=zX=yEOBb#v5(c#h zS20XhTbQhsnXJ?Avz5_j%Wad**(RG-n`}rnS#Qzjn5@rnMV}vvhW&YT*h}WHKOPT# zwQJb>HN)P{9M_zd==SPROx(tZ#z(s2YF0mY_FtDr;A&}QX=%Z< z{Hvw^r}X|G6#d_??*B&C|IecSlJk~Bc3Il2u^jr!(mB9tSf4Sk7CkEODP}i71Q$}+p?e+Ml5WF6bLE4a;Ucl(le@586#VS zq79q@DI5mn68LThE=LLCE1;*9l#PfVH}z{wf#pEQH)0Rz%Ky6a&-%yCzv=Hge|H{vQo}x_ta2FlL5r=Ig7+GBGpfNxn zc17}%*^Ky`G*}=XC60K()r1vXpYs9jA4EU$^~JjbZ_{tSAz%X?de;wD zR&qan-M$b=J!l30{I$pyD)JAmT5uH>QEcs{Vw1A$v}-yHEd=Zl^BGW)2D^upEPq4` z1*1m|qyQ&fG&weHC)-;HH5MI&qd~gefWE>xv)+VD#Yu;lP)c9Xc+wNyE?O%(5%dlr za?9IGcR3j}q)!uJ`^S(+<(BiMj`Z;8DFX_JpmcG=DNoCBQA#7O{(;jdCk^LEIXA?+ zgg}BOSz%!v&G{ROBsnJ$KWgff4F@Zb%4xlJucBY-SBvt1#yk9S?D7E4vT2W`>T%>Jy~fnRBsE+b0&nJ*Or;n< zGr>NcR|4FW*O(IGU&8bi67bC_oD*tRq<=j+(5>cLu^n$V($SJ_Vq6Qk>ner)U8GlY zgj2IGQ;`-hD3BqDzz~_o0FgP1P%4EIkkzv$t|}SXNlPxU*vatt!jrs0l36d24fke< zBBjvC`BJKlEpTXHK}yOh%?XFT)Q;#e?b~%^eR-=TT_rKn9qe@|nFm;wHu8=2*;2=G z*%n!gic%4C^8%|(%1#p%1Kcl7CZ#esj41wyaNiiYR;Dhwjzul!fKD7J)c}~w9>BiB z!>>FqmKgJ~E*g1~1Fb;8H;UZIv>_CJmE`F=zGHJnr0OF_H@TA%lg;s)HZ&_80tN7$Po!|)5n z{lq_HP_^HgMT7~1Pd*>P>Xx*FLp4JW!H;|(MLRYr4}pqJu3zIuJtd#qDr}nDep-j& z&ihm|%Pa!fGNd7u9e-9JaEWte(hty@0v(wLucdyS8FROAN(5{~US8v7Y_&mUWCmcH z1n!jdW2{?NZNvj;J4BKpm@{g}TcXvV{K%kO2f)Uwzb?a*XK&|?wk{;?IAG2?G1#g5 zpFq9Ta91qePZBdH*p1JUkaYK1J8%2qyuw^|zH$)Jx^7s8ZpG-K;sel)da-FgL^q<5 z3qxQzqIbG!av0A@%2#0*Hyu*GC39b9OL0~RYW(n+^}kpADYPu6`E2w%p^Zo}&)Z~!Y~fOHO$u=jkcG{ACRE8jmB{9(qZ`N5(FutV3x4|rFaXZpzMcob@Ii|q(7uVs6R^m zb(kNa!GDEtXZyL|Q!-J`S9w*Kf?8|@{`{|lRTo7XcFhrozR!rC@i(dk0BOY@<*4nl01fu5#~sEXOq5LVIy-Dn)TvF;4ge1 z)KW@l-q>O~KdPGO+~D#34SanShr)bU=)YIOV9@xqFM)J<^U&IbBG@52`9vy#4eMIO zWof*n!T~?b-d{yq zU=Z(RoCI6;tuCxLcA1wE>E$8(84~EI&YuZmH@%-_f250HR%rkhT{pOG%+COUE*^&x z-Fb22a5wMuQ%4Jk}z^jJI2?YnV=v z0G&flrS~o_tB~Aq8uu4$t55j7At0{&pkha2q;zG=fZiXzdb`}HSjOGH@fJqy7Qde4 zvUaR~F{QucisK{=`=|x|Z}haXBPaQm4Iy`a3d;VwBhqh`0RkO;M#V6Xco}^OFY*&> zMebJhmx50?Cg8>^Wo=zE$R@t|&jV7mE{ih<*MtuD1W z_hN=(N2J%i-fP`Yn0CA0y_L|eMTgvax)QKbG!Wvz8Be9?EWg%ef`(_Yq5<_f>xkb6 zLe-qL6Hwt1e1l#3DAaMTMiE0RxJT8cHg@%#tmK|auVxl((ZMW*CiYC1lv#Wv;S6pi7cqFrw7xVcPEBkkh5AnOa5}X z9r)G}{8HC>`TdmuaK!nb+;qXc7DBjL;?gklsva-l2q*Nh2Y!!10SZx12UO5(P%I68TxV+9Es*EF60 zPgqTX{)XUm$5;pm!e3vsb#tQJ4lz~ko4LUqj+2$1GrjJ8gWYRkbX^AgcA411bhU)2 zh<=-eoUOonn6>JW!}S*TS*w0_oTT*JwWIMOf3-_(DAek)vgbPNNZTD;No%BX(F5ETE_*1glvYh7aF^GXY^LV4R|^J?O6cHkqrceiMVoNOGxw$TCXrP~$O!~rYb z6n|XTKIKGl64L58;}@~Ytl#8#)gm&06=0w$hPil!i*nB#q0Up-g}GfdUg3Iw z2BhBJtYi;+t2OuZ-&qg!kiDr-agfbqOtGeu@KYk5BSlFtsPz5nw zp3?0}_~ivaYb~Mf4WoV25+S(95VVxXWTJT<fQ7BUd#$!1E~gI@p##zCNn%gzYhU zq{lF7UG$4w3}2$#=Dg~uLn$;k^$0gdEge+v6tss>aGT$bquW|CAK2HpA@75Z(0{z* zjE(Cixv%Xjb(F{hOB^B#$DWYT{EYj5!pUJOoZ;14O4EyjTK9Qeqa_#Kcr|v=eY6+& z$BW#HW%f};YS7@sYDCiqSGs}+w7%ABq2yTKx~^`xPbuqYrt~9_N)y2C9x;lr=%elp z1Y|Y9nBRK!nj?2KcGCTj@y8E@y&KkANv$~zP<9R^Gk}Cy$QHwLuqD)e4spAWe|Yd`Pc-s;Iz6!hLgZny{7O{+ z@oI2u=t`%ZYS(XN$Kk0Wa-3>$`ZM@XB={S7=3pySoWS+2;f&ua(&tx$4mob?5-?|q z<)K!+7Q(vxiDU&l|E>qG95W`_64r8*12_fiIZxYP5aHNQSfe4}YNYoV0R(z;mLwTt zs|=@V4RCM!>TY!E|6r2(Z&(|IvccKwvi}>bP3FmL@jN9mSaku(bWpxcbN@cG`p-f! zzr>$kmd3Aa<_~#Z>=4unC8m0RodyslY1U~L>$auobvNrtEg-LNOYd9R z(znLKyk246kZ#`8V%}`guT9afJ-uH?OTSKw{#}qaPVe8{(qC$6Ef28vwjAJo)Y|j0 z_3VHFKFoo0iw7*Q92gidaOu&3D~}G^{CH5IrKBW4Qg&2Q`B+k8X%}KSC^TTuhQ|Zz z1MC`(+BH44YqlKP7BIB^=+KVGLpv=IAn9ZAu+K~<*F{e5ZccBHI(fD_d0RQpUgYd^ z%z0j`v%l4dz(pgL9viW;bwr5O$k0V2Hyj(expicr)!33nW6O?>t!y1zV>PaR(YS_V zHCv5uTQt7?*!T{s37xIuyRJ?67&+l>>jbH_TplQQ&yahz$-S*7&JLXDlQD5# z+eClsNyT!{(kRcuw#k8kla^*oTG=)!#CmdQ;N%S%lQ(C0RX4eDQ4ek`GAsO_ECg-yz(o-1Eo4A~g`lflL-7|Df=V}+xN9z(*UgvsYl#Ihi)04J z?R!R-zixY)Zb!3jr&zDcU+;aIp0r5sGaiBT5G}uw<=L3`c0Hqg(1HKAn%gZ9*nqJMe0$=gVEKlDdHa;s4+SLdoUjA z<-u6!Hn!~A*cvyL2jjKzoo-;j=%L2Yr2&R6YDz}Qlq~twyppMfa?i37&lY`y@^DO}XxyHgRs|^|@IS{qnB+6;7O2c70yW#Q6=^=Qm$R zFuKl(OXErxDq|LQU0<3sX<16?vb0IdGfS6eO%CgcP7+q&fa0kKGP2Lc9 zV?)a1jY&5)rcK_Id1F)7l}HJV$RCWkdl-qLFmz?x^9XdVETJYYvA!%3&~t4VM%P@nQ|XZscQYl)<3P&I18E-L zXWsli%j00)&4Yy=hstgqs_{r|xS87Qak%|vW{1|1u5CxUwKAi&XC_TKnNof-L;FeX)Tyr}rR1m5Ki?Q>n*&z;u(F=zXa`P!#Twx6!lK2yK_ zOq2H6w(VyNr{0CZU zyYFn{OmPBVNfP)8O0f4ss6GF!Y-f}%5rFJpe_a3uESm%j8X8u6P|Tc*qiUoc03i3Y z`?hZtUOv0?Y~bd{%B2!tr;i}q%3A?lM)!l z_-1KYrh(=%g#E_CIar49AY#4wrwkCgPXI=s0_Q*SvXq4D8~GUJx>rVUmujFC4>+}b zB}C2n0V#~xEYafQ(gB4$KL+AxKy)gB7M`lVIOG_;Z@LIPTkJXv5JxK{OI5W{&RWeP z#PPg>a+_T_-4S(0af+)BiK_T%))pG3{&q0geqn_0kCl|DM2lc z+iPTx-+zab?-{gHUwwq&a7JQnh-=1hykQk6ZsH$>Sf%wjSt5XU(A#o18OMkX2IcVj z%UrjLFQoeYcWx-1`v$KC8MODisxLjvrmzWZO^ z#O{Nuw8SZ=1wJ*7kc0_k0J$`Zf^-zeQp{6nyM=qzTmmm?5#*;A1D$a+j-OLUJ)VGJt?Q{q$6Qd3;e;!gm(xm5hxC= z2g49e3mYLac3cD|E`ab`t+H+avj;pP8q{VF#~l~}8Gp-k01yzop9{*R{19++?#4&B zgQ$#1?j|pMHI)WoEKy^dLK!px`cpZ?JiYjEF;18d2bV}G#1xeecf?-T;>uM@j0Z-wWb~`Up_!?vtB^Xhk|qTH_=geGpzqN7&o&66vXcP)=LFPQ|NU&pjB=xtr33=#Agny@HiET8qP!qoB*nyIHeX{N(28+^ zg4d?}Mk^|Od#YGd3I%d8JOaZ(&a_0VOez|PTp<}nq-3&2Qg$EIP}bl|1jC%?=seY% zKbtBQ19_L#hsBaEqwUu1cPM`+ryeVmrrVBSZIZNS*BF{bj1xY^S|d}Hg8n#9+I++H z7L-<+cSe6lmsT{4l>yuvpz?!R!`2sA+SdmIwPAEG^+CjB@05WGD^yUxqw*rki^D_- zx()0NfE|c%63-&_o4wI{AVV%2!n42`aeZ7}K1y`kS@XZW>ZI=vz>-!OB?Th_Tf#il(=4_ai3&5gYwKCx6-9#P?&uuNB zt@?}*F9^>^b4eT*gh|aWK=DNJ4P>aZDvCXEhMLmMm!jec@U!XS$zW9Y0Mw=Q5PQN= zz$vVhwz(qu85mC_^V0ePpqer9CsJt`#T$&4CBTScA<|Q}VvsV0x{Ek9T6he4zrZYF z9iS>9J-vo8oj1BkkcSo9?;3lL{$~m0BXsE@H&pZx<$}g2l()Mig)?FN{pOn&3vw6c zDA!vE>&u23O?Xvi({Ga4NRLW-*eGbe0F}6Jg1E1IYhn-oB51#mb_*feS~yl>sKf;E z+CknFDlwhk$o9kh*ms&x@YVpg(e%@R`= zd#(+vmT<6iS@9V~6(> zaVx^#!9DPY{YAV!Hyad=U`7bF%TQ^7&V^4xo95v%lk#4~C(z0-0`=UBAi?vLlw=Bo zZ|A0cA*XZ34peZj;yO|Dx#({67}DY;ND*lR{ILN4(LX2pHripp*=ua=^??V-x6s zLIo+nFUcA35f@lX?7d~0TvP61=^0XW3gQKb;8wwP%m%ejC~G!dw2wuK2n$LCZ5NXo z0XZQ!3SR@Yh7NXbP`4sZDhW7d{!51CkWlnOIWP-oo zggY_-@5)QB?hA_VtcMGWha*9*l*?b#LC&b^ARz_>r8#m7AJYsQATw?*m8ZM|j0|MV zzgu-gU36%^{OOjHDp&U=_YPg{c)nhh7_D|p#I1mg=%!Vl5f>po2n0^mS<#YT-`cLl z8@feJ4mE1T(kyYz@oKW!Xv?{Yn=RjA_G5xIomY@6XSA>xL7=RlZcbhS${w{k3AOC)rhTg zu+MvfYcC7U-r#(9M_zLE7dyNYG@dK>mPn^i&>eJ#9*5rnhK=Xo?mh|K>Ju(lPy)m| zKhiCQ0#Qlh4`h$On6~p05`%+^s)JV%&L|+EC*xh0YNi@?=*ZS3?vW^=D__-^$6xDN z_j&@P?VW>a{*Id4H*^tHJ?byD^n@)Z9HA`sKKM_^sdD>jIm+e7kkj&}Ep*2nTov5- z!jmDA|8!&W9ksD)#n%h^Yvb`aZq-r8NV(^UF`%5W`*kd? zn*hQ(??r`+I+r{m%n+V)FuuJM97`85M}`eZfc!4fm*~vDQ%>id;R@dpM~A7w;M}O9 z9E%ezP>E^D7`klm{B!bTLWs9OazdQjdhwBfg6>mOkUNi&Ygpx$$q|K?k+q@JH`fLz3Jo z(Z7uDmHlV?mq7pn3Mp@HiJ-7CE@+!m0$ri$dgn|-9}8}l+f+LUYP&QziV}x7T+X>P zyw;wMR&PJ&5YQv8rc90v%yHP2<)ZTv(3MbNg5cBiGOlS6b=sz@&bN#VhCj>yfXNY2 z=@lZl*|}j*F~JqDQMD2r-iY0P_UnSG&#eUu8DyyVUjW+?_+Avw<`S-Y=_nFfYluqJ z7T4o$x%ZBe#socfWcv%oh7BT9cUW)(eew6s`aMyh@62%*niN{<$A+USm&REQ2ISyT z-0R0_Qfr8;(tw=2t{Bund|DBWQr1V0H-*V13GmGAm}YVF@7cwNl5X%hJ^An!BX0{j0luWg*xy1JSY*7MVFJ1C(*J;J@Ap*J7n0#y ziqt50VQ{$c-xA}~# zTMQ!Fc1CZ?fka;qcXmU<|2=UwpPNt;m(W9>?Mo|I z)f`9?^72dK^D8TUQu2T9ivPKrS5O~c(8T+xE&ivdgfd9(rBvQ5;aBGK%QF(nPxC7v z0hj=JKYmqxLRAyLx-Fr)gMX_l;Z{^)LxRrzJyo}qiT4jB(&@g_I=?{9zc8_>Qs+T^ z;)5oghi!=uJ9Hj(B|hrbX^+~`o}l||&yHt@bbrg(@!M(L=Q%r`=j(Qq?C7Y}eNhh? zziGd>SO4BQ?T`1>e<*jph}!u+LGQz!ogWVAeazVT@wDEbIXnN%*Xu6X*!WCyNsGP4_07rq1YdQom2pjJ`K-_kEJw@5OEN7Jc(O$>wMD&2p2? z3iSKGN$&sYwoS5uP4q6CleI&#ci9%ql-#V96wS0vpE=~tF1rT?c29N{7>>QZdu)~AxI4SYJun>qWcTQ;zSMa>i)t<=IoW8T&-vnOZd4^Jcy0?b%-U>%CfL zPkUBB?d9z0AL^$k8vE|u>zisk_xRqqXN>)F_xcqW&%6HB{M&ct-P}9B<*NnH?ksru z)xrmR7k)Bc8oh66qHx*XealjX%a89{enz+=ci)Nv;mYg#R#pjv?(7SCAPj!8FZhLU z)th~*J_$EO@86JUvT^VJjj1M^j_==e#^k%){ofUsY`(sKbCpTho&8}COtw7PzvYF= z);IgNelm%RPKm1$CEiI%d?4CU|NCs;gO~3gEb={c z^ZudRrU&*OIPfH8#|zQUHx1j;eYT%$*q-eZf4Lz(QM7Gu%C6lW@4X{d%r)K+UL~q?@yiS^JDHWKNihBee;*ow|_Yo?w7Z%G4IazXCCx9 z`{etxFZ!H&^ZmKYe)%{33htW~R5cc~`2F&a z19ryVgO^kNZXRg5nLe-lWK((eyo$?B71#S#-fXJ8J+JD1Q&r2n>Ss;WFX!F*&~z(& ze#5p04axKGA9!#-ef}>eQyUA+o35KT=B74PnLoIb`rv{2!zZZ^Uzk67llthBd3*HX z_QZbA_8xwg+V8jHhkrZM?|JTm50@W4FIv!X^I^yB1uyPDe9^Mt_h%1(f4Sg~4-fwc zU-*98qxZ>2KBV^lGkxL5laD?YEd29w|G!!met!1o^Mgm-w->f<$?Wto2rt z*PMO&->XI1$E4cF{k4BkYM)Hg{;^Q|OtbbmikB_sU6AtBETyZ3yn_FSxOb0-Y7PJX zXAEnUk&)7jK~hPQEuA#RSwaXQW(;9Rk&1Q)gU~rb>1>cnhb^ge*zHM@ z4!b0k%GPtOwT5)qdw;*r^ZLDh{lnhOGHcDc?{(kT_4&L%lApPhYDb}ke{d$@E+wwg z2forrk<#bkMkUT@h=_YP(|DpLP$GEVzd5WUS*Mex=3_aNHKZArNHg0=Hh9jYyxc-s zss&eQ8BUtGMT*}#^45kaPco&ESQ8<#l4R~gvOqg=a*x@+N}F-qRFClC&A8NMwW-US zQ&&i!fdp}sY2nngNE$g}B6Q5sqFmF~a?_&2(_)|#mk%vDay;6MBd>2GCw7sO`pDVe zHRC)-Y!4if7dzs&eHlBlN93oE*jY1T*QF7=+eYl^8d1r3N`5pC-W6f?Nc~iqj2Vu!r3;3b6pDO`xKhx6>rcKTP7;rv{r0&QoQA< zcso$>POM^Ey5ik@#e4e{@7E|kxTN?;o8rSR#XtKLyXBSM(3E;6D!sK<>UC0j=c)8Q zQ0YUgQeV2#$9$zv`;K~492kjE~PJhO4Jd`%JiJkra3B{oG}Y?#(L+duE`lE z$f4!r&IE z#GR^mc?mc2 z65r&lf0UO*q{pAkTQ`E9L#J<hC0)g1NeCF;k6cAfzHR)+e?9qOm{tDiop ze&(_|Oe^P}sh|I-euKEXnXVZduC>@ewTcMB2^8ywLrUhT{IX;m1}Win3plh)B0Zl& z--Y+7#XHm#>SW|o1Ynt+^9^eK@Z&Q|l%Lub+d z>HF&HbK55@Z`Th=p5Re5!CiNPYx{WTqVZ0=@eaD<+3ni>h1z}Ipn_0Jl{*QcvXU9D zO222 z0bLct+89>Iuug7=#yvv`q#)=DdAJ9ZGX}kw9Jj|jL6fv;KBs=-6{+;aZzm`a$jDGM zZa_8?T#f`nXIvtk8>3vwF!tr4f zBUm}VIyk?b8(~U(H#j|hHF0tLbZcpwZo6pjuO=?bkr+3>eb%r zFvd<6s-HGh+q+P0t@pSX!MJsW-1)}>)Fcad+X}^ z*y;Q6^aGOhgNpQ5)#1GgBWDu`wSZrrlB4bzxp3!#0qcTPnETbwn zqhmb7vSh>kMTQ6K4A!?BB=L++fWh>b(U}(Tm>R?+8?0+LIxjQjk?xeoU`2I9SwPQ< zro7NKd246#ZnVkEmMO1#rgZa6J|vrbEHe3AXYzNu$rl-xjvhalv{`TYKqA^S5T&G672!<-6;&5ctZATyHVyWb zqZ;uhw7i+)j56KXuI4g@BQW=bs%oDncp?Do;<*5|tH*kySq9-kR%))wmL@;(AIze#i$ZMcBxeM}r20`-KNs@{gz z$yW?(;Zw1;Dq$X6*V}^`ip8wUKyN@1a#eVBR$_(I6(Y$vRyqw=qDCXQUiP>lE1Hk6iEudr~L zyT$6Gn8k0+vT}-40lF88bSGF)FWPQIGOc|#PudjLTT+R$7Zx8;rj1##W*z zirYp$Xwms3{R#~V%ngaM(#GtCrtvNI@=gM34#ud?KbDE=4tw*ksvT4rhWBhOhUyQ{ zVk9WU$;(r`8NYt}kh1)Tc~x3!fC__jf>lISc8o#k-LO)_a=g?qsI^0db~@w2iDL%X zTJ7Fi|L(2thdPD`Ror#KLyDvQUZDL+tUW*+Z)Z2&F&UNHxfYFgPoA)pH(|N%1h003 z1UvL87AIp6QKugY4>B3!Iy>XWWaFkfJw2G^@N+ivw zv!Br@oY7Q2<2q?(i~Y>o!kPE#XFep^wAX(+q@##_6Ti1)!V+eM-_Ji_709I z4s#nETx4gtIn44%nYFZGmY1v}&%x0@#W4cc+BwXQPMICoFuTFm`O;qJI$2QM&Au)> zzr|txL)d+%%)dR}r9;-`Rf9{{UYAbU1t7Y6-vN{{ce@gh-nl#Zxx2{y;&#Cu6n74( zzbw7*ikzk5IYA5wjLYr!J1WusBg}dEKn#jj79*iED+fvf5;_BF^+Ou;1ETx`V)cC;{C%BD zeVsdfUG@Fk{rx;k{g!w7arOOu{rv+={X;ta!x7)Br6G+QLaswqMt}9~4Xf`pu6~Gw zwmXJ)ZU}we82Snc>j4E;XBhip*eA#65Q7+4XGhPDi3>=$RF-h{X+rbGm_%|y-Ry+W zfat)o=$6^*Z>O!lcX2(}Alhzrlw(@d+>22zn~k~%}`?+Za-t`<O*b^EY7M1r~dw#B5Zv;%JETK6wXGDYq4HqXGG! zd%w&X90R&{_Ycl!Cs?T+^1p`eXJt#w6?L4QeEQLOX)F$oDrWr(KSX(enmGLGY^pR& z7Kh$c0}DiN;-EpklqDQL*#m&oSA|k#{y}L!<(FlLq~H1N93pY<#;I7AMk*L9E5*Fg z1g5+P8;o*skkwzu2fup*r-NyrQExc-%B3rE#4bIICkP=3;8Br-uJA&dkxESW`c(+E-eicn(yg^V*;#x@<+#r|inzeigIVdF) z&I0M=FwrEYm;}0DE%J>fFCVUg-V44e zxX6C9dBckfUuC{rBa)dX$uf{+g_js&h1S`^sUqRDa^dt^;f!YCOoe12 z6qrx?#Z%4$)WETFp6PN+^5vH9lUr8vgBlpGK3J2ZoXBf&H86;P|Ca>_C_U`Rhcd*l z0z`Mlp1u*~@(L9{EkNWeoJ>ax5Kwv;EH`AGCuB8Kvu;Q>p6iwtCcY~`KXN<-K4Nji5 zDsF>!C77yFa>+=ANJo@hGS_6^Gby=b3nmN-^wx0?9E2V|D#b8{sAdeEtXc5f0PQCT zAFh_yE_9UUM%XV<0GWYu?=v=`6$7e(d7hR%Tl!O>C-&3q=WGz8HPE`T@Gw%AG(2nu zoWH)Yy_194AY>B1g>M_#JEXWS*`KM0D2!y#WR*2k z_l^9AGR*&5?Ex)0;IsDskF3~#=z9G-E_OH#7Mfi+J$9%S)&V+qB&>HsSU(aANZJ2) zT+Y52%}*&`2>k357Iey9q^mxOED%1|$P(#Z?I$Do8TGDFG zP*G>0`tgNYoolqZancB%^0n# z%hDb1rmG*JJ8_Gy;W1s~7L=|vRAjP@&;w&QTIngmDm_rb(Z4kjSh>9@S%Q7s~HB6E*OoXZr6m^an9&$4*jWFD|#qa=>bKDG~TLyVySOw^K zgi*~Fqf=PP=Uk7GWb~AF)|3vnDV-5hy0%Pter$@g#xvTahh@_1X7WD5q;HGKr(-7l zEhYm!CJYspt{H3mB9?w6Yho_Tu##nblQrcni>YG9GBYz@WM&y@W}Ry`td zR%AA9@1kj?k<<3&PCHOJ?a<9>N8U~=SDAjyYBl3d*W^w=RXP34&FSafPM4_I zw42#I4>wmoLHy^Cz$N80w~+J36E?Z0U|@Ya?w#!lDV zZoIplew5wBt#*c0cE+uCQ+n-~W9(Vx_U7*PmQnWBTkWS++0SUTx9PR#j&bCfJNmji z`bRkiZgmWLxg7;Ai`nE3kRJEYLb-_UI0>)T3T?;q;wQdu)xf#xK zn^5g${KReYJ2%q_i_B&%vhZ7EmAYtZ$)f2O7R`LJ$X3q7dxD40EDt}qMFFWEL4F>= z)gB?YJVM`jgpXYuVX-*sm&MU*7sqZ}99O+K;nw2BcZ)@1mljzp-TTYZ(zQ$XZCiR^ z*0NK-EIYn-SRjv9wax2! zwb#pAUa#JHb&p-yW3jULmzD3=uI$^k@>BK7{#z>t-mPS)@^meE<2`u#(Y%SY+5yp2SrhJHCj*Dbj zMVc>;v^)_xwJdVRok*Jxk=$|7yu9duv}m8%(S8BZg$8lOv*Stv;*!X5!6%|a?nH-v zhz=hY6JZq-wKyg^CMGs7ChkN`!kw7Jm`LlGxP5tX2TsHtx)XQgLtOc|_+wV_Rg2?~ z$Hdp<#h*G6f96j7xexJ@af$6#i5-g*J7W@G-${IRG4WYh;tTM@jZ5mWO6pyl^gbr3 zFE8oSiKPBJNdq5}7_<~FBUvnujHhkoa+Ad)kcqUtTv4)kBw|df;!2Xm3J8gDVn>Mh&7NXTB|oVO{|H;(k^*Z(>O-R z5n8`D;aAQ?q==TuWBiK4gqar4A0kXU+$pD0i4g(T2>{Umwfm57L* z;?MX^9Ej|tZ}sQ?CJsXO(f9g`eiH{Hhv-%QlHbIukaBv1KVzpj1gWC8`g3=RS0gp_ z4u8>3aVT;fDTqbR)A<3^J>poTgT6I@yGOhZ>7wrq5bY7iAus7w0g^r9c%+-& z5Wpx9Cm_A_)&OpScsj)GTi#H+WYOR6XVsRF-My)oewwSXSu~F*} zB$RUU5uRFR5WAGK1Myee6~r&){DuUp9SW)~ zNK{7LkE~bg3+gT-?n4UI(u0`?IQx-OwOzsd1L8eMg4*6-(E;%RvXzmycX$lyUzgZ4F@Vm=k<1~s8wyVsyx`_{(&gVFXISNBg#%NVUSc({#wSkLo8 zAxdj~h_yzckc{>`y|qw3_i!6GZ#)>d9iYjnJ02RIo=_pKo8Tp*?=CaJ4YzT(>q|}B zxS!k3xGvea5&Yb`lUu>k{ZkwFU`4s7-Gr@Y?f_2i;va0>gXLtjwERytZYU@F%xu*g zv~fd4*~g~G-nQEZttj`A9PB!5Up}@OvT@^f?eEOo-?+EI*e&Z^*D)LF%2FFQ=HYIa zb-A4~9}L`3QGVIs(mj4b?~sif^Kb)|7%eK#`o;ObY}~aImN)nXYTo6IQgs zdb(rD$}cw49ti)qpy9(;rDO}*h53d_H(7yZa6 z#>ATcaLbD*IIRHq*eIhI?@t4r_=je{|35Q|uNMBuC?3}A=b%j#Xr&DGQRdc-cY)j7 zZh{B2Qn0(8myE&-f}wZ9o7`VF`RAPyXr&D6tb{_-1@FGp86-mArA{A(7vO!AdUF?& zg`2&FhtOhay@eOa^7}ptbWk2!B@|nsZeUdYDpMbxQNhRbMfIsC|3UOd02^=W8Ltc=E6e=DWIV_tF%863i zw!Wd>9O->xOO<0!&c%a}Jg|@(?62eZDOzX#A?xWeelv!jPqu-2sE*8_dsMtcUW`0~ z^zy+h5hz+p|DLL0J(jT4Ym#m*&7#|jQd802MejQ^_^RL!B9lVqD99ju!Ba!0*CNBg zX{82$v_X=>qAL+}Ao~ep)=Jq(tATq%uG*@eQ@WGh;g!6-q&!vi*>>@`qnPbEx$U z_FQl-{K95=Ib*i@7+?01X88$l+CQlQ4*5lgOr3y3hFV~<9hh)2?qHqFYv^V(Qc_c) z7aeXdX+imPShnu?@o2U#hw~afBzd|ZlSV5gKroz^T{j$H4x6wQOO@S$CZq^x5d2)1 zQ;Bv?(&+-U1p_wYkqU8`%{W!=0N9Kt8&_fFKRF^*mVh_hWoW8xsAbgDI0SA%$Rk{W zHNdZyciTV%T;%Po4qcfn=*q|+#(Oc4{EXg;=x4kbNBQo@D|46eums-D{ex+R^aEFQ zF#k6mHNqc^TE2zi)uAMaQUCqFc9eOCrTnL(Qdc>bihI1Hzimt3Ez2Y_N8N(Jb-W3_ zXy*~EuiPOmEWT^Py3nEc3O&Sdy%p@&>k^YsrOs(%TMRaD2((1WcU98)BT(I z^1HsXbiM@Aiyby!f>z2--#=MD7@E%C&4O6>8CuU*i;Rc5&uG&bcrSx}XFHN~W$?8D zUH4z}CDwO_DHFIFjXr>%*BDj?U0|_r^q3W%rAv6h#@%;^mTsv*y9~DIPrPq^?Ns^y zNc{-Izw4j$X{e;?XZp0EN7lZP|H8}vA6(nPXA#=X$Db#5#;_XWeS4jM?Ck&iNmXa! zI=J>4{uF|z6Fj4EicUE6^z|(Nqo+TdqVw3MThF%F$F{H7wjZbHG|cq$o#l>Ebnxar zw*zhK<30W02FFm@*%5<1{X|%PVRW6Q24}pd4-2n*4f7w$y0kmEbf&mGZ$Mc(Xiq<7 z!Ka1=1JKr=Z`%ioNa=vzszK$Dw=QjGfAbxI+ejXeA zmNxo%A^to^fBy~s!Hxc*NI-;RK=g)yxW<4)B&5y}ZRj^OqCNc<$A9eUzuyq{sWEH- ziTZh)o*d1a9qpeM9ego5lpGT=J0?0UCT_6T-v*}Xib@{9or>xuQS@$kwJ(SX@;0?&Ym6BeuEC+2)b4ZRzE0UL&^i=4|)R z*dBa&d+3O~h&g%D8F_J+^Abnws++T`F=JQL~5K}`*z0edzW`V9I>Z;&YsSU zJ3kF8)wVS)w@z=d`oA$blEODD#;_++A(xwuxk)^!3rT)K` z1~-+4HXVLA@<{vKBb~vA+YTHKH!O<^E{i=-mhil+*6>h6@S#fw4qbhIsM!#>FGrp~ zKLQ4kp1DWg|9bRO)6s#ERd(~L95+_Yy;9|(Q0+Fa+GAt&(ksO@>cjfFug>&t|k2!d*)98Hn zm2IE-KBhR_fKeI9TYGWwnVubTW z=a&u9nHS@(UaWJz+W7KfZRXXct5>g6uC+K{yM6WA!^~^Uzd)*tt-{qa!oVf*}tommf`UwimU@z0+5f4t0urckZvB)=qiZ5c=}ck(XCry=$s*MsYT^zCai& zbf>tRdS2j<6?#yXo5o%ss0uwPzNYyX_^QICln~RJ3xsjP<&-GXwhR1mLN7{!Y2O8c zhA^DcU`o5l*APZfu9{k3BxnkwD6OWR7x|jPXvzcA*oy=$VJxM?H2)%BOBhFaX7YXBq*%SvB?J|G7a0|tmWqp}2LAaIT&hos>pCH^$S z*`?pvw!*(DeP(^X6C8w8MHh4S4aO|tXhmmp*BjhfBvnNRbJ`8QgK&V-Z^ryxGK17h zX)$yCoja5Co>FH<{as{5`je7qM)+N1NxDx7HLJbGuo9{&E;o<8L2wk(6n)L}Z}1(3 zYKkG|H8%*eg&K-c=506lvxQoU3Fdt_2+l&L;&pT8O|CPErPyRny-BbXwo!b|@~`nN zNv#w&GuLZe3({@MQnT=D5)0BP%5zrv6#@iyE4G?v-{j6GSt{N$55FmyPqJ2QH_yMx zcM(ogd}&^DldwQIL$TMq?IwSL&_=P}yzeH#UFfRlU_raZcNe-TI$K!ZBK#tBS9G`V zyv6@T=%KjWBK8)+L+GjKYmtA8?;%{O7-CU#i?CR@TrtX`?G}Hr&`UAFqVE=AxiDO@ z!Gd;&zg!rhc-4Y^hp~dRR`Iq4_l{@|D$yUX_#Zc*&F=(|Jk6|Pt8v*@~0>nqGvbhUK4%l0F!SM;#t-WBmZG~Nf6`9HP|Mo8i~!PZ#b`^(UCDBx?c2(~(ak9Q^JWkTG)yP_HM4wh$1@0K z8&Hkse=iIXU%S#lS*U-=rP2@(9bDI6-Ri%(t#tK+&eanA&<_95uF}w#ouS?OVZHug zeWhXjp!YP0atMfWDvNS{8s%!R);(aYXW822PuGI3(-%{EhCGc9H;9P}h>0zWNq8Dl zYmm?okkD+fzBOQdmqB7jKq81hVO7|MsYEZ8CB6iKr$JJ0KvG{>QvcH=_QVv2z!ax_ zDb8Ift`k!OC#HpTZ3qXAXW#}N2s~jiD8E4}|8z=C=t`@dnAs4Rd1+tf)vnCuiCL|I zS#A5W9&}|%CT{8o+|;#i)61?+y|6G0+}yWsbAQ)n_N1*2L0g^nZ*_jQ)pgP~_n>W_ z`?oEBwk>e~_K;`Wxs$g025k?Yloz#s_rEL*A3WPFnY5=PXiwKO)Cv52QbBJ}LErv@ z{$~Yj!@Ul{dz}vKg(ac$^S!RYC7uULmOn4y8kYJ7mj;gfejnC$0){j8&znIY+=TD` zx&9=x|C{;~#~G_Xea*53@Egh(J0ETVl_;r@&JmkCa9#!p+ryuPzoF1e9-Kce1TiMX zu&WmixsTN=s=G%rwl5_l*P&6mdVZ;ictJ zN8~axwh%J1tw(Hi$^f5metO0ZQAQq^@wgekm1pd%9kFeg4exsu9CzdK@Qo)tf3V>V z8SqdE+{Uy2V#8|&8(!A^Z*6#Bz{8z*KiKdv4_@u&&*g(EI65kUQ<%HUvDKbfP6I`Nb(gH){6saR*IOx>X}4YS*6JyX{HsLULpVoFzG zO;RzNiW&2kU^cu*xig>riw$p>>F(s%<(J2!;s3k9QVcuF!UX)H=glXQIH``V| z8;e@(z=;QbydC4>_K%A{IWGGnYRLmX9=P&y!F1?qukt-K>g zXU7&(dIH$+#5;EW+=jOk%t5FVFG&5wI`x`=u;De2(7Zv{Y?-8abE;NzpK@OLe#IO(WD$5j1y&u&>w6eU*-B0qUqOmWB@_Ut}X zFbTulyTQ`19_qpU zN;fD@K7%6=ucPgT_oUFrB*=I(Mm}bb_VZRVh-17&eXu}Dp7xp~WKyvbFjHvuoeUL- zwEt;>1^eqa0@SoPz{b|3t>dRbC3pQLasm|{q=2JEeXwAHZA;660m#hAWoK-4&Dh4x z*dCsdm!9z(Xi&39?Bv4$%qS;pENITyEy>u^J)+`LMg?QzG3Lff_QopLjn()7rcYwZtCVYjLkjF&2QP8dtEob<8FQ*zWD=xb6@u6kD|?=$~S+m#eJ}w z2f88f^4M z!Z3uv=$#k6CND;i7n_r}4&1O6dGVMb79V{{#G$daBbT#d>%tw|ymxG0^K~TtRO zp|Wn_XjY+$UEvtF!m+$U)ri7z$%V8nh4i9AwPS_qb%h!&g_`Y!T0Mo@GR4f%#iqK& zELO3ZU9q`au?4T#GNRZjx!8J3@zkQ?X~&AE*A>rbDW2J0Y|~S0D^ub+x@4hli5shA zkzI+qTgflH5|4iNch>FS)v|wg`~E#W`wL_amXAJIp?mNc>tLnb!78_d z)x3kpBMzQOK3KEm;K`zcr;Z&wU3c(I%fYkl2ha5!JTEi(*2u{>)F!tWPQE#9a_ii~ zw;~ST<{iG1e7J4P;k!kX?;kjPzwYpZ=ac`qH~As!C^#Aa{4}|Hq{$mKlODsPy>3U} z@s7TaIQk*^Xy2BjAB&EDI(GDP-O>J*qkp#_9q2jwMW%wPQlYF@G1{y`#lB+9qKdIT z6{?XHEn^7PY6%f%ma$Y>669N z&s>>)`t<2jH&35^eEQtm)8|QNn^n%%`0dBxHOucqwU9?wx15# zem-s6f5rCi`?dowY`=WArBdvET65vbkyI&5nc;)QplmT0A*oS$Leii_Fq_3( zvQX=%^&RVaf}+rz(#rI#=PP1Wq4aw8DB)DfLngmoS~;q%myE(HM-nl=_q)g6SF_(B z`W$wC-SO}MgMZ!(0%0S3RguN{zNk*y!T#i!5%Bfj*}hWVD^NmdvTPFOd;M%g+kHYu zvQiAzB;fe&17@MahT0^#FJmW)(41xlnzL@t1(c`k=(;+<^vS0*Go8Tv>ac;ElBx_2 zD)=obQSB;=GK)Qmu-AYkYhauLQS5{ihMFUy=R{`HWPl7gXkAU&G>Z5OA$!jysuamg zJ%y?LH3{AjG@4$EahMsMTMTMuFAt;s65wQGV;lS z`BY*ma8}{(PBU&khARL4CsPSo`2U(=3>tp;Uo(w?2`MOi#6|;Q{ej}^U_J*H+tOz5 z2E%&uF>j||FrnTUPe0=I`bd30sEJ^892e1?%s2d6TFrr1!iS6$);yC z$;wHd8n;xFS-c4-W;I9jvxSpH62S_OJTs>r)7;oXa#C&2zc(`{@7cd zU5BE5DY9^1r9j}}0$+JgPo^JEs)QFDP*p{MUn}}mnsu)W=O=Yilr)WzQJ%jAJV#P7 z$+ae?;)Q;fHwy5dB{rti)-NwZ7CsA(m!;7O?E?P4P01wBHJTx#XMf zj)p?>F^|Dihf4y&r9kgae2aFNg5NpNLdW)Lqv5MU&+vXAo}WFh{@7t0lp?vrr8L!2 zu4BE{SGA*_^G9{EN3|11J*-u{$5*^90oa2qL$(HWp5WvDAhs69J(0NI9mYM_-K#F6 zNuxjO%@3}YzyB;%e#ojE%%mLrD$S-eQyxTue=V9Bk40~TkrpVknT0Z&1x_d&Ttk`I z3?@oQg&(P~@abxK56^TM)8iRv>>1bFn~+XK8L4NXzfV>5orB_m0VJylc-V=I0NDsT z!noyd5Mv_IHEA?~%5xl?G^)~2AH5r!008(6>M|9m7JwrUS^%CxHKqlS;e)$gM-g-# z{6pxRkbme6Q-1th*%TuClA2&S6M@*34SXAd{Cd4?Wzt?%*c2qzS!HnKuL27iHP(&y*d5raI$D`wVwYIJ>%0O{;;4EPskbkbj2HXNks=N_1+q6JWv8MCu0g&5n{0 z*+5XGI<<_7Nh!+M^=%9dc^|kR5W_{rY__q75jN!^Mm}iNZ!RPt4~eWaV4x^opdEBx zL{yk%?10|g^ePIGQXg7{PG{HUfakY>eB%Kd=W4Dlz|EifMn2Z9Rn)BcR~T>r7(;+j zhw0RF5X5=meznv%dP}_~6CW6h{)D*@eLD&_+74zm8%xC%g;yrxhjd=F%xpKy19>Kd?vd?)Tyj9Nw6g}#VR@Y3l?E08Bg0*}>2h$?-0INwxwxJyz zqx&ds*eUs(WRaK@$0<^x;;oarrB>L(tYm)MQD>lNM(jM8`N;LA{ruxoavAmS97ZjA zix2O<%~wAL z*U=tQn`N1lY51IQ3O*ABChnj)SfoD*!CB&_0bq-?=f=)V*pwMYBu23^npx+q0}uI^-?sdi#sZ6 zxu-~vjrndaZJGFwo?A%W=q8J(BLgw`it}S2&7k%i&(d#Wi^7p2=E%LSBZqu9z=Z?H zO*v4ha2{3dNF2KYs1>jZ2rNCQ;s63{&!9svC2$<9W6u+ zIAFu!nX39$s00GZdBy&)iTyhapdjIcg=~xDlug5mS;L zjf>=r`<9QQ8itvALT;!^l(pJTwK{%q;y{@F`-Lc`r59)}I@+*6|4%25xvriWPtO9J zICiCtG6m8i0!}I#4I;7^b;q)9ep^If3(Z|I%d4l*ijVnS%K^&uuYOm&&@gComAYQ} zHCV>8f0hG=GX0ks-f(>}5+UUoA)0L15-kGoQZQb8f=VV2H=_@LGwTKRbx z7Q5HlVF8I*O-yViM9s^fN=2tBRE3JK;Wpq;`2B-3$`Le=ectLq)-0HmAiO<|?Xbum zT07WtAAK$>Xz_!v0CfhU)BFS;+VIbtK_KM8*KhTabB6ShU-h)o2kx+whik&&5K^Qq zs(zy}@U*x@-~%382R-X>5u7z=!O$ra#=zfsKPi%WZOl|9e-W$E&b%=yf8U^LZ3hU` zh}R@c{BqzkciTRSz4@Y!8TsgZx|ekYeFb_gj(^j;@`vLpL=Wn1$4pv^CNW{P=YQlu zfpQ6mCEtmc2xCxUYON9khuICnwYS4GTda@e4v}G)-ZsR}0L0~?SVIf+PO&_LMCfn*1HEKOE;NKEGy# z{NuXuA746nh{3NzOVgp)k-;VC;A%F6?W&C~L33xrM3K^pEk8kHf(1FjMa-?MV!WrN|ZdJ>7*a%i5l1Y=4~7y$}Y^H_96%aHp` zN?|fneTY(+3SrIH%$2p%gwzbe65u$HB6Sd*dH;TOtDgctvnDm8 zF-o;MR@kwlv160uWMRDu$5z6R-2}%ziym9TM%fasrgu2@zZERuv@jY0uLMcnN`eutGa8uk8lulMYIG)IAtaVl7>l9sLP+7BNrn6e`7{E<6TODCr*IU4 zO02DH>0I=+RH$MQt>!i77-OR7cj(P3{w#Aq4%JjQKLkzn=mgT(=|uJ2l4~q?E+iwR z5HB0THD572g#oU4w_O4XC1W6!vOespxsb9wZdi#1-OQY2{)y&TXA?6>iau?8&ouN_ zaT2r;;U>mn$%)RANy=voA!J!7kA*vGlm9<0noyaI|Dthqg zaPUt|nZjuF#qt7Bq(iQuY^7`x`x#skdB|!Rw@Y^DUbTno)(@xJ3;8W@su$2x%_mKj z_a8C9w}TP%o++cV1w8@ALHN|lwN0ET$@65fNO)opIwL>^AbcYI#F7U2ls<1Pc!kTn z!X>YxxyG0kxwFy$u1pEjAWwQ(ZFIP7@qq zzOp00|4opPiEkk9Bm&N4rm4)(gx8S+j?Nk#d2C19FH(YiX|h4XQXqE7*yc~@6E2Z) zW#q$K?^XG3td_?{qGQ$0dpmm!aODW{0y&r{MAqmev=fW`F>YVZfC08pRPps=S9v>E zcDyP&$M7cObIei&wMH;$!1Kx(mQjc?mIX2o61y*U$Zo1^3y|WG{)CMpE#U!_@x*6unZx{W8j1#(aB<(%6Zz(TW!(eSndJg5V5y z5w*?ET$-m5dEe0}lA0xf6jU+x>ffcC-)J;*p#DRn;bZ9w&}O0^4%vTj_9UK_TX$!1 zGD@Jg-?QvwCb}!U4?zp4I{(9b1{&AKeI0}U{Gs}BG!%Ka`o7FJt^zymdt-dhIUi>+ z{o#n6nPTYu*O@rX?$+zu*e9=BVdWi0`$zToYhvqHrjDv)vP9=`AETt>%tYacwmRlmGLda zwv$s9X3n}|jDP36{{AWafR>?^W{{YEYX^Sz9cP|lil=r{yUF(e>jp^WOwmseUGqkb!jjM1o;ySBi@a&3%m>R zb^hJIGq4Xa`;L_miy27L9>KD zcfS~Yfs)Q~%DvV!Ua4iG>~U(AGJfkM-??q5H|FQ5{( zlQLj7%U~}SJMM9(29hQm^sGsy#tuGTSR=3>o(Mh4x@gb*Vm6D6MKcIj6gcCzcG%7* z_=$Z?)Pau>#$s&P8P+9xW|9M;ej)Y-xDd`BIYaiXi9@70es=wUK9jO1qvXiwT`%#N zhQ8;QA9c{w?rXIx?XbhoUjflJaOQ3|KTgKqdh4ew{KI*2JP5zyMfZ;zRu0_?T4(wV&P6FeU6yJt5*p=cxosG|lk)&blN#s~IS|3OC zhsv<{S5ReeMis;6)bn?5@q>|gQOK#tczCr(^XYoXu;nokG^9ElSqt=W$fu=_6m^qP z&qp;Gjf)JBfts{+Ynh$%a)z=E=7fp8)Pp8Qyld87VM)s_D{&dH1xJ)0gqE)Z?) z^elLKDBX4o%4UHwPACRri7*`(wQwBHY5D(-q>gifjl`oTKN|htoM3O&0A+n1OW)TG zwKfHeMp<|`_Bcp{vfu)<^@ES;hX9@h_O2M7B@E~*5eBha4C0Ofh|{p-D|~kl%ByQs zX=hZ8Q+SJvPS+Wo9pdlWO?d(cUYx&MH|4MPDL88PwT#Id9LGD1!aJP5JE@puRL`3H zm}NpTGc_}tNwTzkY$j!}s94SzMrbkDGh6@IYORk|jL>Rbu~mG%)#}HVVI-?HdRCG4 zR;%hQgN4)f7f&nHn^tT;t;A22m zKmF|E>E}r{kMwLF+uJ}Ph^ z+sZn6kN+0Q0z4Mq*)b`z*X^Ah-!S_}^h(J$Y?j$k<7Y>XnZ3Hhv2y&p6AtsLedqb$ zBo?5r0D~pP<%zG$Q{M$2FcM4mm<2uN3wqrbJa%yTN^VJ6@Nw^g&kYOy?pW|e)=g)E zn;yVe{M-yu-6oZ|8C`Ij{KU;fZqa{GS^PXuDocsSstX>gpLm4HEnYKWapbJUYyB3- zq%K}pvN-<2;`L7!C&?`>oUpWb*3uHcrDds0_m?dFhQu;!S+(D?6RFEimMlAcVcFRy z%g)PrJ(}S4c$U`_Kd+~$Ue8LrUR?0{>xtKExs`7wtb99b^9(ldCYADxz~qb}SxohP%p83z{C%u8_)IPJnLdPP(ML%vz+(y6 z;2%`#zpBxHb*FzA60k-;Akr~lt$#qww1yySyvVle=%nL(-@$&6n=<1axw1kAit$7 zEpC5V+(BTlq{W{si?0rdKS7SKFo>_59seOM>0?>ayMUy#Pvg&%6CW8QKAxTUBp~r= z8U|*$nE2Pz#Mk7cHwH;>XD5BWnDqD4q%Y)Tjy$4E%jB|?IU^8#+Ac0XnKKeGq#fec zCUX>!DYP?Of{;T&ShTBLwveNUSkfMF`6!QN25ktI(#2)sV3vK}wHw50SZqZ$8f4*1 z+X`S7fd&!|tQA1D;LH~41_2FnFdlgG)4t`g{1?0h1-zW$5jJv+kz=&0JoZM;WaK#Q z0k3-_(HeO~lkl=P3Z@{ZY2Cc$jRF%Snx5{%+(ev;JfY?Lgl{5FL!Qz0`IK)WPDlQt z)%bL8BF;eG&@TBfHxp+f?`Um4;hTvz$VXb2Px)q|E%G<5&!>Ac(dk=wOZXPzTx1e` zAI@5tOt10n-a>RnOzD?=nYqOIhy}gPH$0c7QR3AH$fm$Owaar{Y?;rl+pYB z341uPNIN|Ox$k#*`_tIJOi|3ucS_pRX~8ebDWPz zr~0li{yEMkzb)1o8Lybe>wRIc?@)V6T;e>h)h0M~p8qTig zD3UET9)$Dj#Wb?7#>?>9dX5s=Mx#HR(8!^Yc^VzzqIwRU?60wF4Zo42Mh?~}U(?)3 z)FQ9b=vq^Lk*G~xuhF(9{31t_9IA0<4dEh3gB+o8bq)KXz?S?)gC9k05jc_cG_#{z zTLg2+2AZO%>=waXvXN$aRC9}99=TtmH&Sv@tW6eaq(m^9#1qMTHMT}@o5YjI`!x1O zh?>NP9i97dLCro=EFiet&=G_zw|9}3oypK6L? zvL6cK$S*X@W11fd;>oWyYh$Q?3KGa~HJf8x{}ikzf6$b~WdA8hB!AZIj%of=kVO8X z$&aPB3)0DYTG_F#?Sc%lftDyXyIt@r*+{EAwz*xfk!+$>8%upG$RwL-HOIO>7G#mF zv?Q_Fj|H2^)3v%|o1Y2_$VpoKIO=o3K60_vu6X_{&MESMR)0L9hjWSCuhknL{(<>wVLju6_yIXeyLCPHgZM5vPk z_%eB-_TB_hkGP3!tX-8L=@DNcGqoEM7;nW_$>!Rv3Ea2hYh-Kfjs($L@pbYH?cM~* zTk-E?u6D|L#(Qxa*;jk(dhUC{Ir3*MNqqKe!71_!t@8NhSAx^z*IKpl)YpPDGhY!;lAma0$GJWi>?fCLiQ=-K3l5ME zYL&+|KNlP%AJwXjqrMOvB3EiP$GN@`944R8lEh`d5F8;#Ydu)Uf6CcIj?;R%uJ$Qs zGucL~KbFwR$tUx)GS{&?IXlSyTD#WqJ2}6RgS8H=tL^0MB!_C9Sx0!v*+q`fy1I`2 zl(U;0uid@A`Geq3a*{Sbk@`u{MK0FPPIUbwct$SM7A0nX5!oKB`@t zNc}8$Nv_mxPIUb&_=|i(TauXlS@4Q{TDv>3`Lp0P`Mfqii8>(YBR|&On#3IteY9)52sOwWsXUPr%5;K1 zn<^8fp-gA^i>Y6d&RM2A{4<%8uOnPhnq=NxkpY)@7uNzXAC!_H*CWS#TOmGDL~C)wjX^AGq>GB=rXp1BI% zPUa^|&ofuUyUD_2oeRu0@IJCM+2aCpEqsV9Pv%@;u7i(~mC4cz%=PebvfpK$i%c&# zk<7X5agn(dP9bwIb1pKs!5QTI%kqn&?J%EQewh?4+5zX2t1r`|MLS^ux$!bLTC@u; zCU;zxM~imDa&kZl>5|ABZX}1N&@YJ&!wPaz3ip!e2;4%>Pmx~|9fg(T@)S~>$OrBq zSEtb9M82?!+?c|R6CHzl$Q>!l1mV=ls5DZEtv zWlS`@ffAhRa+wwd@1<0x$}fweVFsl`ox(2sU^3&y6q9RyH zDNiS5i;Ce-6luCgHnRj)Q55O?Y)mQKMd?VFXNyWbgI@IuTS zudyX!r4j-j)Y*GTe^CV(Wx+@%N@*f-#O~jzz(SfGs4AcW`?i7k)n4^YTLBcPI{k>C ze%(Dp2LnB;e@zFg9|tTe-VjP;0aXPsihB<-0`n8Ku4*hEz!;DJTU)_@;=B#0Wd)tU z{e}((5G-pFe)$W9idX6&PgIc!C>QV334^PkNp!WqDUsaqp4jZO`1j;KOJdwd!%9ENQ3w=y|6HS@<`poBgbtW`O_aG$Icx&#&+cB zppm2WMvl}PsnbRLq9FFkh`kbGkAV1@N9>LycCm>nZ{jB}V&_WYM|Wa}4e^61v0azg zrb$$)z@V3QokY8q8}gJBBJ&G*!U%ax4|(JfQo|2<2Ier`wX1EkADU`E(ABQe)Ruxl zG8Izlce;>sS^$iTD^K%Hkz8FQ2N)5QTKP6ep2z8Y`su4&q*#Cy@lF>jv@XelN~B1v zL@P$170uHElWb9Jt@A6jBHV+}%9)>5xQ*61Q?0YQT49=692Ne!^0=qJ;eb#MYyt~A zT+R&oLX30+{67T&88T`@2A;qH8L|Mt#>*o0k-d;6POST zW8lf?0)rCfw^C4G1O;BuZ>6Aeb^WrKk3K8w|MFxU6yJRqd?teW<&Y6{!pKoStBs(O zM-tmzz)p+T1eH$|cXxT@n(H7;0B@co4Gn9MCyXBUo7&R@A_tA>G%X$NUtND515`f$ zUB_s!YxLLmL*1jl7lVdITH8>uldaOBj$k?jE_@c&OH zX&gbLa~q3cAlUaXgw|^4oCS4({Z(kuoT)*>O_wmRy6BB`!!kb9mi!o$K0E?KTr4%Q zAjr@6)6g8DLCOzN$M-`;50%rf&vU`|zaF#<(5gGL0Bv}TcLkw)!-x&rL7Z+1gUSsU zKK=HanF0nc=;5FZpcm|-P`B9klo<-yu6xjOdg~I8zz8o+JQYbfOw>KaOwg_MdyJYvBb1;PG;MRJ?@J6}ybA)g*m zSCcwonod=zP6(O=<3OPL&~^H?-_#lU$6bX}PtO_-(#`9$hF>1&AM9369sWS`>aP1! zLk4e}ag1<(DBt#cKY5Qj3OzWG>s|H5;Lwb64Mv^X9oTtwDo6d9eS6)nYq+1AamRhs zSk?V8Xby`ZEiBksghscWgX)i{>`KxSf1^8wLMph^)BFYFm$=3n6o9PSEwjHSpqIM< zjTc|^|NGWEpY%uI)y4i5hS-t4NY%=sO26sMLXeq{Uvg(traFqHO}}gb(#VZZ<^U5D zn04AIpBgB1IJm2BDy;LX#)%OZd}~V3)N=2K6%>}kF!gW%=-n?I+3rxTbRM=(vp=hx z;fq%Xur1buwfLt!19Jnq>A@2R@BRS+P(ol(0h%cw<{NLb@BrNZ`3H_`pE^K7>d|05 zrIM;s<*H6H8E@uz&MKevYsle>5yUdxtPvBJ_t;rz6r4 z;9=|=vn0TF@L{Y{Ka3xDrcK3Hjrj7?eYW{D4KY1^>TNe_sodl4{t@agh%A~GSv1h9 zIPh|dC3r0MJ)HfQX`rTo2jhuvP4VD;-=C+P8y4U{9sJ8PJx82bJe_r0Ju%*Cu~Bo; zvZty6?4oR3*h+k^4(J7dH3xz06$9R{K5=L$i+v5s!iZFBkmUfFf&DW=|JJYi53fM; z#;b*Z|IDuibeLVPKTzhygrC6xrM`>0kVXsz|VGX|Q~qU{Tv(A)jE` zsP5DDBv|!ruu}aCel4if_NxGa2N1v*feLWY11Q<(@Br(0PwY_ftp^b3|J4K{^9}r0W&aZ0cr#M@0o!^`ae|j7r6chMCRmmL*$oxH`V|U zjGExQ!Yg^jj#n!HN2Z@31E_=j0BF<$_#ZO^zXb*Ye&Bz~44gEGhQaSgp)hJr;5q;d zOgZ=iD9j)}=3g-b-yCcC3o}p>QxOzXzBNXq6?5$Ng(E>14$i%>SL?#A+vm3ho!>I| z{06P_>uyJ^3W``UH)5$)#G>2b^Mb->&kd((h4)E9yV;?g?x9N4(8ul}4>UvWNrEfb z!8hH5MT#>myfX@~GmWNaww(UBP59{tNp^pmFO$3x!;gKR(VFrSDgX>iWrDgx7y73YCX*|{A zF++nfQzuLq^^b}go4r3ezlCl9ULnO6RaxiAOKT^~*03R_h(+pW^{(D6Y@Y7hZrr9P=vlmbM z6R2puHPie&ZJOJ(85^g~1Z@fN)PJq00d0xnKu&{2D-kI_f75svGSiHI1OR zym50v)ivrC1=^VaRvYom|3p#q^TdCrsOk9Hhxosxs3{u%3w@zEZzOt|?eWv3DTJiM zT=$FCX}Q3KVDr8iOw0>OpqV*BqUOg`)3s$>ZP4|VlL%mXzFkNF@^LUv+d&_|x~sro z8GVd<{1^}L;@CfC5ICeANbfcpzanNU=o-|PcN$y{Ox&WQ_JvWUGB)OmqvuSqBBdebxks;{um?^Y!6t>V1A|&>nIUB%H5n4Vkf1WvuaS+30$4P*oo>o1Lo%so1alWUpQ+4 zkoZ=YFOUW-kk4AA0J_duiW3}+tHL@FPq`$7M z9lowHaNUr!GvI_*FmCHt@!N?te6_JtID3cW<__uXoierWE&t@v;yK4vw~qUm^k4LlitOtT=VCsgCdxO<`#s$e`7)X9e?R9%*=QAErinx z@YfA4Gy5l}tDl<8o)FS#*o9A|vi0dr%9%}WZH zmoaR9e!%=<;NJ~cP&sU2b-=>fVT*tUwlQE)3t$HZEba+d89e-t@W4L?jIYC2=d0bY z-^m4sdkrlu#f^2!U)QT{tdGHMOFFR)$Y9G)>}c#?T{m~iZ|+h8dGm=~{l-D|EpN`8 z!;!ZR4=k!VM+LWz3g`Gp=6D0|U?twS`sCLY*m3fB51t*sW(R8qg|mZVG*2b5Pi1JH z&S#(g@8p7mOAGh~g>x^p1YMGA#er4VF&AB3U}#jXPkvkBk#&Gv}=mBYXu8y%0p@^wd<-w>T0#0H-oIY>DCRD#NNJMo+7Z>X#T7gc-MvH2D~2(!0boXq0K$QuEsn z%&V4KJbhqMaMrA3DLLu^IesZ6^#LX4foa%M%lZeFO{1(nF11TNXVp8(Ch(k1$Y|S$ zbGEUg?Mjw8+T04v8xLrR+o%jb0cES-H3IqW7j`@w6^}YbydHu{TQ*ncdS?7d9RQaTcaLtty;13 z>EoUCD|R)V-*I=vj*_2t#IM+v`gmK;itUBxkN1vaxBY&+^{3q*&+qR2$vg0ZcgVQI z5f=`}jysZk;YjAVqXid^mW=bcalz;AINwJXeCx&?dv)Ph>$t6fk?auNpoqwzSlv^} zk*6|sPZvaCm>W?sclBZ)Ma9cA zwz~MPL5crbS)Jj%S26cm4ex)9x!=2{@^)=y)tb9c*OWZ1DXCw5y{YDU+v?J;no|EY zlAu~i*qYl>wYTHfRHW8cZ>u)D&y{Hu=)qOylN)OU)(5EjKQ; z+`ZHqw!W)=-Mgme@7mVA?|S~;f4wT`g{tmS&)vA*I+MOulP@3RzVw=Cf@3;1ox}8p zab~*wK^xpqp)ddyyy>dzgY*++dg?+UXciiP9wFD0bHZOAxBWjb#yJf38qr$hoa2Xd z%RNbh9Yp#`$QXB6SK-M&37O!0byc3qlm6YACZ7x9K9`vE+=%OnHR(<^X?(gm#p|)RP%lDTamjjuEz-Ye;rM@1#}(+wwlJchUARI$#TI@vv>R8Vr`iJi zaJzAGJ@%i}OVDB5E4|1+8JD0VxF$W`pZrVEQCzE@;7{cx$OqS^C;5{a2l?VY>dF3O z#6ib!U3!W?g>kOOaeaC%e=6f3Hg3E=+l!h21>t_tkMv?BxPlj&EhuN8 z6UgIr(L7?R|r4@Qn^{ofyhpM>vpTI>GIClgXYHxJ{{_NY4{rGVM*IVCQY=P@4aCOyBrJl7x zorzEQ+ojd_NNRAV2riyF`mdG%gZf*C);CI%@8WV4Mm>4|20#M%2UXn9U_`-si`aV8 zOKZkP0KuEN|L2)LKmwz_>XIZnRK9eO{_I$db!q?yje{3hibN;ihEuvNxEZjZV&eD4 zlD}PGt!ey~uD-zXN}BzhFs^ZqaN?jUZqveN;19~ig>p5Lx~FlmOW^mql8MV_0bAU! zD}LZA+5GiD@nGQZ`;&hkJZSu0758eu6Zh=K+V;LOhU2M-hV+-zuqDJUy#%XSDZYs>ed1D=yA?L zuOFU1{^=u0@sR>o$*p6kmgJ4ET+OCdq#UbNqpD>ozAa6cl!IVrQ~)yf|4DU8Kav{o zr~!-`fT=y^WyvX7k56SjL**oy59VdwJe5&Vk#TQc25^!9GYRmM0CM#YWF~OR-gzkp zw`D2PvRd9|DFK>tTed1KyXS4Ti&_4x?fLHM`3su!Jl2|xZTZexNoH+jYpv9xu6k#kEVHh*wN7sFym9AqMdtIC*5^u# z7acoas4`#lw7%$fmAGUzE_m1IVTtNWR%X3I`mM3n+FC}=X>^!v(^`>x3(B>rW~9*`W?6J0=!37m$xqSb^|WnL$}o$mkw84f8jA@a-nAcAW?g z#N0QikHQire&;#--Y3#0x;$VGy4?@vL_rgU$t!(%@-tg6cQZK`!d}|e+0}$7`T4znQ&Y^&Lt%#Lc z=K)$?tuKrMh-;o!v_LCn2r#c0zFsvPbtCHH_x=^6jrV4M&#(s#Buyko7s)k6@@$ZN zccfq?as^bBy#Gd{mm${`Na+xh{>L=>kY`-&8UdiuYu9~Gqwh!2cc4|O&>kVN(~J1Y zo2X(FyCR9*JmP0T=vdFNpZ0`}^AFPv3)71a)6WSr0Lc0J9}==h_R5GxPe)Sc0syv} zId>$LIk{eLoBv0I-_?30n=Mha&8Az(Y88iQd?yA;&ONkd~5c>mqn*=_FOf-Uq59&WTtQ~A3lOKot~Q14%zWR`pN z2b-#iM*YB2UZuu#R#5*~Gn#j!``54FJ>m|$gYh;aHq9LaI&|(AC#a9|ziN&DgEho* zQevG{|9TAtuHvd!Pyb5#7pox>e+0-fIVZjSP9FM}Y9>7S4f8ArAke}<%9^CW3#NY!bjQRE(?~L#I_wwoaK3c39%l4U3s!Rda8qkNh5?`nLkF@& z2`SvmC?Ul(*bltQy&Bkq5X8b9>~j%I=);;$kC;BMu|Nmhc>u9Qn$)lc)XOxTcpE)IsVm_R=1HaB z34h1|A%UMz;ff-UZv%)GzD?~$opr1q=m~z`4Di2$X3Izm>l+6uOvtXHeiTZ}?7?nQ z%>WIvb7%6@xmc=NO!R2#Y%FzF-2lMkgxRv`8g7cKQu9TPRwowjb)yj5C`?V(pBZItxoJ*CT-* z52(s?0*NWGcU>Lm+H8I~4wRFejb?4kR`ZpAxuXkkqXoXiIrX!g9%!CaHzIL*--=;5-BL z#1``b1n9##4Dj&GIk_oiDzu?$;4v)#%2mu%8L!{$dY-Zot&!cC(a)8TU5TnNbs0`N zjkd_N1_;dnhyn;FGy9ng%dp?}fL0ClfbOpW`=bsQ02!#yyjOBg4Etdc^5n1y=(6et zLwbBy19d8bwwN>g4M5N#DKnJ18p+CxzD8}3I;_CDw}=8ynT0q(&+3NApH zCJ{SG-5g~DVVW)1&5k!1wKX!oi{pZ^w&5(>q4Z!VPXGZF`*tK}ZdByl$bTCtfT$`% zD>^?Yx>zd)WC)d7vDHDbwOW@NgHR<;M^GFH4FXQ_g5lKgQ>iiPFd+j@&p-9I7-3$K z;7*ZnezD|Ev2=ck>`sXs2ovvISI#e0-6{QHwlENF!AFu#9?8HTMUy(bPx(oozegqg zIiYgaVim{P4<$K%3nc7H31`9W$ORR=$_jqvZEmH79AjS2G_S;1R5LB| znP$Zz6F-_MTV%?ikt5YnDi4iP?+7aI2p3dJDl4T6?#e3ff;>b4+>Q(Gt19pNEtIkE z%G4RiQ|`iNyt~i%3u^>-YlI7HC3kD33+rTe>*NccEABp5E_|W7`@(OLf_+cH8H_=A z_uleB64D=f+-s38YL$JThxjd4vG1!mi@PH4cX1bY^X_-^7k?Jq|14bGBe~xrUEC|X z-z#6-r?}szT>M3K|BIi8W{^}f%tI?msuk}6r%K@*52R3vlzEJ}Egeziq5V_}k`R!4 zfb>HhgDlYvs?rTxq8C*)kc8wc`9TuWRAt--n5V+m>2&J+Sg$W)t+#CTy8))I;0&Wp=6RxTEl)ec88ph&l;rTjt#L(Aj_a-;>z6NTs$SH#d~sLxV*lS(20dCC_S+v(kN$}NZB^={RXM+{ zE_}4Q?6)4*MMBr*_##OkLdUrfu?PcOKbUZS6I<6_2L{me%f zGwbxTUR}&;)z3yl41IM}Vo(_IeGC#+Qy9PcT58R;oYh5z>LBHIO>xy~bzl-L2{F7K z5pz4%up&98BGd3rLCl>J!^#^mm3IyAK8m?pS9{;T?s?nV7hQEP{MRXho-4xEHQlbO zty)|6w63mx?enI!vY`+n^il>2ktV54S}(#?$YFt3GaG3y7 z&-%~DS?LKk>70YiaXDY}4cTD65zwECBUaev9Xs7y!;_ls^h2+E9GA6;s#Gk*8#(z~XwF^Do6 z^2XKw&oKx;4mytO)l>a227ylD$of1legbqFXQ40fQYJvbxGDM)FKQwbf}5c)^I{}I zXK=Rq3NL;l6pC}yS9vKDp-7ykK6@+mG8Bc|tRK0RaT&UZ+p5po%D)Un<96x`wkj_} zF}OYYlC9JfC|1p0V5C5oaEJ93Tlpza9L`r?wUv}s#=|A)hi{{&m8If%`bpckX=)mS zn&FU%yQ(kW#z`+50ySjd@&TX0Bg?-K_eP()os;E%4cDx%+NMm01h{&A_I7F(REWE# z-?B}Z?wXCu)E8`1ra(owR(-*CWfoM7Ytxr(r)EPXxR3g>?Tl>bI<8A!v7Mg{mEwB! zRoj)>YAl1A&w!E^B6l!y0hWPkP`*Q&=YJpPY|yepnCE{FfEuJbJo5bS;$|AicX0Bc zJ2(r#a8Ty@%WxYFI6F12xXN&*21z@(xn&jq|FI10UDRt(6E4{xau?$o^cI(Dz}v;Y z1~ua{4FtQC*Ps?$j)7zswFqj(6&T2NF^ZsfxIzQPE`Aa89#>+Z+NCUlRJeKr_HOER zs0;VXAaXb3I@FD8GT`mzUxz;9S`7rdmDiyjT$_PpH?0{j#s$$siX zXd!-vk!(NXA+!i@YoyrEe+VtcI~u9>D<48D@t#KP1JuXRANb8ikp~!$p;h>;M!W<3 z$Ixp0P9wnqN997KG`VpAmbUd4WDYnJIH?qZO3OC2@WcsK|Am{MiPK!fKWbz>>#5C+J!GPQXJ&h zK)dlJMyi9#8ps=8Z^S-CeGVPQzcPwE#CQ%J!8aN44)LEuNAayjf|8*jUR8!_NF#KL3rmuH~`%^;4tZRStNdw zarj~S>#``kmoaE=zJ@~aj>al)?#r?>_+N}8y%`PADLmPj=gn_`PU9_%1>VXAC>TG* zSmI5635DQi7|XmFFQGGdTVugtSaD>4s}OKhx;k5f# z;Afi1eK;Td@8RuDls?iA{`c|DCVsv;o&GZXMiY*&N2mW&{GTRVUrwk0GyHZFzOS^? zzXreCMChyY$-frA&qV6$@yWjqf5=4c%lYL0{D%;RA0sKCCVZ+1?-;)uYQ|@p2#zVc zp%#3ONz5@nl-M9JX*|aLT=ouMY|?Q|{<-WuUTzX_oYYsQ!Z-en#?WGte_Y;I)`HJB zsXj*kT-J)uHK{&M|5Db2?=UGouJOgS2j6ZIer$-(!2bgM6UTtT#K17wl*i>WF$ip7 zD&Q)am=W+4Qwg9bV6?yID)3ntBJ2oY4oVhA7Y64{@h&Hrx`6W#8P7O@(TBI1^5Xel zIS+p)Heih5!={RO{z;4p>}#ruSDwU}!tti;1nMaa8BR8h><2!in(`9(r!Z#!5yPRx zRFyyt#W=#HrhbV!Uttc+f5~U~Xevu&gkqfFE>lG!KNRB(_nN8_m7y4Scs!Y%L_Ld{ z3;#lnOk$kH%!A2fUK0N-W8RYV0{zck4 z_z1ZrS$KiA9zI6yN!GYX^MVt|!Ixbw(ze2v$uXDxF4DHaY2>72?s?HFcn3K@S$-a~ z9nK^RF6%@ycffgM*=0sFW|x}JpuC9L0T+@Lm-*3{-Eaw6by*pW@rLWk>=f!H%whNy zIWmQD33CK)BJ)!CmoP`+RQ|OmPQLq=Kho@#Q3}G3DKn*)7f>h;YObon-B1xsDU}E6|6j>@G1#<~LOi`rr zQ!sI`FGZEAOu_Kr_(2*&0Y#R^NT+202m>e0BaN8~r%Z1_5*Cru-ZCV(3#!Ranpv_kkbB_`c3i*^luOUXzVX3>h^ca-9E zjci&m+)k-Xcgd!ez@3!ZbiZucb-0_-k}k}qmBM|Lo^*{|ngpI;7M$UdOS=tEGK znD=34Grvsg6-*s`z)Y6OxQclWA2w5D@~>iEz`kaxOyyOK0*?RJ=myeNQ7ynbu(PPw zFimi>S!5RD8s;tBXcnGLzb@*6e>Uf4bFMSH;bt>_w)8slGyL96n5|RF?14X+NwYml znZ58QGkG?rl-UP=HdAIxOPOEbFJ^vx9T8I#d1+RjMJf`t!1-p?S@a@ND=aW;%;FY_ z-oeFY9a-`s(R)~K7LZN4PHTp<%!;!#ifC`)G_#B>;WeffG7+3*b3_;z98e4RT#*Py z%*|u?N)cuRGR3@-PZDFaks0PPK0}PrMLf;fInioF zMGpTKhKwYeN9HmrFcc)!oR`b5z?dPK=ImT*1%`lRnHT43+@YBxx#pF*E_Y}a$QAS2 zT>c%56;fiZ%2nRM*dX=h>^$l{j4e2tj?81+!`LBB=Da-qJ&ZllYA(p*-oaQRh33V1 z8uw`qNV|Dup38ljBhqPJo9B0*=7e;cx8w=$)0~k$^PW772Q+tNf<C=u8u79SE^v8F`vcix z5mP{VA@V^wEUK^4Ux<7Wl||!K?hDZ|q{pJ;s{DoMI6|@v5Re)~Y-FNkxPaau3PLEB z83JJg<`hD=saV3A&C~8D<037TagqC?iJ26<~AhV zf`3K&jJX}jwh&&?sbTIw@+^QnriQr_xoRQ5!l_~ILW(SuSEMz}-AJj0-&LLGOmF0+ z1?Q^AbLL^>jRp5A=Q;BT(rm%MDt*p8ioCZFUR6G%oklDziv=1lX~D=;%SwUEOIiqG zZCNYudr3Qk*jcs+gfD5Kh?8ZHK;tzn64_uGT3+ z3#|ufx2i04`9kYOI<0C;>D{6xglCm>o!gD6MfO-pN~oVOb;toLSqbA4<~efMN>Rf9 zgn5DZTB%BupD+p}-im#l+RfA>{At6j=bT{a6Smv%>!l}H287)Eh zk25S=!W$dzOU@aV9iiEV|5AE}Wlwl-BYde7%5orlu#vv>2xU1EKH11$aza^7gwHn0 zm(oy{GvSMkU!%@hmOJ5RTTY|LS=L;_WLs_{=PYX;!OWK5C_T%XPq4BTHtL*XEg(#@ zl{R{uV=W}iw3Rn<&S4i59BoyN%5&n?1cq(-E9!adAB4@ek*^r%v8xDMZF#Tw=dr5^ zJ8cE8G|s!NBy6yiyrN$eZzWu{mA~dhvvv{cZP{}7x8uK+rm@lq*>=LWI_azoLY|%Utw%aGn^0n>daF#w3J40jq-JiGn}E<@7u@WU z0E%y!Q66*+|*_Qu?bCI=;kZ#L=ExpLvPROWwDMEjms8W-KX2>WcMuRJcW))Efc%3pCVu+|Zd z+A3d3FR<1V>}*>aJ#tyM36t%)Eu36d1;Nao-y+Rr-62@n3tM#ZSe1ln_R;`P6P)e+T6M0lWQ2|OoK}x3tfz!O?YXU-E39XP?e_du=@nKD zVYj`oRp%T_T}$MrQ#k!hkf;X zda1aVpt5g#&n*@A5qj)9-pfnHUkD_J03}Hz)+A1Hh*A29++ZTbAwww?xoHtC90W?G z2s?r}#X+K^im}?n84fZfLyRR5Z5@cy0WfSOa3FgP>hmfi)-QI7r&5cd!=3oeqLF5WJ}B>D z9f)lXk`L7TSV!VV2iXV4eXJ9)%R%vhe;?~i>~&CmP~OM76URHUJE#w^bBVt=Ms_eB zVCNCZj=T>31MGaFg`=QD`2f3sIK@%YL4Al_NSxs)>tH;@E+X1GDmwTNv5Se0j;apj zL+nbTrz7X1$79wX#6KOmA32X%D~TH&c^~Pq6EWzK*Jo$|qPaV!R`}lllz1m6+@p*~xf@-9}7x z@t;$y@f$Bs|(7vkeY zl2d?+)F5UPCpv|z=ndi^qN!7oirXMQMKpKHSIHa1r-@Xjauw;NIG8xysai#UDGnjp zI5n!cFU4nw4o)2^`Acyqk?s`GMS3lcByMsF@1nmJM-jc8^1I}(#nD8DQ+XHZjW~w5 z->JHb{ze>2^mc0O;=U1IBKkOWbjja{BKxIX}3qSTLv-LNzko)i_IWzb>el=o5h(#fm35Qw^^J;EOzSXmN$#D ziE^ia&!l%^0kP33{4@QXxR9uDO8U%wC%#5(amxQJe&4#FfP9&ec8i58}H-8|TIz?g#NbqJwiskNku9K9TMm&`atR%ZQtt!+YtS z;-^F}=cHb4r}!ChhjV_fyi;65WH^`il0J!RiTjm1NW>J}@ANzUPY^lotzk>{M$$L$usC1yD1_sP4(%|yO)c^~PsxP_SST-`_i zEN&$VoE!U;pRp=py)*j@wGZ1xeB~VZh0%xYCN?=M`uLx*?};VOsy=R?xSQDGoc~4M zC;m)SI+uSTeG&H%JDjV((7%X#i7MyDFWfKUK4On^#~1k*@fRY=J%BWxS*|&1qI)>W zlUc4c%G5oH6wfS&N140llj@n}$SA6NIcYqre8i~f?$snuR=M^l8}~+1Jgb~A%E7&Z zRL?3Wj-tB>Fh(iO9AAQQ@A8 z?#xMVQ$br+ck|qT6cqwXA#fEAf>j2m8wg6$zy$g1K~dq-zZGV;fx@hMd>jR3=jxUi?5d+h|li+wT@B`)OxAY8yGQXWT*H z837Ou|8a-o$HkA=2TBxf+qh#@<9u?)eU;AwF-n>K5P|Tjzd>O<%GdyOjbgPJrD(kI zOIPDpp2lzdjho_)o6C$_>y6)gntbwC3uj$TK0*V|+0S7n-BTt^z)ToVoAAqq36q%< z$O#k7L=!9;CRky9o&vP9gFci$bAKL?q^Ri{sB`4(&vwj7TNBiVk=#kUF_ZVvCLaKv zkqwg%0j`D`xp`DH**9S_3foZIMtFNEX=f=Jxs*(dS#|>@2iQjTnq66HmftTK*pxj&^>y#GnfsT`Jh*SB?=m~? zXuAYJ)Ob1bc%EGbFpQ{C89u;80*oZsncMQLcRaM-^}+hbwh7Y^n**3Cq*6huj zX8##5du!6{?d7w9I%M~-IeUOcWd9uR@Hq#U&)KgwkN7suIX-M&{KR>Qv*smlnwJtV zFEwdidilJ}#(CKj=jQ>{$guf2o915)n13yNeo^`SlE(R^!xq&~Tm;-AsBQB%^Q z=JG|Yjf>t7TiiBr@rPN9KLQa6u#My|?x|kf*Rhy1cIku}ODF!ebkc#P-D57_WFFVR zc#`0kE~7Sk>c8=ypw<&l-3f%$SQb@>HHE~QN@Yz0dSV6sm<;bL!23w>M|t=ok@&-G zytg<0kju$^UigD6@dw=T`%LkBb@6*N@eI}Q^@`!^q=9QC!`BFgujUP3@a&qnTCy` z**K5>nt& zYTz=Lz~%kkYDVDifXl%N{DT{~iXXUo&`kZ0>T1TxLw+ZRywykl-r@eX;Y|-Z&rp}S z|K_c}qzsDFIL+5NokKdEOFfnyQGkTgM$bJkC34+~KHkM^eWfEga`_dz|mnamVT-*0n{fhb}NiUf47K z!rmzt_PJizzvRLJ&kM)eE*yuVI3uIN#z&o<5_QfsDtt*)glE+GJy92$qGIc#VydE| z%c3sk=v@qpit>+&grfN)qjSbb=T3>vbB)el5?$aKePvJdRsU!~Sae~0^tGJmqO$1X zs_2sX=<99KrBJMNWNg*=*auT$AG*d?FNuBR8T)uo>=XZ3Sy=4T_}FJTu{C9}wNp$>sS)^(KD`dPuwT}I8|6&SA1M|PTc3RxSp!G-uk${ zwzw})yw0fjkrU!aO^qK-iyyNze(Z+$pZ3O&W5(;Ajn_+v*UybN5XBn;x^qK3Ist`A zq>f6QG9hv5)Wm7D#OX^DXKVm}TP4n9Cfb}$v`t8~%T2TwC4$%9{qrUtI6^M2Fe|CB zs7MlW-Wfnpw; zM;)Cv<>$Pq)AFXdl!kjw`abRNY-&_O>c!mDXi;j+gVflD)JyHD2LM-YZ^|KN ziuc)+!wD%za#N0qQhXky_%@^*Yfm|jN#%@64V#d9c53Q5T59;x)QAnK=l7-_(3Z{c zdLmrQI;1V1!G7Yhj&)djoi(S9eh~Xid-hCH9d|$Wq4uJgE_I{>*hktcX431p2e41H z*Uj{+BOSy>YHzUSJf&~JUew-Z&3`K2f{oGMYb||B{}X#j`-rvjsr*kYUt46YQ$yc@ z&DE~3rq;-JVDq&fSbNmacVe$-KeJ}k$ai7|+6~s68u~8mHSM?7{2KW#Y_WE`wX}x5 z8+%>5+ge#8-;I@O(`M?_X>4YNYcIE6`P6SS>%8_FYwi>7I_y#HcQb@fNb9k_+MP4x zPq^!`$F=)rXgnot!iH(jwkAF0Zo;0^US!Ry6CPyMXftL?>Rb-7>a@LQD(ZxXSTD4N zGc{kh_^{fvB{NN52z^)|w52oMU%2?PK5ENmdc6?(vOa0cXR=?o9AkB9D`xUu2#>Ko zYb$3;Ubq}*^=hkTDqaYWv%YA%*l5ecdY3@fSi(vhuXf-JPreCZO*nnIA+n7$MSv!)TG zHtsK7LRd2hG8?a#!VuO>g4~Av(&hi7=)d2ZNc%r*+}lZZcAgN3ib+(8g|f%@Ly4LK znu3^s1vMZ-=*);6HT2NEowzO!J3ARgjEY#d9N&9O)Kg`UaryO^$`t5z)%<`*V_27Nb%;2k8_3nM$%+6c4>f4V&zoUOUK3MhL z$GYFqe;iG#)_n~61HI~KUbXvU-5=;R$DUO`P#Z3KomzE&qo!MG54Ej&@G)p+2DPtx z_p$CT^tNNr>Tf>sEjFsjdor?xxBpNhI@c*o9MHe`7BJ-4zB>8K`CGtm&n^h~Y>Ivw{?TW3!-U~x>RCeGw*KsU8)+CKGM18j~Bt65)?Yk&dAN2_^X zdTM|{M>Bu-^SVu_h}pyc;d#(zG?4j@|J(Dr&FE^TjsM_z&=yp}wDaFRuiJvkm_dSX z+kzs|aOOI}cWrf%=vJmuu&ym=8@i3D66|iP+lEFnlLbGt1x2AT%-w?D+UlavIHp?g zpe-mGO<-yS@7n63(IjS_;M*5L@n{DJuFXDjpZ<7=gs1z+?Xx zczktW*~Y*Vae?Lg0#D`#>PrJpoe4bszrZs$11lZ}o_!fu`7!X^c%Xr?`tL=nul(QY ze^#%q+PL~^-0JFmtFPs+HkPiwerENJ|E<1xb9K$*)wf=*uKl?B_V{WOL(;rR((-?j z=c^^H8zpUVlJlJ1X^SK|^JL)O1YHt>J4ud8K) z8)ZXrvf+KQk$joGR5p4>HugW+_)XcwW7*_O+0;kb^tg=W5X@uMC)0qr4jXv9`W_nK z>=40I)+f^ewnHpWUEf0oxDE(USD*Y1u+U*I&rsj<4dCLC&NI~~gMgbu9?w?a0|GpU z1|I89vIDTf;SrB_r^f-{JGAhWcaoWa(4mv3zSF}50vxP7-JN7dV3orMp5ac9BOrDd z;F<0uI{{LMF`n&Cj}xGD2wu**o9qlkIBZzXyW8UoL^?z)SKdvY4@5b{E?3{}nGdKO zkmb6&$!s9jVefLo-5xd&?~uOSbT^p;Bs%0Rx83dG0BVPZ<*fV3En*282E;F!aP6}*Q%9zdBx#0urZWKW>nA$EoOVUH)EcR*I?9wvJMrycgLFg)z> z0xBHRSC}3qdjpjYc`IxWd%OXIL&FNz<76M;io>H7yvIF0K$Szw3gzQuU!dBdbA|eG zk1t?!u&&TOPWA(CIDA-Pc--R$)Hn>RFg;H82WlP0R@ff*_yZ<~;FYW=$$X&2VZ%z^ zlO8_M>JYI~`6O8Yv^&JER6pqv0A>edrS3_x5a@K+yVCHaM+jIP(pQ?EB#VG+F6X5I=Ay)P$-v!uCv0`<9&t2*h0uk%_lV|=O_KFStJu@E+>0(oV^31F5c{@U||`ZKVKbzhTbz6w5w4PSd^eh3D{ zJwxYbhWKpBp`pd?K#bE)YQ8@|v)Uh!)D10u0Yo@$kno0jT7gKX2#InixebVNij}B` zdfKS(gfX%0YtJ)4=@cws4JEfyKMliT<=5mVfY7N^%=96SxKgYNHoM8Pqap32q z*}tmi{+jmxc!n?ZjQIa~Ze8UWxxsT=tY_3-&*(f))&J`mbJ{cZ|L+-h!&5f4Oxd|i z`e9j;Q;}rW$YKkS=5$Z8c;vhV$Z&cp2^v}41!Ot3OOi*KUEB*0P9f68qvv~p<4&8UL8FUb11FrKq{*Y_ zUjrwd5~YWzu^u?(v{QP1^!yv(jMD*W9ktN|XPvU8J=8Q0oO3FY&Kh6b2mI}HPr7*g zd>`ODcXK5WZsROs1hNV5! zk`CNg^&>42<`n!J>|0AHP+%7UgBPXa?u?Xu+Q z^OL}cQ@8BU^x~Oy`;F}U^!X`Z-08Edj+(H6NvC0154Bta(@s;eS!O7} zK%>ud-mDB-vxH8c?;NE}UUPv?=Qt-S53O194Sj+0PUZPE7rvn{az3D}TeAeDyEF&-&%2{idIMA0n-%~DLd%=Oe()p<}XzdavUEtiVOkR6|Nf$YHD-W$*;z$p4 zexp3U_JSjQwex3X-P$Eibcyq@vS;lDC%VjeN;ylh#F-xM91^}*alx6s)p>JxkYdSv z`ZnjN@MOh>`SfV##PCCkC2V?(^Um<|ivMtq#5-q(n-%}%9Eo*K4L2$-aOg?SMd7nT zm$=Z=obQD%4!z()&v1Sk9u&I7m7e9?9-bU}!Ihrl+#P->bcq{1*ZEEO`Oph)^nB;f z;dP;Fv`6N!*QvgP>$OMbv6ZTI@R}n>=Cf6*-EjSpBOG?J>IZnu_eU16cdLGb>%Tv; zh^y;j-of=pkGQkzRNro2^W%}_><6mvw%7l7WF_0ATDN@-c0|B7t9Ea% z$Bu~DJ*pqJuleanAp4!_x9#;m9a+t`sUB=!gCCKw?W%X%>v4JndqWIw2U$j;#1S#d z9q+cqQ@3NuNqQ8! zA%?XJuAry0AI0!?krnhzc1w(M7krkU&F+j*?;_9AHEe5)ZWmlh&trdxG3+8M=>_b8 z7}GBJ9KDD=7Gv8*o}=s7!Lh78@MZcj_J&yA9`Z81j2#iH+ynniFK5Tbs`rpT)Aej5 zR<{TKg?^g7H`cI+{Doe@PLDP1fq$h}vh!l?d;atL5d-@{?05U>e?RgM+Z4NQ-@Kt&{J2p3N(F35Fc9n_j>fNHFEVujoabu>@NV`HHUN1Shg`;a>VN z&W1!@F4;>j<3uDXbK%$Ya!zcbI+uJ+*K?3WT`v5Fewwp4(U42Np;vIy6HU4BTY4oY zFVU7uzNH&D4T-FLxQ~8?^C*#*PxjHPI4z0FeE1W+n$wx6&L=<7jT~#DE+76(zrp#C zXvil&(`z^biKcw`3%!;zmT1c-ztByb;3QTdJV7@nq2amJEt#pE=d z*)Fkabv;Q3xh{xWR}X&!E_B(eHq?{ffG#fS zYEwN7f^IH(YFj-Cf;^W7HR}#MQyG0k;Vh&B$aiT`EAPNFxzSFw`VPqi16-_X-5uBw zT;=jXZMZ`^f?}5ewdoE#6CfRpncwCViB~ zyHC1+nJz79%KNY@nC;R@^-D=tP~&1v)7^*Nz&w`^X@>ix8(82nkY>6MyMsk8V-zt% zx`R5G;B?kQ*aJM~vLT)Kkn{k{Tq4qy4`ENR+$A<${gCto^)5)d?jh_2o_5)rZg@y~ zffX+4>86LUH(2SCmu`DVdQ&0OhIH0r*ay7g@`%D~NFS z#cI?fc?9ITAsQVCe-AEn+pAGOBWD`0)(qVP{&GDaav zqzq)a24}LGVL3S0bwehvnUsUht`V8aW>^8TU1KxV&7=b4x+0mnW;g^~=(;!4&`gGa zF0SdBre-)4baTziv^A5VAkVdd%FM!H;0o7AnY`y@7|3^Rp?b6MCQ#_wNr6q|CNRL& zN`+_P&EP864;0}t`S+v zHh3EtsWDpw>+*9J#{v95cw3~gi-81I^%Wom@*EL$5H4XRxms9Y@^ z52m|5qPQqB9?W!Yp}Mtj0+{XENdZ!10;qAdQUO~y5zKS_K#@{pB3R%$K$UFaB(TVJ zj6$Z!Bv9uXoXzThQ@~@c8?t#FWC~d38j-E+fOml9uCdwb4sr*mcSW*w9q>-@wCmn% zLkGDNtZ+@wHg&+ez)IJ=Y+DDp3pBVkP}y5J6};m5h~lfrRItjmC0qFt-Vav0c2b}f zxgRvTTC)u#`90|3maZ|8@KMmsEl*=3$)h08t%0i4!ass5+#XSc6Zs>^cWa??wJ-(> z-8w1MiNwGFH!Ibxg?|E9xqZ+W{w03`#cl%{)4woIby>$Wwtq<+RJsM{vR=bwV1(O- zT;6N442*P($W^|EPk>QwvAOEk-`%X$k}P!ZQh6jnu6fSGPBxyrZjSqhNq%vHZ7&r*DqHCOi*uB7s?A1LCA ztON_(269br;d5Y-+gPscEqM;qxdrF3-oux{V{RMrc<;%}V3}J)p7K5XGg$5xo2PzH z{tW8fkUZUc_!scB+ul6Gd-4~s!Yw_|^d9~dtaQuEv%M#O1r2TuRHYXF9lYZ9h{ChT z-@z)k7AjW@{{dFJbyA!b`3Gopvr^q!_)qYL+Xo8RBL4(y+y?SYAK|~iTDLK(h)Y(1 zt!@$d%1`89pvf&bpY;i@0$bcR;A*hbZEwEe6Il&f z+|u(+pWtg?w_9Gm?Gt$ow7E4<^N&?nr^IAHD}Jbl+QG=qK-iF7D|CrhfQ7=;oeRVCyIEQ&r)H0@hc! z30&d+sDSsCY@+hQEd|Q2@Dotz-dUjjNf;zLHO=;P3#&mch?J zsry)g?JM~VRJsQjvWDPRFv5L9A#aFm1tZ-f3Y9}}8yMvtTc{o)+d!2&Qm7k(+re1( zy@iG$vK@?fPcJkL!7so>_q;;e5cz_NBsWkX+LCT6oBXEm{K$nF{>)zZZlwOz(RTOv zV$I}#hL4)vQ;PMI{~bQs>7H6_oczzoQHy(Kv3c^pBS*X43ySTN|Cu;yb8jr>PXBk} z=zx1uaR8O`JvvAMWUA@^P97b0w-jrruJ2L1dvCFR`oB|0$K3mhjTAt3bi#eG*gXB; z>7!Hbn~Q@cmkfbz?oq|blNScT=k6`Xlp7IWsM_PvG2TY24^-vRc}%_0>I)e?tjBa4 z5kKgL$A@EvjaEOX#$(`^X(Qqf)q0E_vu(8cLne>laD%K_t+yN9S?%7OMoZdsvU_wjfey%;Upx!xpO)n(!DnZrXy# zpec{Bg-7Nw^ZLWyC6yip$L#B8`;-_w8jo=|9`=Ez-KUCYtyxNg=6HnY7O%NTgXVc` z)&;FuN{8lqMCp>(T%+04nb%G=w!@8ce7o8xP$CPfCVyQC}?h!&PR$O$3wt8$Pf)q>VL)$!}h-AgZ z`B1b+B5_Eulnupr>?F=BF0!FGj{`)VVkrko@W>{56c;&Al1C9SD|D$#iJNCZnLT`V zSP9Rwv5dR*a9GI-&!)0~t+O|k@I710dctRimbiFkmYKs3hmZACUit2{rH8MazCLt@W?GSgOM3ncX%E3<92Zh@4Z!6#VTkVq)PbHfSV zHftml=^1fCxeeI{MR~@aP;awtgH)c#3Eeg%3X1jId&02oq5|T0CYBuvUm5}}@Z4F} zGk#&Fq&-zMYjVjT*z6usym<0LB9!m>`9xjx(j=(RbNED0^u;8o*mLT{teB-K5aIdm zgfbdQfU-S1PpG4<36RFqdO{bCB$mW^s!u%F793rY;Hf$BZd*fiNs?#XiEpEW<4e*! zADs9ux*@(K!_#zPT{O}Q9&_JN#2Y1h!7}%VBIPLj8Z38@EmDt?uR*;#QluM&-+-sx z_ZAsO$v0qydwP*+6n+aT&WDMX6e;W;pyAyy5<#$S_WRrf}5(Djp7hIa=%G1F9E$TgaH?*{(vwhv zSN5r%9T!hRNnS;#X6;&90i}7}JGFS%#R@3H>*=YWT}#hGSzhg@l6PG^3*~rqpE|T_ zX(g2FHJ~?bM{r2$HKw<1x8jh}EBF*^2T}$_cx^bv+hHw(BE2F`DR&?zpeV1{Q|cYo z6A;gV0rE-V@Lw4Br= z%`Pfw@eDf|kT5%|q}4O>q$=TXR!O^O{7Fs1?CcV=XUa)^!r|Vwu>klo9AMt2aYg~q%- zoG~1<)8^{njd|)hptRazAnvYWIpgquy`53Yoo-GrIjqHPq>~ z_l#k`wHmT`rJphFN3KELUh68pOKWH>ndhynSeF)jw`9Ke*csbF>ureT9bCamLmEqR zz22SrZC68ONxqlu)Pr5Y=Sm8_?5E!CYB*O?>=ktS+daXTO9-!Zr@!0NaJl5Tm-6(w zJ;6VhobXbe-o2;c=aQ3N$)|tV6Z}ibDX-n9f7{dWOUW58_2~zDf`2VJ>!msUZcoFn zCFi{APJg>E`1g{(y&jzYZePRiCI5JtPOsY+{71=EFZ1c$`x^czx#rb#`iFhNf0kVL zdUyJ_eGPw>-1M@Yey}h2uaa9{_S5h7HT+d_+bihIxBG*uN}9daozcZ0JE7B_d&>5CIRM@8{7`O)vmStIJO|26amYca)^n`f7H2&OnLL9}vJ#L?sKqm+d~wXh z6zI6;=JKGJr8}S#o>Aq=F&B40Cp{C(55+9qS+dPrb#`}FLt9C-cky`^xj)xNVDF9T)fjOOlin{$jv*i z!j@*e5AnPkDp(mv6STtnQ3Wr<+63{vTPlE4gd@^Y*eDAT*;tTG4bg0j6k&#H5*U697xdRCW%bVGUGAI=(b ztldz7_rO_G4)O{r@*X>D%dx(Kbl$<0tX!lQI_ABhl9y}kh044mDwVm&YpC2iwo;vI zeGTcokxE@I@&-EXy|>bkYkdP%c&AsIa*?-CrFUMXE!X-MGI%#svhtBW=!*BFN?yLT z532HRsZ{18pP*{*&PsK@^%G?DwpQx$k#%vPC$d+E$5WQ$RsrE-FZ%3Y@LMc z-qv%vVq^*$^ZszoP;8xoCcFpEnTnBVXv%x+oUPb84Y7QJ4Xk>E#+d7~!N9Ax(iqM@ z5e8*FLT9jjVh!qgE1kjhK@7TjmV z)*ZxwvBKw(fp^F1z~K9|7?gJqCPV1cX;9y>G8q9rR)g*i;>cL#^TA-aV|8SReFhAs zJBSlS`i>cFcdSkfrBCqRthV+#QN<0+i=&)X2koX|82U9a2Sa`d4JpPS~(20Ps87=`-lr8-RIHYy!%!cMy5~8 z-^%-lD5vM#Ep^X^Wks9eXAQq3=jNmx{tUsihRZ>hS=)P(D?*k zVLe1V7{`1zT;V;mdN9g-BCaSOBA$$LpV%wvhgMI9-Uqp&dx&^3PW$Y=Vt8ovVpRB~ zUokyIycv}~c~@)?t=^I&_RK0{uzZ87Sj~u>G1qrP6|dPUXE^&tR4JPg1%vGyTcvKcDi~Z}q)OL} zgfJHR?yWL3TSFKwzUft_W+as1=9^b#Yqo|mc)kr)tmjA=V}aE7`F@~~XzON%*mt1H^cponTDo{{eR=qm4pHJ*{_+d`q$NCG3Bywe6+#Aj9Mve2vwGWHMTOH(cX&Su+`} zz7f}yT}T$A-8c4{y33lyF#96cbX`a`qtkcqHA9y*n_=-yzh>$}av0sddDm=R)*Ob- zx8WM=6;i+$@O^ZR_sTkhjJI4O z*G#XFV#bv3*frZLYcYf67i?sah?X(eZ-bFXTD1&kzX+p}M2;}nez8V1X+6T=`XNRg ziG0sk=(pGSTSvpr(lfs5>IWUcyGqacYN}bUkupYvU)1&F*B4JPqWu!DA9}sCoDt)< z^ZNPM7t0xOeh04Cy}nq%$nbkgVcdsLmL~cYT(`fTT~Vs`YrM{Vd$@v8?iYJQ{oeXB zL+^*&(7i`~VVw4Byutl=`1jHoXglEJ>_1AY{913QJ|6y~bcWv6e4PDfsnM_ZhW_K> zKTBsYZsW(IURyNvn%Q8mf^7wo1H7 zzw{eH@0b3}IN=v{V;x1wmuC5yukU`_aJDqZujl#?6fR$y>-X;ZZ*LnaOY{9~*B?;a zd}*Pd{rbDN4d+UW{eo_M`#$(`DdD&7#&_=)#DEw3cr5pQ@QPw6v8G?jLe%@etC^i1pul%P?eZXT z(&hdSYQFp0&{Vq8-&C`Xg5ygC{^pw9UmKp3iu`+OexNA%(m?-rHNSmrcv`yJf8dsB z1bM|M@*kscaO*3E&Of-8HEQi;l=;WjszOV zq@k-c$G_*+4jZO$^Tx&7$U!J z%9pV8Cq|&(8{_$ZFaE?>?f01yCoIJo62D<%&%YOOhRkouIP3M&GR7jm1I8aZf_Ijl z^4(p{8@KjRh<{71avYiQ0d&@?$E}|jMt^IqZXB5r1AM48j4z#F^!wkty?FZK1mmm! zQ;NS|I>{LFZ@-;9eQ}a8;@^Gy(Dc$N#;E@r3g5pt#TfVhe7kOX=`>@~fB1IK^u=k$ zwExs?+oW}bVe?^OKu@TYJY5Tg|tb9;{vK zgh}{z)4R2IoG=+bsQFvPT4yYrpZVNO-OOR#{DSB9O@J7)@f)9Wx1eHX8$XIVe7PiG zzThW5KeTC?klDfC`TYE*OG4&L{sHRJZkY%h;5R)F*aAqfL4NCV6?I^T4f8F}HCxv5 zv1b0d=ihC*!^fUe2Q=$8UGiq0;}^Be+PKVz`8WSw%i@ife3<|6pSA>TT;|KX%5QH; z-gwEEd5z!Qa%kf+KjwA*o0jt%FZnTV@;|rKZCvKhyu}}G>DhS6pLv@<)iP_-GCuPJ zKdL2p{UuN4Nq%C>q4mqWn5XzVTh6b)u{f#Zl)(4-{)TSOQw=~6A2fd#ddCIJpzey+ zg|2nQviRoa-Jy3}F%iGV^uyYcg@W`7M{E%yIr_ z>Y{O(j5*04e%`a?l8iacpL#wke3_g%M-bAwIQ){FIZv>;H7IxkzxJwJv;FDAQGt-P#j=DU|6hC~BRxby*m5x!_*w;;om$ zm@5TOTZ6VP+r$(I+FO&iUfRSI3A$SkZC$pR87O$udVcGr&CJz;&#iS^mu+E61jDU8 zTQ6;4$^=ubv$idZWQGeu+7@rS6v^Bw*i4;TF5AZ3CWvZF-gaplGg^??c4*tOC}xac zXWRL0m!g<)f&Q1ZWtGFE?@5pfqeQKg<-c2B2fk z{792(4NAw@{CJaQ4e$-d<)@hRYtV17h5S^LaSZ@sF8oZBdCi@{(&zrl+v_HShf3T0 zRkwFfHVl=%@K3(|!({MqX@~#r+rLdV441z2SKodx89Y+j<*&K@ZnEJ^>23d@+uu$G z50*Cjue<%-Br;e3SdCz?-5iG=#A*c-?e;hz6Eg|q zFSrS4Ce|Vddl8TTWMQp>$QP;vGz)7N#J|ua0NI#Xkn%#GfM#Qzg47qr1Rw{q2r^%o zshfDLTTt-Ao&XeJHbLVHZW3C64G5ZE1W2NbOuVos0a}bDl$*IQs>S9C!^{CNa0GJ}Mw(SHdIVz& zv zN};@iOP$nX5yG&JfE~aIEK(TRq1u6-z@mil9hx0LIi?b(bm*yTdn{I%+F{%QoW$aV znH}aG=t(S5SkPhL0aRdWVPgk(7g~X(3!6Fub^&LxOkrz>Y8QGI%NANXG`oOGOe5^= z(Cd4hjABh4l582c9?ge=ddE-M2CGBa2eAH<(=F;=wSkP(T1N@E|gpHlt zedzDl6=73nz&_v)tV-D0soIDBfmI7Fotk~XpO{hD+o|7&{)ycX_H`Qf0e@jN!og1S zKJ+iFRyfgV-v?A-CZYT#cRyN%wFtvr2J8o}Vy(i+m#Y2fRjgeY|5CFbsK(5~l$ZMb zXf@U;OnqtG4_w16!pxWE{pdBUTUhYYz8|Q;Y{JHu+=FNhHXv+z8E_D|g$)W@U#bqG zx3FQM<)!8zP>b1xy)X3#(OPUw*!R+S5V(y^2nS!952ClRDdEIR`$3=)V~OMzZW`K% z%@u`N0@8rHn6oI-qDn*WVr)^oMUw{H!?>api#`p#hbiY6@f44@TLisW6~EVLDi5QTLGP>2W?DT?e;Wua|YlqkMSlLfS6 zDp5+8J_~KfVnwN4Mv5N6;zgNV<}CCDmMALdvS$GnOf72c;^v?hEM3&p6_5jTVVR=V zE)@l7VA&!|mnH}3#x$bdE`1K#jpd2@x{Nu%E37~?*kz{p4Xj8s(Phs8dNG|y-p$QL zd$D7purKbfiGB%Xt3LykAA^wMHAijd|(hWiR7=ih3FvGA_{vIPzVfRt)j?RDhe#Y+C}lN zG=;!0W)`Kq(ift`Sf?oUm9Y>Q!7QT8S7wSi!Ma5Suk3}u1ZER8zTy_66WD;L=~X~6 zFo_L{T3@Ls_yijkSzc+1fho)`>V2gzMyIebQQs?LF))oyhz4JoDJ}(@5>33a7Xvh$ zC6?Q`^(YOWD-N>-)B|+fSsZCo)uVKrEsnQo>Va=?t~kY}uSdVZ7m8DD#(Dt6UBsC- zb3F>;ZsG!)y&iDDdE!PJ_YUfSuMjuc0w}Ku&KI}ZRCiD&E)-jA8cJ}22Z(!Z`a7s2 zzDnF@Gg77#Tr3{6neU)ZxKuo0v)=)naiv(^&%KK};}PPp{(!r{d^}Pd*{`~b&c~y~ z@%@^+02^0{Q~LFHQ8pecPVG0|1vq%TIJ4h;7vOSg+hp(c%Hbg-$?mU@B;B*zxh7uju(k1`tA1t z4_qgf4{#r%9{4eF*g(KTz!NVMM-HeSqMmrUIDSC$5b(nF;*<()K2UL$yU%Xmu8PHI|72GK9 z9ne2U{qP&&z5yd;Ucqa`g9GNrs6SpSo*1w{2Kcy1EdR=Vg7WbeaoE>@Cx8HN6-Rzm zJwXL{yEy)<<_RFg&Ek}=`X{Im?-ZwgH9i4ExJ8`#)%*k%;oahbul6T^7`KTVzjB|U zVthc{^fiF;wcvx|)~~8(s01GtTfSTaTiJEpt%_h#oZ(YgZ5@14ChH22f5GDFnooiX)u8DzTkXG>!9j6x(OFbEQ15;*Il2XxN+t&F&w)r>DUlCx+t5fnLJ~F<&<1S7 zBPEeTsy1{R9wmt%(om=5xJr^Tq;Er`@K{Oekg*Mj#^WWKL*_O#8c&oI4B6X&cw8-M z9OAw}63O5NlEESK z3p5EYl1vQQUjQk%P9h)XcAzQvF-h2PKnJh`FOx(Lt2)pfc)28gSknRQ#PyPtVSNX> z6F)6U9X56VyYLE0=CHW~-Gx_53Wn_+Kq_vKG!AoLqN(^5Nz-rurJup8B(1}$m*{@H zT4EX2P#zlGDCr&6zeEqGDpl^Xb#>jDHySL z0R^~?lIU<>p#}JWq-i98x_ZY4C9NZ>S7;$VBMZ^I0*Y|Eq<2LB3N6CNBz+@B>L4DU zQQeqdp~d)=WMahr3ee&#soc&bQ7t}K8fFh5fg`xHG}5jj(IYrp8gJK-!1p*;nqt?J z==b z;4`8f?pw41PnR~022j`h_>6H!^%gygXG<-knzukDKBL~zzeOwYJZaykkvjCpXB<4{ zx9B;%NIEfUe+yj3byE2l_dR+UKPC+u3wRIwjF(9x$5ijppYd{O{FvrF@C&Y&ri|&| zqrc#%rKw}a_rR}sg*0=_{2u)kuap*y+1~@d;|6Kt822OkJAOslG#2m?_yez!wvMSj zqJQAkQp=d;Bk(6aWA4#^ME}HZNc+Z&AA!H{8HJDeBl;I!E1ej#e*~&@0E$4sTcwfXs!!-uyj>bUuK5I1<7R2fxc(Dbjdw~@$Bh)6fLo-Qc2W|`1@1)kzFCL#S-^eMhd);D4N3OvJSltSjO=rdd@o0zbF1zK^XOg_mSLR;|& zS=eL%MONUEvdBr*5ZZ=E$>Jw9LqI#OlBG=QhtPIBR+c(xq@W8tUY0p&9ztK>iL!!8 z`w(EkXZ%Cl5!8aG%bF$wDEb1Q5fQ0I&@Mb%W|`EC0NwbEkw`y+cH?=nzDXkmX5cew zBJ&9P3NMmPOxj0)UR)=WPjN@lUi_FWY${+Bc#W6IBBxZN=xe-O7C)sK1>WF#S;~}t z6n%rAmZeS^M}fC^g)DQ*Jc_=>D`f>!_EDe@pYa%R$I(9gimYiWU>x{_&j^iF6 zT4tHjj02zX8MBdo9Q};nko8R&DUT6eBO9DDkE37kTG_;ueH<9XO)~j3cM=`MTV!F= z0TeNUx5^@?Rg>rt-Y$!u)=UD!xLKAmt)E1P@lILlw2^{IaEmN++B}Jl;N7x^6mWvisFKXn z=rleho0zsw12lpqm$MeE(b9;y@-SB58XBE&mPfK;)@bPjTOQBKT|@hZ;L1~2r`Bk{ zAr{J0S=ZOlK*B|y$?9061qnBK0c&&(&4J*_8(9n1Y8{9b@+MZ`S{k*o$Xi)4Yqd;5 zD7Ub3*U}t`0C_L#)LN}0u}a>@y1tg?M2O{std6x>CqgQpV2!S&ITK2`e9i)e)|rTq zhs_C8(B>17^2j+c3hjI%N*+HaS3zSFDtXGBQwlAch?S?#xvrpbh^C+i2T}NJZrQm~Gl^M3f?a ze(p9}6rob2%s;hF8%4w_Qs-aaMvErm6`AupwrQh@L`A{;(QUMNLak_=zaUy0PoyiF z<_AX85{OJi>-?B#Z32<4u*}bmrX>;@MeqDm(b_~JPtiC3dNeJGC{PT}?}*kW5k-oL z`J>Ua6hfzvvlql@Q;1`VFm_-JZ3j`Nh-AmaXm=3higoK%lM1>-g-4UbRMN}#Z*rPGDRKlQWWG{%*rV>{aP3*up+J2%+(aMgA)9xp#6&7}G z9PI#MRP?e>#c2-^HxzyB>v6P$M2%vQ-4UlfNYpAO*rRc@Ov0p)a~33MGl>>O7$-1+ zmPNEGA~`V$+AN}75zom@pk)(gMGEIsf;OAzRHSmQC(v>Tiz1WLk)X{Xx)lYS(F9rn zVN*1679?p4hyg_tCoqXtNDL}kIWbAvLSk59;p8UKiU_-+mvbsfTSSa0`Z(8; zJq2sOCl-dJa<9X*ql8OHCbt9D9wppDTDdXXwHP4`v2b&@(|#fXLVCHUwrhVPR)zF& zuWzT}gg9i7+p%4X6Vi|g?&x+}8KDf3FIcccTSi2Lge?f%K|4W2hD0ui*`Yl_M1{mJ z$lXCJCsZLR3r_9OmJ_idsSB>}pq(V*Loyfi!@Wo6@Io56bGE1aIA=x3BkuC;y+6*O z7G-Y74(&-IF{EI@=nh&1p$=(Wuwa+Af=CZ(S`fI4c9zHtXcZ=LXulE_A(;z1_Go`4Dnkku zj_#rTP8dQO7cSVR{hhcH(zGyeAMFpKDx`H`%s%ZOM0JQ|VeUTKpM)`_cj2jh+CPaK zA$<$4@1y-i)PxK!?AWLMi>M8mSU9?mRz;XXAng`07}B~Z=AiZ#F&tu9lzWg?OV~qt7o9qoGBT$-G|#=iuy#U7J$hC~wU!IyX9{Sn6zSv`W&SdDYJ6U{rdd_s{l>2|`J!tdhgoW^y)L*8}n-{j3x2E2M zK5u?l6c4VyOrOUIOXU5x-s78j3&M8tF4SNCX5ON(1HAfr4{)AqST>KWzYNZE4=dvR z=Zu&DW9%I!H*A!CdB5BA=k!wL;{ne+cq zbS6Gcq<7>qiqayAO1aDVoBa#gWagdseV^z1d>)O=Lt0BevLQ}0 zU{$~3Y%(l_)I8>%!zb)*gS{0%;h%uCuxFWL~& z40%aE(VuQ0704P$Tj(z~#1#xRkhalVHgF1Ljih*b_XbVDP$Ow4{mq850@*9lF8cco zRRu$@NPFnx8+-+_Cel9o+=fuWP!lPYelUupleLl3=trXBbVF?m*6&MNuK$P$wym{xphYkoA)C=`W(< z3`4ynExjd*W03Wc^z`m1jbW&dR7iglRc4U&lZxo?qpA!;{Uj58Jj!Q~4UjDKxu}p~ zXn=HtW3qaWEAXB-+Lou{X5`Tvg@C|13 z7RF23_wX%d*Or`@p6}s1%-35=U($YntC{b%RKE250N-bhZK;1r`w@P~oZT|=((@zy zn0a7pL?dk*>|-9@8r$gE2DdU(w=x=O+u?R*#@3uh&vv+zd2DNGBP|~GGmmerZ1lv# zJqw(#2Ry)hvNfWKwg(O|pKpzA^6Y^pn9W-mO|-r66tj1$v1#Q# zc$PV|6=^Ej2hTA_w^lc;+z&4>C%5{WO7_D`%!RGtrj;~&grBwz^!>Rva+-N~TddDR zgCkj~+ZaAt5=>@gY|HU^l3;*!Y+I?1mJEZe6!}y{y@7Bds1byq|Sodqg{p3v*b9x5u`7xNtfvbvvV-#)EmRjO{t?9v&=U z9ot^oPUFKu*75C??H)dy#md`W-%b<2Vpieyk#>&&ma?8~kLaX{U=8c}_SjC32rghX zZ)bGU#ITOlwLPcPBZdvE*V{`wX%g7Tdbho@(<6b4S!3JlJ84qb%$nUk(&>@HR@Q;| z2tQ2*m$44V$ND`o7-pr$GyF6NcCa$ybNn6%E@vH!FZI*pFv2<>U+MSAVJ9muzTQt$ zz$mLQe#Gxlz!>XEd_)gT30JY6$H(?~l<*B!b3CJmmJ8ovb;alOcyi%8tk?0SJv0?u z&3YGK+2c{c_gQ1{^*uB-{E#&pKhon-!;e`9c0}~iw6KqLct>oXM+>*IQg<-=Xgau^ zm9ZnI&!dAoS;uyi_R;jPpLKjkWuHe6_ptJI)c4U0a38C1$4H;Y01vR9?1&hkncxuX z`Ht8Dj|rY&HSb^y(9G}@t7}KjfX58auwL&d9iUm@Fzelp$^nlBo@b5is2`wN;YHT$ zj*$V66<%f?*cmZMD}hNVhj+#fdP?BPl+>M!LE34UoRYCKXV7yR22zggEFGlTU@+zQ z&dNcL4W^{z?W`Z9+2N>^!kr_79y=VJ@?>YkTiUO1T*~vEv2Q)U!dp|CcQW46euKBC zbnVP}>-i1dfmaBZzNP&RC#1aFS^3uUJG?t(Y-jyj+8^-Vl-ZplZ#{p&`%?}iLBOxc?alnFhCzKA;uE55WcL|llp387SN^=5Zn1;f- zl&*xFVcD(7j+D&ZnvX-bBD+$4-d*-lb~~~=<;3o)k3+X3dsFgv`##FE5mRJoGSfHs#Ikvd^+dk#i~U zcUOHLdK9^kGQQjQS@t+`DP?YV==0Fy$TjSPdq^RfCvq+O$ey^+kSB5-J8cgqB&&^F z&(7SV2@TaoevKz=%0jZb$Zyyu_Ed$2>LNF=^Y{2dGH>KYcF~?tXviD+6Z`2N(uAxb zatr&#p16sjhRAK~mOWL&LsueADdP#gVHp-_NtsIs4G&?FXHyRDB8|xYj69ceWLMnC z(4Ud#Q_^;EMr7{D3n`hqG$TXq$crgI?|u&xDP{rMczzl*~R%F`#bV>O7||!hoQeC@20%jRrW#l zPvpIn_q(b-4E+=NAZ2`)?}O~$$VVx2yFwp^{*7!-Ik=njQFb%3CFRKOxQ|0OBimBa zc5^<`8sY8iu01&uo0r9dH&q zZ*Tn+trHfr3-^vpc{*V!`^nyj8Cox_VL#s+JLBnv3)szj88fs#SjRrFFCt7Eg3H*4 z_r-=iLom!v-Ny*i0=SIkMFAtdxEf&owu((OdEz#cHzE} zuxA*?*iZIF%+p5UD)#ezvGbl$_y)UqA7h^O5x&Ll+Ltr$`3T=(zus3mPx}N{v)}Ej zocDZ!@3Y7D)y#Z55NT#l?;V`^b0E^nUfO$V=G%V!t{mL!n)$OovY7p8FK1CU71_a- z?{_W!IUU);p8O%*1dUgcQN6{Q*zR}mav zb7iSW;%S288?G|7I&l@zv4N{i^(UStIyQ3Oq?R3mz9jGBzE7<>6!?;in=q-qL(o@_ zIPUY**h95nIJR<|QyGVn{^!`v?Mlr#RQo^24({tzf6{5dA>o=h;iOd?9C=(12c)0g z;K=7Ta1!XNq8wUo8%Ib#9p%t-dpSn>s*R39?hpr|pWf&w;*N5v>8qk0ChjE1Pd^>) zuy7YRVfw0X9cQ_;G>~!nTgN#rGcAF!it0Ge<)#T4r>Tw$Tv3{lu`0%Kkt<6>7^h<# zm$=HbYDQo^S;Wof_>yYL4gvQVr!*;Py+g=7&Z$hQT~Fq5`JC(|H<^r!yQ!f=fv?D^ z+=Coa610w-#y!G`OA4$b z?CJf3%YQCMF0+^RuSle>B$K$wshbkrE6I`El+?sT>MF+o`^o-@W!eH9Vn5#>yX;wj zC)myV8OyXqc#7S%KWEW11$VNK?Jr%VO-DZ9j;HyKCjH>3=Dtg-JX-sM<34vfZSbi3 zNAhFtQrZd@bsO2oO-|p$a&IHIa#PY1S=8<1b}m0Xo8{h4?&M0+PqC=+WItD)?qbz` z@3_N#omP5u)n>U+mcZd;o0 z=;`krx4Cc9tJr~k9tJ9R$eogk)FhIZ0B`xbJA;Bjvc($+|u-<6h{K@9k(*Q zHpQ`9uUfe%=9I1TTr};P4LfVtKV(M>;Q+$KWOL96VkIFNasl za|n3Hc%{4~zC*}6&a33r@*P>cJYGF7N#GFk3V9>ET7g5#d%}wlB#9gv-g928pjPB4 z;5G9Yf+Vp+$Lr$d2x`R+1MfAjRFEWb7(;wmErqnDxV=tf*cNB20uqw3pvVp$M~hfB)J3O9p_gHYvm3nFOOd@ zOj0;dULk)(SgUYgyeIsKtR$tQiuar!n^miH+~76y8CglWj$6Dgeoj_xuHz2xHNP|~ zN#&^Kz2jGA)v6r#d1L(gtR%JLA#avHl2xmAJmwt`M2M5L4j=EZAXZ$fb+qzQ1q^YL z&e6`x5aft!b&gKnF+6^kq<8pvT7h4D+TiHtnFKXrs)5|YQwdyRx85v(j>EEiq|E`k=B|WGrZS$dN0Z12=m4TJ}G1+FY)FCA!)!$Uc*0_ zLCS_o$ZPpWGUBoWB{=9PErXK{;fx=CW`-s^aGLxz|L2UdY{*9bhJPZXDm!2!Z{X)= z__858c_Y6lBa|JmlYinr%^>{({Yu`#e~}UQOW;>BJ|vjI`33ro9MA90(EJkkjl7fp zCZp^Z=y&oi{`-uoUjo0A_wdIve7`_{koWQDGD5!u{vfCF4+=>Tbe^2XKO&5S0_VwG zewvU2K@KvXpDENp0S7sQ|Ff_Rf-aCV`6q-`P~ZYt#LpM{AgG)y;TH)*P@tTg$A2m$ zDWJ>beEthzoFZ_UtmU@|ISL3R>-pV6jUs@O3;Az^WeVsDxrqN>SfvPDA)EN)LZ1S{ z$QJ&bFr)}zrq0f_#~upXtkiu9C0ti!wtwfve--m)aVG*?&-9&y{v|)+&t-;A2L2^C^ABc` za-o~#7XFc}xZJ=^avMJ_i<29uC4VjWSyZNh>d4;+PKc^BfjURD;E5=rAgRF-CwMNZ z(NMkQD1lxysBwGA(E_eWs5xEhST7KXK+S27W37NGO3rYe5FNj3>#`;w;eDLMz@5-->8uAlfuKK?Grl>7n`117kzjWL*Y=gUx zY!LK|PZ_BFxKJGwyA1Arax2;HGuEXd`Y&^9UzwrB$87`Y7p1CL|HNP$$_`>>efG5WJEk7E?cxZwWdi*~RXU7dy?Lmm)Vq${k{1#(DGC*5RqFOVk$ucV1q>LPhc z&>_vXx);eaf_~{KJeQ1%^g*f1>Ruwx3qDC}tkh-lqF`D&Xmu}>mjz4G6*bhA07;ab zx2eXx5{ML~1(&r7< zxQRft$db3>8TAVwPE?n->6!ZrV5{g=Ug9$s}9JiBy`JS}FjDMS2{D`J3w9-{Q(tO1?1n^esmRUzBCcU3J^h#g}CvxufBX#9KHPR ze9g;+~;ZwktqpnW*W>wQ60 zQ(zykAQ~_5H9`A=M7%R`;w@mp>3s>isFY5|`(*|4e4tp!@eDTc&8st#xu^9`;+w+*03RE0Hz zR67tQ(H9O5y6r%;#8SB8E%YCc?1Z7JFQ5l{#rXzbA7lXf#YKitU%&v2iJuxs1JHk9 zvKNN9fq)5^6t@^S1CSY*7Izyo0|7HID}G}r8-Of0v+TX0Y9L?%7R2KQ-vDFFP3>+jkS1=KuAP`G*r`oA} z+zpfKTYTBs+KrGhd;5N4akcut36`fQOpb^*UHg&p1K!Ny`F0qp;26W;M zoZ#jb0|s%w?o=mLf}3eUovYI=0gA<+bTyq+DPR^)<8U{(6tIeybSwN+8Biup)^GB= zWdN?B=o9@^2ylq``fR@&0?Ne_{V6|Hj(c%(z02>G15U9@U*o4L095?6kn|S%71$zq zQ5g3&@GF34BMLchq2GXbNq3>a*xFg26K;S&Um82Ot0muRHC7DJ|Am9KpBtIL=0?>c7xD&>z zK;Q!Y&C56X0#G?1krWw2fj~KsCwXcl4MYE7<6ao!h69%Yt)#`s8HP|mFX=XFh65;2 zD0y$J8V+0mOpU&{g1yq^Kw~61WOnlRPaVeSrP~u1j7N#eE3;1>BUh6mdSd-9S11 z&rXd{D*!|yFLI4gZv%dbyx8^8eH-YJsETVoQttqL5LVa52^PCPyB`7bl264opQ(?5MaeV{ zwsSuQmL*HYD?(HcK$0e#Hig_CAX1uQN(@nJ0kV{D$_}|}@sF>>bSgxx!@X0v$rW0lfheioG#GMwfoQ44v|@tV0K`e_Oq(X$4du5aT}3$`YX2_3BY9m^`XT9` z@@mPuqRJ1o|CHaCj1|>?Ncy+@p=7pb4j0FMti4&@igWrH zACqpCw@WgLb3WGID({pWD`t!&xyv1rjH0-SKm)K%+G65NK#f4WwA-Ya2s8parEg4S z6VNMQm-M}rZ{-+yfn?i2}1$kf;7{j2?qkeMd{C$vM>|`E=f;Vs=|R_ z`4y?j5)Q8#Ex#u9SSlBxDWF4|Y1J$SrhqQ#&(^X<=s%>O$r@f(+lO} z(gth7@~Xx1Noku^xO{rCd|KLTHR5c+@>%JS6 zq)cnV;;O0gHtD#4%9hbq1Rx5{3fO*|BX$BASeXR{Ag{13z@$IqTR6!RsR zAPb jf>e+%5Zbw&qaGSKwY*on_O!dla}KePv0UUo~8QS*o@8!>5PK_sJH{h7S?e zA*nK28JJ{Shos4vWeG_HGQyQ{%Y;cbGQyXM%8W^b^+<+HR)!?m_8{Xjec51A1-^7- zma-M}m<=HAbe3(RS8M=rtFkPS9uo!PUSnA{y&?+4&BC%%^q7qx?)H_r=oK45+^#FD zp~pmnX4!PvAiW|Qw91ysRxo0|19?9_~)`26;!ZXCOLPC z5fcLS$f(#1VlvCQ6-Q&f1FK|p=QbU!_zt`wdvz}H zXw3KEEm_C8?4uRmgLh>8=T04s`2nn!1<$#TR{Q|omwh@{b2R2h@S$w_+~CoQAHm16 zrE@D-F}SfLONKYGDz<^GvJ^Ox6|)^|m+|3jR>gL(Qzn5=v0~yuzf2ChSQYVLk4y#E zuwr(AeKI{f$g0=@4#+I<3UNoE~Lu$ zfpfC=xDp!N2QJ9QaS=zpA6$~n;nG-eKez@uc%H# zL+L>_mrk+nI5 z0-G4oL%j~8fFMB%p&M7sbAZ8GE> z#JrFoBtXb{hAAkn92?w8@c6kn%#ckf1;=L)r^|p-q8YflL>| zLV^;x26--kSvDnd9cs9ckVVKvZbEGrgju#+9J?L@NiyHZ9TuG0PLg1Rc@_am$5bn-1xKMCBZ*+zd`b z-Q^l-&XWQ(^ zM!D%?IGgY*@{`R}I&LipaRD=N~A@xvlIevC4L`I;xa%8W3_TtDdb$=lHggd3o9;PLA9SUXW*AVw_C= z8@VO#x|DOW?r-F-eCQH#()JH>Pd<9dc#`lBSS7E!wCQBUU*HY-t4oO|gSWw6dA`$^ zE58Hw%Zr?$+~6H>O#akKQp+EJholiX)ffG(iuzPLXz*qmkEw z>lK-oHJV^8__gBa%VipQ9r%sn#AT$w_6pgh7`hTuguD72UT8k-l{sK|6`a)Y

    n@S(RIN6KR#FIvKgiw~%&uhO_!4;a}u|eDae2r0rkik$mA&_$1*b z(k!Pr!Cc!-q(!c}RFe~P6-4FwOM^KTS3yi}xwPVB%wNbJ#pGpwfvpMIr&zcgE+Dia zsR|kj>TGRDnu3WY=m_lySHVSvI$Jx!SBOxfj?jT*C}jAHX6ryQ6-u;PN9aUE3N7l_ z**X!4!i0u(gkB_1;Xy%ztrsj(yhp1H!G6%B7)N~u`2c89yg=g&!Cp|SXhAs!c^{}( zbfX$Wun#O$yg|zh@_xjkSU|%D!Vq#+LAwGPZ9~X81@lURkq|)6E4WvLMq2>6pb%X# z8VNzomvZ!4^)td(&OOS>YyM}publgo3)jNW2`K&AYetEPfLp(s_?YHDJLlqe+*h^PQIB+eZCV8ckq&$2rwx({S zGg6s)jZu@l%1KscT+68;Y!A zDe1W>w-Vc9cobeP|5kQ;1&<=gmE1bj9>d4y3gx$4?G=1VR<7z+O?!-hBF@#{s%ed3 zQ}*Ug-yCeMU{m(zF5O(w9>b-?=XT%Jv<6v}oj9AVtW};u*_HeLW>sr2g>oym<2Kl1 zQ#!BbHr!6=A>=x5=03em>aj_jMY*H5syhi%rzv;xmcP>`by{*4ZiPDuG92VayAAqn zGUvHm=IsPO0dk(t<=z(hZIJUquIRSWPmnt==E`m(ew*BRDOY*B+D}k8FXw7+`~5bB z^GdGicGyo)QY5)Ww?gef0VOZ@=`B*HTtvyweQ_(UGbo~Hb6ak4I^|-DKDYaprZXs} z6yg}UvQD{#vL*M$&A8Seld>(h<>rdk7$zkS|Cm+!>XMz5+`OChzGS*HD!1_Fh_8L@SnNoJ#$Zo3GOPNvj-#FD2 zvyT#125-2UD)v$4m7i|ZG{x+vEGqRk1{*7OPzIFz8`+H&+bNw&$&FKu6CQcIr>ZZgr}XCL-|_Xy4V3=eqC26!pn)=$`}7WJ zKyIRp=f1cTHxM*YCUaZva0YC-&fB@Yw~ajnmGf@y&~2p0rgGlP9lc%MLr^;(*t^3uvRn>gA{%!If&UjVt zUE^EA@6Mg7p}WXi+waa@s?odEZwY@;_NnIXhTaDMpron}R+9qqKb#!Z;p*5x-Faua zDi!y%lX1&Vl~J98yC1kNeyqAQkbJ=@R2{Fb4Afn4W~til3g6m(!!Z?-yQc zzv~*Tuu&)~)!mxG7&|3OrN28kSYf9`s}9~J4a!R>YgI??#tjBb@S=~jyPQEe-f^MI zysH_M$51XQPh79655`a~EAy}W>gAg$SCmE9L-oPUlxxbT*GVts-%+kBUtEuS8T^iN zQ`vHz^HTmj<+if>y5?o@d&*tqo9ksS<)ZTE>t*$I3&@0`8Dm%p=i*oHdws@`hjFyV@`P&HJI4BM_ai&Uf4)x!kL zX;MvA`-g3q)1q3a24`%&&U|&l!-N?^A03ylP?Qm(0<-XndG|3$g3dT}rAL+~%kO;yW1&IkG5l-sKAdzufyzbSWBZ|;?S zkpDxur+R;{>O=4!$^+H-J>LiUzm!L+xqG1x!G9^us)P4QALTbGEvh5;<30v&Qrc8$ z_cYCcSA7iLru3@v@B2Q=?@;C4=K~C?)#e0!H1Mt)tmcepXHAzbE^0Et3C%G zQ5IC=_kEw`k10#4x%;8d!N-&}>VpqRA-RXLR(<3_Tqx+FtW&2w;DqG0l=bS&2bxf@ zmhv@DuPh76>nPu-Pdum!1?wmq)cFs5A-R{bQC;*P6bgDNKdGNSAWg^{C|lGo9>h%q z8z|e3SXW1P%{;5r)1#l%(5wY2PIQ|;$hWP zu!AB}=RfpK$vY_$bJFhX!U&#Soigd;Y$^MXor&p1M;a9&i&?lESP z`^ilOZ;j{CBdh(Hf-uBt~NWJhVJWrU!aiO%w;G%8P z*`j7XPFN&NIos6S$HGP1l(R!EdTd-IOgp>qDQ{%aHtpaynuUk#|3l-oz0Jl$#4pjE+M#CTko`+^mv*$d`VjFebdPqj*?-9X6}nHm z&>TKQT!*G=X+AK?z79>(GJOe2L^8_Na(%)iI~nC`MLr|mF@R=hWj-Xyz8=lgDt*;S zL;w|OwLX869Y7^olP{b^+<@k3JwA|b-+<<88+-|LVic;?w)uo~dlahI_WF!;;zqPk zJLIdPUyY8kYL|Q~7@NPvBVnI>HT2EVQD*HlUQwXfh<6pd_kj%ix9B-7vn7E+q@w4w z+!i6jPDL+hMJ+}KF$TS;m9-!YdklIBKjBp~h?~*NT5XG;Vc(2i(VAMq4B~g_HLa%w zJZk?Ay{>I&NjOUU9=)k;YY`r`e~;eQ_O=+05`RGNYKK~oqxK)rd)m>K>Z8OT(FfYe z7XMNEkLV-qLQD84aU0sKrL}@A`!=*i%WO?x5x1jlT5hY5W#5i=Xhp3?7BL>}(#l#9 zmOUQr)+$@8S;QS^uU6aYXW4h4{aRCNm_^)!j%huuAltqN9oIIrCa{Tn(MfGvtB`Hq zi%x5MTa9euK6F+))QYg}`_MV9}n|jy(xouM@QyImBf2YdjNxaO}zGH#%ioHHSz?H|Vr&evX}vZq%9D z!W<$Khn{-cz;rtk-J)w~OGqcO&~3W5HetG*g~sc8+l=YN6m%yZDL~TgDd;ZUXj^qU zk&W)rO}6>d?QC?PZlNulPUPauR9ZX8vvbij9kV@wN93Vg9k*S`v-42CPSkGX5&38a zo=8A=c0QV^Q?^(0hyqlk)3*D0b^$8UncBlVq6p2?dD=mNU4-WA8rl;CL@}z>wY3Wc zb}_2g^|l)YLYQkN9zEEb{Tq3 z$LvTD5+U@wj@uy=+9C7;?yVYyL^*m9*C-L8U5;MTDLbl#LoLvMbT+x`vK~EMhKtQ`goZ%(CaAw{^W8#w?-=y^F^wkSx0jy{8-PsLmp) z(FeN84u6(ijXu&XbcC~rTC`b5>jcGiE!v`Eb|#34INMhA7ibrr z#z4e&J=(2Pc2I{pCCLBrY=>(;A6FRPI=uD6j&FG}Aty3tq zo6%`qZ>Ld8w4k$im;;g8E$EzXw6j`Dw4w{T$xgr2Zbg@L3!Pypu>@VCr*(nZ_7Zfh zp4pXnrwjbW{wumg-_Vut3-LD`0M^ze{Kfto8n5r|GX6sR9o?xP>Oy|8|Bmj` zk9Jl6Li_{Wqo3^Z|6>0G-KSsZ3jabpkEZHreh{*sN7M97e*#2wpjesIa4`Uf=6C;yoW|p?=7ZDC}3zBK@epT0z86lYY|gSJ<(rX8pk)Qm*2^!jB_8 zak;}cquTUoJ)B&{t*8!tW{)O!_*PVxKDC>XLwBPNeMWaqj@ONr>yLGp=FlrpM1Q=y zGRIqiAGY$k>vQN=@n0?M9?9`uMKS%8?ue80ztAfE^X}M_-oMZr`sQxNN&4UDEqzya z&Pngz=pFs*?$VR=f6!|EyY9-9-ha^h`myf%lk|Vlhx*y>k(1tk(Z~8Ze@HQmMV-|j z>?Y+X{){@OKhhnSGyEsorI+;}x%S&=w_e#(olCrf_Ug4g{#^SVv|n%P3Fi_YpksPZ z52&_3K*#kBJqc>!Lv&K#)+1EgAEMLx-X0^~tb@+#hk6jT{Si8+AML4D6Ca}s`pF)@ z+Wr__(l7Lc)kF_YM5gtE8oLKwYhd;!Xo$7wIs>;?sIk|g>kXn_qlQ?AevM~|5RJVK z{l=i|t=15|=mvwf*RQdA(TxUEZ&*WYz=6u1Ua-L4fNn7~^d=M#8_{iswq9X@y%CK! z^!6GHh_BF{coYdKu)jig8Af}n3y4jq$e``>>+GGV#9-xjKLhS}4{(9zpbo*|+#YpxQbqfM5v70)(*5gli$8{72k>KD;l zO|QlhpKZo*ai)&3>}Oa17mbsF#!fxk{AF~4DLCeOcJ<5X-KI}tHP1GG6^%nX#s;5V z{VEzy&yTIB-MlWEV@eKfs=c}{I^C2KO03;Xj^>&8cuC1sd^F4?37x9lydIl0v<(QY z_C<8s&^utX5|_|fJlBO-?MvvKVRWF{N?b-443h(Xt9=<=GAs-rX8SbSZBPzWn~5`M zuR%NDH``~>euHTsY$h(?0Bp|yXtgh(*Q(!Zj3^C%uutLxuXe04PHhT&CzV)5pWQMU{o z{n^D=KStd#^!J}C-ux-58khQ9#aBN?-8X#duPNUAIqIQdx__|v>gTA(2G1ghH=1Di z)`rD|8Dbx%wYDt^XY75L-rBopoFVpOh1MZl;Ia2(Mb^>9>KWnyX0lE$`e*C|n8muV z7@i>x;Q(yf5*W4*Vdt#OrGzjsfStE;mxN(^0K0%s@EF6yAa)UV!jP~%h+VQOm#V|W zVeB$~Nb-m6!`Kz8X(=2gj^g}m&k{IqAH}X)8*0v?#y!|6~+uFNioF{(5 z?plX%dCC3>yJsC;s-7o)#vWKFm;Ceg&(S?r)$+)^_cQj`dSE$Xkv@s}tcRCl7rm2M zt2K3*u}Gi7+VNhNoJH>x)@ePqT#9EjF~9Zra^)g%32$o2U-m63W}^G8Ma!YZ;hE?$ z>r*_wsaS{}x4u}8TOR(evZZC2v#eN*p0;)`YnF!>vHf^=OT-kt4dYl3FUC%J+pu(N z>LO!`-j4CC8H+hn-gZoY*SeJAnNdt=J-%2ua;>giO>VagcKsrOQ` za?`Q#(t3IfhM10zSJr!D@C$R^czr#6Grn^aj*rxPH)ELT$#}#|`gd5B>G^oD_qcOYaZZebd-@{Y(0f*hACo_{dA| zkJw|=fr*Gl`ZmmGIy@2E=-r03;@v-tM*4QF-IOtr)9Brfb()S%ls3}iF~8~fL}jBl z9_zttf$AISJFq@e;lxOzcLz3LdNL8wMBjsjOwT7`o4k9l3A`VO(L~>iO_{nTa+R zk>=D%hL4_vkH-$V|&fBlOwHOHn!hZ>I||vAJ++q}?mPq~<465uJ1qrZGRCitY4@umZgIh|x(G zV>)x!R8FT?j2X&K@n{a!idH0Mp%`{@b{H5X2g z_`M1YGe4P*=%FjID)aN{*dDJEyJ2pgX7tc=v0LV@>6{*KE_TQKdb+fSuEMqXchi+U zUKMuVJT_h5Lsw%D&9l=ZJzh2T7;im^=%Z^fpZV}iY@b()wVG3B7=3gd)^5(2$?5az zuui-XrL>Q($EE$_GnIW_J=SB+o2l=k8?Zie;mk;%*MJR}pUgxI&`nqfFII^i@S3m* zbMp*ifNsX7%w01%170&WV}3nTIzYGJ&cM5w$^owhn>UZm)DO_D*rIuMW@Nx?#g@$n zW+MjaB^b$acs6#>TY^WhQfC>1^wapTb;fMYp!YOBespZMbdYYtK+Eyj%0aIUqge80 z>j&xhfy`1kJ2L3CW6_o;vk`CUzhZHg=d-bIy}x2xEzPrxxAfnz?Ut_DoVVWJupO4y zv!!q8zheoOce9mmy}x6-En~CwZ|Q$vdo8oGBX7NbVEZix!Vv-bd5mK@9F7fm&tvJ9 z)G#AJ#|Qi^8R49O*MU#b9t)QS=oc`d<#@O<;Jtul;gvS^0eU$mwiJd(0^V{=YIzcl z7^YvwG?wS#*kSKwtN`z}VGPqzOlRo|=L~yMeE)eJE*+*{!Hkx7;mTp}6|5Mqy{R9j z<4@Z%8y*?`RKicby|+imwu$*#{8D!^OYaHx3M0)s;B-V z{SMY=DV!hq=)HptSf0#Be5OCZLYC+Av7fyUunD}ghw+*I5Sy}e&F6gfKE!4$ujflY z(;s1B%e(o?&)!Gayk%^@{xkhCwrH81ANlNkj4fLZEJTFp9*kr?ybv4mday`q>H;G~ zuf@pLjD?(#w-y7e#}-OM^g7&_I=)aD^44J#Yu-YAi0;Lrtc43BA+HyUwmw;in4mXc zan|Pxu@l|~Y^$|-fiXdE#I{?z7IG%Mjo1$B>xI$@`YSBK`fj0e!utx_Z5>;vpP)Bk zd#$qzBNN^xY>#2G*I!_7LiZUKdcy_8HoOUh)(7hBZD^W-*_WUrwxhGwA>7HaFJW`m z(dFu8;xe{iom}=W+n2E=>%ww)nYhxmri8ZUo5V9KU2992Yj!2BUgcU>!d;V@cxIJr zeTisIQQ~TX>+2HPnoEgi2(E8RlxyxKt|q!RlxWvP{RCB18k4z2#uwX8C`Sl(CV*T zdrBtPbRRnNm1|$g!kW25tJk?wOK7BTlFqDirIj#AyOLIuUEC5bDKqH|*~Kprk&2R5 zuXkmX$Viux&a8K3mMBU0l2!vQQHhq+opc6pNlHwlxun$_TzMrP9C>hNgDbzJ0cRGh zj&f;B+HmN=nJAaOq!*_KtlsDg}$!5^iKB>&$jnM~Nu1h_yQ2)m0*kyu>;a@9Hj5M&4ts-r?#k z(MEQ&&g^jYmzW~wSgZHA{!h`FcqNs$ar_+5EW&K>G_AB9WEz1xcPQIwo6O8D%UyAs z%*@m*cg5`-PcASnWeCNf9L4Jeu1Fb35#VHIZdvY$+hk^jX6_4`y+8j251#ux&+q&F zd?s(yf(mQa(ciz0vUt<6PFU;`tkWzcA049xqqPPDjg?=F=S;1N|CesHp5T;aRlF|UVLjc+6iC9;UDq?5vQ8Io z1SW8%lc{y_=Jdeze5WkyVnTY@dbN`&5P+vguh%$k?~>(MOiv$QuXZs#S9~;mcD>#u z>s;~i^p*8S7gN{b^XXQg(w5~~?40hff$nDNR_vPYx`E-ABAfN9$9|H%=GaMY7bNY;-vK14SJ6(|KgPNl?_G@)4<}J z=~f#FURi;~`RNWD>0YLniaF`78yQ|%zzv@6vytg#8dQ8IJ#Zu6D=Vm&pB}c+?2=7x z@!^co&C-kYxy45^CO0=;w8<+zma(|maIrqG_(aB^Tkw}`IK@sGjLnf3M$?I#GXgf} zUkJ`15;8(IS6&#+Aa2Wu+}w5{IFq;|gSmP7!e}OOcSggZN8^<7UeX!1Hetp0)9W`!vMCuYTP!b=3yC1`u_fTL zxR4l^F|Z}=GP#HdA{SdqE{ltZATzP0<}z7G1fhp5Lzl%uVrs_f7LzOFQsS))8v^x8 zeQELSjPnG$D>g`RL53$G|7UUsn82#&tsD6&tj;Fe9E| zxKfW63p4&D;6rW7i|=RD6R4r}<;4#&UJ>jqb$Ca z;l4HCs#rxkeMNl(?C=H?su@rO7Xd z`!lPXt$??P+o30b)Yt$o7&r zF}NvYP5^5(8JsOL=YbkpJV*p5lIz1+2E>k3?1Gz>c&;@&xfw=E#ncMDYaiapnY&*^)mIwVCt4SS$WS ztj=8BVUkRqCAMZ-?=(vm&l1}+9f25@JV)%zbO-iV@f@)`({E>5GI^fZlNq$LBw0L9 z?9B`Z(pT~Vu|G3*=TNeEfjF3%veP7$yh5DHtlMdpDqbPZWVY4Wi z!TDonS}J*!2<{gKjI=}7j(?wY6MpGe2D=XVc175_v!k-fUxnwlDx8m_LMvmZzOqVhwrI*M&3m7&5qqO^h~^o@itOacFP{i=j83AnCz}S0nf$TNpaZ&d(xhhcaRdYNA{FF7w;e? zW>4&?c~0I*O3t3&GxS`%la!jhy2qq}{442JwzY*>gZNj{?QBO2%Lei;QbD%6ML>gi z7m1hcXOY%G{*81uJIJD>LHrx(pX_jpng+5tsW3a%VyHoEP7-FPSeP`Ce<$6~uCp*} z68}zmklkWo*+hm(%Iq$SfF?0aQe_WVq&1QMAU(<+u_$R0|3P}3Jz-JPM5d9n+4B}d zO=23UI(yZ^ag8=n?g}c?(4%L@9PUiak>8;X1}*7 z5+&r09+tkZFA^o@P9AQ2ZzB{X=Pn*LyssCEQgi>L<3HGxif-lF(5WBlOGUSH&(rNb z*dU^UTu*w)hk8WB%l(Va{$Nukx|&lP#+UO(LU&W1=az%YxH*-s04U?|1Fvw4HZ8b>)X$2ROk_($fta5pT|Qr^eH^n-E`4yp!Q{ z!=_y>97iY1)07Rn+&Jz|0jDJ!c6o68oYGEHHtzD`1UXSpH~fGcDCAe^hk2SqMN~^!5>L2_|qNlWgCdxDzI^< zdNl+hw+qgLdb;f;q@chPbkG|vf!@wv?rbmHAmnaAu)EZ&Aqe@W;5w+D+g=9mL-C+r z-f$Ug^8dQyy=}vg`vvvxRPTl`Y0XZNEGLllieBH z?MMs|7>Ar`*p9>jr7`=A?G7Y?GwLKg)35_cp0VADBm)t$;Y`C$B$e~0Gv3zr zR{%h?ai-cf{EFP>oOiafwcUjja6FwuY#VkVJkDRvY+Kvkkh`2Mz3uPFeNMeI)xP0(xfGwLk0Z}56x6x-9th5}F55T}OI$fkn7 zT-i>x*2tEEU{|SAgEg|X;JRz0lkFK~JK(+;oEpv`I}84G#k<%#AbSexU8yb&4#?hu zSFUz0wg6{R@EQ<78qOjI3;uIuyVyD+hYLnsr7jJQ$dQ6cz!9-Mha4+dbTzm%oI_3& z{ON{wvvozB3T)h{ZVj%83(!m30VW6HR^aI-{ZhXwS_T;7#xFKsM4thx*zl$Pi|9+< zpXc!>ZNEZ(=GdI4o^1FE`Gs@-yxmFLuaONL&+{QC8@@(1asE2bK508I>d6Z}A^luG zFX{!j=*G`B3!;9&gf@JxUl0xE{d)rc#b!k`l~;d)`lWtFGy~Afc3*5hi{=1dIpj_3uT(ynm15mu<#H_w(wHQ|QLc>%}r=YqRPjJ%Lzm2;zAq&13v+gxxrX?I@D(RDMy%_NJw#-kQ9qs^o>k%IF~ z@C(wKEg^Dd^abfq-q6wfncx-@JO@=ef{#k4>gz;XfsCSY%I3LfJ1|Zdrs|)I zcIHLW+dc%Nq@r9Vefq;FO1hU@Lti%*Tu!RYZKPX_jh2%Xxovdkv0xdgDpyaB92=F9 z9_9|w^T&cKNa|bzy>e`{f~3ivrnij+%SpOiBYk>oR8D%8Yk6ed$6y7iE!Xad#m7+v zsUz3+Yme&iDa!ujw_B2AFg7y;;{pI-tif_L@eEUgcOFB=l!Ri`sG=4$}KgV?-Um zLc{3KiV<}I)eN)WG*JZ^g)(z3RT!%ySH>T;L^|`Kx7;m!DMH_Q{4l&=DW{5WD z1|H(S$;uEBa>EX(-@5o0U%;K1(3hBkj-W+859+UbFBG>`QAWJCY9PjO;6E7dw)U}vZZ`LVxCAs7{?zikD0|{G>`~HAVF)*#=`0Y>YB)gNm za)S1kbc)?c-Z|m>YdXn5u$B|Mf2dRJL0U7>nRJtVND(=8`^~z=KBTCemi?C9WM9&n zB`ly@>`Pixfu(hm{YVKpBl}Cb#eSs3oQeH4-DH2#ngML6TkKC-(|noqkON7#a;y)S z^@syWw{sj1SoV-Fk=ATl0X^bNq%~z$S`RshbT=o^lYfDgfe^T1p6Uy@Ok^83+Eagl zm5J=&CV3h!;Ifh3+*(h;G2x0yi?#mNu_w}Zh5Wyz2#ZXbggimN~# za)%lGP*w$^=8iMep*T6B;m$Jjp)5I~ZCnR$`c<3~>EOD0 zGp@3fNEg?~n+dG#$ZKw(H~%WD3ej`Jywz86Dx{Aa?XADcQXvD}ByZzYoCcZX)_N1J zu{6jux7nM14W~tBxgFk&Yb-4?&+YSO0<$}^$Q}0PUt{SIBX`_eeGONQtZ-+&_19R{ z$SQZm+jtFEi~Nsgs+aCOLLUZ4*@f>nnQ zcws*32pr&=@S=V65i9^N;U)PPBXG^gZeFbqA&S+ESn!&C=ux;A$Ua^N;E1qZAP0DT z02YF4K@RbTefUwV7KF|l_fbdTULr?%vw#u8dWjt8tpE@Rt^+yGv+^axusRTDo`Wwv z2G@zW@?3oxF)RR$;Q9D6V{l!FCoj;KAH(WG7`!lFbquZ>@!>`L>SI^{2*FG8HOAoj zkn6l!UqT$K4~gV8`_kiZ{YW&g!PKREeE^|>8$jZD!@m4D)&Rofjr*$OaDzw^ zZx)a3AlF%hvy3T4Xk$vm*)c@4Y(2H4rns- z6Ide%pBLt*PQblK1iWa#W?;QXig-zW#su6ra*tQ*M@VFiBbB^nKRTcYAPQcGA0v?k zzzMuQKV~9s0(r|?ypY8 zeL+@0BVV7&`hu*2+PyIq_Z9j-fz@@w6V_MgI)TG=`V-vO=z4+cb;c9c*XTxp&voV# z+&AcELEv@%6V^8Pz}fILXQhp zt{b1?)}!YIRuP0}to5j~z#)SE47UMw6}Uz)p0PHdK7!~7{WI1k)K8EUVSI+$hF%xc zMi8E}wxN-N<_P+8+;%it&=J9S&f1Q~3i=|L&v84@c)@T4|2b<1$`p)8sGs9@qDg|; z2>o-`PBcZZ5@CFf`xU(@u!go9CcflmbU z8Ezx$DF}?p^~U>!sU1W8fG7r3M7q@Xs6@RD^Dofb4l(O=?@ zp|gUHD8@_HF?3$g7sY&uJB}_2hNJi|S;tYMU_46w5_bY!5zI#EU$Rc1tAdp%<4c?s z`oBV}XhJK?3SC#|5KV8zokrIex<)fvS*OvBAdSv!#aW}93j?G1tt@MlP#6}iZpEEJ zw}BA4zLj+b-BFkn&2G1KL=P8^MoZfp9MK~nk=@vCdk#GYV%LWDhI8nN!arm1owly1 zQ=v@^wX?w$bph#SV=K-9-CbB4O=xF1pcaMA(e!rQS#%$Wfiv1!XVC*7>&v`xG?lyVQnm-mlcLq7B%an2C0Q6eqJE7mL0w42MNxA+{VgsB-B;8R&v?tqK@Sx5 z#WUaHa?wLY!}0vLtXz~{G#;;hi_1fg7R|=%-?H-1<3%g+#J&{vC^l`V}Q5 z7~kOp=ni30l5q;xjP4fJCJ|;>&8UU2If)LkVCX(!M-l@BzR&~0z9i-ht_3|L98TiT zuv$>Ma6Cy3a$e|cQAZ-<6HANE7xg7FKjC!fV$pCS{}W4x8jHpg)t_+H=t|LSqW%-B z8eJ_~Ni=@K)uR6sS|t&tSheUnp+gdV3I}4LLf0h56zdtf5ky&;Q@A>GvoJ7;KgFs; z3Bs@>HOSnd+l0|cdJwEbuNT!O5ZxFR&Z zXgGoYo>hc0i^dbw?{Pvjsc1Gq|DGj8Q;Jp+jPG%!=*=Q4CgB6C6wNPkVA4O}5R_Bo z%4B?CAt<-VhspeaD?{%T1v2>`SY;?56z$X>a40G$ie~CRuu!z9D2ZwOfGbDu71c5c zW2|ztvZ$F!AH&H|MNtQnF~*XiRYiSF<`}L5eONTi0qne^wrhbei zM|DLjOyd|%fxarTN+f(_DbTheheY~EoD%IQa!q7>WGT_EBA-O&M_d*9x+pM_|B+RN z>Wjh>)gN&xw67>SQU8&pLI;YH5{(~m8g#O#Hj(g&r9r2QniJ`ta9VQ@p9Ka$tDYwKGdr;_?Gl^<3@>h>GfNUr|mXL zd`s(YnVpetqePXq+_F4F-A;)q?Yb3kM!KC6S2}Pj?F@AXC82cWR>>LZ4oYI_#I2e$ z)SZ;%()n9MXQVqRK)i9w#FqLiw z1aR}cLV_rKB!pY(WeB3IjsI<4A(ts@Gyb%f;WFhOQo~*69TG;VL>jpk-i9#B+9>Vp z9debjHZMnd8?I6wB17DK?~rhc8ZmGyz3l*z7V#_y0Y_zt2l7_|+szIzVUgehsaqp} zx+2#L8o@1D;)}!=7{I|;;*b1WfcLQTkwhT%1yqklA4wGQs=yB1WhF7l>w*w)e3ir@ z{}r%3?EEAN$Y_DoqtQ>2h)fn3z~NAG0{OE54|u^6C&Z?J>edLjy2$wgJ2$&%Nh@N* zqXI0Qq#ew;cD{Bol1?zphWIwdNV<`~cx+$0SV<2O%#->y#!7m@4BO~y7boclgQ@`_ z-Xw#_zdXFZU6N!9spnDs8>ydx66_2FZ=5b`+{ADWJ_7_9qEO}49V8A>vtM2 z*kww#m&M;PTxiUc>@55D4*sHDwq#FP{T=GX#%#&nvR8NPE*fr7)|WZoalR0ePT5$- zxD$E7kWNW1o4-4BSt_KYmaX13xk4?a+$yu?n_ZEXQf`+y@-44W5lTUsJ3rux6ru3S z{P<~CsAZJ9WkLLsE7CH`KV{+knk!V4QdkztAG#t%DZ;W8zDX#xoN~Xcj&Bw!EvGyv zYvEglQe_lnSrqp}fxNvO1f^0;h*UlU4|Q?zCC{Gm{(oKju3 z$~U=6RZv>Xtp72)DpgS0%N+l)yh>G4I?EV>$OywT%4Re`kRK6JMS#3*|7n0{VgYTFL)VD*+*bT`O6K zItb_y_-B&!UmDbHiGVi zw1eV;Iu=@jfrYX*dIZEsJ1J}PMOqBCi{ga_f$jvpUlI*Izl=C`za$oXW0`UI0ZBYM zT*!}O4^Z@FA)u3QsG{_hMgG$U3gMK2GUh+iR}Cu4WLeEW>p;7eGF{gAj|HfwQfABA z{&5EVQp$Xp9#n-5TFPSC5U6^F=qScA1L$fRbd;5{X;8Kdsiv%!8UJBiWh*6JWj>(f zkFS!vE(-)LeRhuIKv~}%=0$w2t5HhV{Zk)0(u6G%i*aZ^zG9Lf~!gD2_Wr2X^!{$mDWnlov zgXc+n%A)V;FR^(Nzp|ve#!GmCO4$6dx{cA+G;tnV)K zGQLO>Up5S=9PAF>e@&tRo44MZeNCbR>$TAvA1!%> z%yRVLRe{o98hd-_tQ6QRN>gr|oTDD4OqJH%HajOhN|`Bbxovrl3V{BlUAF_yNdb|+ zbl`T{IV#}qmyX;nIVS}G{nClsHRq^+{areLd+3}L5Y2k79@yM;v}`EY(@I=nfCZUBo9l6^ZEAdKP2kX z@qD#Co+i+BW_s`KR=Hext3Oxumc(KHp&5Xf6?!{+o}txBFdkzqCG|YTx*~wP zSfVU_ogZRv*hINrT61gN8TKZLUun`UyVG_XByOdiw?a-gZjgAC{&kCe+HNDoqO|d* z#VN!0lzpXbH=R#~{6INSs=pa|%J2i_Q0dUk{8J%6Qs||Io0X>wKT?jCPTy=h74j41 zc&YK`^eMwnl=G#Qz?K)Xp5k0;2XuFa^%U1q=FRDohHojmOKWbfI~DT1WK;QH_t;OQ z0~AmWDXfX34pP=e&Y?KzASD%DEi_4>4pVNS)Img78dOx0ARVFngN7H?Bv9W|)~2MP1nGOq+9+g_NFAr#N9&5r5~bsm2WU%? zWg_(>Wo_aJNR)o0tc?|EiPQmlL>Vbv2Eqi_w-NL-(ow;lkORx;J?Qvg|(@KFRT@GTG*UQ2Q?jZR@jls09_pL$L#~n z8{8_oC>&1Ze_^enM&Wp>`U~z0x+0tfg&Wq|-+d+3_yzZs`D#*r2+Fe;XrcQ0%gEFK{%3JvLG2SPZUlh*MMJ-d9rXm zc?c8&%u|J{$tFvbVe?x;>lCvk$*}otp<{|A$laS42;EZxK)BwVC-h56TcV7Z-vxB1 zk|oKA`9H$&lp2t!HwT@`lpzqDHwWqV6q9AjxcPlyU5eSVWZe9LuqDM30+>KoYRSW$UWrLh73 zJ9e+Uwvy1q{vE3_;bBZs-ciYDV#8Qfd0!>73I7N7uza|Z-^Bg{Qk#y$@?E_k0lYqH#agUH;bt_6xfMSWkKI1L=## z16XhQ^#_eF><(i6bh6zrcbSip*@<_@JY|7Oeka=Q1}|<|B(%>O0vUn4c_3Y3#)NVAo}} zNMUo2YIp=5NkeX&?spOV>)_rv04!%BWP+Ye*P#+B-Byg!yCn^o$& z+5T9HY(;78#s^|IWmZ*$9(Ev>FLS7(_uwyK9GPnsqlbM7Qy z!uYbVDs>P3GA58kSLu7$m$4#QQkAg>ABNqN)m9OD*kH5TfT1*uBI7PmP26WwENEerX&uC`(b93{sPzDOsJ$Y*3m6&B$6* zmV?w}XinCp3K*0oLkqG2RoWmm1zM7gs7eNCnas z#>2=rhID9iMZm-SHz64ip(5mAWH8MaZMdcLpxxQxW;7?Og~D@~dDzntms}235;et4#W-(NL?*T4mNRjmBCR8$aO7v3nJ@YQh-19ILEoR@2AuGE7m?p=OM+Wmr{3pPD&_ufQHw46FHL> zF|JmR;pLd7VpgpmW6LpJ#fsWEhF4&(Dy$w8KC%^9TZO}8`bWGH>!@&j%=pMwVqFzJ zkC`9wRoLr_z{mWL>?%xO5%yU95wF7fDxx3jKeAQWKtp!upvDJ!| z$Hq_iTI_#vD-B_aU5l-gJ80-r_-EL9xvPdT#eRlul>2CyQ}{Y;vpi74pJLZx1bLW7 zJ%xXcZIef9^i%BT*baG;#yEv<#&*kVHG~;`4h>_5{Q^56@6#}6 z@GaOO`LKpR!*0Ro@^OuN2LBQ}DxcNpXV@>X^>|~-mIlB;QO&?d54y%lMC&Lf)ZcEVDmi zRq{R^a~VH@J(LgY_{;1G=&^i4SF=q01Zm~-x}jz1C#YJ!sx$daorPNE*46aS_&KaY z?pkg3Svm`~%iXI3K1=7IZnL+fEDg>|bL_=v(T3ddH<)6fRkP2t`ea2neHdno)`(@sMhVJ}5cYYF(i z!rqGT)|%7MCfHXI+d6a_+XVY7Qd&*UK-=I5MO~{I_|U>pik4Q(GthQ8M$y$8a0c5B z$0-I{)6PIU-~`1;YYF%U!-XH-#T;#+X<&CR$EPMp+=w$LtM-g0jXu*G%(`-@*&nl1Djd{+_FR$`0&2LA&nV>PyrIbiz4whh^0=CDwa z(q>{0{SMz()U}z}W52@>6fJF*_7Ds!6iN4mu7mDMs2$z-$38D<;}&&Os;O&x-l>p>x;?_={q--NXs9 zf`3+8cbGY0R`4&%unx7;cV}eVl+hh}r@zn0b|{lNj85M<$bM0t@33>SKP}s!^y~<6 zYC0|3r2MOc?PPB)+oBBakUBvQ@E&DdhnWlJ0Pj_{bXdATXW{+Iu8sf~>@0jxIna^j z0y)Bml_MP`E|?>HL^;t>;{u(7k16LnhFq|7@CoH=hlv~H3OgySJI%n*1G^|4J1yNH zH`q<--WlMAxxpSvzs@u_$Q|}l26dKzc?kAahIiJuK_0NLGPZNb4fBBgl_{Mj9*_?l zp{(mP1A`G9rEKZ6^niTf7-d&yfCuIa$0-Lo(>x$QI6*nmSpsGzI8iy#S>plu!^z6| z&LI!XA5K-ScA9uWf$%M*b(fhJ76_!aj$M{s&?UG)>E0FKgV3kre(rMIiZ z3k!n(QHFQbctMw8Kw#+_^1?2Iu6|0Fi8mAm-&fXknR#Pj@B?K_m!&s!6;>*{x&pkh ztFTHr(3R#5g~N}OBV8rlSUCJxInh<)4PAq^%K5G#Z|oXetz7Lg@r9z{R;6{f85ri^ zcBNytr7si%cPibx1AMUP%=EH?CK8i$CBX%J5DMz|Xz$^$aD<`^Z z{Gn9%vvR(B$RA6EzbIF`O)fw;;Ge6kUz=UPZooiJ`P%XVlnw(8)$4!@SUS9^%I|gB z1tU@b;?M*FzVuOn7Hi%4?I0P&T}$s_wPfMJyZMTh;Q~ z@* z+d$rFc?Cj%@XuWza0NqPUX`Cd?Fv)|->nMLmt4Wh;C}$zu;vPc0+d*ie&`B@$_lIc z`k8Ux4ankE!~OiYzXxPY)p)-;?z=%*l4`bJAJ^0^^H=@bkB_tOlSQcN!T8(MCyP?O z>bHxt@0Z1>UiXK@jiKpsx%atAI6C)B3j1P&urtGU}&8$K>#wGm-33q{MKJx0A5`JA3(3^iXv*au7;}M0Wj!KUma7ylT|gn z>#l`r;OVNyUW;pE8hEyxB*T!`4O4W34 z+qKYYc(uydJAG}e8vdWkvTt2PXf3=>W!GmBF;)w&S2_1NM}$6uH>wzYkr89h;LWOl zzWj*LI+&me>8p$wtAn?xBKz7RLZ8DsRLs8Vh_UDJZdFa+x~R}**h1CVXAw2l4DVC5 z^*Kj{zJL#?^nH<0V=v%Cs-eF8sL&Ret}^shMvb+=M^)2(ZBd~w;o~Y}-*nX2OZYt4 zQr5+UcEHXmyMBw9u@2Z(<=pQa6WR&8s~G)}F=L&uCs<(eV?w)NhAO1LGG?p`_EAOl zx5b2Z!+t7e|4ipE zfJWfEs-S_A1Z+fhPgOfWNc?+TR;g+pFeZFAE>o%g8wg2k`Y3y#dNp8|X#Y{BRJ|Uk zOc)!11**t_wuI34aFL2RFr5HRz>icT10{*r1pHVvF;J5TeS)>B`GKKC>=RtAS{*P+ zhGyYbmGz)mGByjhs~iU{!5#&7sayvc$=Cuss7e_$NrhJ6URC&D4cM&UepT$?P%<_L zcdPsc(~_ZixJMN*K zKpo0x_JoUl{TfS8#GJBR^S;`%b+FLa^X2u*I+;@ z_8DGK4Gh*aK<0o~7&|@GfSJ>Tnv`jiCg^wCeNEl8Srhg9i*3585Nm$aF~)_6O~;W@5Ug38K-on)&IWCX7a_)~rsOyny!6S~b=)W?(s? zwQC$_EMGwTX`LGPnSdAAep58JJ0X2_2VT*VfJvy8rf( zM{1kr=-uD>f-R+Ej?w+MuRK=UH^=P$&QBh%9iHQN|LrGdYRBi)-QW3x1!i_m-~G40 zJVm=QXYBqiP<~TuHBadIJ5Zjlb(p93e0NFC(Ynqvdj7s7=W2cCnLXbH$?pKw2fyd< zAUR(fHm~ma?y_8Xvl!e|e)E%TPW z&{djJ+ch81i(RFuv;*^Ly-+yqk#=Ohq!$aPJ=RXl*YrZyXj<+3{7^4;jaIE)oj2)+ zqG_#K>jg8g#nIZejtiFkPz%I`skHyfswSEg}{ZK5eM;o+I0v0@4uQq(4rr$nA zzN8&pkPbGb$d|SMf(6e$Nj{~mU!V>)CCO*BuNLeE?UUtm+SdyqgH6fu1?_)pyI&k_ zP@A&Q*l!;v@7KmJn6yIZL2nXwx$(2L))&6ogHe$&d_#hQ)X)hp;X#u?fk;fAeKt| zqFr4uc>~>`{j9TIG<$>HpaJprqU9SXody(}ive%2bl|%4TTFWcWze?hf)-2OU>ShL z9KKld2Fj#u*TpUly}>eRJ9R0GCU2o^+8$lqqS;$4o3>ZivS|4h%AxJobu9+G#d2r| zbpwlOZ=qb;Vcp1L$y+R!c0@O^So0RjqaD-DFAlxM@@OY?tBWS@AP&t*XT4RWN+KjGc*%Dj|Xmh%*<$zC^mbRc9SWf!{>1a#3 zk>!$4n2xrrn^>*^M+Dku-Td;)N%loS~Hqkap z+-ClSZ#QUu67L!I58IEl07>9X%#ZSqv>-|3O#TnsW?G0OcIMKL@@85Xe7mvW=k_*Q zlH~Qw;-6pJ?u1ErGp~PaXt@(1$(R}V@uuZYltenihHpS$FGpy*CF3(ke{S!fWl08R?*07QK|3OGoBi`wc@OQF#Cw+g z%eI$xLJ~L|^Q*j<26Je$`M+%YXs0EyvzLCA_tDNu5@)M_*?ytHOD$)+ewBZL*PrFi z>QC7Y((X!XXaAfkAEe!vG|sZ8Y=>wMCC#%jQ{_Xn$C8fO{3+XE+7n6N?4_ylVcIjv z@ND&z?Fj9;WPG-3s(gedk<8BO&)AO9-bvi%{+uZvyVEYom>ZaR^Yc!pL^_9>+c16S zn?wQM(Y%?y^If8xTR*p9=FSg^YA$~6&CH#j67}5vxec?l4-)S=HhkAZ`zQ&Vip0ZAvmcR}EkK&}Jm#b6s=g zbF?|h?3_M}`Uhja+ztO1tKtvFLb*47HH!)`i1I-ECRPQ&FqTK+Ar=+MFqOyRFS9C; z40CxR{w0eFGRX2Yd^f8CWLU^^@dm4@7zRULi~nnN1%|Oi-iTklnrg^cCU3@XT3unt zSRwDgL#wG+hNHX>e|dEUma$4cjDNYBieos-$MM~(D{u@~`7GXGEtSC7D0iFx*V+mK z!%yx#fAv}_kr5ydoWE&p1(6XXkDL#!r5Z6p8B*wL6u}NR_wE&vwU9?qQU7I}md7r*ysqM3##wpdf|u*4|1scLbwT&KivJiF<+%$CHc+XI zyYkuve{HCsGVaS87p&eug)cnh%?mbdsIX(e|8y^aHc;&uPvm_IE^nx?XFQV+FL=3u z3jfuTk1y!nPyzos<+BS6yr@eV@8oU^|MIF>%J?AnUbxzex{UEr9=LFm7iRfgm3;HU zvtC8Z@3zVl7C!UBthn1IPg(fct7ygD4tdVPDKCuEU7b91VY1iYGR8M~?ZUr&Dx4VK z<&6th`%s-3Kjh5|H~CaJGk(fD7D7H$7sfAn-@?m26)ub^`S8M*K2%r6jC_1yw@-yD zV@^K1&|o8V4P$33A!oo2I`L%yHHZ;Wqa(cW^YppvT$4uZ4yXuX zMAhUH4T7lQj9oRg@S=r^a7J=XBXM;QHG+{^(@fkHR1v{QujwE{LDWb_W=$XQ^6!`S zr+0FeOg7AOx_nkRAu5f!noFDt7!Hy}Z81Ey#B)va#3saXA;)MLQKPV+Btj*#T5T*v(nxIoDA)veR~2Z#yPzW5DXDsYeR+LyjTLj@iX-urSk zaP5FcgjQeP28|t1N$BzwZQ$AiPYDCQ;td*mpo%c+tK7h)0WS!XzPb$>8lWVw{qSDg zrNDc_dOy0CW+~7_@b%+(ahCzj@Fpgnmu4BDBE-C0?-kv{qR0qCt#HD+K=v|aRSB&@BKJFTxVb$-qytP(KrJWgf2gk57z~l zBnG-1?F>BDseX5mFnIv(AN9T?-fy zL;ZOhHERJAVvN6NBi9WuBgXrSH)`Af5;4hNxsmG*P>5Onx{VrlfKIIT$NO%>3`f+^#7viM9 z&QIe5aER;xd;r%U@FlJfpa*FD0e_-z04IPO00hDtrg#CG03etc6CeuU1_GhP_yBQ$ zCJ+cGCIu)1xIsW9ynIR*pa}wa#OeTi5H}o1BEAlw2Wi5A6yo~;P7pT&NQ1Xf@q#oF zKnAfZKorD{1hR+&0pcJ{B#=WK4NwMgqkvp^L6t5@69tHf>_B`7cQbI5xIT~`qS*}m zR_i$-+%3Rwnw}S;*#Z<3V**7X+*sfYF+NZnqKO55i}cD6?pEM8JFg4TYz4%`>Og!L zHvzaud>u#+(CNn{7%Be*HRd*b>adW0qgXd?OsabU(AXofdu@nEYQP!VH-L=oIHpp_UO zB#zLe0d2&jASFzc10C>EEgkHT13F@L5I%~V1B?=12hpQ6Ilvh4eGmuczJYOgyA}^N zy@3g0SCA-*n+r@52ZF>=np|L-I2xpcDQ{pFUc9A)y>8&*FVkffMhXOep20>F@Te8~ zg9DDRZec)(@kxQ~ORD*Gp}?dFVR{@vsuGw#K$uqu%&s8Jie;u_rD8RP&or5LnYmyK z_Z+z2Y}+N9uhsCqmBWYuL^m;DEP@t0L^cJNAO%bUv}@76d-R5G=8>fvPo#2BKiYNv zrx0OMC^HeUOyN%}L8vd)=3DA{Zw%&NHu(R1nQi7RnHDB{{@<4on4UwJT@jd7Aj}^K z%&QP2xqwuUAU6rfZ7eH(wZ)jgLMNkW5fl;Iy13f9gl$t+Z6jveR#w|e*;GX}Rmrwf zRokiA_S$ND9h){$P2;b2D17N4TJ2c;(y?Uq%CeU$#j96UzFZ|;?WB0=q*&wmV9$oC zKRm^MtiQ5neZ?M+qCeIh-?Q%A8V}vtsEL{=_1Z{nO=OcWqOHbLxyDN+_foI%*2=wg zYkVf;KK!-8g*CyVwIRhdAth@=%W6W!Yr`sQ!lY}%6*b|?8dtvDMYq~@0&=Nx&ryIm z#jj46tUFWo>Wp~ZS*_xb&g1Ze;xK<*ap9|C(Yn)8k0OPlNa=A#`QM&I| z)$LZh=W6S6b?$i+b$NV`!a_x%$YWozVqb~J{xZdWvB!bR!n0NXJ15_FuKs`LoA#Y= z``?A0eHRA*cX4dr#p(Z*?b%;egu20Ziz}>+6S-|GuH9DR7GG8yFLv8rS-V~8mY}Fj zP`d3<)$UNcC2DIEb#6N+YIpM8GYac6MDCfzb(tmZS!H!uV)yJy_Z!8pZk1{R;=%s%s@FHg>s{ImT$&(f<;z>@^|!UJZ|nBonMPIaIZ#=IescW4lXK{& zR}MU_KtFqM;8_*AN`9cK9{s%O!1Ffri=G272GNqS1CnX9Vo#Bx2=nTA(W`Tq*H?;O zS76>eD0)+csh1bk*JB!*iW=H5jXgz;gP6BtMQ^8zR7HlLjvK1>9Q<_7u=UEp)(XSV z4-S5=GHjC{Y^yhHZ#vlCX4uhluw&4$bL?Q}w4t`JQ7iK9FK+BF@g68^91wedJ%0Gt zIo#xx!^4Bvk+DM~)7XhUhbM|~zj_W$R^X-{9GF<_Sgf4&wiJLiE4$O2bkP>V^_^mxF$yM9VmsS4zw~j^QUfwpWB5!sC93a5H!l z;SrOA^G#12F+D%u?CKG-Tl38y9x;DDpHy>%)G(j?@d&wnKBe~vWoW*|k0TZ{^R0wO ztqv}*K5^9g`~sV+M{RB`uzh&c_W1&8%~5K@0=th#?b;XE_a3z$T0r}8ls2=#L3qsJ z;6ld}#~jZuTzU1_%3BLpJv_GR`9i0fV@?eVoj)FPZeQrqd(35Mq3e%ht}_cggvUJ& z64u=!Y&daz-Fd?LtH;+rJig&M!L#PLX9L0O<8iNcf_Lw6?;(QE)f1t21Hzts43m8f zJx>g+IT7A)BKRON(;YS}qfX}a{C_!M{zUH_if!q2&Mt%#3`V|m)x_Mh^;Eqqt zJ2Zib{mqHr0(bsu-YE#m*w>PABq;NAOJ-?M){T~|yFuAcTC!z9Ij>rB-UaRc)UsO> zl-u8u`zY6w36>C<^l$c6q-7X+bY`&!G6m|gsF`r^!| z8>d5WmWJNA(R%Zi>Dh;;&ptnWtKIB&@0r^t%%5I8`}FkZCkM@+{A#@;2&>!|cIR8` zZCO~=tIt*M!k&Nn{9F_EqW|-YZ()*OpCy8D#lAMhk?>ci+g_E1zrNA-`fm7}Cv9(J z;q|ZD>fePod}?dZgg5rLHGT_!`>XA(AVRgTU3Dbl)9Ln4r4g+++FS2Ne16jYSr*au zs=e)9MEj@qc1=V_e|yKbh|XW_oq|a1z7Fk?$o|tE{iTruH#!FHMt*(L@l_T%_^M;@ zUF6WGjv-CtaDT_}x5$xS9V3FMiG7_DN1}e6?)+66HF=|R@@~}Blg_DEozw54W= z=Cl5X{MY1MG(R6M7Hv!_qNVvPG}7LrDq0U>VUUYW>Z6$u%MiKTq%E2cv9QRMCWFyZ zh=oJCm`q3O?PZxDV@!&;%)KmAWUR?KE`Kk}3>j}y!Ikc1nIjWTsI(Z+}m2x!PEld%}x z0fYlmV^X+@ehA@+>@_Lg#5;soiR?Ei+ax}OScM!isobPHgm6NBGf`}!A4WJMf0(E? z@ea#ekkck(n?#2NF31U!vdtpcFNPCZ_16u^$HX~`DRNkJ%byQz4K@}vM3X-%bD z@TUaf$YfZg<-p7$Uwe;^-|?oK_c>*sdlUQ zA|ektW7@NI(FIusvd8rJ*60heOr+NI%GQz#vMl7F>4UB63$kpa&Q!j2(M4Gfa?G@8 zYxG6gZsdfiI#zU6kcXTz<;USK2?~*anTg^!mjwHe|CyDg zG!B1FP>hT=n~2k0W*tUuF)QB2yM{P}+-6p`jd@L0jND~bu}yl7brzXuR<%vsO=Mm$CKo0V-B-$pz`4w+SM*WE@`A%B{ww~Ou|o+E#lskYPa2&#~iX7cTv zdxBTU|IAAgME3-*;X43Dg63mTED%ykJ$ zm=Q#}n)7$y9|=^*P3EExpBvJHKFo68+xapoE z29f3F;zay2!65Rt(H8woHiWD+uTK;`6AUAt!Ty@^nP3DdG3W2ZzYt6yyUj&AIWGjT z@MSLEseB=rMt(Q1+^Ktkm_~jxuh^+q4evJon{=EPT`iag{zW>+<5$BOvJI(%C#`0o zL3>gaPp_6`0>+Svb}?&ZSkQ?y##6tP;lSmjHXi>a3k$9!DS4ci2n@&|DR}gkf?4F0 zxo)RYBA7$YnX7k-Bna62GFR>7Nf49Be)F=OoLYe?xRq40OH?Z`1GkgJyOgy8b8sg~ zwM(y#MFNvZ^}CpLEHao*QtuMg2`FGTNw-T`C$IqXNc<%HYk?JbnIuZ$ycSr4*GVNw zqSpc&u$&}LQoa`0f_F&LBvGSaCHR#jPG&Z;9Kk-)xnzDLYZW+5s!G;-%W?uoN%hIh zw=8FHoYa=gf6HX`jkPFl49f(Y@mt36A z>p*0I{p7NAF-&-XL*&YIT?Zlu{6yZ z2wGAKGw5B2eelY<;tXCF0?ybeWf|fw!~xKbQkkLaLKJ~6l%9-|ZrLHwi87X<>qZoV zTuNaky$^93+(IeN#1A0OgQ*l%ChrU40+>nBW{STcE`qx$6Pda%h%zvlBF|j(MRpeC zQLbc`^vTYE36uw!>OR?NFpg3T@BbH+ftM+wEY5)72E4SOBug|PxCxe1#97J#K{FqfY$13B{%28=BN`RF25l|GFi|0R1JW#{Ir#5_dT@z_62>M34d4n3b&lw} zpb=bUp@Z27!CTPPg1;L-E>MA+EJVBc-H0}DmxW?C{U@RwOtnzKd;p>Y%(T$%7XL(a zg1apyUUHPdA5{hqAOPETQM?{}1(# zRdER~Umu0Cwkj(T=j)?Uc2<=ox_o^MieaTFp+owHsAX2F5+0^q4&`h$ zQKEzNO;B8`!ctB_H3^ksr6|=aV3Sa3R&AyH0yYJeWi?nTEnr)qa;>II_4c!^P?xNV zE;0ABtx?yk&Ryc~XWO7|T2)+e$U(TkFmW`E3F5wNZ~0kl#BKB6+L)YA}YqZ=&If^wkK+_b^R6QG5rlF zJL}3Tx}*8)Q2$w%ToE13Uyri2R$mjH%}+!7AN zT-21c?z$2l=RwU`^ULs;^m9?atlMtzud~mh5^bt(=v`-@LnYbN-(bQ6j;J)7`ZDHa z_CeHgo3=9kW%eP|N}Itl>1Fm|l#9)Dncg*aF)GHU=mzr|`!p)n=G+bbHTD@)yiLUo z>9zbq)L%BDGR~#^eW?FzO3Fl+^7o@`ZNz2DOZf*-G#hCd{&Id1YSg;^IujmTLXBI? zudCrHCzQ_m0X%A-pNaZnT>{UG=Vzh5T8pnU;XzK+?}#1{u=WnI|TK6G?;&q9g2##uDB{a$qqv$T321wJH-x1C0W;BWu9V3pwg_{ zuJTW@BT-q_gYe`m8=l&;p1!Jgh8>5xWLUX~tayP{^T zrZ4LqWqY9hv@W{BJjz~&8nCLkEQOb!p@yxhF6+Tt$55kI^_Q9Oo;K9DRnLu*>(v)f zIW}WA)Yq#oqDpM`++1|Cx(s#2=J?I%o7Fc^Wj0rCmfWnqiK?)9a8rG=x*R38k>6ZY zUR{BDVAFIny1e=ps?w(CW=VPVZB&)b*iChL^&OPjW>5JdxGqQa*c>m9zFqwUrL`%8 zD{TE|s3Dt5IDgi!LVdGQz}>O_bJPzT6&(EPzd-%6(ZZ#zz63R6Gf}R)qpv_&+7?#O z@9D#HPqxJsynFhuQP#F)72;p60`Cxoyd9(bN0^RJm=_?dWIKL#RsI zp4%nQs)tckwqv)|&#FgIYTG?`7QN7iBXirz+q$RvgQ&Z=m{+g)iL+X9_S<=@lQ=~K{| zRP9}HT|OF3qe{j2m-!g<5~@YxM@=ZPs zEur%7;~VoG(A`wgeNJP(Bl-)q((E@sgy?9>lLAM(A?tL$_SlyLiscD3U_#5d;$qc_=!9&+GH z6TQ{02~UeqL%zfbhh2t!$qyt zap*id{v&*AeiS+f?&Z|2)!WfxJNctUpQ{tlzstAi&(%B7m3BRkNd)0X z(Q3Orj~8`RXP|rRjz5m>sLn)d?XEm7>8Q>^586F|i>&Hww9Zcccu{9{4tmV4>2Wli zOQ9$1dfaISBUShATs}G~2?e{!c)K^`M-fVyT zNpxTJX>^?Zl_$I}`WMid_Sz@nFZvhJyX_~Q=)UNep-b%xpV9~PZ=kQ*7eD0<=-))& zurGTm9?&mG-?FcKsvFR+KuhfT&+uRKE714tl}|Ze^KYRa+pC|7zUJRXKeN|8ResIC zgVxv=KBEuoKSB4}7eC_->pw;J+m}5P59>ce57}2f(+%rap}*NHp3z72pQC@+tDf;j z^k1NV*=wJPNAxA=8T*N6x)FT^+LBgSMIY6NvnyJ06>n7kHQJh1Rwah3B(xo^vPw6q zUyo+c6jk)^`VHu1G*uPvyM80uk*2K@!=(_~nKn_S`>wA-b7_Uo>Errvy+bR0&KuWn zMQ@{(Jr|Gbe@5@1RX*2^>$jnI(G<_=KlR(usWjDd-cS7wbS6#vT>MkN6TO?Je8HK@ zA3{H-sb7eu^0ny8G|>wV95A4-(@I{5Ci4f-d&I|HdSM+LdwP_|ARnx& zBfl4a5(>s{auoG)PC_Brt&SzVqLWZ4cDtjvS9uZ&!|rsH_To=L;n-wHWiS8K>PT#= zqpFv83W~&LJL-Csr=Tcop5vZAy)#f8_Ohd>k8=jvhQ01s(kD6t#lz#s;y&dWXggd! zO8f9IKlxLxxScxP53;qI>f$eq_ec@byGO=GA zOTLIMKv~$Yj^Z!M3s5$8#8LVMe-X;Tes@%U;ar4vV}ClTzlbhEx!5U3-52FWC=Wa5 z$k*a8L50}AR*JNoOVB>-e=AG0qD#Ia!4fWh=;*#!wz5_~QRS56?)OSSnS`}aB9ny#Q ztXmb8GWW7gQL$F%O8I-)W~g|pic;xbwmB-%s;ZPXj%Wq9S(NP-k0U;VJ1i<;u#8m% zE~eCHFuPd?!R3^;3}y=p)^Evesr(kfdeD|EPEo!WYyhXsbla781QO(&89xDkPoRJu z08s+(CgLVMsazH>zKJMD-ZHC<*WE-^An%$f;_2mxTgWA*%FUc(0x#qW(> zhL+ca-s%m#1BBiEC+z;(u#|wHwA7%CA1lQRSKV8(>Ve;?N6D)yyH}Qeu)Vwpm8tvi zGJlmn{BBiP?I2ncQe2x^;&G&N*UBpbe0xl zT#JcPi)oDo^UuH6#Qg1X>2J@jzd3*Y;~(=+@TGskyZ(v(^WV)e|HfVVH=*la-k<-a z#Qc|W>A#$=|D=CXN;CwtvsIYtFZ8jj`8WvLEcS*ZoNwi=j=# zI4LeW)pt87S36aAuaLf6k+o?>hQW%Y)hpsIFHh)R9le6lwb6dBw`Y)HBO)lEYE`!}Jy1!h8SJrs;tl|8<)_?O_@7^HkKjHGLK{>!?w%ca6y_?t9ZuUlQ@paoW-M5qZ zU&H5tglP)22*|A zQv(Z9L+er_!L%6nwAg~Q_`0-2Fg?jVJ*^-;t1dkk%&B(IsV&HPU6<1c?tbsSySZR@ zYu)Y+Ft^J+x33^KaPOAT+AWdD*ci9ifttu+AZm1N)VMHe622|p60W!!Uf&z8{3oJm zON8obL|bo!`k%<2EsM7y!&Dg^~E>#C1SrMd4EYe^d+nDOD=YB{9xx~L+7kv58J!P?NHD9#vX5MudjD+ z;GvFzhK^yw&QY&Usr5PewsVRb=j!{X^p6t;mkGnQ!f30#o8$JzmF-Q??&Vn( zq{J0ulojM?3#3*>^0*>JSy8>VNNIJjDej=E>|mSrpxWwCPuwAG*`Y!0A)VFXvADw% zWrwG=hnd#L*K9lPapSmW|8b7>3IA;;f^VD%?>`Z3eRA`*lW{jrCiI`=S)WSTb}Hk> zscP@R+Czh{8wVS)L+`zZnhy=NHV$=Qhr7Io`wk5cG!74AM@GFz#t)55Hja3XjB#i` z{CEBcrj2jjIo^nydG9mRe0Zi6H(l*BU3+-?_1o#R!#}g${>-KQOgTIr|8_hP_cMCr zN9fxhYj%!#+!>q2j@OE|>H#h1tH-30-^6lI#?hgo$SwlCG@&AApU_9v#GCcqyVEpO9 zGClwqVZ!MdGCd?@g4s+jmhq90876^VDboWX5+;SNlJP-^g2|yz$n-D}9V4fkyyRn` z#h7}!!%ICwXep+N9{iGT2rb97(KBA^VIc=h554#$9}BI-4ALuK>fs>R{J){27|+EH zuk`+bj$`~62fyO~1D(W#FV1+S_b*h8*}S;;75`u845pF6tXo7jNX4WqR=wi?2VKDA zES`9!M}@=~`C^kdd@6JgQ@_~Zjh-F!0MoQM_zm9RK6TcUc) zcZFs#(@Q4a>aBtBhHI9ZyyLHd78rUib$F+@79tq>FAaXjUke!-hA+){r{@Nl7;au# z{EqJinHeT5t$e5F4v`E~ma5+I-64u$&eDl@dY%y7P`=dU1K$%`Y*@e4;e(zRwA8R^ zY48WW7qr~4ZE3~_J#WatuxDxU2fjD7(r|EToktIyH|=)R$HxyNVb z4(OqwYWc)xy%b1kxMqb(J3j?_Z|J$gpSD>$9e zyA8$-TUS_hON*c-SfztUH}fF046Aa8>y{pbR$$fed5n1oa>QyK%DSb8pjB9%gQA=H z`}8&8pzW3(hFq~s$9cWXy`dKKJgqCz06Zk1UAD_+bjKjSdu!<`@%d2?ZPS?t-eUlLCIL9qsJHKc_TJrAX0)sBT|I!cqH0`umW>Tsg0wc?CLx^;l`u zFTDaC!*W)7^fRwQC$PaQM zmVK4phMr+{D-~avccACkiIv)~(mRj@%Um^Yi21-^5<9R;JfePKFpV8ur5uTt7|dcP zSLsI75(7Mr?S%gpEjL(zTkk~w7X85BJ$C&n`jGm8K@-+@6=x{=p+Pe?bQNz%{m?*# zjaelcihg9!ij7|-9#TItXu~G0QVvBwHt4`+tNM{=vmRpL6i!y(rS;GfoYKkTJF@{= zhEqAkeU~;sD{yM3!tcztkTY(=N%TFs(O@NRz)AdF-Du#18+Fotm%fEuaZKlVKbTF> zMx2MU)emVC9X4#O1o`%`wNIcQ_AMs~PDS^a00l^_XG)fIi}aUE^k?KMbDXhFzpni$)Bd za8aF4MfqvrDu7z{VS?Cu|>smG^orR`wI#%;9ET^;njF0P_iMoJFkCKY)be;OLa z#krLIlJ-GoaXc5j)s`55LCE6hSQ=1hPT+AAEEXsv6EZj)78d}F2%#JvO9KEVgcy#9 z#YF;Ugm{ja#p;Dl;DTM^eo1?wQ@CiC!e7ij=rqp5#p;)|2Rer1xOn{HcS5Z-N;$X zB?5tjNsex{1_y8m?2Y)fTms-rSih0JR$woDN*MI5+<>47s|aJhstp2~@C9MocVYu# zsZdE+<7eU}SSox^@bq)=LM(&%TYtY`FTpZlGojI!xxvy7ct~jWjowgd2RtTp`0_Vc z+5=AreZG}mh!rrAo8qVP608t*5OVw`ybw-89YOAA;v;YpjuOKCGQ1GWg(|{kzhW=J za$zeW!7qAU=|8|JLZmN$o#ns4X+o@T$-2^ifwP1}U+Fr_|A6y^G+*_)(*J;qgj`>} z4VF~kE}_?KVTG#*I*wvB3nz3YOmIwA z3oydPgnEv{YJ{P1DWQoIyqdK}IG^a@Z?#dj2KY{B^ke#1Is-ol&3@57rOv=lLWdvU z$I=D(Mdro=e^vW+q~p*fM~uh__P7m|q?{@RT)ccBGQ>OaqqqkIr_>tO#K$Q56suB#RKH z6V)(I%!(9d614$kL9$3;Hc=O#2x3JEcM~T9wD8P%W?-P}Q9$~Bd zqhU~)l_vZ|j0-A@kfjMf6L~?32v)kVotP1%jgX}aJBd~ij^mvAx;Eoqhxu)IU+N7 z9+$O8IN!)4*orILBV1_23HIQ!ghHZGaBv(~CKMVQMF$shS$l=1MsdMqT-jcsxe+f| z!DST)$wnE$TCS`>XkjD`p0|lrBxD#Vf~_`b4gwBFUBRMF+(W=hqk&-YCe0zh$!IiK zxruuia50(;)@{-p1~^9S5d0SIalqGTeF%Mv<~ZPQ|STrmm11(08Vf-DIkAP1`v0)`UN*@8AjdY=k?W{Y( z=SCBu!P^D5gpZ8cLNm4_ZVM}odP0l03vLUa8V!b4ZWmk=o-s-Yt=xvVE<9(H63W}A zxe62;#e|BsajyxF7~xg5SzL2PDC+bKEXjjnLRQI=pZft42sP4i2~4C6fym8gs%u zc5&+fig8xBZkMJGFg1=1FWFUE3z!=xhD&!@)&XSW(JTrBAw;ot*{5qVTYTlgj-F1R94% z@KQA&fnZ}L%x1INg{j7>h`4lFyD;5Y9Z{Ih>JVlcYa`0iOWS~CVK!@6_{3Nl>5(lP6y7(MM$XG-4GQlX zD6V?qZsYL?b$V$hkY_v_p_ggd0~|4S zi(Hgh+9QlG&WO;a%36d`#?pv+>8v&&+&C#hnJQ=&h8ibCRHj-s10lw-5u!ZqEHG(2 z5GBsj%mUNKqfyE{?i?^{JQ=0S)64;Q5}SvYasL1pkk<3)GR+?#f#l2M$hZJ#L<;5c zWEuc8A;s`SGA$;E(+Nw49+P=f)N zlHS9~A=eO&5LOAQX>z*;uG zhD!i_N$YpfYcvGVpX9rXQ^O^Kfuzt~yc!J=42B_XQ4QA!3?;?y64z*qz;II1E@chZ z7>p!k?b6j~j6ohOYUAs;zeB~>yXbWq5|~1Izl&4HC4*_C)?K_h4H?XUv29TumjY&y z26l<-G!!t0GzvG2TnjLlG`UMxr?CJxPZJqh5k;n z1|*PuQ#kLqYe6G&XbSJ0W-Vw!j!6-{TzM~y$|PxejaeB=gzf#lFs-bYOU7!1Sb zqL17_Fq9mhD*mVm1jETmsmhPsATW}gm8$!w2?BYrfR1nBhJ#7u*KqZz2?tZi?^8J~ z+~03;t*N{gO$3+$kr>$^&s@V-r!05Y3!`%y-QQ|Yi8qHpiL`lj}YPba;g_4z_ z(`X7nIwde8T2m?njVX~Ce2wMag83AW3@eRnPr*V8C&NR-5*E-Y@(h!1K~cf)cTtCK z#KD546m|w)gUBnGCXc17It6*KD?gn+(TUhoFi9Rvuk4haFG#1TVNPClvLKAY%T)BT zP8CE@GBUNjvQq_76lvzXFRXI~yC@3Sm6x3>NTw(=J-)Ec7yQmzpXDU)y~%RLO2vrQSn-GYM! zzh7=Mx)Fy89N?C=xLa_jU?pWRqp}-uxZrnGE9&Itf|KN~Owkwa1u%;;04KDX3t$dq zG*kJ7dlAf~Ou{X#<{~Jfu(R;}+$-Qw%KEIhud-VOk16$84qp+s3La3JvVwo-vBxOh zS)=I7 zZkFCx%L?!=r8aBP*U}2GlF|idw%ps`Q_4V=_^akNSVb9ydt2@u@C9WuOZQcC2UJqn z+4v#u1Mod%eKvha^8jq3_-1p4xDUZ*N@zB3Nb?X>QDU-1L)=GTDHhR)u% zc$v0-_UfR)9gBBqTV^*bF~a`or1`!vgGP(MbpCwQxIwc;czW!7-?%}mg&?p)ta0Br zgU1#lX{y*ngdty_z53ap$RaIm+3bcTRGFK$WqQL$gKUeCwB6HJ zKN?)Lh)jc~H+(Y4v)G$qBEa=@6_pMHI@ zV&Uwpg)Y5j(S6ZCXHl7sTa21B7_q2DkmtTRgE5PSbpB%0yupM;JHkHq%^OTvsMF<( zQ40nnVx`>0QxB6#CN|2WJu5Mp&ct5%IZpuwpc1w6T+h=hGdB_IBAlfJPjVt2_l*fI*y*>paz1fKT*L;JgF`Adu*lT6KfSDAGH~fKx|O(eFW=(t!j-MX4!|Sgw+qj=S~>zxh!Yp0w^rI`J|Om9 zIJecqA+wzL?!uO>miE9sV)KRFTlMTRmBi``##>L@W!@&%UC{ZdZGfl5nG3qDYDYjt z^nh_30U2l@`okoSnhZ1&17SW#KmnSG;czTRO#xbo0$9!wP=R)046Nj+sX!+&9#(M# z&OkRY8P;*s&VY_s3FCMI8Zbhvg-JX$4HzRfz9h+t0M)7;iLt9WfQywnOTJCO1>CF#vXtA@T!3aZf;89#Jb+;}gM`-AJb-WI zk&O!$1Ob6o{@J8pbr29_6^QiA1;IdwRd{x6usRqBwGw2@g9RZ#xK&KHGFTk~L|DaV zL)$GQfh4PM+0VCI?#fKE>d(Huy)rWMxK(F%;&#iOz%i@l?A_ZdBQlR#sj>~XdqiZ$ zS=D6QZm-;)xy$N#_OhLp2|&G-_r>))ixYqkR@{qQc3L9EQLB)PyLT2NSy8LVi@F`^ zBS5OvM0W4?;$1+x)k5~NFiR1ju=37XA66^^U@LCUmM}}Cb88invpcL9iP>63=0IVV zdx1Qwy*XFHiuVGStq$ir53@uXwpPb;dc%s5P_0#3&axer2Z2(nmpSWq6dwfcSiQ^H zvcnST!CE!v?A}p~L|?7CbD$lThkmGT>>N-YSn%*c9%L8n6gq|lgthNr%jg3;D0gSB$x$-E%?|`Xw zOs+CY{X1Z09iOX;5}XCht&?+gQR=e*$+|KZCls6qHd)u^l7#B>0NJ`BmoF4Z0jhO- zZmdu(1zfDvxpJZ455UcOAXh0={{hgfM{-p{fec_+&*bWaY8k+{_Q=ES5o7^@*8X{< zJ?bnV$T~2OzekV_gjk2?#qJRl0?F0`d8B>nd?3NPA&YzL%Emw=4k^*4~$T_Z1fb>DCK*{QZJIfgEf9 zOQikk5+KVu@KVh_kD|;}>%qLTeR@Ti53L6;l^xK#mHF6u>{9E2)3-8ntRpTZ?$`S( zGuK*lDR=+rzcMdbAG}nyU+?eCeCvcut@}^^omps|a%pP6-i=J9b@e6V1E+6f-nOp0 zCmvRrBzL~k*dUxKrJsvrkVb;-k*Y{NB zWbUwz&8yktaWQkJ^~@#R0rf3FW$kepcSvv-Xt4IbOgf~#3p82>UgjSX+yk1e!!O4k zQr`nwtp%6mhl=k59oC00KR;yo0O+zle!2IM;6Bi9oqU;eMEw{Tvu?P|KO%SnOjx&H zjy)OktICV8ZunElP#|e;fsZDr(Y@GT9U~D7E zm&XZS0;V=G`N}x;OTf$~K3^3lKq9L)$@#jt;-|o@^|#B$JcGB;Ihr(!skhrNF&ka zcwui+F%m+wNh@4-(sB?ewRu^%{-jz9WZ483@{ssK7+*$pJw zd@8tdqPQD4Y4fe%`3XxTfN9fEz&{~C`k6NE1+gd8T|k`8%YyYMiaUX$Ht!0yoG3;D zp*Cp+%T8E!W`^2`3UZH~Zq5w1IapA3Ob-c-+9VXT9y{HV`PgQxu=Ql|AaKX#UE!9K zmPqZ;rnzwU$zmjFXwzK?owWQ0l-qnNymGSm8}P{HTjBGQr;(PaO+-QBF}>zYz74Cu z_}J-2;Hk|_q3)#mJD{@hD8i)*#()MJ{~}VVdJJf^2`u6x2^65&CcG#Xi5vp0Hi9B~ zs$c?Ww}~lIrm81^PMi256%v*Kx^0q+bVxl0(AiWL;nD?jz=%z45h-0g2aMS?6!DQr z3ov2RUKE?IUI6B78kM1lS0SO=bt>0a6)%|<@044rEHRQfo3WzS^wUTl$7Zf*DqRmH z!P&8t#ucYg5+ggd(xpOgxrAUBqztV%ycGXJbDm4b}Vy8xA4#7&ao85p?S*2cyrrC`sRaJr| zm1IV#t5Rdpd^?X)+zSB#9cbrYN_wFtpo8oJOZhJZtI#2K;ia)J)T_{;c7js*3&Co1 zxLr)C@`ZXeI>Ii#RP{oz1|4aaT&jDaUW1Oct1QL65-fQqwWXw2YBO|#T|+7Vm0(Fg zX)ld^rCx_lv{RSLUkS|7$#w&XfTA`>r`U~@s$L0}+?1J8-7B>PT5jiY8~0j3L|?G; zzfF3rCZeV%%_>|3+YszHirlJNAuw9+eVdC zoZZ-+R>Yo>EZ8+5LX3cerrNjPjYS6I(JuCC#EcPe(QftwcamL4B$3;*?i;tA7D+DH zv+ujK>FtqZ*|*+{M#jY@VfNAYt~XVNNOsuA-m5{T)+Iab6YupSd+L&1h+$*c;t?T< zv#+^l+fo@JSyF9$k=b&|F?;?!Uu5515^NuOFB%zfmu$D+eeYb8M~Gyb{mfk*vQm%c z+k4!@H3@>yf%g9QNKFD{pW8nCer%h14?5RA?f&yNOJsZ7{`mdgw&H#0B74Dod7EG_ z`jUOjePx?^uViV6`a0s}NFE_;)43g|4@;JYs1rN%4ojAl9a}`=k=#KBt$jN@4oQ|) znWMWZk4akWW04hYj}wwE`@{!Om*sJEoBiGgSGtOiqdV*mKj`nOJR#|^fBwL*$0J2D zY+v)h7Lj-)qxPx?zCFe1=tcX52P$Mt7rkKr?ZIIe3B+h42mdlspIVG2I0TmQ`vhmus~y72V*Au*(8dmeGI`(W-zBCF z2g}O(^v+7m9QKx}`UGdu<_^hax<2(;#2l(D!)XNP(VHA<%Samac{JIf0a1tqQZ&_} zy)0IvUUG@lWpa(+544-ZK$%jbUXqGN%2XPG49#$uDbs1xGBn@8qa629kcAF(@GmEQ zRA-@s90JSv9|hUy5Qp&c*pKRLbf|-%T>epzgAR9yEwA}_x=51dFjqeHS+7JQcVIm< z{&Knmo$N4xs7UHUbc(}Bx$3i^NOHk}{m|u$-k*{zhoFa{Urzri$#IBynD|BSFG;S0 z=wa@c(|<`WIUIag_NBN0eZrx;9Qtgzq%?ghSA7&*L`OO#m+L;NFCzXyWjXG%ARis? zP+Ly=tX>ik8p`>f1qJBi4s{Ph5rIi^-(ldP^6Tllk_HF%BbOn)dy+3=)2{TrS$31mG8w*(X$TU9zFkVxuh#iJnH>k{0zP55Q3~b7r#KS zapWSa)s`>Ns~i^|EgQD1MuU#tkJk?uSEKQc6OVh5%~~|maRITE)bG$V$C1aXQOhN7 z>C@vYqs8we>l_o2QRm865(~%Yj}1pX>Lg2&lkI3_o#Z!1)ni{|J6W=1J4GV{$r5MB zUSu~~@1?}pQS>->`1DJOspG-NWy5-}Bxa5Yk8QtKK9-C+s2=%#_jn>%a;>I@^d3ue z4%Ls0zn^|A>2QdBR5Rr9K+@%q_^5xV@`0quA@ou7P~|;Ii^J|m=Z4fb(T^QQ5U)#c z3;on#=ArJZ`W9N{;PD7IB)E&XU)>L(ua-B_-%(9)V?35gJR6X%U=7-UIM~^4CaX}+G(9!=1XHNEvSN$A z?O6MiG^-v&-*v2hYK&~eqVFMVugYolCrO@T^waCpdLJcOjzLdDkquo*j$_2r#A!<{ zTH)yZbp3R(77aUcpZ0z!{u^E7koIudSIZmdQiqoh*MBX(fzEe`f2jH*_*)Y0aIn1W z#xA9As|}_0AVhqI-~0)n$v8bLe5m zm(SKO7B3lN@1AWzCQH%dj?K?@BMYO5I@bLRTC`k1Pdk2kc4e`6$szlOjF?(3qURka zkfqY%C7EpD*)sQyC=5vUR;_oxhQi>r{Btjt~CKx#%#P_?>e7)Z^@DXJ-V{hy>H za<$6XGvg=eCUTw1#Zw<6C6gOfp`IBSDV5x*O7zrUDRm)hRk@xSE2VDaK~D?Bsryi%1hr&8cVLOH%7QvX*{{E-o;0Moiu^m zSRd+>u}*rN+*zOKqi-%vBx~z)5oA`HOdhN+^U=4ErjW<#TYWMtq-o^2`Y9iMqEt?1 zH5mJ45TzH$>;@ML$5;^)*X)9UuAs4}XrS0T{AIdoT&eBeD!iQE)hO@Mrobq9cqfe9S z$kiW=5#CoiLazJZ!qcZq$H)m+Ln2R~A)O*?Kjb1Puylqz_@Rua&y>!Q z$3C?3GMLf@a!jK#K;w-uqr^9=0)#$N0wt(1G$6xEx|$Nvm>8h%Ej6Zy8gm0OyfKU9 zg%8UDHnK1v#k+BRz%>>IPvJIh3CQq~np095rvmiZQWB-Q(Rf=1Te^u-*XXiMpCctx z8XJ4JUE^Vxl!eA~+dR2aS4w~5^=(yL>1K+qv1XemPfDk3X)+A<43Y*=e4A{8tAeE4 zDEubhV9#J_FeS7pI=CtrQ%ZT+yne^EgP1#%z-E4!a1SPj65bperrCqZr3jkkVZyzb zOO%*qWte6!CZ7`DtO^tE!xU1In{{EDeHbOBvbleI)h=l|WlOVRn5Rgpp!hc1hE<8A zFooZ&+^&hlq)S)J^j3*CH@SDes!LY~Q#ObBxm5w0rxt zotP7p?xx=0YuhoqC}~a0wr`BU#8F;0t>3N*#)MJ?P4Zx22qv5o)1(a6gkT~l@lC2= z;daa{-wl`Vho10!=0W9 z(s~3Xx7}HlApJn$xA^Y#JSJ_TgtkQQtU4xbq3musx6|{uv<;!mukWlnF72Siw$$wO zJR$9(B)0VLtU4j>p*(Lf+~t`f9Y%0-+g(*D(ou@4#dnuys&t&v+7i91Dpfj3X>E+& zR>hGzQ+gZaLg616H|jvEQmFX@L!*wgs)RxrhC!Wa)d@8+1WEU3!|f4fVFIcCZKOS# zEKCqJu#LY*n2iachPTD;(PSgEx}Z(IN0@^Nr^d7?_h@o35!CoL)gIwROe8hAO}9sL z5y93g+i?4Y`IvZWZ5wHyCLfbPZD`}~6Bb~OQ`_5O_h||cqFvo4-zO}@BvS|4l>0P= zm=x+rn`)o12$M#gY18e~6k+64k9ORCVF~5})xVvzUsHm~q6W6}_Y42T-*}r?$7p9?<-UDWj^}P)-t zfaVs0+Iw{14hipK8mRsqq(hp!m_}+~2mg@p9;TTZ-Vu99vqa$wI^>6h_c86%m=5J3 z&3#NKHNHc2NVo*nCwJ%$X&zv7)XEOr5#bViU)w=CqIrxNqc(K#j|iV&CaCQlu}3sd zFjG`@hx~|eiOV18P#)1d#mrGhI#fr5&oB$rnGW3%%`*(n*`pH|C#=R8Is12#;xyG5 zf^%ReKTh}pv)VblGd5210%Pnf=#<9^Ut&z1V>*>_nwJj)lEa#x^ z*pr$eOqsK~TYggb4fD`>pj&xT^9}RZd8Au)QurP7)On^`cT)2mQ6v0&NU54JOrvvP z4?k5nj%jud?}<&-jAL4z1wHaq;gYxD(Su7Bj$s;{V|tXSnh8v&b9|2~Rk-9fB=_i2 zHIs;0QQ3n_7tUcuoNIeX>6$srm~%r9KV3MFnQ(6JiA~qcW2T(dJ@Rznl6^7IqfFN< zVCI}hdQ|DcMa+WpOph*IvxvdbJao7UAqs0m^Vg9oG$<^A7O3M_2$y45)53MJ6`JK( zW12uGuMn=ln$lu)$_mX2tQjp{r>YPdV9jaCI$edv0864(>Tp%UpRk)~wK`Ij<|izf z)}Z582{BkItz8#erNLlbXlk9jO1Kj1MjOy6t28UIG}?$xRVBn?8MGOlu1bSNkbRF~ z+zTNA8%XmXCcV%QutBuIVg3u@Dr^WXd^q-nW)(v73x?${gsZXPw3uP#3(ab51TB78 z^+LD?8%awZ*1gcIL9qVHVcaXB88)6)J4|||F~cU%8ix6=gzK=!Y3;+YuQW@T>BK88!e}wc}L&Rp$0!R3- zg;v-cTKGupYmF5)mnImIzZP0!FVSK~l&>|`*nC?2i0ZY_23tr=9?`wl*kF~k$`RZf zp&j-%t#*X;Mq`J)OKTY6zY*GF@6*~xV&7=&v1K&%i2RMv0sD|PFrs{;alk&Njf|+? zT%%xHXpy7P+l^Fg8*OfM>b*WohNH8_jO#O4G9x;B%%xu6OGcmvjfK`{c*$1NBgPWz z^}S`rbkSIDeTKKplzwomtX|&-J4^e9$O#*n*m>H-Xz%-LOxZZCbu{{Y6m5D! z-jgAlMg)fI@2hCCQJQMh_q`__yP5uN?D>a{JS?3)G1mLx8V}2)FN`f~+8BflpnH$6 zZ@LzQ-A3mkZo|f4Y%o1!e0S5eVC;5!t>VeCWt zz(j0^<`A}w-adir5FW(drq@o8Iy48dcj*li{0`wE?0tIl#PznSz1VJg@?>n6<{08g z2qxuS!sFO>dd#G|^@KgsMY$1pAaeGokCy96=Nd zk4apYFag^@_n#znX%euF^uS4em+%-in;tT;yY1Q@>_vLy1k|>1FE)?9ccQ(&_~8qEy7*cH2SCUD=pU|u_x)@5S^oHyKEQz`M6<=XM`*cF+FTssv=}Z z>8f$x7SElsWAxVX=$5LTvJ>>)@pCPnkun#$b}aWp23O`ruN@G8MV|!?6qs!iJq+y3?FGttEzebZip-qkSzo~MRJ)>!_LqLCY3#!B}ZapQq?0&$1c!kCUrfUbS#eHF@@_Bim^rv|0zs4US*$rDc}mx(Ig2GR zDyMK7;d$&PM(q?yqdAWyGa9D&8le>i_aCi-jDf3gRR-kIHBuKkI< z$cUVQzHIypo5$EYbLGpmzp$4Xhi9ID+4wiMfN^}L_sg}vu|levV7-Q3|h|eQSW6VuYebz6L$r-E}<1ZN{vI`9MjLR4OKV?~rpqbDwRX1gi7`mC7 zub#JLPZ(1({a>qY$(}K`%o+}P-j&rO%Fz1ZYt`7*%<#F`Va*GyF;g%n9~QopQJAfB z(W6ywWzNjrxpSi%-(o3D?Og6?#ygoCb8xO~RR2A87c+T2cRZt67S234UpB7aB8y-q z%(sqbv|zV0Bj=&DetyV)oBppRDSZon-3fYbHH=WC_g1`OwLXF4=Kr z=X~PiwNC6&=DYbVlNv2Hiy64UpB8?^7BSNnmd$P)#FjD>7Fwq>KFbQ3u?scR8Q*13 znR5$Mv-)E)6_d4SJfATpYhbb$UFP-2WsS_B#nAbTaal7nVli=Ee?r#E6fNe?XH3Z2 znFklk=Jh9Koy>&AR>Vq@bu&{Ir{?wNWIAT`qVZzJoNRi=HbKCah@OKkn5l6l+lvbKQkUc^;kFe?O%@+w&cZf8Y; z<%l;Wn`4eGwk~EY$`+V&i&KmGCQ3@j#8|UhdI8{?j^`d-HxPYBu4lF7c zg@f4J%-RLgtY#28ek%%goS)=;^ADvWv{!3+JXiKgm*=Q}g|kRXwtF=9UG+X-}<8!Sr3Q zovzZ#b|He9;iPA$ERI<-Uo-0YUPfn5&GnB~y_YeWTjmYNJsV{Kh+t+rUezeu#^lfY zj(axAf|;T7(c{=8K$iz=f1VdQ@P~jz74TiH~z)~;mYA}Ko57v8$)_{?$WN_F^y9SJ9Rf3?8 z$PA2U)q+kwS~D<#)c^+gh}MC}S?yq)k9HlH$Wns}ACWnj%o+eoeYECa3Tp(c_Yqlu zX{;G=*hgyt=CSq~UG*!m1~0P?8&&ubZNLInztKNis~r@NSZX81R*?hvlr>{CycOlB zc+46zYTK%H1XU~#JjfA|!3LH;-if0ngGyGV5x7-k2i|7Y8aZv%+JSdj4MqW5MM(9O z)ov8GRcjBHu~Lkt{X{lkAuHKvzhAYL;v#FeQKnxB5rkP>BX>Wd6`0KmF^cj-J(lSh z)w9OmGak!E7Hf&e$RL!n_zU#CVtm{Dw|?xXKjb7?#eze__Mx4p7&%; zjL_NWp{jeb7RK(`b3>l@Wo?L;czvkqzN~{0J6kj4`9RjiNSy5-s(K*nVW?;1UxhcZ z4;ce9Qy=y7WwDIvY2(j`so2O0#0PLh6tI~Uj*sJLDPSv0fLCxtRIr^DgD>T1sbD87 z9$(K9IfLD-Wc)Bk>kR5xm3WXRqJblI`K(76hkq^(&F=YVuoUdHHa_g zp_qy}))>BxS4~rlvQ&6K9*Yhxux9YXJS`K%d3hiYqKE|=dHExmAT0|dcm)yy0z_Wm zYOioYT!7XKG)6EkMS#c~H1&!hlm=+MK{Ky-LVbY92Q>FeCJYB?eL#{|CGs4L*x)9w zTBI_hWrJj|2139#5eKAtwG-mDX*r+^LV+o^iMXJf*8rhn8<7Xny(S2K+e&yK(`$k7 zLohK24Dj+^wIR492;AnyUF9B33|5@<(yiLRy?UqOgjesXOyp}ok>u6C>K`Oqq&VuO zTIIK$wNr7-t94aCuqYS|@d{rR7px5iLlMwS5iAM;!@Xiwl?H1=zzDDSRrSH5?O>!= z@~Yur?RGHMs}lKM5k-LUUbRadB(7q!*T|~+?V?>^n%B&#;qBU8pxn!2H5eumffu~| zkwlVK1ZH^!t_}zj?E!PV!dJ(IY4?D+2*Rca6YT{rdBv<}FS?|Zecj@zL<1ePHLoMMOQF!<1G zV0GyZ?P2h-*U0Mn9ik)PQ?HrT!#lJ`K$Vxr8gQp50c`N{M*>aS1hCO7a81BY(J`>u zD|}7dPVF(U6#?iJJ4MIAcCVNSnyQ)(alU^fh>UW9K z!3D3GHN(5K=^)PA!x)Sbi9sW8e`BX8tr+oH1C0ZsM2H9G9c~;Kr9A^0dkc&eQKH{L zQ|}n#(kSikpqY2Paeb5sL8QHtjfbPOXBAZMPU9pY>JNpBx7IjMDE>p?<~?X!E<~MI zki4snO@!j}icQ{i#;!t?R6+J`G!7Grr6A3F#JFB4l7S5G8RKE0RtECDJxstoqAW1b z+uy`#k2VVo@(wf!*dxjYL%hRH;`V5>!BB63iDHi^2MqU)F)7`n%>g64<4x-Kh%SPW z-pMAzd$bq9Sno;`aGxk2jQ6fJaoVTN2NS#-Oak_a3c%yu?Iv;iv;|hD?$Z{6Dc&O{_4`CcV4C-g$?!gH5h(ZeFa`IEO27-={-#d*wIyJdcc5v&e$k&` zj(50e+OZ8Q-e?+jK#bIqy*o{l4xnx-%DlCvc?ZNd6%V}!P0J6UkhrM#m}%Pq z@hv3x7rpkML)G^c9p15PUms#UP;_}GuKjYT`hlXy`}tbnNcAlw>9%DpaENtRQSa@$ z_UA*@cNHJJ`D^_SvF<6FyhGRSKU95B(c-;(ZRR1?eMOsh^;(l7;>U^+@4B_FM^H}` zW8RHx!;XlbC?>o+*Cri7JylG3YuDx-5kFPTcn_{EKZ1IunDZW6+jd0!OtIiSw|4pn zsv1E%S!O12;%bGF58KQ&4)sDo@Ch;tixa<4toDg8ONv9iR2UXpLGC&8>OPW(z??vr9R9fztz$k1vtlcVA~#U`IRGuNZ2w+gaPqgmKd@mmGer_(Iy zDC(WU1v$I&j*8zY+&&`mooz z9z!)Lf_#G3g&h+&DMEZA)+HT7H7i1qqc886xLFbIb8ubxF;t5p!Y5%}+c9yABGM;i z-Sjb3C&HyxuQNFz?o`D4)U9(pf$CBu_%yByJ0b2;9QWy5mvjQvtw=;p&b$-iZbh=s z;JWe?s2)X%&)B-Q6XG64n$O(2=@Td|g0-^DO_Ib~#RVU>xoZ;Yqaw>E$UH1b{85qP z6Jef|g!-h&MGoG)B=IN3C7*-lZ|ihQ30^R^`MXGNh;iurUBY7n7ftIbVLiU$?9 zed^3zPojntcYPYo!%m8a6!(2P&67@|zA4I(b35;(_?zOP&!BnvNz`}6W1lhewv*!T zil;tv=F=xpV+d5svM@;%k0}~_*cPs-sBuN3Pmo1es(4({>=R*;l!}^Av?9lTUaELP z(e885qC6Efsp#}cuxLvaPb#{7QY@xZQF92BTWw*IE}m12_|#drrlaN+V?K=*Vd>&| zaKUHBVmMv92;$ftB(Oq+!W*&uNlq176dp0iNdXll3*fBJH;amN;vzWjGhwkmy?S0T z>Cid5q@)Ve3fPz}BIQ+xSHPz1gQW6`Y7Fem?j>bbu~y=d z|AI&XRU+gUcXm4|uS&cUc4H5cOsd2`!JF81B-bjf0iMLJB!N}c2KaUCI?ENPSf$SUi)x zK>FbYk$?|idpm7-Q9{6PV{@I{Ul3Q}gV`ZYQ7=kX;kUCRoldI7oX<|!l=KGW0N-J&Hu=3_*~9nPt(*40skX=8X4h_VdV?avD)!i> zwl`v=Aj+QGH2p^FfPc&$*_8Q)}9*iUK#XgMJHpE2hBB?1GvoW0$kUSfBsO-hJWLz$bKJK9GJpsCGY=G&4Hacz2x$Gln-pi zNg%h?i+x~oP6~Ot9>qrJ>}s;f2NnwkIlknd>#JEXp2H{m)w8_dRh&@r{`zV!cnxPa zIkTSS4V!SH$^R_n1VcFCl(;5sFg_Gvx)n{L5PUc%hEm!@HJYZ32)(>QaK=@yg-!OvM#lQyvk z|A5m?J=H-xj4$VWqF(JNIgGRrzfmhXh)3{GI1|*qj*=tzXPgD<4_(9rX_rLY$+zN{-=MIFZh$x`@Z|ZJfQ%SG!7%BPqqh&J|t66ZkGp12v#S zbO?W+(@q6CSO?)!P7U?vj_QN(9gd26wXI|?Qer$zt!N|e!xwOlQ~TOV_Th^-Y1AJ& zL?`gwoMh+WF6{}tj#KFj_J~sOBb-`irygwzevH%L9MB_5#ZPeBo#T46srV^`omcdT z((p!He;21dtr(f#*x~~8vBWUQ9dmB$5vRiooH^&|9&s8x!x?lg??I)*bDT)(sW#$X zd>&^n_2;%~5e#$qRKGUX9yps5O5NX9y$2?6gIvP;#E68=jc`foL;VgLb44zBed6C? zQ|>{R@;=mA*o>Rt($*(FiwI9CF4KLe^Dv29?P8)4pNBVb>s(wlC@DDIq!Zqn5DhCebid^$PigWO>+)CHJk0lrJySQnt|9q^@fp>6Y zU0;7>U4(aXt6fb#i}T@lZk?;^XH)^4z-@F5`z$Vik8?X+lRl#g;Y6<1HSe>y5KiU} zx|V-N6~QUoG1s=w;vzVWJLfw68C3$yxhyx6FX9sT0+;RP`UUkToW%`t3;QDe6VBmA zxFvl-{RQW8MQ(Xt#DBq;xChM^Y2R&O@>E`AJ;aO*a^en&ll$GDA~!@i53 zz!Tig%}L);PvI%9c5~i$@l$w)JGi<0JL(xc#~s_;_Feo8Uf|Acp8k%iM$`=!&16_y z4IA;;G}mF&3z)zQqJ<5MU%;z*5wxUX)JxbHdC$um7Qci|c?W6b!=gI;CSEO)7}eI{ z$-D+yz^Ldg-i#Mds~;A0_{1MLKMKF@4QJ>&ko`{h*E&c>w;vHm^PoqA= z`Mj5m4YMVK_&dCJ4EI^$5dI#onGrS1`V1HF5*c5nt3SgMeZ zGM<)^H!J=IKjaNE%4bpE;m5o&M%%3TJN%S4$C#c)jUmzui)k`19)lZrY^LixY8-Cl z1u?_s#p7@@FM^pgkD7p6c_L=sym$g`=N)90&!Z;cPF@1DZC*SHck@!1)AOh~#JQAEx=RA3wqw7cmbZ_4Km9YQH$_AZ;JV4 zv3e0+{Y_jC7Jo;}AKV}`k(S)RQ*D1x8lzI;Wtagd0g z=YD2IwrS8oe!2T{gKV>)1b&f|SRE?=4L5~Stld7fFB?G}_~dP=zQ4=IK6?TPKN3Irs@Oy{;LRDn! zL^zB7rsvx;c40cPPYss+|4-cdWy^|JEL*l|CC*aZiqkCokc;V?vVhuguNHqO!wfH2 zKwUWbX+6W08<@7pI`)uQ&vxah9k!4Lcjc^}@5<5?TVyW!^f|rgm7vTP>c_Q9^scY$ zYqNz0aTjy-T343-^D{JztGTRai;e2~85+fP7wGw7qq={F#&K5)^`fy+Uw?)saUF$v z=dc^T{|wFI`mX5pV=LDE0xjaM7V8-rm-_w!odPRM^lXiz!hV4=z}tW7`5HUz`~^A# zwq4hYHdg%a7w9Z_;fCHh;~$28fil4dO1*yLVf$Yp8904g&(Orl^;bv%-n^q{Yoeh2 z3T1)+-q#B?i8}u)lmnhF*Gn`B==l}O1xugm<(epFeuXZ9RnPRwOzIbYh4R5ap6j)m zlw$0lLhwU{-jvCP&34cg@Z1YMW7AVR?Vw^X@1>rL>F^;ts02LsN-xy(>UlfpFYxti zy+l*@8+Ooj@OhnHuBoEO4*D0&s@E$sjdHPvZh%=$dab5W(e}_yFsnt+aBam&d#Dur zU%Q^|TBoPTh(9>krI)z2blM&&2k-alU0+gY-kqoL0I(FTpdX^$pj>mAgRo;2$!5+jXa~ zuFwbYkwQOoUHz}FP%|jb(obBsf#(XffkQd^*VmP1xQAkU z`|b+$f|6_c#^&G=H%J5icU?c!yh7#%eFCrlqn~RYknaW!fKUI`FEg)y=mrge{r}VN zHwRz4LEpibH}nlHhTpnD!{Gb>^ldFFR&Ity!Q9*Wz83W^o1t;={vG{ji&Eds&?H!L zSO1(vJ$o}W4OZOKzix4L=VoXY%zdC=V{z*7W@sKf-=*Jg5jRAK7Qz2|^bKvn1v+%f zsG?Wj);4M-1IjRZsMhzjEp=c(XN+!X^v~Hku^CXN(V36>*KI3e7|?m6v!C@_ZHLPl z&>u$s4(U(XDr}jM!bm-)Z~OCx2qpv@l}_sW{(LHx31u6VPwPkjTwlh7E*j;{>!16% z!qgYaGwM5qy8iR<&%RKBQO)nD{+}zZ`$9!VH_oFBe~D`Kg{~U){eiOmMKSFQT{Ehe zp?rT)82Ukf8dbx%nC1ul zXC%u)_5V`8)epL5G?;}l{M9MK54vr1DF@~It5dQcbl>RrTvXz(3Yi~NX7n}>b^TYT zB0uPf(V2Wy|F8A!e$X?c`a+bUUHyz7RAJP71!Zd&wbmc1GWxv)))4OciC`06q4Z8=a$#F zL=}ZXQv40+@_v`$j!;O3Kl8_OL)ZG`Fi3&_FL$}E>(zh4pltlhOUtjjmd=Mkm+?bI z%WGUKehh~S@L#Vi?{{@VM?gjRmlewm-L7tpfUe@dyjX7Q7F8Dk{fV!9yFA*hbSMJ) z8$YR9e$K7p*PYNm_;cOMue%M0MneC?zx=ek#_flsNa#Pj`t$OBx2xwOp2WBkScThY21ycrEW#pg&?Ol^*vi-w-#JLD^jX>l?8p-Ozi#T72Js2lsC zYW)1=6`{1@&i&9!e9=EE5@{Q5#6UIpueVm@(wx>FfNJso-dRybi{c)D>hQArD_UuN zk^|6teAUAh#&odr0Mv;8@^(ci-F@gF)Qo?jT9HUEH9iEj;?Fj&$faN99fI2N?^;)s z(Ve;uL7n*b-78w@8_W(v-T02a6;pI~i^EVazFD)vm;w47hSd1KKdx|LTunU;Y4LCS zSA;SY{~d-t;U5jJNMrh?`4Vc`^z=wBa`3tcBv{0`*$J0<2q{}OIy0%iX0L%Glm z!gB@C>JJ{sgKiQk@_;G-s5g0#lJLF|Fy0zBod?|}oWBORY%S$pg6#3O=1Y-?2OCFn8X`+q>|*7~oPpr?d^o50jo z1?DpJoKSKXFlJxnT!tzMh#l#|c0Y6(swR|_0io;w>1F68;Zr$~$S&=?4Al@$KLv8x z^;4IjTEd0rKpDH@r+lc6P*4H1vZH>^hu#sYtAQzY-;R7pMW}rR7;~I%=0gpH>i2*P zX9G|GH4=tYKqzN}Spn2cIMo0oa!&nR0JRc^8h~6*+>-*Rolw*XlyUmn3ZPEHrEZ{= zQ#x1xbrYs~fGN(Yq<^7ag7%*ujk(~ne<3yD@{J!|xL5oCg|viwu9NY9 zkdAPp`A1`3-1+~Y5yJJhA6mk&|F2g@;10Wgcb;0*U(eEKEH<$wCa8d+BkHW{SZ36D)UdY zOK9J>hmd&H&0FZu& zgSoLmnNt>3KhnH#>b%(7nPWCrkF;nuZ(i)3%(u2wZ_r}M%6YN(GKX%j-lavGtLDe@ zGY9Uhp5LO;t@C5UGv6z#KC4Cjk@I6CGfRK1UecoeocXcQnVa`iKhmP~hxxIwnH%?2 zkF+e`Ge7oW=5PC}H)vT{bwTXo%-sj7H*dM_-UYGoncp3)-lb*zWeZ{jnHx`3&u=-T zWI=3V=8;p?XSE!cRveq0xhhC0X<2?{acpYlroJghS_T7(W1nU2>X#B}Rd-TxY3~`I&`dQ;xLi99bUwI&;yul*r?ihAoeMlX-k%N`uGC=P!>f z%6z>rrTODE?_CjFlKJx&DP0~f@310PocZC*l>EnQ_FNHLp83`6lv$6L&Rr2(nK@)` zO3CAGmam9?msvVDrTG)F^tcv}bd1PJ6tS8Hxu8Qr=JiQ^M zc?%J4=+`4e!s#tmE!c8glTGyPgD)wjQ#vf9ew_Z1URqRmaj4df$TG!pY zDt07u!`77i)^&ed6+4!Ba(l|G*3GJ}j-AN-xiqDub$OT7u~V5p{E~8{^^j$&W3kZO zy(y90(rv3_uZNcYmeL@%{?%(@Z-mzVkL9f&x9G}}*x=Bwy;GB)AF`?>HY7B2U~0YR+w3lhy&F0_ zIJNQfLG?|s_d{O~NzHw}=&DVz4?DDc=k)eV`sU^=h zdtgg!bZE)q)FaQgd45Z5Y-sG#)JWUTJ-5U@41G|X+MsRWfGx34Lcy}s+_vQ-w!}US zl`l)pYg>21me_>Q+~uhSZ9C7}5}Op-xFWTWVYg5bGHoAOkY+C4t^{L72 zif-K+D+~?VkXo-@{q9?1pNGENnA*7Ax-na0Uxa?znwr~g$kDB_nV~*AQuEr4OWzio z9UAy!YC*gDEw{zygckmkTHLOF>us@lq47VbmbI(dep_roX#LNr$?c2gZHpC!zTKNz zuYGWATWn!y$?vI++mCx-du(y&`-7>u?aRAuk1Y)?Ih>l;zEa-y*s{=~qp1b$*B#v+ zTM^paH?6pR=jyv-t3s=Wq?NUA({OieP3XIK(~>(>dSG{KU8w*2Y4tjcYqdM}ZD`;7 zX^lIqYrQ+RAyhInEw@8ax81Rgq4E#X@;cNVy*suk^yTohf(}Dw?~ZK_eKR7hxI_Ko z-Lb8qMIOi8QPv3%dJv7Mm})6yDutXq9g?5EJe z>1nwgYu>Ua_Dg8d_i1?@Yj)Zf+a20dl2*{MeE7cDp3vMaX~iAuZ`v2z7wWSut*m3= zzJ0O%p?TZWk~>v8y)RZC`fNv9y-t-H{1*EoG-g*?<4#3Qev2Ipee+XVZm06izr_xR zhW(b7*QwG~`(sB#pZt+l(5dvc{juYrVSlC-cM2ZdA3GTucQCE2Q|aUTW2ZyI4y7e` z3A*f$1>tRn)9Q68d~JWMclh+tw8mX3r5%a&34al!cj;2M-jP^dctHR3{4Sm69f`da z-aH_ER+n*Gj>HCpmkvrV=`!xrk=USc;oIrSU4yivu_58#-bt_5wN38P*t_91L(>~~ z9n$S+?EUcK57KkH)}44X_Ca{d@btW{jjlWv8y0^3qx6EVb(2oL<~DXmu<$ zDm-|6dRf((aicx*y=^7QnAZb7T#u}R^#zf3RgR@&}(Y)W{_tn{*Om4+RU zO$+}yCmsLd!pMnOVfbKCdcE#7Z#ohCJbZd#dgJcRnxBZ_-+8z=J-7R~o+n~6!(XgS z&+Fc7?}^y#aPgY-g6`w8PsZki_peJY?jBrqGBz*#=C|o(-D}=*GPWQ*`MdPw9+g_2 zj1`45a2 z(`WT4J$fp(GJI%%dP$FUDW_wr!>j&CKhk4d^V6}l;hztsM|#$L>vU{=c;S)s20hyh zIvx8iyy!%F^PV+-O%A>f_kE{Em!9LUt{Rkt54>9=zh})6Rf8YGvEeoFFMQ0d7HkRc z8dsyF=ei531>3?yKB;k}XX&77!H)3s2{j_Ug3;B2AH(A()o9SG^MY!@uJGqmYBcXP zWOudT=WuLVjV`?!)vF$qg$q8fk>6`v^XkE`;T>PrDDG9iYxQ7Xc>T;8WxeXpO9}Re zzg$%#`L%I-QiAgEuGKZ_y;k>FO7KT`|93SSzgF5ZH8>c~|Gq}G0m4Yb58@?4K3{kxzcDQ7^CaoV1{K zKjq~bmO$*+PjNV@(H?J@yJ?IE4g1`i)(}TA{!6ZYTmC|+iQcNk;x}&b?H}k@3ldG zR11~2EoY4xYsjE`mMXRK`=V9sdvVaex>&|2*yUXzL61m ztFUE*;KRsjD!li`V0@&{`x#x{D(!k>P!L)FK}P;t%_iI! zOpJUzJY&{d^{3t#OpdG@nNjjqv#mDVYPBe(y!?hS*Pksm(I$m`!ZuVFAdvTagELI0Y&8wPVCB~vqs`xhN; z7|e^{C#kajrT5(wEQqZ9A|rV~>GL-QMUfR>X4D(7?zNkOg^@33Wi%d8fA~$o;>gH}RHWa|Ayf6%Q;ta!ar^vT=Jx*}zIwZw;c5R6o0Musd=f zs9i9q&B%L$J&|9A)h-@Xzxdu@U*zbx+GT^rJ$YZSKk`vQ?c~AbbMFhvBLgSbt~a=} zfRl96(-GNPlSaj)EwIlg;mo*7qkFNiwc7y!Rw=@mjh#p&1J2$`X zq^3dN=+SR$=jE3_cz@6@Igu;_?4GYf{*f4+GzB08^6X7R9Q-J1uaqTlCbmJMq(s(COr`s={V$nbT$n+G38 z*AB{TFuc*x=E29&>F;DVA3o%!7Qy)FiV>MzhObL&8BB=IDab4sUO2dAFey4`LT2&s z@(C@2Dbd3dGs}i|p4T#%7X4^iX7Y%_@xUHQPTPEQpR>otZo` zxc14QC^~dsX1$TY)+d97(KY)s8;=ZkyPi7j6vI8(p(khhS&)^u|!*(d+tk2!4vrDGB9{E*;Pz z_$9ixB$PM0(y$J}?&yq7p@PxDs1CuN=%G!a;?boA9fEz)=|6R-_@I38W{W2kt{kZU>yC!+&)hRVj&ZP+n59bLLBlw44Bf5#xmnp_sDSFmn! z$DnuCS9?N@3)ao=7`&OaaBnELpwfwsLEo%FzlZV)hFsn$=$EzjSg4?&&8kj8|E#{J zLd6B8$2$cBvlixs%L?ijbO{D$_30l@o=`ZiOE4sB?$B_(32nM|4c^V#nICREp>$B! z;Qg$;5#ihkowsxiKFHcICY(2+esZ^9Sk}SG;erV@w{{CgWbK_AE}qc&WVc{c*5=Q` zWfR8bbPvX6O`jf)Of0&pd+=da$@Fl8iEVD}9({Dft<_pS43xM&^wFEmE?q z{M4Y})0{pBB6-W(+%hXa|Z{La#o*+6fbYIcW^KzXVa-j+46B!^Mh$Q z3uDpb6@@AJL1E6Q-qCt1N*m?}pXV&=9c{cKxHUicBB%cw(cBfC@68Wp=4^T+nzy1+ z%lu$=PU)M`f)$OP&kyG0eB38myrNON{9sORr373CfBg9SMU`b3jg7In%GigMQG zMeD5`H#k37m@~9rwDHQCQ}ctxIhzJVb62)Gnjb99`R(m!-pbPKVZpMT!S6&1R@PiS zELf4VZd9~*<+{DYf>k;FCr8Ux);%&jSd+8lvuN_FO6QLV*5&*(J6dm5`P31?w>g97 zL>sRvpEn}dkn{dG(cD$#_l*oT=De{anzw4m$dSROobQ)M3s!ZWJ2Kdu^XKYl@v6?p z@tDe4yEb}cRnax0gB>{^?~g`SmtQd^_%UbwAJGP@Yd$b0*p)NyV6^$_W{;1l#J?-` zTuM?>&&QIIYMuRFS-a{;*N1Z*R65t;dN|iXrE}eGhjSfNjlUaS6Ry&EJpX~$f~ytd zuS!aK9-a(W>72ha99!(K%6q~y;i~3&2hP7=s#ZAOcNqK}xGEn7=kcg?9_KW86t2pP z;W=)||3mCp5PY_8IIy;|Bls=Ond_nb=S zJbmE2?yAQ3hx7PV`B*rQN2PP!rkksD&c6uG^HSv{aNgpo{AW1dSCt=!^SY>XzHjZP z;;zcChI1ZOeus@$<*nenUsO7ezayOUsPf)$u7fInAI|$rrSrOc0zU_?$|t}%k1C%7 z=Y6Nj7sI)pDxK@F2_Ay0^8MzjymFiPcvYSa=kciWtKn7PDxK$b9h}cMm7Y`w&jp)D zrSmxdZR1sqZw==`MIxZ`~o=l zxvKH&ZM>@STW!3m@dx1i{8iF&ZBDli*SB_Q02YgJTFz=*XB{_Jf0zN z-tVeB-&~cCf%AM-`6qC`uPUDk=l)UUpTp0AtMZxVs(cQd@2kp-;Jhv>o$Iy^&i$s! zcfq-CDxLe}0G#)us`01b=fG7u*X^w5;_s_!d@VSiGpf8EoX;^;eg~ZArP4WnW1C;4 z^EjKsd0wi#9h~=tD(?a3by4MS!nv0F=FaDLzZtLEqaH-3Mqnx__=>#xcqa2}6J z=loZ~d3{xRBRHS8s{Bzn_nS)R`L?m~s>Z(p=jWFy9{}g~2UR}KT%~i}zJzCEyeeM@ z=X$D|XPeEV%Kw1#`l|AC{ue)ARUUzJ|ETgS%vJf#aGsYcZwBZ3tMX@Uyh`W!c7^jf zpvwEfxerx&KAihmrStlZhx2_^jh_wY^;PAo;JlAi&9f2CeW=Q}+dQiL51U7opM;-- zc~p6&-1z=i<<;QlV!TS{eya)R@u>1BoX4+fo{QjIA5~r-&g-kn?}YQdP%GxYDk-T2 zoa?F5dA-`hdH<@K=M^}QN0q+@=jWp;e+yn2uF@->V{l%t!B#ro_anUKepBVM;M_l| zyco{+Rq5O(-@=Y6MY{5Cj`QEz821PQ|Ua;?Qre~mCp728Ga62mH!Io z`KolT&q+A1uS)0qRoln+i7Jo6t6;oJ=lfm&=kciWOX1bvs{C&@UX|Zq^Q-b(;5;u? z-pE{)|I1vJ-wWq`p~@eC^Eg#H*QYt0&uvxyJe;39s=ODR>!Z@SK5xMJdjnPDKZ5f) zqsj~6{P{wauYhwusPZ4+JTH}Au}|RKZ`-XJUv95e`Pm)fzjswNPd1##snU5~m&3WQ zRLygZj3r@&Q>|1X^TN~QC>I>1xms=OPV>!8YCv+*iD`6_(>hF8aU zRsI2-$Enh}A3lZi`l=P<;Zxw}z*Tu6oX4-qXW2Zee7?CVUj*mzsC52<>N_}(U#;*u zxZZGnUs5&x4>+%vDzDPfKG&@B+IY?VugWih^LnWjUI(9NaPBu%ekVK?uF4;R^LSMG zGjP7ITH!d~m(5lAn>LRs&xiARshWQ@ocEEc@l(uI`CND!#;fw>HeS{In{2$Q@xQ=% z9aZ^ZIFD1+JSXA2zN$RAQ+$0?I`?N3&hcu+c=*L|zOO3(2b|YMl{bR(I;!%A;c0M{ z&i8EtuL@T+zAc>3Nwvc3;Cnxu_k}9&WAmu;!Eo+3RXzfq4p-$9;apFZ&ga!<@N?j* zd-iI$>!!+&!MP49ozH}^=e!u-52`!_=Q^nJ%gt5!%{GrJf5678@-{YJmA?e9f%jGAy=@*xRX)$= zQROS(ypL3Q37pSQRld{4tMUVIo|h^=>*e_TsyrRe=YuNGhI1ZOel@%{T$MM1^Eg#` zQ#j{W<;~4i`LpIKo%{0zIDbx5<=x<1e^ovN&i$#!Zr2!ZYBiya>+U3#syL@S1Q{z8}u# zfGR%;=XF%&RsJvj`!rRa1Lt!_m0u6%d8zV7aIS+&=f1t)=2tcT891N+s{AE5_qi(X z3FmpK^8Rq{2UR`_9)hd#&*8j|s{9)`*I$)yfOB7|@_lf=uPQ$c=lc9r`~k0fwO8Zo zqiTEzUK`_8`4w>9*Q&e`oYzH_w}Nv$Re3u&_nRv30_XKo zozIO4aDJau<%MuQmsI&In_s1K-4?;Q|5ZBoRVkeRoS`Z|3Fq%WRe7XK{CcVKE8v+J zuhRLxx52p|RQbQ*TpzWTlUsb*V&f{0*yWrf1s(e43@2koycZ<)j$}{2I=c>FOoY!5Y^S-DL=W|ch_&ecz zUsc`$&UI7e9pF4KmCpHlz_Z}0e5j3AHP0t-eqN{=KMl_FQsv*+JgVkd2j~7#HU399 z*ICv0eKuZ|pMvv!Re87s2@)Q0ZKUYvJ4vs>a_2=X$F0hi!gU{v4dgqsqJ3 zcvb!uocmLi=fioNs{CU(ucJ!m@qZ4l_}*yM__=t^`BnLHIM-j5Z-#SzmCpHpg=fQ6 zdF39q&#m%Id#%#>yt)L=^HMdwKAfKms>a_9=RQ~EkHdLisPc|*UPo2)_k#1hRQW)g zU)4MxnXB^Ia6W%j`C2&FU)B7Z;M@!WI(Yiu4>;~T=c-&Bo%0M6r4<*ngdA64EF&d(`T-o;#{^ZWDbaNaMfd?1|1 zuhO|bAHsRQs(b>R&jD3F9nR;TDxVMM`Kt2ua2~%Z-(vHq@-jHrL6skd^ZKgtYO(nH zs`B&Ud|y>w4_@*8#44|k*Ss#O{0=zxn<{?<&ihxDKMm(|UX^!&N8ze`2%OI!RXz#M z{jbXB!1=zad>K3fSLLN}-e0Qx1f1`y%0oeX9#wt~oYz;C-vQ5rtMdQAIln6J4Cnf& z^1e2YDjx~w@vHKgHjgS_1<%2FRlXa}>#NF-!MU$gdFt!&>#oW#fOG$-@_II2l{bX* z_*MC%aITvwZwu$=vMLYY{P{wa4}$afRrxqL_nRvJ3eNXcDo=xR-BfuP&ih@Z^KL_nRCy;jpAV|ME1bW7 zQ0aWG1~y)m_lNVmRQY>0k18K&^QiLiHjgTwX5&>l*Jn1I`$3g2fpa}o`35+j8>)OK zocl+WAA<9KSLsQ0ux4+>*ICv0960xns`2&U+;6J<7C4Vbt?-NSy$#OyRW-gfoY!5Y za~)oQa~@Um^n!CgsPeaM9#uZh=27L-Y#vo!Wb>%<_2#O4r_Ha*%gt5!X*iGnui_8* z_swg*8NV-7j^{dD2IqLSVxBrlNjI9S@+NTJ7plA!{2aJS=l*XE=Q^tz-@#m!cQ;q% z{ouS`RQWqLUZwMW$C|4eKNZgXugd3`tMX!VRlWhveWg}7-uGuX*GJX(L*}ZyN}u>V zsyqzm{iVvUFjwWbz;5>d+UIOR(sPesVuD@F0c;932bKxqT*RfJw{QHlpd2--9UzN`D zx(d$uRgG_Gu2wk4H-_{0Rr#als{Cmm(&Dgmax$`EoeFb6;5;u?z5~wZuqxke^Q-a$a2}5; zKMm*e?XThwc;D6P7k^(>bRer$cQRTFHoYzaG^Ed~=x!+Wc9|OMtu4?>zcpbPZ z-v;MCQRU@uuA3^aJSaY1l}F%pFxT^6_!TG&NrSp5y zb8xP+O6Sk5o#9pCYK7OqKYs>42d>I{!MSf$c^^2BQtp@^Nskvr6Z6 zoB`*4R^KdSN&JPqSj`NcL~ zmDh*!eN}lQcsg8_KLqFTtMWE*-q))9B{jgT9wa&a~)LqN}ETO@3Qf#{D`?K zPZ<)QUzOJ}SLOeJ^ZSV^ZvyA_Rq4F1Tf%F?RgG_FuF8ABxeluQ1334&DxYlgsPcL6 zRE$^U%i(aVAA<9JReAMy;`fUx55sxARQZ)~-gm0}A8;P0O6R&Yf^$7p z`9n5d)jUtYxt~>eJ2;=8s{AE$Ro)%W@6Rfo&)Wdb>!Q+moFn1f&#HU|ocEC`Uk>N_ zs`8ESns8NK2IqOH@IFCn_{{iRs2UUIw&f`((T<3G& zi=VHm@u_fLFID5S;GAETUt;s9blxvl!ui}#>D)iJ!+Bn+{2n-uQ2*T8sHJ{!*SRq0&k)o>oaD*pj~4qT;k-L}EG z&Z@@mhI440rOGG6xy~w`>+_Y(qgFWPUjeU; z@v7$84$pwA8vnbES1TOzSNR}*->LExIG_Kjyf&QcugWig^LSMGb#ShyD!xJwLt=Rrz^vUN2RC37pSWm0t1r1?T;KrB&nqf!BOrRel$o`(Kqm2Iuof zl|KdNbyVdYZ5~w~gY){T^7rBVJXPf*;XHm-{t2A-yDBe)bAPJx#c&?KDqmyssPfHl z?h{r1E1dgHl^=)meN}n-u=x9`@+h41sPZe|Tz^%5Go0(J%I|}R;Hvy7IG+!y{3STw zSCzj3=liPip>XaKRX!dbfvfWQaQ=Lu$~VEeKB|15xhk(TJU+iFkHR^RD!&>YhO6?s zY`iLOZm!DPo2&8|oad{`^KHB;pA6@Es`B|ZUX`zhbKO+=J~*$JDnAA1eWc1WM#RUf z@{8eoeyZ~N@F-lB-v{UXs=PIv_nj(l2j_9B@*Z&BzpDIAIIp8h=jZ7#IM+>;PlEIF zNR@vH=Y6fx`FZ-ajaM~(1)TShD&GX>{jSQ(Y<^Y#JDm50DnDyvd>vGI2Atzn`9l>!Qlr!uffv(s?{Dn5!E9e{dd;Dt`^m^HSx5%~kmrIPX(c{+W$e zgitMZ|6uBR&h5YFqR()s+H z2Kyfb;lOc{!ZlGgbMyW8>?i%Cq3ywsbWn z@u>3kaL%vFf3)$c{0}&vx2pUUoa?E|YmAE@k1D?i&gYUUzX8sDrPBHPklWxqPF4OO zoa?DpcpdzF4(Ix)8vnexDu2aXl?QMhkE;3m*?3j{KAg{0RXzsJ<5cBS;Cw!)blxwY z!_S4Q@~>=uRr4$|SLLhWydPEhW;pK`RbCF~@u>2{aIS+YKMm(~{Hyqbq&m3fAI9$& zRpT#&^SY=Nj`O_+&i$#%Z?o|#o%^|oxhnsUxhj9gT$Oh+SLNN!Re4`?RsOEIDj#F6 z$|sqt@|otUe4)82Ut_MyH=C>SU(8kcA8_8ks=V??@%^LHd3|faIbPNHi*39ruWzo( zZ-w)|P~}Z+yee-2=krIU^LU_V^s<|r9 zhx6xgRbB``53b5r!!LrX@^UzjU#0UprhgLu?-i=@%i(-qRelHjVz^4@I{X*T^;hM+ zY`iM}(8jBD9?w_s3owr=-vrNwtMWhLJWf@fIzB#LrSmxJ!MQ%Fya}AguWFuWY`m)R zec;?bs(hr4SLF-f{G3uX|1$U`a8=`fgI@|)<+VSJf4-~o%iz4es{CJYeqN~Z7VvZ7 zDxIH$Pr{!--+!+D&l{8<~X$^$spO_k@v`TbUve+uV$sq(Mj z+;6IUEu7a^mG6S*z*TwDg!nwFJOt-DsPaqUJRVhkBb?V!rE~w>1LrOIza9&4M9>BS7s{C#Exo}nffz7YVKZWyqnkt`R^Q-cOa2}5;-vH<5peir5`BnLE zaDJYu@}uUe{G5sL<5cA}%~d+@qx0cBPF3Uo2Io4f^4sCn;Hu`i56<&aHU2R;pAV|M z9XuJX%3rd1RQYRg?kknf<9`Rv<5%S$o2&9K%~g3Zyej5VWkBU6mKXxjrhL z>$3vR^-(qcJ2;<*s=N%&<5A^@ZGKf=X>$C0Re3FQRelki>!!*Z!1+0%${&TNz*RcW zs|}p%smfo5^So5elLzN{sqzotTxV522F~lK%0ILDRrw+~_m3*yVy?>ng!A)Gl~Tc7RsMH)b+}6B`rHCfg{$)W;5=Vd^ZXmm^-<+*;JjX{{Quy*e^q%OIIoK; z9|q@jQRP!?yej|NT$O(d=l)maKf!rCs{A0F_q!@Tdun{VD$juP_*FXB^HMn1L6zTR zu4w56#WM}fpg!g@(1Bu2UY$wJRPpeJHz??P?h(E zbAPJx5pW)-O6Pv~1fC98HGT%1>!ZpSzm0ts`7*Ibhs)%r!c;5syrReeXG)WUKhf- zKUIxyVB=MJ6C1C}+rW9fRC#-N8eFCGeY?SH!c~p$Z}X_~p*D{y{}|5wtja%wb3dqb zzVAFZpI55JZ-8_CRgK>Z=ensHe;UsF_pjRg8PntceK%F(uY+@bRem3w_q$5xaXw<> zRgG^4=kcrZ-f;eYMwNeP<5l@r=Bj)>oZpL7`F?l}xGFyl=l$|m@dx~VUiYv$bDdR&6P)*{s`0zw{9dQZ&;ByL{;K9VAI^DH`89CvLsi}YUK_5;o0_Zgr_5FP z%jT*)56NweeEU8Pt2{Wv&3XTw%H*ZF+B=I4m2@i*BxRpak~^K(Jf z_$T2!epTKP&V8$Dp6+n&LsdQy&ihf-Jfq>Aa5bzsuF7wR^So3#*Yhzrzdxw*=iodq zRr3UJKKE34K0FFn<%MvbuPR?+uF5x?tMUWps=V@C`#iGB!+6d8rphma^SPwT{|V=P zp~~-ubN{IF7VvDiDt{Ty^Ht^j%vJelIFD16PlfaTRpnpXJgR&HoYz;C?=e^9mFC5t z^Qt@>&UsXMeR#$9Oso8MyyktO${&GOhO2b`+|&Zjbyn%zhiz?MmCpOID?A6|Rr&jH zzOO2u0Oxg4<%{6F?y7t}yyElPO6Nal@Q?ZNe|`i1k)(6*SA|FL@BfAK^NUs`!S68V zXHufyXU=P!=>In7S|@r-bDndeKW)yRF%rG4c|GSZnqT9*oB2PSzYgd3v4;4IpJO`T z{^pIGzh~aq`6%-TosTzv%=t9)C!EhRf7W@Cc{}IJ&0lo>Eu7b+EB@kj(|K(*51jvE z-p_eCoZpv*;4iL|<{6Ivo7Y3FaJ(Lizc@~npTIoy3HU2UFRd<{JwexoY!C1>r?Z8IRD)IR_6=M8#`ZN{%_|S%^!EZ)BL~A_nW`q zyc=Hgb4S(wId0q?X{`sY9o=iAD z7gYI0aDGmy@_)ejELY`s!TCK+mAC&oemu?a=RA)J$LGka<}IDSZvKq(f#&U<=bOLc z{3G*T&ZnC9bw1ntZRd;NypF@*iTBZ3IM3%Jc;dd=1n2rsbo1;o|J?b0^SRECnJ;!; zxhOvWYUee~H#*NY-{JgH^WDztoB!_oW;oa3I6QG38k<)>`%HhtJl*+I=27SE%`bA^ z#r$gLZXleyjN!=l7U@@BAV2tG;B$xIXRR+|MC+;(mVBypHqUaE`kIp7=d#ppE~#8$Zna zX6K)n-|f86{2}M_%v(BNX8x@64dxx4mzsBRzR&!1=SSguo)3WYd8X%fm4$Ktzx@r>U^8|W6pmyf6DnG^R~{< zS`>fZmz}4X_i~RC!&Bn%%rvj=e4%-!^EGg;+Xe8%b=zWo zh4bC!|8#!H{C4MOFOJXO#CZ)kkNYur;yP!+xz10*6VK~X^IYeDH-FLjt>!(P-)G*( z`D5m9JAc}Ixbu(kn(L+NzME#_RC!0t!}FPqKTka0E;fIWoBs{-70%zbc{aFthTHh9 zZv1!~|BD;{nT_A?#?LiB>b%(eYxKXAEuw)4N6U+DZM^UIyzW&Stk_nY6~ z{4w)eowqjsm-Afnrp`N?KkU4lc}wTL&D%I10Ox(03r}3PVK)9HH~vHOZq6r}2hQ{G zntwk_)pKcvjUVI2&odwIe2MuK=WEPoI4?1ubIv!L zcX0lb`76%%oA-2n)cj57XRnB_&p_v?=I=WXn~!o{*ZdRbSDH_8{!jBSoZn_X&-uOP zi=97gzRLL%<{O;<&wQ)%&gMTk?{2=&`J3hkoewrY>3o=ZWo)X%efW`is`Dx4na*dL zpXa>D{1WFY%&&I7!Tg`jZ^7%z*!L>;fATr_=a_B$9d7(?I4J2p{I6;W_sc=^N1Q*2 z*Htl2)$_U1%J@A0bK_IZJ3H@=*ZliRD(9($m*m-^P_0DfG-{SmU^PinR3g>g|0K7WNw|yPSV!{-E=D<}IBsH-FCgM)Mb(?=tW1yxhEx^Hb(S zoL65JU+0m|Bj%qvzr=jH^S_(VbAFq7vGbT2bx#I zhg;%48E&5G{8RHf&S#ik>AcANdgrUn8#&)>-qd-S`G1@rG=JLpS*zpMv4it;^DfSF z%zHb(+&=Hbztj9<=MR}rbN+<+SI*m-FLwT_`C8|1m~VDI#QbOHqs_~mPclE@ ze3tpS_=ndL_sL@OTF%#-pXYqLc|GTQ&98HQ)cjWGRo29>@4e15%pY-H$Go-ktIgXw zZ)pCC^Lxx=&L1)F@4OA1pA$pjiJ$N7;3@FY@WjuNSIrBY_covIe6aak=OfIQIR6yR z_gf23Jf1=uU*g8kGyl=~GV{I8H<%xCUJB>?^20gteUtH;|9pCT9{)|| zot)oe-qrcT=DnS_HXrD`o%sjOUo{`+d=g&sepa>qy>0xLZv0^Lubq#8r(&Mv@Wkgs zf%yjKU%_9n{;Bgm=F^?OYd+8USo31%Q_R10{+0PQ=S$6ZJO9r7Pv@oPr=9<1UJaWl zah;EwXF5+_AHObjoM)O}>HI?T>z!X~-pKjQ=1ra7YyKbSkC{L1{2B8O&R;O^;=HGM zZ|85B4|4v2`7q}nn}6)Q(0rQn`Q~3aUtzx3d5QU2=RcWmcK*Bh&(2Sqmpf1SHhz6i zIFFj2iw~>BeR8RJE$7#npXdB`^LozjH^0t#OY>Wu|Ihqh=P#Q-;yf^K?R=1VTjwLp zUvXYw9&`SMd4K2Mm=ATn#(bRfE#{M*?>3+5{E+!K&d>fXejQgiuVG%|{5c;qWe8zdUc_-(Wn|F79gLz-)|1y8q`NQU8oVPKbX_Ki_MeS2w@Gc_y6CliT2l&y$O6d=oeRYV(Jk-(cR#c_Z^@oHsFV=loIg zmz=kT^Z2^M6Ms%@Xa1)1SIq}I?`=NJ`C#*poR2V{;`~$dna)3l^Z1J3iTiDyjbG-* zFEjtv`3Cc?&P&aIalQ}E_brDfzVBfhf7FdX8~+73uIJg2GuJcSJk@!&dD!`7=5?K4 zXMUyg+syyzya}Age;YjU_#d_L_qg$G%$qsyVBX4kSM%qbziHmd`4IE2&PSQ|c0R#; zpz|-xKX6_I=kE>1!4rQ@S#3Vq`DXK(&dbcdaemNzmGiTHh`(=%^K|o_&U4IvbAGw` zQRmm2pA$XvyzVqlcm9xhmh&gfFLB=1{BO=*HNVOE8|HUAA7b9j`DpXUoli3VpYvJf zFFIdr-qZPd^E~I<&EIvt*L<||qvjKwSJ@oDzB8O>m@jZ%$9%c-tIan!Z)m>5`90=) zoIe8ReSHX?cwavW=kwy zlB)5y*t}}R`(j+o=J}VKXMp*G&hyP%IRDuE8RwswcW^$}{8i`0=7IC?%=Gq0L+=KdLHUfcOp^9!8MF~7ojvH3rpZ!o{z`H$vJobNY(%=roPHqNVVi(lXN z&O_#}I={&Lb?1LGAL#rR^L*#`nSbQ`Kju@NKWjeQd1v!Q&U=}!ao*qj2j}_bKRN%z z{DAZ6=Et2cFt2jnnfs(BUi0%w)#t)WjOXV{)c#!0vG3vh{HhB-<8ueE@n}oB(yDoW zwDJFP<9{=M(D^a*7S5||kH7CT&TE->aDKk|tIn@551e0b-rxBh@QTkDc;e^FgXUwM zKW;wB`Sa#qI{!cOBImu$S2};&e53PG=07^0Xui++O!Fho7nz@Z{+Z{y&OFWeHuI?S zJ?0lXKVp8Z^U6Eo>)gOS2KuL4))#Wv4=H_tJ==5s^U z_zgDxtP9TEKR=qMI^S;|ael)5BIi|0qdCu_w7b_&GS-uoc!lP?}76< zrt0_~Hdp1X;rJDKk}7`*j$eT#sq#8Fo{Ql9@aJ{W3dhfkcf$F;6XA)^&j-zCIBx~# zxcTtJ^IC$}{JB8o{QT!gpR;*3x_LUo>tK8-9GC8|;~4_SBOvKC9A7Q|@~JjYR-H4C z^DFadyFee9?I(oX6b*o_Jmt*!VZx_$$o^IlsX? z-}#;9A3A@~e6sUa=3hGh+Fq-?E_^=x&&Drz<6koW&iQNR+no1@b3c^96YsBl^FN$_ zVt&f`bn~hgo;l9~^V-f=nqT02llc|Se>VT8^FPdQcisfAd3{x_Thgxh`9A8#rk% z51V&!e)doCb$i`;y7>U-+2%u?UuHhm`E}+Ko!SyK=VV+hnrWr_{`({)I7!c4D+z_BJ&HKuQtEh`DXJ5&dbd2bbiqM0q1A^ z9AD=a&eP4Gb)Ey~-^c6(=lxW%ukbzd3iIyH8<_WXez(p4uABd1IIs6;c-4gYpS1Cx zy7BGIr#tUrKF|4^=Ect6G5^;281rq;C!6nfKHL0H=S$2_JO38W^{jTund@0<9&*0l z{6gm^&98A@{g?Rs4V_2L?{6!B%H&1b1wJd%-5$9p^i=AI${x|2>ncwWZk$Ge151K#X{0Z}?oVPP? z@4Tyd7w3J=-*EoE`P?;9%T=lAo=Y@Qq4JpVAi z%XuU72c17)-qLw1^XHuBn!n)u74z=SUpMdLe6aZt=Of{~Pe;NN@6(Cq19P*ik4#X-fiDl1n-rRi>^ z6`H2IK~R{qx+<$H=~|M?s$LKkH^v1Q6crtGP*HK4K}82ga9?oWP;qAzeNoW?M;uge z-sg#U;^xh0obUboVb?kTd+u2y;>0=kT;tlab6JINS zWa68|TZunQd~Me>w5*BF=rP_#5`Tq4d8=>DP$=G4YM! zcY4%leNGqOFYzM*1Hr{hL$z8^kY7 z{1)*KC4T4Mx}1DG@q3AXG4VshuSxuo;y+EiA^z*c*MPHsZUHa%&tDN|d*g4kcZ2e| z*P}<}=YfcGKOz1``e!QrktzMGcr)=8@naG{9`U`AfBa?sh^~5p(w~&lze@aBiC-kX zJ@I#o?@0V3;?Ga~GvM?G&I8{Mf2}^y_iu_{nD|e{FG>8j;+G}<7x60--{*H;?$wFk zU;LWH4;Q~K@d@!86JITUYvLz}?{(y8drucXAo1%@;v{O#h$ zCH?{NQxgA#_;li574IkhL-Df{|CRVl68~@U3lhKUfBJY`ocMjk-ptXO_zj6~6aPcvE8?pjGdk`s6yGoL^TiKN{GY`ip7{I4#}faT_)&>} zQT*7%zbC#W@n3-N3;lc+c-g+)1in9b51iLSe{UCGPW&D>dHUxiet+?oCH`>n*CjqK zesSVY6n}5xPZR%0;-`pzD)BD(J<*=8fbUmo*FgN*#GfyIed4bYzbWxIi{F;`d&T#z zjF$UR@dFe8g7~3{e@Fbt#D6Z{O8jPUp4(Xq4)a@#ePP{ID zPU36C&rAG7@e330h+mTUy!d5_KU@6D#9u0Yb>eRjzb5f_h+miZhs1A8{8Qq$CjNEt zy&gL{zCRW}Ao1UbACmZ=#E(e)?!Wi(swIAq_|b_!O#HaS$Hh-c{7K@|i61ZCPyCtU zXD8khe@WsOAbuanU;GXKWT(=I;bDNZhLU8~Ohn97nNN z#oyq!DSiA6{ubqb@Yrbn?*`u=`5Xpbwuc`PKQi&ph&L1ehWIgw|5*I^#D6V*O5*=5 zK9%@h|K;^uNc`U7yAyv1_&w3C7lD`U;gRC6PW*A=7bSkI_@#-TEPi?7)8d~@d`bK( ziJv2WZQ`#KzdrGc#BWOcJ>s_|euennoXdGP}izefDf#D6A!Wa2l8w-W!W_}awx z`-6|m#>5{eep=#3h|eb85MNGwt@t^KZxTN*@n?x&nD~PDC5fLcep%u#6TdR?3&pQa z{GH<0B!0R0b%}pk{Kmw;A%1J(KM~)nIy&w*iXV{ppT!SJeD7O)ypBlxe&V&nA1;1$ z;#KkE5|Mu~^Ht~CkU!V9P;x{G!DDm48Z;9_+8Dn6U|N5q#C|E%~qiGNG{yu_~)zcBINiC>cVZQ_?Deve!I zdEAxY^ry`4!ouVM;$KYs2=VVG-UO!~_H*#EA9y3;_XUr?%%A&~#~{6xhwEkk?F8|A z)JOSg;s+((6F)TZ9paBp{DtC;#9uAGI`KD)AD8%h#Gjt{zk$<#+X`Ox-##b4kodR7 z&r1A1#LrFqKgC~@_*)Ra2g;4V;XmK5^p~de`~J!6d3oXw5dUQ2e=q)(#OvbMCVoBQ z9N+jG^;x6zH>dO`ir=1iM|_{gXn)R&AC&mB#ScsTrQ(lC{0-vm#NQ#lF7XeEpP2Zk z#7|HB>*Bq{e=NR|_;19YpZK4|Uy=CT|Lo)V#>5X2e@EgE6aPTs0Bw+8iDC*NWde@wbXUIPrfKe`MlUiPsbVviR!6zb}4# z;{Qkd)WmNQ?c;vY@CEB?8} z2jbsM{Q2TPPW)Bkze@bg;Z9;+w_KPkd7R&519HzdP~gh<`Zomy3TY z@i&TpHSu?ee?RdLi~l0=&xqfg_&3FGPyDCi`?N>p;kV)kCH@!j!xG=;b|0_DBz}MK zcH)PNuS{EdmfPW&B-za9Kun3q2Q zUiSAsDE{%pKPCR<#J?eaZQ?%_|3%`z6aRhUw~PNz;`{y8{lEPlH|kFwg!sKt|M(mJ ze>3sliT^n9+r)pB_&xA6ob9?L z@q@+h^!U;CK0T|b{BEo6WaIVK#19nze&P=m|3%_s z;x{M$MDg1bKTdp~qekW78R7>eJ}Z7$;yc72llY6o+ljwMd|l!fgVVm82wq<2z89SK z=NaH-`*VeOH}TJj_Y?n?__GuLsrb2x-za{5;(rpqDDk`9$?N&9#P2Kq!Nd;*r=DH~ zUba6K@h>KRl=ycNf2#O@Bz}tcZxf#p|5M`2;&*+*XnkHFe(%IzE&kxd-y;6V#NQ`g zPyFA-S0{e8`0_@Bil{eoyh2CVq(c>k@yI_*)ZiiN8Pb zCyReH@h#$?OMI*NHxuuR|2XmIivKF{^TcmS{7vF_dgAD~Un;(T;vW%zK;oYjKRoeo ziH|3Ko%jFXq9^_T*vUv?n{j%l2eU{P~GLLHxYL zpDO-_#Gfwyw#28!-=FxI;#Va8T=CB&{&MlJC4M0|?aBAS%l71*;=f4za`BrJ|Frn+ ziGM?UpC^sx{}b_p62DRWu*Cl?{+Pt~-plLXPW*o2>k@ys_=$;E#ZOQCXz^a+8^l)< zKTZ7kiJu|zq_{3^uhhsWR8-+P z_lf^N{I7}MAbyXdN5}nsh#!D@#^0#tACaDV^$1)q>)oC1>U#HB@Uq@L4)H^fKK@2N zCxcUt<8SbLDxa;mUe4!1;`52`LY#ULeXe5zAk=#;>UomiV3T=IuQ?@dLz0_=^*NuK4+hpC|t2#NQDh~&XAC&kb#1BinCjOYjj}dPtzEON#;{PCiV&Ze+rzd`v zcrWpnh_596dhzEceu?-i691t18x#Me_&XB+n)nA2|B?7riT_&si;3SV{+-0{wvUh3 ze9rtPR{S#jje?a2rh##K#E5*kXzexNEiN8mDed1S$ zpOpCL#U~TLMtnZ;pNa2I{3h`iC;nIQ^Aq21UmwReC;mY3cPD;?_=gj3h<_^awc=k* ze3SV16MvTYFA`r6zd7-<#cxmiW#aohc~l-Q6hA2OcY^ad$YJ30r_A3z7{7ZIuO$9i z@y93rZSi9h|C#tniQg=~HStyZd3_cWznA#gi9baArHMaA{Pl?+CI0rrpC*1;;?EGj zD)FB9mlEG4{=LNiQT+PEUoU=h;_nduYvPxS@B5U|@%oJT!HIuM{P4v8L%f>!P2x{V z{C~ucOZ=Yu`*@w2_=Ck~5L&Xi+?BaZ;1am@gIo)BJu0Rf1CL4#BWLbR`J^tzw^Dk{&!tJTL1mPX}9+W zFWc=0Dg6Ue`oqN^n)qYIAC-7pyqfqL@y8{8y!bJRKVAH(iBF1eN_@NcGZJ4B-D0dAzPs`hQL7eG ziQgdpiNt>|{)NPE182Ek2QQbq?*T4XKT7Ej62Ct2zZ1VP@kfF)|39SsTS|YYr;f_) zG2;6qew_Hd6F*t}0f|3L{IJB&5PxLi%i`mSKUch+_)ElBC;l4o^@(33eq!S91ZV%8 z3SRF24=eplO8*I^Ur6b{ru5HF>8}-kVd6g%e|h3JioZ7TKZ^fT;;ZiMa`N`X?;-x) z#19nzP~r~}|5)Njh<_&Ws`!@^KT7=Di9cEVhly_#|9Rri5dTf$)8hY?_=5Of65l0$ zm#2-&`3uDNP5eCZ`zHQ+@dqV-vG~Ihe~2_e@gsl@wX@b zRPpyFzD4{)iT{K6#}c0v|4iab;$KeuZ1Ha=ey;cr6Mwb%&l7)>_-_)wMEt)J{}*uD zvA=+q?buaHzxQ#Y^8W?#0}}tH_`!+)Q2fxue<6NE;{Pc=miV8)rtR`_%{;&l=!uYe_8yx#J?kcL*hRbzbWxw ziQk&|e~GU;epJqH7vDSayC3NCc0l6y7C$)g2Zq_OvBcZrt;E-eAD#H| z;>RZbbn%UePl}(C_;&GUCB7m)oA~p@`-$&De1F)P_#4jwUyAhmg1;Eo_rc%Tr+TH* z$KObQfztm|O8?K`I9k2x5^(&~qR8ia;5Ed50FIwz7JT1>?z9R&&0V$MhE=N`TjEE7 zvp$apFW2WO;QNEG1?Tms=N9o35}y=*M&b+N-Nc_Q-cS4`;?GX}b>inH{xdM@lPcFOYtu!{s-~zC4T4odAUDN`~dO)O#C6@e@XmE z@w=ZeTK~t1-#77N#s4nxlf@sM__TO4@g?y!iJv2WLgKF!e`ewriEm5%J>rAJuMmG; z;-43PdE(cIzajCTiN8JZo5cS$@xO|HEb;yB@8kG|#J`O=UU{%8{+hlZ{y?Os{@i8b zsD2#|PW{>sysTeU@%tzKB=LtPew_GY5AwHe>o50zg zMewpcd56;PO6fl+{=&pRp?qGM^7)d|zagdnp7`4mzh37e%Kbd9 zm+OC<^7(qoXP<+89Dk7b{lM7|zexG~4)F?j{Ec!CIdPTQ^Y|P5Fy+4m*UNHJ5$`1a zc=0n5KURDt@sq^QNqnpL%M)J|e|_R-i@!DTmx{kH@z;a1|NjlVY=N zDTyB^zB%z{h<6g-j`#!6&+#|pYF6oAl+y1Ie|6$762B<%*N9)5_{HLvC;l(upG^Ep z@vkKQCGl$$zgGPE#D6J%Q{sORzb)}QKhVc<@6Ds*dw}?Xi9baA(8P}vKQi&hiMJ9z zR(x&ZCyQ@Pd|Ldp#FxZp6F*0MIq_GDpOg4S;^!s)9`Oqkze4o4-UzzyN z#IH{LCh=<$|Eu_QiSPFyAIBRLf1voSi60@p*Ot+7Z-^g|_*(Hp65k|#MB>j9uO+@9 zestnziyxQx%fwGf{6g{R#NR32PyBN6vlIWc_)8N1hWG`E|3v)a#BUUTU*dljzasIy z5ApH(Y~uG5|3=~u7ynV>Rq-1VKU(|`iEj{Jb<*g#pC-Ov;%A5-ocJ#BhbMln_*mi> zh#!^s+r*De{4((^iGN)DS&4r|d@k`Hi0?}L2Jsgq{zvgwC%)H%eY`G8{66BBCVr^+ z<%w6sKbiPZ;$KPpsp8irev0_@iO-1Nl=!mvZHd1C{9c$J_da=aKk$6rphqZ9v=`0eD8LckIR9HA0&QQ;tvjt0UldUe*iLVwvJn@a<)x;fZqc={szAVd~fjh8~k?h_)CsttL}Q5=O2F~{k_HGZ}2Cfp4_i|Fs_&P zQJ)IVeeXwrm-jQDEES#_V4(Z|M9!W{q}Lcf7~+| z_Z-GOi*e6m+%p-kM6pqD6g}SFIyvYzYX0xa(wvo3RdJPSai8BiAvRru2rhugnDJdb8S>6JlAGr!gFm^COo@#rKakSRVGx_cx6I`R4Ws@I#HQW z`)ZY%uGT9xbxWgCQ_nOjwc6I+!t~tY)Z|>HH`D1ab!U3Jyf0go+W7F|?BZZ~o^h+v^upVfriNmy(kuqF zSqx~i7|>=hpiR#n^4wITJM-H+ z2+mFpW-IfP+j>(rdhHO5@iA4bGCrn;j;V1VsvtsM!3l)CNi~GL!F7bZ-VKC2-zGxd zm95IS3`iRxb>J9+Dg@>sY)KVCjT6cVn}UMEuAro_EhsAN3(6W-YfxC250n;KgVHb* zG=d=GVLecqEDFfDj0wniwK3nFnq8jUI@h(E#zXTf`J^zkrFmGPQH1R?KWR9;$+DoD#v1*sXTAYDWi zq>QM76ctq%YT>xlm{pK!vkG;o1j><~Vvxo|S0&cCCBzybmm1t4v1WRg8dOX=jfzRB zQL#p=x6oVeP0sbs>cV*SmOHRMGGXJPiIs6_9V#WQ8<(b`cxl>rOVtJOfkEoF3pOg$ zb^%0%+Ae9RP}^k#6>59MQK7b17d_Q>AxBTOz2_m#<83db8X8ln4z);{RV}ors<{F4 zlf)1cl%xo=m)y=$7cLC`=~uR{%*=F`Omv&A)a1#*j$xCf*P326w@SsO-%@Ys zwkFt?H$sXoEtiT*zopXBXQ{e$IuzP-ktRcFtC|gl)1Y_AI25_6sU#-Em=0qyjHxgt z!kGMGI*ci>m;giNLf=B!LeoOcV!DgDE+)E|<)U6PEHSyo%ofuc<}{zmB$+W8#pD&! zSux*8Nin4jmSK?X=BlO?sGVdG9n%==FD))FPA$$2ED^L%;t1udH_R28orD+MUFtv> za(plfdUM?oFx`VOj)HG36OAF62+@G)kc44iCSn1CB}9x@8w(Au9i8`ZpRkOO3CB21$c7{P2@M~z zpU?;*&xtUsT&!rKL1|%FQCb*QmL{vm(p;ip+a_fFF^Uti{xFLZvi>lO6SDrWuM-kQ z*w+b3Bh2E21QMokLNW>SIH6e%CUQbkAIxM`I)rJis>u)LvMM!&$*f9MVK%E$SD4PK zv=ipDD(!^{tx9!iMq`S`NJ@7hfmP`*yqc(4f%3eX{s!7NX?~i}w1Yb}^WaW7f*5PfJ-Aa^J5jHV zi2b(3{;bS2vXB>uEaU_-3zsKm(VB&8(&_alr!BCEfNQ&2KcS%-$2!!lW)&e2k(=zq_!*3V`@&WFdW$D2VYyXd$W|!ZkkHzS-sF zzH2p>o}(JiOKz>ISdE5nSeH&<6)V}U<7#+bb+rZyS?L2-vT7HWvT7GHs}&|3DZ}bk zYOxfZ0QG)F)-{bKZmCHza7#_vfONHJC-w_MQm{`U9f29BNr_-cYLZVFlA4ACCZ;CM zfr+U}b6{d>(i~X3TKKXkP4$KQR0|t~(qx0+KGkG{U}9>rK`=2jSuvQHnyeU1Oikt! z)vn2WLc(jZnGo?>IBX~_Hf~Uwd^hw=Eml@2O%5AOOigYaOiWF)6iiG_jv!1-P3|E~ zOielkRjEm-pewb|DwGy#h0^5kL0xKc^I&3X^4(!#YVrYLVrp^#p*1x*fl!;8G!lAK zlS;zG)TEOzF*PYAOiWE$2@_L`y%LlrFAyfCCQlG1rY7ZtiK$6DVPa}hPnejRJVTh6 zT6l*jO-nS`pPHs**q>TVo+wSTCq%QR$ra|XrkND>vZhHBma(Q;6_&9U%Qlo29wbVO z-4~Q5iwE0KlbM5MtjW~EGS*~^VW?}ex-ir=SzYLRO;#5QUkmpTrG<-#(qw9(DK(i| zXi80%AL>z)<%fFI!hoPOSrF(%O=bf+QI~*2C+ZS#=tNxtjv1{UUKZ>^T@uc1le$El z9%4OQ1lWXnI0mo^^>8R)@9N=w!Q#~==kyrs5_Ecvb%{4U$GW7R-eWyHGFYj)gq?dR zbxAunQR-nLU|Q-DeQu-FCHve*sZ02|ky4lRb0?)9rU*Symnv{Cr7i{FW=dTez}=L( zbc7yfUFtxuvo3w0=UI;_3Vl$QMsV|^E|s7cT9;1H6Rk@r=#ADjE6^jYhqsJAsE5al zKB#N1iA|Q+cHxFiUGqz^#S-m~Hb;A-t&5(9FXq>Jtn84^_bgEV&|ZYJew2I-X+%(%XD-F%8824Cs zA>?g_kT+sL#}V{WF!T*gvl#hC%(K`JXx@d9C z!!trb;Q^vwn)TR(VC_1S%Zu|B{?i%syHnUnbO#S()sUs9NJy+PRt?ED#;T!7iXtI5 zjUu7>iXtHmp-4zYC=!~EC=!~EFjkGwHI$|a4P({Ngod$dgbJcG=^#|AA*F?dYe;l@=lwCl(nz9RMS2GqCC{30H?P|*Kpk0mHggpc6F1d&_ zL+UEcx~~)Fd-Gjxa4qAR*z)dvw=%W7>}ji&W-QzgauG%SV-<-|tZJH)15`fz8iaf~ zhpI~mV2qj)0vMyFBnrl;DT#voHzj>AMomc{j8QY>7abK+jj}>P&`}}wC`}p!0dI!! zMrpBhKxxDELUXuYXb#s4Ep;CRyctUelqNBPfHz|mfzs6LFh(tn8w9*5d4PboG=vcF zmWB`l-qH|4z?%{y2zXNh0|9SJj3D66PzID%*W+V^`1EVGyUSL65cp=jerCTjH8(l% z!Gp9nLkG~UA^7Ol5d1o7;Zg}{Z%L3^V{Pn#Ev_ujE$+l7)^u-MZ+WoN?-$|e{!(vY zd8RY7xHLbxJX2X%nVZWDdsqv-xv*IIs^5u?Q!Q9qF-hTxqYGK9I%>7&&s_G6F+6OX zs7Ah|6x@X_w$1dsw>N!kbAq@-r4OIRYoCg$q5Q+ON>xRTgw_0 z(v}cHirQM#AnUf)G|0L=(O5o<@>A{h7pL$ro7L!`R|cJ_6%6X+a&L!ARXd#aN?XPq z<;PT6X@?O&NUk+P?uE3Q<0CFmf3fchh$oC=V|!k6%YxinRXR#Vax_vC1==VXK@%l6 zXrUwx4V0vzeUdcvsU!{J&>p%+?Qn!pTx=1coUrpKXgEEz!@)vPF(;s`m?=MR@v{Jxh)G=9l*bRhzR}B);j(xGQ zaM5vDT7U<)V^RY=xgC>>jz_m+GKzS1J0|hP!`m^5FP`3xNqkwZ#Fxd&ok#WvyH+EA zgk6VF0K(EDD^Y4>MQR0MWx7qmZOA?x*;p@v$x<=9n6nskL1Jcwzl@-l&8*~Ev;LA= z*1y@ZlR7SFY=x|!wL*@bwL-SgS|MwQenNV+hy}|cqVWi;MJ!q_CmN5iT4aUGH)pxw z8ngGpH)ij}*t5AY_$)Vs#>$l-Sh?O0kQMZa3j*{UVIL7FI>O#7CM@z`AuQnD7T6Ee zUo!*Cl^$aQrM`rRO_)CTXVC3VE6QNk_pEtu$Tov&;#hlZMDv%H2eB@~sT3~@MU88} z04*HX+=T{?$KD`=-X=6}T;t5v6^kGQ!(<~^*ldIgqm8h}h6QRi;aEaE-9uoJu|P(j z7LO%aXe^OYDmu*5qfgOE9>!Q=a4ZasM_3w-enG*`S#D?{%as~Jtq>fJWt`mMSfaIl zFUys7aV+ET4#zT1?{F;R_zuT1&hKC{K=v9}mMiVTbbzpzi}?UymmxTa2+NqTTq!$T zM1;M)SOg*L?Zq%6?Cr%kBJAzOK%yyLE=Cez?`I4p!d@=M5@G2u%henOtwq@T8ET8L zmkS>jVJ{a>47%3ygmFOF^MrLk*z<&WK-k-Y{?lL~56L{MD79t{^$>HqyLDw-Wzgv@ z%q-ecg%3+vYiT7bt%-s$uas|>1f3^w2j!yeg4GjGi;%sb{G zoKYE3q`~}FOO66?dL&;OxX|#L#uPz`C)yFmR8UqNQ$bmA_yz5VgD&X#IOu|oFAlok zI7%vUxzOrreRR8HFh6`O1nF_nKwrnxZdRu`#%Z1@qYJ9CTdbDM8LK6`&T7f7vs$s# zggjKW$f517%FCtgE}pVm$r>9Lt@(qtJ5JVc2C9ayW2H)dtXS_)xM)xp7bog_angq6 zhM&c9C96;^gk=+0ZrDDSE8|CfFHSYF+@X_(u-BRTUL4P1xzaW2dvO%U%5}YfY9Wo6 zOMQ>SE!6koY!AzoE~B~#OG??^un8NyLj#;g;w%A7Ho}q_)TcN!f%+7uCQzT^*aYfRI`x3C+gQp~ z>D&XtQec*=xr}mEI{JXHm&V!eNhcKh7;KZeMYOLP?8*C!AS|lP42ZH)MnU+~n@w!l1jfTzT5MQ#%_@*mBb5 zb!#m!Z?5ZkF+M-vcO3z80Gi?iGWY4H@(fV;i(-!V1eJ zWqsv^a=@f89Ix;}*>B;4vfsi7Wr5*?vfsi7Wxr|qqTQQ_)dCBR35=ym->^nS*vE)= zZz6n9mK!S9cPw61--h_0}D;B7c z<0`Ir1kc`Sj(a7i=BEd4hS^V%Bl{`r8T+YZ=i)pC?Ho=Qc`l3n}MHmGkP-GX7psVA@@k* zLJqk{*vH6>o{Tn)UU4Fg?bRj#jb5BeqtT1gXf%3p9*ssXPD0S=#iV!rwPMy%`#iat)odUZKgX7uXC zZXZjIEj}8(;_wbOR?#*$zTEsl#H}xPe-M#v#P$y&Zhv8#Mi=7CIGXL&2fxM9#E3HD zBm+u_lMKvXUKMkfO<~>=UA9b;i-yI4545W|kAeOy4rHKJaUz3@-#C&%GZ|+x;0GWa z6=&`~ad7b)Cp5Tm8K+n11jca<8pqy^f+QT@sLVFmeR%j37tcuw~*;})RayZQ%YPv9cD2LPRp&U-Lhq6~@4`r{+9?D*s zJ=8+a>|xj|%5B&yN{{Rn?O~kZp*@UKJahu%^bYM|oZq26j1xSxhjC;DKlAdLntiG1 zja@0fggq&@gdHgXWj{(h*^LrT<{B;ugYpa*bjJX`Bf=_<<;CU+3yjSZmMF)=WJbEo zg+rX4Fqw(HHI^C<2FEVE2#%d}kaK99g)o_s2Aa&shu|C<$01B+G)5*f>T{DB%@HOu znj=hRG#8l6NVX|6ac+h(6DJucGjWuGG7|?QC^N;m5w=&}31udZw@_x{d<$hJ4!BTe zaGJ){pL1xOVBs7ZM_4E`afXF56NgwRGsXE2mKzJYro4CL(UkMfs>^q0&E=vagQk=c z_cz0dM^Jt{YTcCEj!HM>g`>_**(u6KQw}`cuBIG#+LNXnc-oVuoO8-XQ_ePJqbX;b zve68YW~q{C+LNY)n)akAsitf+CDxRUrsSHk(Uf3QHky)b%0^S7P1$HlwkaD;$u?!9 zDQBCqfwL)RtSoFFOieCSwoXoO-M!qEb7vKCqex*Xj!dv3QV0_kTpTPf;r9dJT7^(p zniJJ29<|?rQ!wxtD|`~pbhufQ2ZJMNY>&Az7|eD27hbwm827T>nlo8iy*B)15MmNA zUT{5T7fAis1M=?K0rKtHe(gfAwc3TS;SN=0Yh$`(@iAMn{Fp4+TB)iHckD&5(AbM$ zsUf;7HufS|u2ji}TYk9>x4e5BZtX?ba5sJXdupjWIfvi=d$+bE&8Too(v14zRELia zgFcw3?eOFUg5GVYYn-k?RpWF8YKqepmIEppM>5z!aVUfO5QjFX4>&90^+5;4p%3aq ztE3ODl0LLb`p_!rL#w0@t&%>pO8U?$=|ddzUDF6mZX!mvL*4P zt!zm?X)9Z?O~!I1ptO}O2`Fu499`l38i!XnzsB(u&aZKRh3kzt!ou}N9AbfXy4KD7_K*3 znp3&nXlYL6dLs_+aJ>=7cevh&13X-B#1S5@H{uWv*Bfz+hwF_v$iwwUag+z;#$g_= zH`>~;=6a*8lMP&NwDs_n>y37tA49ou0Ep|2I0D4=MjQg-dLxbjag!wu0->o0YcqxA zYO{=+EN%J3TyL~B-EzGVhl9A@D2@lQTurlFZ^Q{9t~ZJ!Lfm924heCSr8p+U^+s_} zi0h5ws1Vm1#bF_?H;UszTyNmOkeeGUH4%x;99BSf3y(Y*(Pj=!SDX{VLt#cV8_{^h zSs^@DWyGb7kDU?Gl7I$2P7LwEGa}(MvIb$nIHkA4gmF%9%ZA|@A|f(kc#6n~YCt>R z*0hcXSd6F!oY>nkWOz)+h`d%#?d@<|Ik&fE%kVUY5p8JEnzh5Dr8#RCE-h;iGcpZY zJDgftw6-i7A4MagKA=sD!%o;?XGDEKtJV&Wmu9UUTWYjx?buSIVT&_T*h*zYeLy!b zPD)|ZkrDL)jaxfrUs|_zG5xXzG5^xOwPOONfosPMObgeJDVQd%9dj^k9FAqVAVu?| z<L&anE@Swtb3ePE45rxO(f)tPZx9Y4`7o~ehVg>Xf?)^mv#aPtxNtdOSmq=jZY4Jf54!GxK;} z9?#0-Ie9!IkLTm@EA{w^di*{e&%^CmM0awq8{6^&=}>FJ=&{GIUeh^#t>y_F=Nx&y z&Ue3bxPZWcX`DCbt2O4Q>z(;7evPxO%hS_S-8G9Vc$=5r!(n;;f7~_SU7lSm4uk){ z+;Qe&U$qWX05OW)3I^REa2}9N!0+MXoF;w`ALlgjd-yneiQmJ=(M$XuK2BcZ_wdER zOBxed7I*+KF0xkm0X`1kdVTN<{4wb^rhkOxKd{VLXt7YOwBYz4EGx%iwbsII2ur8% zv;R0NirY|@TSMH2u+p&H;qD;9p(^Cw8JO}B_OdYJBTuQ1l`9ouxv?;3xv?;3xmuy& z55ist{6X03fIkTP64M5Jx{LR{b^Uc;JONfM#6+>lrS1BiKkTnM6M2MNksh5}4ZUi;gA|Tl(Q#UdgB86aUdw2KT;4R2UP$O{lDaTLV0n`X#*EiFL*u7-A zv3tpK+{mlTR6w)4~;f^p|Ih&xv<}Svy_wu6^hq?L0|BiDVJa9 z3&LJGDhl>T%`i|=un*#4R4AM!%)barflw~i@SX)%;25|S%7;#BWuWs z!fdbdM^zB^a#2Nuy*{Wq!d_2^7s6hDh!pZvdMnq{L!`hxJwys&PY*Fd*!uxKH^SZ) zh!MhGe~1ynUT5eT{6()P#0X*U2Z#~EUM|E4VJ{bAgs_(jF+$kOg%~01aEKB7T(1Mf2w|@SA1fl_mEc(lM7$O}OM!@I#Utg2cs=-7 z5fQHlA1fl_HQ}jpM7%0IRt}#%lCc6Y8)KP|h-zRqE#_t#wQ#_3Ae#|Yhh`1k>r+1G zd9+y()*!YMP)9^m9h$aq&v7IfkzxmdHPEEXWj-RR4$WJfRK;;lMpOg%35ci$v~c0U zbD58bTFN;;e0d!0WJDc;YN0tU6jT62R4C0^RdXfI3^JlZY0%=JEf1Wd50x9|{#X<7 z$T@~b!-!=*B9Q?{A*NR|Yq5YuwQxnXHp3Q6S+i`hjy2O3^9*fU@jC@GZsC#9x)r}# zpm{5PwqW*6b_r)GP-u8=X5nO|aMFNRRBM<4MAX+ba>Wl8XyxKp3V4Lgh&qIJE`F!L zr9UDr@OUuIi29nQj+;jIfP=O!eyf0Iw2Y`wvv#pxWacgg*z8^G7n#9}0XB;l15A_0 z4HGNJY+j5ujUG2l{0eIjqfN7i(@cJacCUEVCk-DC>gWplKvt7h7!maWZ6ABmpWd(r zGN^cR!HD{R<_~8El#Dfy&EuSkh-yF!SZt!u1hOYBYudo#U7$3AcqptZCW)#6%^-JI z{2r4;)qsW&C#Q9VH3$u+Dddir-9uZ5!@G*G2BE>UhBy$bE3AS1V@|P%NRVg{;|Cd> zSTVpVlqL~Bd{71^2VN-WR$TG+aB@X;yat?I5%KnLdPT%*!1)ys?@>;$hVq2Y1d7tN02z9z}f2 z^A@gRElU4-5ijn--^m@5y*a)=x3iT$GsZ8miWK(aTN?rNSe(B`f5q`@^w#hUF@jz# z^i-TLx5+~x5w3y%KXi%ow=^R?~tPqr_MPDablfg5GU3- z1aV>=b_8MXo5{KULT|c?L9wb#&Mgmi;00>UYiOAOAi`xKv?o}QVSTf}=p zJ3TBt+HEXn@DzAPmwj`9rBuDB5#Ebj3qgp>%S$c@5ufW$E=X#G29rCwGyRq2f#P^F zys`i(+Fq`Be{u<3J-1`NGT)sa;D}{^tkP@LuK2UtetIhi(4n>hFzC0OqH5YTq`=dAa|Gy3gbsbM~g&1 zPj%<`>xQMp-5u=TEKJ$5vA;ZvJ(=mw{K_&GlF*~=qXhi~7WXM}akq`;=nYCbTKe|h z+??*+If*wRdlT5T)6;m-z|106uk-!6?sB(ioc%)7mb$sn(X31Pjb7*tRE$)o$Qi|Q z;X9hTR2Q=@O5O3o4dr^2Zc(yM2en>UWH;i6+c>leGcnpb%!q||@iOF|>k&k)GrchA z;O7rid8<}1yn~^;G&6~vF&=CP%IqOMeOJp&{S=&kf1u+#DHwDZ01uzIGP$t4GH)3w zk-s`*BvQJ}l0Ah%4#^bW>D)E(r845|1mA^fZ(~Qw<)z&MWl*4 z<;@qpW9K9#fbiI^hl+FiF)WCe{gM(ydXuWTxgNG4rTJ=T)e}Q+?-<4vurU>Q0j)2v@V?KEup1^ zy58H?@AWZ$+ZIsIfno@uFBnBlkc-uV#%!)T;|3mY2N|Hxm=RUh5>S6RBjDo|DSa+j-*h;`Nicf6sF(pE-g&TLKc@zprw|@Re!lgq_NVV(u~`5s6fYlx7Fvz zCM*Q$TR?aA`p~7`%x?JCkq*b?%ZJ?O$hq`yA(G-@Uaydsjar7r7NHHFr3xSS?1n#rna7Ch6jI9i-=O7&mCEWAUk@qeRIt&k3S7=>v?=AOdh1GWZn~o^FhqRY_|$e&RqJ-3h3?LB z0(HB6-K10<>*q+<^}%vhu1LHy2Oa21mPAGyAy~ds61KR#*Ts|uUk)P`ifxc}DJP;e zuwUe1Q@Y<<(!@K3p8_I>au*135NU?_*AWKM&Cn#W#*_frx10Nu%dDHT+p#+}>I88#rM=nL02>xAR~fCmeI zwp5GGl-Ge>$zgyfyM;!s5yz;MVtb^V?N%rKJ1f0@mG@Zb=+|LnWudog80!rNc;%8$ z+r5FkM9OaI!Ow=rtnjY#g>6fdeV-S51AE0(aRaD5I^Mvd z#;!1i_eGUrxVF`=ndUTVxM-navY7=NQT?%e*#B4*bY~FoaYBHmnNw0JXo;~#pwwA- z_*oi!lLk|0AF~1^1&&S!PRrVLn>*d9tu(w#yZi96VTPx9p;K=_K0A#XQ_zcBgu{YW z2tHX9Bz&G>3BwQHq@r;F)}7*Q-^*dn7%h8_rk)wegpnQ9QhMw4DSW%?|M5F>nf4$VV<>(chgDNa*RuI!`O;>pZ>2oh8|qQBWe8k#j@;}L zw}I@!O5a=wO8Fcfqi(15Hrs5)GYNaPW5P0u%A;V@v1E3$HK;J zgxU5MfMc{QC;a7obdS*t2q}7u*Uwz(nOiiC#hd3wx)mCh4Fa~f zFg>}n+ZP(V&umJ3iHQKBwTPBts-oL8N5rlmDbn+cK1(*AjiO-;*3>_cGerHJ)5FM_ zD_Hdnqw~|t^P{npJ5P5c#C?H;P{~}XeR~KW;u+@NM=agPj}s+?0ZD|~Z)i2F)y~bf zC$q*^Y3u2d!ZvS_$zWlzK*krYrn>#*P2H(3mWR_L_pP=|Bgj*mP(G!*{NybgH);05 zaNxgTGvcF4fD2fy(M{wU!4`ZS`e>ZZIG%kpcN&ftHmDi5=3@!G6-(Y>ZunXwW-83^ zr52cIu*LknqzejSBXzKyr}X~Fj%r0{L>lCu3*aC$+2A+ zW@N?mrb#iFcnHu5f7J5O04pCadeB+DdCmIuonjwlc>CzhT!vy6>+t=u+K^e9qVqR} zIe>nn<>wuVK1WLW3%xmajfdvZlBo*ra+ow%GoHCE!K| zSMzXu)(?*7g8*!3?*hSGH0VJuW0wz~O=VHEJ@IR@&dlU|Z_W(%zVD_$nuS>L-^Krf*d zkOA~bd6W#Fh1q9j32!RLAfsFgA9lNVMh%wB_9QUN@Lj{)=D;2HbuE*eLR&d#q61cOJ?OCH<*j!E=28t)TePzirQ@V7cLRG`#am*Gq$R~) zTfXv<4Q7+!?XZKGVR>JyVC+6_wRY4LOKb;)*~nqcH+zS1jL4*~%J^}nc*3ZCjSj_} z4?ZnDx|0)OF-TJ|lxFEnZYkBKMV1!35;1FPC(AY=?6Iz9Q%lFY{2_;#hQAr*^p950 zb9&)6lHEK5haaE3M4g5qS-W9IJzpw$AxvwxViuU0fhS!6w={OmgAh9Gq?Q5efaP%+ z`9nKu3LY%k6B)Y-sX^R|wD_<#Lph*xPR_?uZs}Dnx|#l@-N>`rXt5bVZwL0<8(17} z_gfIdHubbE_J_vU%Y<`Y1k7n2#$3aB(FYICfY&J$u zl*h=@*lq;o0-6C>Xhx005TZ*lqwRz_HZqvSv+HThLp`Y-i}3xMqN6M!`-O`=oA2Uz zrCnifo1+u;wjQw|^Us94LLy_2n(BEsn(0<@eo!1Uo5lFTTHT9@rPIf=cki#x*4@zM zsXbvlTVjo-xEq2-$b1YDYwAPK6!5BIk}~M6_TMNNP*0bLwbwdVi&Fihp>#j@r7XH< z+TxNjF5)iaB{c|VK*;j5L~BmiuwmVrE#lrrN0ugdJXMc47l|VYFl%9&cEyQA#SBZO zhI}9u%buqEiDDzg%GhG=3sKB`PjBGVx0gnC z@$3Schlzd#1{|6e`+IhU7DK;vvAE4iFrodC3|IQtAcvQWtr6o^d%2n0(BHmVEnUL1 zg2}D$JMoqKA~W5@$r$-$Zc>}lx_h6YdD4^E<<437iKI+@vP+pbwAnnTpTy@Tuo0ea z5KVU!BaS+abl3paZ)$b~S&>Hg>70>E*3J=98YkH1kxS@C>%b8>>~F(ZaqzFCf(M9f z6PRmGzs-;=y_So1A+JU~wTo3b-0}VxLEim_@Njr5y-<&Yq4T2+h24uNRx5nKw98!u zrzN*V2O{9l;DnGVypt*ZD9hsW)3x66@oQ_H^(cvdPqOb{F!W^lYdAHhOZDPX-7o3> zx=b-s7WHGKlb%R%s^Y|GD``(=uVqR+U!uVJdo< zE=NPA8c>>s5bhN+f_sY!!<}=3s+exD-MH9`u&2}R_L>*#N@z)jnXW)v;WJNJBX$fH z{A)r;&%Rkop9+fTMtsz0JR)ls=dfG1+1zW-CUWuT#xs#{{QxK0u;&G zn`BWOXy6Bq;3q9?vyl8ArCpewKhx}(r}E!LLg6inJuy6DvmGf2q@g}`9(sdWPhEIT z7KMlnu&UqMwU~=xDYY^~s>q8j3(imUrtAh+BOWBSC`5ysV{2@L?c+m!>J+CdXzy&{ zKQle!54yFM!Zm8SEl9na?8c#ew5Un0eO=wZon%G$c@hiyRN)_8au<^8D>#B4!4Aks z9N8&uce60`m>)KsHsp^%tsAx9S1QsT120Vto2dgX-dYt2ui8(L`4bm^45J?EEH2FL z_H-IrbOS=x3kafq5#;6#k54XRaW2bN+O1(6L$HbcSY*1Oe z^{V%T)n?eI8lckseW-sax^r@SS4X-%0}6?pLdzCbOsy;3r3CS4S5JQN9wW~Ko4y*g z(Ib%fwAKXkw|%P-S%N~LTk!Ou7y=cV<5XsAH}{r(vr{TAYEKS}rpynvO%IPims%k2 zr9^BSk;-e$c3p6(GvHa808W?g!eH=-;;_g47Edjq%@^@Vi~ALO+{8z-R+j6e?ctOX z!HA=yErDl`wY+V|nWXsAuq0L7#DZ^NEVJvoh$hOT>r2OBG@A~!Qxm(##1>{p(%L`y+FAH%Rv$$sSNRjAmhaUTo-fOsj6W5ws^hA9#-SOhm=I-)ZJk#Z#Ixm#@Np=iogl<7O z!z2`h4U0Ps@OcV8SRBfZLXTtY>6lbUZyJ_ouTtsCzTgH_#fvOom|mR4e`xJioY8c#cMjg7N_?3RUPnQ+n56voM-cuI;s(0+GuZ?R`>1`_g8&(f~covz!NrGXr`)w6CEW#HZMG=J? z0|kQ2zz%ye@wFHHKrW(~%jmomY3x`Mju}nSVX?z=p1|*&ox}?cddr)SU5&rC8>OJD zxgxe*Wf|bOEX1o=f_T(3EM1qtMiID!2eC>~f8yrAo>glf6Tcn7fj}diH}KtF_re@` zqS9SRJZEP@r`R}8#3d7bE_`!r4=E;_Ui5#l20=_BTnb{6b`Oed&|y?$8+;$9p1_=kPg)fe~-WNZ}1x zY}hz?Ly2-$c2shZ44`>K2gwLUq3B^WCF)*skSyIDJ4mHV-PyTC&NS$LWaG(kRA>(t zenw7PI8CMd%Z^V8<5wkf`F1Q0{CP_$9j$6kN1Hp!qs5lPvde?_FxHjyGAzePr7DfE zQLk#`5_@0-MDs@=`_2FlMWOptuIZp|Y6Hhj$m5nWW~9a$3_m=BrVU};?H_&_hr1dg8v8-mhPjit$* zSY8f)Qi6GgKXO2yV?ewXgUJ~>-g|PMxy)(7Qg(>j$tEw!f>UO_VYbf1)?`E$EM}F& zem5+=*B6Du5ORmo68eND2g*p;4EL!FX_itd&qop8g%1x5KZmkaE#k|IJc#6<)PapE z0(daXEisQ262YNeq)I+7yj6jC8FXy1C05CKl4Ux2M@*}(h4p7wP|5-C+2eg^b?gvx9QK~ z3^q?J0pWCS#+}iKz{RtRCXRYAVF0(|Q6bk;dSSm&NGOB{k7aOpN=u$Nor2NOR#`!c z-!t=4`QZv4uMh6vtPUl}ydlVk703I`T`2;l0>hZs(53|KrrLeJ**IbqP4#q^!_r_M z(|R=8!MSAw%wTm8t3o8@V}Cn@>?N2YjHJg}ZE`EtYIwZ^H#??inM!|SDP~S4xbON# zDn9%y!sz=VY~qCdFx)Y}gZb$`?6yr}gb+u)x%TqK3e3--zd#e~e<0;dM1Z4L2;q6J zA8kfQ_YvnaZ95Y_=-A9c4+(8snu{+-_-tB~Vh{G$;JUmt9`(1%VqL=Hp5-uRF8}4u zt`0V17gq+nsIb{!5964X^Ru8!_DdgdhD&_K`qTM}_yBoE8ivcfD2w@=<@pb=J-ia( za{j$x-3APwwTA73p~NZQrD>agX_{?AxHuqMTrLQogB9~CBOGeWiV-*?I@`_|Y{3Hm zE|eA~;>8_1kVwl(zhfBb>wqY4St&;_-fXO|)?~%D?zU6H{(6)h7 zovE}nX*ir#&GJ=0+9G#!kE=KgVF$zayj?%`n_8NjFTbaDj~xDX0zWQBb%#*)d?&_g z29?yc0sIn3YCKTEnW4Y^hFrTFHA}$@O2|8T0A?m8~Hu} z?#>hzS(Gp7;OkU|H)Bx5@Y9i*Nz7ZrYo2z1{?-!6a)HJTba>x$HB|yyck)KO-mJ4` z%PE*(cQWQ$#?V?bAnUOn7{+|xY#6t#GyKMcMES7(jH1kS8=kU$!#Xp1=9!k_z3Ebf zmRwP`O^p)4)KDabXMpnzx?lx)2^5`mn>JZVw%P2h)GCNqjB;Iv!Rjn*-h5nV^SaHO z*PpP#`rDG5Q1ePik%dv8@O;hRCuGU|%Wh-XZ+9_4>Ulf^96|V*UVnTK;_q=DX5Q^j zSQ;)8EI`+tb*CyUc?(#osSN`ZHES0mNO-~~8b`E|aXO&>izEv7G3!t03}8Rz8Nf*M zRug*oRz2$u626beFb>f0x9CjF_ML(+W?E@jX`O+Gwl-JqA~dfKE-~Mf5UIwX7|X|W zv2^IJ-n?PFvt|A9>+lmHC@vNIvX!>9<7XtTtN(tqN8cJ0JaoBQmgF8`iHKy<*3D zhG^Y}Et^iY@#17vF51rKZ8~-1mJ_hk#!aD-i;JC;wmiAD#;+F|W96H+!7LY@f7bC{SF&rb@wt!i2soSeg;-{q0<`a&2Dt>BUDO~2g z*RTYeEXH7rzdD5TfD$dQlkvEHmn$24#`TAiwh=l*>mETHfK8iM<3G<9dUnhPjvW*m z59dtrAfJmiRoUHk%i7JW@t|geF=OL% z5X&mPG?Y6yVJ)U~{$;AypY7U2v1a|oW7qlANfWDtV-WT}o_^pE8eca`Dj6F38aS~# zz2&&g@j%l*zrmE@PGIhWb=p3hq3ml8wY0c2FutxDrexmWlq(ecz~xc-9edi zpT>^N!IEzGpMR7u50?7&*fP4Cy<&|8=kW}_S0&Qh?v|Tu+fwD;r|ai&C!FxKlVB^c z>Nknmyyb*V>$qsQ^U5nGRtWM}%&@g78H>Xk*|v>T+lw*R11iBKK>V~aYQx*oB}>jX zl!gCV?pmCn;4QrD7$LhMB$VEdTgnm4Cj)Lj?OztpeDraPh^j7~E5-kEGjGERxW9dBFg}ibwVwQDDqtztnVK)8Eme?y%f_dz**solB^BCu zj7gbdw)LhkZD+Zj8<%=J;6*;IyE~{mWUyZ3l%z1Icsv|wD8V{Uux54Xx=pc>h!q`X zpS!Shg`IHH`q)Tu6NUH*Slc2mgdA~Bumx{-X~-yYTm+XH)7e5HrE^AewbCF?dWHOO zfJ^Qk4->GKqlmYdC8Vt8^+0F!NvCivW%CgaUihT6$IO9~)b=wuJlH^^*` z%y^G|9lHZBOZWAo-Z^QowAnK^rCj{Cgty~aSW0}lyBOj zznETgGG4OB2YtmYLtH)^h4kp!;#!fKFZzp|3W(oB?3ohEwI>`M1lEeBl&dowHLJ7U zwo?>kzQ%BHyj?L~BV)r$dkhUBRYNuNrhFa9*7UcozYYCu>TgSb+xm-dHz>o%5#Lo1i9GQ|1(C=VO%sWH@nIhke1gqG_&$R| z6P3t{-=vMpMalRyM=*R;B7#Ms_=H2SqWlWJT2hn}b-+g;q89iDM3hsn;L|0Zwo$={ zOFY=D;IkzjY*p~l5)Za3_-Kv?(J}aZiNfO*eA`FiY6TypQ5X%2!qG|iW{h~fg3rt- z+^FCyGYU5=_{faHtqQ(Nqj1y}pE$ucZ5$3eC9)d!L#=|Z-6$E#iuM(qf-li1=L){G zql6WFH^ze#6?|L7gS84iI^)551z)D|V55TX(s;00!Ix}2*s9<=HXdwO@Oc^!qNDKH z84oui>39X7;c-^2;EN$1oT%UvJRYo7@BtnV)+_jKmIoUZe0;})%?duf1`aIJzb?kHTZ;M;ZzH!Aqvj>63fJ_Vz2 ztAelXDBP~#Logo37~zXL3XfOt-5rIi6?}Y5VYD>z!6#_&ROcdYJ@ifq1 zd`ic|_@p$xq~l?HQ5s)>@-RLqjgRVh7~hjFEDS!SjPJKN2jsV)6hYna1s6r|LF=Kx zLD~3*i>{#Xq2WR4_->G{p!lHyLivS}0p)jtlngZ(Y87fQG&ZQgP`gkA44U5q%I^j# zf*KS$#t(Tb-wMBhq$CJOdAv0`1$P$1g{l_=g_;+mhl&^D&w5AmQ0<|aLA47Lf$khH z3<0{6-(^yjhIXvNFIE+m!w0K8jLH>O0+lP29F;4y9F;3f0xDP71XQlD8mL^^6!1$` zssbukSR7WautXSZeyJ*ITH!ap6e+X@HxIQ2;SdkpT4)WbU04}ZyD&4Tc422w?ZVLT zyOk;jFUT#8SfSheBIPhe3_HI&Ii!&XT7<7;IY+JVkt`3RR`@WWhfynhJkZ0a6+V~c zVblsA$nr2c6W^lpFgg>T$MP^$1fR$92tS7Lf83~tf&}2k`)!>H?pE3s3gCjrK;iUOobJ|i1Q0tx`MKYx{tz# zy3en46}j;%UD0>^Zs1V&`JJ$+478hHK2!_&ov^3@w3}Z()D_gA(0#O=9|zPGej+Nm zh2IS%hE5@-H^upgLoQ=XWDa=A)6AFXC?*JAiXJ`&W)(S&VSb@R> z6#8H2exdh;&KLR)UFR1hz2$|v7rI_3dZFcoiVyWWdZp0p!hsmN4^i*JbtoK%!fPm8 zhQeQJLW!khTNm7U#=GdXfZ{X`$STlIVG2l2()27F^* z?E3wEf~`DJTC8DsfSFOYRAiFOh)l9VC27Sv!XiSJkz!;Riv_C*exvkvTI3sko%HuF zGL1ANuShDgj?_|KnU*D#_4}g}w9jf_=I#B{qwoIn+oQjpv@U2>(3+qXL2H0k2CW4i zl|ZSWJWvuS0~G#Z|B>`X{UhC*>znAC<(uN0-yg|cBs3*AnK#8hGOmQuM4unheb3sT z{3z}3Ye>O_2PcRDD4_u2@3T4(g7AQmL0*GnC3D>*-BF^(0?C*E*K-wgt^E>SCcjCcJBJrIcV1K`Z2hu13o}Zw8zY`C=Yb*kbS88!LiWz=7(r~FZD1L1|u-tWez&q zTtqJ3#1j{9LWs|ED)){hm}YCxa3CbOV46(~!dsgG3~y~N60EifJ6LTKcCgwe>|nJ` zN+8>8jt5rT90En+CizimZjv9Ywn=`l+9s94YMWFFt8Fqn1KVVF;IK*N;9)Zx0Eo>5 z2qHG?R%UavZiUr0cbu@==FS&Z+sucs+Ga@%t8Es`u-Yal!Pq7$0ohhq;z4nV2bR3x zY_rIP)i!HjSZ%Wo285d>FeuzCgMr~DxWVBjx&h)QykWIXe8Xy+0Eg8!OJmaXW_b*& zZK9uKz6pO=Z4>{b?M(uJ)ixP`w7pq0khV9g28eI7Y=HQ-)(3cCfdD8rs|Xl+vs{44 zH>(2Zdb4aiQzYYye$vCJpk+W@;d>Y^DYXXfrjy zK%3bB(%B?J(7TxpK<{QY0KJ=O3&3usEdaZf-|#?!1EZUq21a*b21a*b21Yrzf0F}g zdlzP@ns;%Q)3sforFz~)TB_$=sHKA5#agQ9U9hE+-bGug>0P*`qTYpAs_I?zrLx{d zT&ipCFbtzn$LwM*CvAHP4vO4`V9wfhF_^=)T@dE9Z5M^9y!TQov$YG#RN%Wn%!%7B z5>tuqA~x0dE-+J(?;B(Ks?Rsjr z%Q}o!(qXJ}4kMLvm~$D2886{*k6^-{*_Lj08HLtm3R;&>XkBWcbqQpb3Aj=s;7ao- zSBiYD6yEqHx>*D9j9&u%C>FRMF_jUmo3d%$Bu(q)Xj(T#)4Cb@{Bu~j5Md^3;;XB} z9liz)cRj3W2(!aNhA2B)$#6rUVZwT*2Ch#TCSTNQDH;VR1#Y9M)5W*C9)?`iC@0{yNNIq_4xI#f!t5k{5@`jUk`1 z1w%e%3x<5k7R2!>TQL4piemhy6vg;YDT?u*QWWDqr6|UKNO+9@loc8OVJbTt+uV#D z+;KD3P|MBODN69&K*M!Y1D+c{IBxjhx6y;!1`h~34IU778kg|kX0-)0j1P`8uA^@L#Hvqa^ZUA(-+yLk_6amm_zyYAsPy|3{L5Bx|4gj5k4$PcI z6T>cm7MfX6X3is^gE$gg+7!{>V%CBQ4>Ntb{+(Z~T#dFT)zg8r8g> z6DC|Rrg6b2#s%XR7Yy6;&u!RWyq*Mp8x`ODbK5hesK5iq1K5oN`KJEnfQijpTZGh6p?WT`DZufljaRc(-Yi{ctI+VfbPdL+E z(ah_aU^)}nw~3ki_Ft|f&B(wsVWlx|_h`{A5O+)}_5P-dq)9 z$U03M=V|#-&|{248KDr!2wk#_P)c1Rw2)jQlw#KiC0S;b>!$fNLW!0s;yuTk5z4hp z5tid!u1p{>MZ7m7BmS^vI+!A?nR}KIYv!JH#2Q~%NP3?(SxGG0j4!746^4=l+`)Uc z8DA{*2t%yt0g9r{SwT1o%MpDEpnR&Bi7`%bz%^I%p>GdVXzANC6$bTfZe&c~mZJ>m z+c;rF-v&S?S31dfU>Q2`Mc8JUtF;T;RBV@J z?v3{>bLDnf=H7rO7h%o3kc_Zqb;(9p6LO>@tnr1S6Km#$suOGGg?$^=%nLz*H55Wr zV9mS`77TXQh`7KSUkD7W@rB618eiZBtnmeMz#3m*2dwdhk{N4!p%i0LrUzIFYkGi| zu%-ui32S;_)~CVvFM#5{OcL)Ui#RXJ<3V>Dcm77bU}MZ?vP(Qw6JG+Z$l4Oeo8`<0e4@0FG@?GI^L1z+i3UQYkc zSo)Wz(!W%j{$;oHFY%>+^F;bLPo#hIL}&t0|G;+nFhLiZcxXVD7p_9wFhhkVDppIr z`;o6g6F*WJ^&{4VQnEpnXrYORd@a5h$jJr|1zddbpe!`;P`bqz88$TW&=bZN;Sid5 z2dYRX0g-4;>O-K7>fj*F%ZK zggvB4%-Dx|2x}HCDegl*gf)wk*!@rtVND81?0#s7utZ0EG5IFNeaMKgCMP6ztA$F6 zs~9S=TQyW-w{ob&Zq-$Z-O8&HyOnz-b{~4Lml>42H>owBFn zrG#e%ObO42gb80NVoG>c#uRF;kSP^drA(>7HV=tXfo%dc71(B#oC<6csHA+XNz7CO zSOZjQGpwoAD9*4ZIe`wW0V?po8qxqCSOXsbf;FT8LfEuSG6W)6LmFTNYkUDDSmO&Q z!5UwH3D)=mOt8imV1hNi028e71(;xsFTjL7)A#~Ru*Mf)f;GMX6RhzCm|%@Bzyxc2 z0VY`E3oyYNUw{eL_ySC@#us41mTi0iCRpPOFu@vMfC<+4LY0a&zL3qZ#uw^Ttnmey zV2v-p1Z#W&CRpPOFk#0yz5o-f@r7)LHNF57tnmeyV2v-p1Z#W&CRpPOFu@vMvYW&l zXR@8d9B;Cp{I1G}mtL2@&sBVAmr8ND_vi7rH|TM=>N))FEqdJTy?eafOQn5*RpF;~kIVy>1a#9S>;h`Cyx5OcLWA?9j% zLd@0jgqW-42{Bj86JoBGC&XN}REW89sYT2to<+=`xY@2sfq!4rUNFnB`Wkbx> z$cC7!at$$8ycS}vdM(6U`Pw38OQ=Q6mQW$)Dzie&Rc3{ltIP^9SD6)Jt}-jcTxC{> zxyq~%bCp>k=3NpEG4CbO_)-#$FD23VQWA|Xl4yvzYNil#^-Lk=Dw;yf)ii~eck9*= z^KRj~i1{IU3Nh~%uZx%;vN%rY8ULh>9Q9#N-pE-W<|K|B_F+!ufI}xW&_zWwjJLuY zny>ICja#6mY3tK8EH*M!p}|P2YGR-di4l|j&=|!B>!noNRT+iUD>KSAu{xuWdSzB2 z^~#Py>J@T@)T=@YsXt^$@x@vyq+W$lNc|y8iZ7m_rrNHYDx_WwR!F_-s*rk>TOsvI zw?gWbYb{c@)?cJ<5?Q2fB3z_yt-na!T7QwcB)dpml3k=O$u3g&cx{n-NjAVJ$tDyf z*^qjLZz1(c-$LpYyoJ;&c?+pm^cGUDW{dCLK4a3fo+Yq|%L-V-WdV%;%)il}={NS% zi;UiVp4KROja$lVp0N0OjaVaVp1YlF)0zG z(5T{P#iTT_V$#YhJHU#5R!q9qD<)mD6_X~$6_X~$6_X~v6_cjP#AMZHiODK-5|fqa zBql5WNlZQzRhbvdvBYF$VTsA=!V;4eh9xGKDsA0$PN7lFR|<`az7msFeI+I<`$|kc z)KKxo)bxG2<)XdQ9ao0thASg;Peo&=gh5+p_g)xowiwlE(Z`@pw@i%bbl;V@JKc9B z?oRhziM!K%SK{t;HX5_hMtO5B~|DsgwZD@xp*?urt3)p8~7PIrBYyN6OJzKFmTcYNTjkBKktBolWh zANYNbi%f}WVg8=MSOesGOMqN1WHS;|eg@*MDdTX@lwo*El~H&~wN|$%&nQIsT3rvS z*6ND#wYs8wt#0>Wam0;SSmkUq#}x~$wYs8it*#rZwYqMl*6MmzwO03WR%J}%|7A=w zhgCi?hfkFf#%xTP!>3LOV|X6VD?-BYijbJYYM3&IRWSu2)jDMkm*i^kL*}r$sm$T^ zfspG1A=d{&t`CG<9|*ZV5ORGWjNRz2STn7gj^p8dFZY(EuI?$A(!U{ zLC8aum3cAPgOJN;4>Mm4_som&o@(K;0!28}zzXuR1$;>I@TH=>Yyodo4cP+Ts*$n zV(L{0y5dUi5X980P;@1hoRi1YtCY{TB+XfIOuY(C-z`AZAGIvbsc&Vl)fO?^5tVogqc_!GOoDIq)5j4)uYaiy6L(w>i) zJ0L9oW^e8$0fX;4EO(dq;kypYGow6wicgGJkLOP<>T^o^Sg1Zws_LLBdnyI0z^Ce- zN_(mjszj)oqCP3AkBNH7k7V}e)1hY8Dz&LhqYuiejHL3CN>VCEsT8I1l}cWI+zVCe z@(|0&#Se*&4E&Jv$h!}@j%@o7?Z~kYv5w4I`A}s=6*pDcR9RCcO+V6Rq)f!Y1jvt6 zP#sg{Q&m;>XPnt8cEaCizTIV19<{eMd<=N@$$Kd|(4BWr`+du!;fB)y-{!Zode_Z$b?DhZO zHT*K5Oyzx|gr!`TtSOx(XL=CMlVz%U=gBfvz4K(5D%g3lOa<&bS*H4Ro-Ff_uZI-n zNUASra!x-ezOdwDo^SKzc@(7=)-Vy3*UwkC@^QqyJQRi{m&X+fruP|2d~rKZ16afB zG(hk3NgBW!_NM_XKN(-t9Mb^SWCF@9tm&O;la_M11z$!YJ!K#kD;bCNN`_&{l2Mc~zgn#1Lyi^0 z%7mBWZ-!|ll2KZWWRTV)yquPDg*8d8uq@%_jF1mK$RWlImu8=WL5yjbv6q4vds!%B zw>n|$WhKU5Vq#-~HS4k>Tf$qBE$OkVphZ8KC1@FwHPBtQ6j&2mE3(}Y0}b9A_kjk* zz(muEY%7};+3tu}WLx2^$hOJ>8niO2lgO^tGLc~H5U zk=+U}kzIv$BD*zTBAY|6H*yJateG>m4_MqYY8qe4>V2v+q8L(#kz!}!~LVPz#-Q3&h`OoJfm*F8ec#r*7yQ6vBnp+6Rg;Lk}U<+v;uCirU$lCSkpT@ z3#{=BSYwUX;F>~k`UBXMqcd8N&3pD9U))!MZr+A~xkFLNDX%X@Pj8xyR#j?D?y%o%}-HKQd^v1WV(D%OmMK&2R- zF%YO&GiL-U*7!o8VvR2ZD%SWypkj?L1S;0}LZD)eFN7x6_(IrXjV}Z$b8Rc}#mqpU zQs$3m1S-~emfQQ7<63lAnB!Y+?_*B0`63VIc$eGznB!h&EedWS5DxCHBxgIAIvEybS*9{bfx*mZ#;cwwg@|Ey-_1-J&3vx|)8w5m z_F&Em=WGX4C&R{l*e#0pn0ggH?pFo)4na)4T8!-82JL*_)vIuFzsP_J9kca7>W%Jl zP-Dk*1;fkT@1SgsIg6jO9cJA{2{m`anX?_1w@u;I>jY8p%r!4E9{-EewvIcB^ntAy2q%Xv3mxhY6F zg6S%R*n`XY@QN$l2({;Ydfr`eHEyH|;oTW;$`G6!uTqC#PHdzQ!5ptriD1quq!hs% zuTqO(j#nv0faG|UYJ`8=GG6t2tzamoE&tZnHuYOz+tjMC&Hls`*P8yJ*ZCkr>(?+C zSigqBu=+I&F7MYc7*fBV!hrhq6o&Ksf(FL)!%!Zl28^WN(#b&jjhc+3-^s zH9@3cwM9j19RooHoDitR8Juybs914+_c^imX3^*U2Yz|(rEvJ3y+7-_*4}5Ifn%6d zf7_pjVP+VHC9p*9gws61x*d8-CO~N)gcfcw;ZM*VGQOv#Jxo5IuL!a8^p>g z&zF}aP8Yb(&5&=JyAivx0ZZFlkz?)QlDxyi9K*D1(giD}Y8h3_B0Ubnrg4>1s9G*5 zIUIY>ReDgh9Fi~$+iRtqP1TY~kHy$HuF{^WRZ>aGVr&&xIgzThCRK)E?UAwJ=7pAi z6Yt%K!nD}Z$KrWp**c6j05jt;#1qJ}JS@%wi>st9vd23%!yZRqK{m=KRP6{-vJ87~ zr94K}Mw2RIv12^tXR3A(NhrgZwo0a%){~SRjWt;*ZOyb}Ny2g1UTY;2(~?G2N-UXI z)T^jkH&SvW_TF0gimG)dJ&wdmZIl^QZ7zxQcnUVnT6vI0)t(@cgiFNOdwZ_(2>S7R z(qp+8%d^!xlFA2vBb48 zDCq%l>c9=d&(9z7(|61xB`Cz2a?i5N#{MOpYn731Yf{J_ZvJSmi2i0gnXyDLif|$} zSf;d9>c)_SlQE`^@(5MyMS46A3$n$6T6i&a_bD4%dzbB`VN4-5BqdL%cx5)bH+Obk z_33zQ0Gotb3L|6|7rJdO@)YJIOzDToq#MYXOikv=wAf+h*Zp$yk}GCn#RDFjT@0=f^;r%k^r z(dH{D8_8J7?!3WwWo(Q`!nR-?%w;!qbWA8A{fD7cNuQyvNYmAu29t$aC7D}*SJ|#o z=4ThBd1O6}MCE>sz`@GrBl&>WweH<{C|E6)Nw`P1|LNttu3nLoBKU$Gk@zzYC*nuV)hexowd}U?Ve;CgOm3p#gU@~Puzl;JRfswCet-~ki z!`<c z;r+QW)bJwAYT(rHM-)u97i;st_A|vgvTPUT=ZXEm6sM4zf5hSjV*{Du<>Y1^7UzjQ zXNupEWiwS+%_;%*$%!HU#*!?Xug2oq1=voe_z+pP4{IBOJz!$41eoe<%E$LtpSoks zS$k4_1OP_>CkOolZ!mk28Oa%SL$o=M_rZs?V0t71OxwUW%lFy%1ZmFKM9hzDdb z;pE4Zx;5hbHD%k}yii?f-Rmm14mnDAA3C8ulxrp)+WITEeRv>cb0+zitX`Q=6ePDW zqcX)^bh1nn?>88mkP~5HEz6#rMr0ig@w2BFo&M|T=zbUug(WxpJ{io##t~rOM*0R` zy^I>O#yP%zs)-$E$~C9OrJY+noPF%b9Tv%i(q>mgK+PvO21@z%(bC6!mi z`B;%wZG{bxQ}kk`YxR{e4yo%=a%bbCmZf5&uX6HymTCg&8%)lcj|sIXd=Vu8q!Ic=c-VRASX(B&>wk zA|}m7*u$QoUzza{(q2r@$M8K6Hj1>e4jqn~v+U5kX(1)5pI?SbL8#}N;l0s3kq#e; z7*j;W_fg^-&_{%ugNgfB;C>>%xHHgCxI zdJ_V)vm^2m35>04El}%Jln6{|$7Eb!Wyq*C2li@ zT~M>p0Ty-k^@ESK5~>4ACfa~!)F7u269fKx{Fg-h`0mkYbfDxbM^=-F#v$V!{pQ$q^*J51tJ469Wgp3UNP)@*h0Y!V~S{aO40Tb+-H0r<0hPtUxuNn zOwXEudc}RVz>bOV0fvr1SPA+aj*GI0cINLUenODOD3J)I*{<4Ci_Joi$QNWBz7c)& z)@Eo#Vq+@F_+Uaw;>qzbM)Vwka*6^#<&Eqz!WcL8AMUqKgO@PNyH$)OB7Wt zo;v)4SGpEuPZUnV;z+n}#_iZFKw)GV$I7wCb@*7pKQd+1fBQj$3{}?GWaEW{$B5|##%jdXQ_vh@Gzj4iMY#AN zGsmlu$P}8O@M?_CAZmu#M5G_z6~oj75;0rzQ3V-4LOlmHk46}(^H_Y-3{0Mf+iQUl zBMhJQ9^$oz!a(&wj43&C3{NaENZNHu@-ckIrOI=L;Yr75JhYRXi7EySH5}$EpG+A; zj5nfo{~09sK}{(^9^eIu0*=NhjMD)627Q#~$3%Ein{hqZ1~JD10T-F1AO=) z0q)yF9Fl0BH5peLiyN(KQ01ZW!-p6#l;p*D=DzlbwtJcV*Fiib#?<5G8kjgXj4T08F>EjRuK*=uk6))iu zo(w!ch~^u7O2b1RjJu1)DbS&UC}j+Fk5tGFRPe^aGA`^^YZuvnIbwq>zu^Aq*zkm}FCY741(X5x0(r z$(U38#~@5g!Gewn{@O(T{B`cas~hcs>BkU@y{H^USri*>A)GOOLGci)6nwE4^(Div zev)5o=0K8?RMQbyL3q7Fv{sP4fpDZQgL|>)F=~v4ch1Zi@Xtgm z`~~F%1xYR#f`0p0D969z!4k}P%*1zS0~Qp`$NC$Wa1Hq_a&$138&_^zyA}e(O-W+* zPM~nVE?3K{@*7f!MHUL9+hH2v3tG;HiruY3TSD53(8PtuULi3?oKk1&=Cqb5c4VW; z+UX0%-h5L_q`=fiw5yU_KyV^6A8RREV!{o)cMRY5nXlY93=_(gcesW4%KT1PY3+eE zXYF!!C08)U6C+1VqI3+v*IK9atS=dnvGz<9ejMRr{}R`MsP^$=Ci+6r8Ur0*ce+Ew zYG!!~#jeNnk;G}mm#ti>TgBROs-+BLZd_@C=$uyfy3D6cOni+jjv~_8XvLHB%XZBz zkVP!(B~BhUi3(o2NQ?5wdn?i6X(zV3sd2<4re{LY#AnualGL4(`c;r4aWALoYV1ts}wd!^M`y#ut~ zIjB8^#Zu-I?J-rK!Xx}*t&cG*y@>)G=<1g9a8r&edEd;EUowre6~2SO<7+xYCx2{_ zc%2W$Z1UGX!o$Mqq(r_}XX!tiGi=?guo9Vmp^!)!TI;(AE-L-T3?`=aHB#g0Ru^gC z!~Q#FyZz#c&Tjwt80iJX68%(or1f3D(^ezf&{+$b5R7c-G}c8>kTWxlPfOOs;cOU7 zSxm(7^-O!X`6a2lPD$c%U9tH@xvj;b4r z2?ZfGX+(*fPIIG`5c35Z0BDVKT1U9NrZb!+`n29xU=|jhtJR_zKumb>F{jr>UYb++ zjkNUW zwVqHhRTL%EQ_n6n&brX@zj zn!D6owD!Xf8DE{EiH*gpNv>Rrc?di)o@m1&Vlj&5z%4{Z*86h5@T}_bia%mJ=;Px` zLNq|bk65TR^hNXw+Vam87rQxv&z^2M`0>JuSY^Z$k)w0fmy@g{9~;6&QTR%P7!^#u z9NS0ac+L)0?@u{`H3%jgFIlXEm>t*Li;hI&6jh!N(J8ZpW;{afoD;TV%(x75tRvh% zr?vNzuj|ACpZZnH!mY7hvhiXCA$gBq{fWc(?e|%;jR?x974t~#_@x02dGJT}AYuY= z5trtKYV$I3tjTD7oQ^VZ`cuW1FBFo%I8$58&bV0V^EK!qAK8J}!>*B0>Bgp@dCGYC zX~6nKYTV{LlHbj0CApip;SvxJVm=$L8&pP1Q)n_EfzPWN-Qd1-O!Ah)h(fK9FYZsa|;a}&vUZEbC7 zH7W>nQ3)UL_{8<~sE2>2+)RXCz_kj0J-)sm|DQ!eho#eFvhn!4$GoJa6|J#|z3{r9 zQExTY(S7d>Yz2|P;UhE1ENRd9LK_lovu1GgGqN!gL(4bkua6Ax_f1@knbCzwHh&MH z7UvPma;*A)2g=XN!A!UJs6J?NatlfCM`YAYK8ToJv;5SvK9RoRh2xR2^we?^suBG} zVq&sLp`Cl5W#(Gih027FW)9*=iza;2ee3Qrn(!jCMElkr9rjosP8>>eqsE&!F#}WX zFwQkCtc`ChE~(KR!2N-Wo7naEN7)Q zJB^>cG?}s@KYO`0doiEBY6X2|GG$REeTgW0F>0+OJG~hxyD`CISI7IEj!i1(>vG2q zoinytPYF(@1f!)nY9v2a z({++dyPW+{;oO9NlsiAvIo?MC%%!`7gJn2BsdZ}7p}m}+kOH$8r{Mr-5iF;;QZdi@ zIU3v=7iBE=5$mOh$xpDyYQ3$JO?Ab}t5rgpk{6Jf^%B=m6r5LF&T|jGW0}Dxqz=vMkW5O5UK(`NFtSDxoJkp_rHCzG$t)jW+}C2uP7&v6Gp$=- z`2y`I;`DTLUNzJ1$}AtsIjEgfk!6<_DLY8wW@%u9VPp|yR84K5UOEcvRnnI=)0QFY zC6=86%SSR!Pc!YIjMFK$d?P?jS?cZAQ$}}?9QLV3b{Ik$C=UB1!8Mf8)wT8)3?W76 z$J&q!(vb~FKpNdq>x5B9wW))Pqz>yTA#Id2&Vvpdpi9Kj)9!Jx$yha;=7W`Ea)+Eu zEK)(y@sLa6bq{b0=wkAFL3LK1h`y4Mjfx~dnY|np3`%i6UEtWRa{9kg8|qpH=7}X# zE4)haxLvT^|MMYB?|sBW#deT8=t^pjL~dcA-8WZKq)`phKs_Y{?Y=|mP$La&rUYR<0?Rit4(4sy!{ywo#wVy(-JBj7 z=bqT|1)5s~oHud~nlaFX^E#jN9x0vCB#@~N*&!X-{B<5sTCR}OQ|0t@jEfq1g{B3u zWh$DQxTqa8iE&oItZEWmJ(m1Ve5- z!?=HSb5hY<%H?!pmdL0_&9vtTOv%BJ8>5OS;tP~fnTEi9$XIpA3ACdju-OpYAa%%* zjw(@)MD5hnBF9D-QIud7y@y%8!4Pe`#G##pPmKTdq(nLrP2g?nkRn3}Hc!Mslkog% z+C!z~Yk?*D=6N%xS5KQKvV1M$pdVk0(6Im)AlY(cpv)2ln=0aT%PjS%_h1B2ZV1F2 zE+l-wBPHc$j3kc8s{ivNg;GlrA5?f9BND94`9B}8y3>p}aMbpql>_G8E>@Dr`E@im zmNl9XxCvT(a^S1Y1X*mVod_LR1x;EKI>;($95K@Ytz(sDl>yvj^ejcS&a0&Zca1I} zyZ`?eY>eeAvIEe%i$PzZ%uY|sUXrX{#=zHUO6U7J=O&Wip~|^V;doWY?vOa&Mk_sq zDw-^uEp}n zX*7rR0fA`gRWDa}(#*t6C4YY8ZDaP0E3UZ|65Z%ei^h$UArJ@f77M7PgQ^lW9j_%P zF{&lu69FSbE>+OOxKxL{U`7UZUDl!EQkymImY>nyYcY4NCHY${fV-+2Z;ZlC75*(? zkQLHex`fMh*f`pFn()u;G|SNWwNsQ7qWAg2&te8SK}}*3KceGWYG7C={ykmHd?-NY zL{aFR;|%(*O{Tbn%d*jk1s+_Lm}iqA&yX{0a>Rjo<{DRSWLY$yr7Ds0>tfuSG8I-i z=HUX-nM_x1iFw$7Xu%G8o(B)@)tD(Rl~c*F?oCvMl?QhnYDY6h;K4_~%Jp$A@nFUE zn;<5ugw|({d2lzN-_oK59@LA}I&MxvhJq2kS!hF(270hGvgklURw|;}d8-&y@-|U2 z*;~;bs0h1)WYOFp1=(uFg%PeI51t0~OLcAVaL0Q|m?0N+np4Xnc~8k|5m)UkQ2U6~ z=FtLfL|J@)ex{1QzLr{7bxBYvrjlPy;FJBh9*h)0G*_g^u*Lzdn$Z*@l_+y}iMWz9 zh>Q4z9@KWK!rH^{Yx`VUf{2zV(#4}*JiJUc>d;=19xV2tXo3Aifd@-fO+yC8s}smp z45~x4kgSrc6Ujs`Qyij2cz`2HWK?9S4OLabW!TVELJuw({m4{_t&_rB9V3wKw^2q| zM&4!6ubK55BQHi7ZAC)#93_EWHmyuZ4;e97lf+|N6AjzQw zmk8QwU84EayW2bdaacf`C8j0GX*RY*G3W)XdO6F3x>O{oq=b|Rv?@`jl7j!LR1bEs zp~|>Mwm)b#y#MV>wqou;3>{*j2V-?Nav-=`ZLV^TX8a`&)1x0lP?lE<=r+tzII!#l z%332eEHE!ILq=aLQZ=K#JXmRZbL3Bl(XqSea)*rwKe_ES3)ZRw&^#DVM|1c0Y1sjC zeBxfE&khKrFR#pISD>XsGiMe0idimBqo--4@qJ+*_gLQ7vH|GFa*r;02V3Fs@dJxZ>tB(WiKvz2&2 zW@Ad->>D?RF1vp6wl^tLbU$q~x-^RZhmlBFut$PjrqeJQegg=@1OiNct|zWuZ-}r) z*YVL7DiwQH(xCLrbRMQbSIGX+Q0W@)Uf52sD5o=fojYm-i5Lv5-TS3#5lcSZ9qoqx zCl+J+jZr*SBIBN$IT9cdnT#!qu9Um0`Te7i0BzxNvFcfi&F=Bf9*smq=zmHjrgX9y z%5M^%1xV?&@fx3D1xSE)6X4iX4$Ze@5eRKbU~%VqfOOb!g_R7Da-BJIA|cX;G%vM1 zK(fxAWp@=I#g22lsE0`MyDKyS04d#u?spU-?FuaI+yIcaoUvl3L8PIalpKh(WD#HO z2#{JV=G#34NQLtqTgB&qON$5SG(iB#-MPTGeUUewee@v;;C6&w3Z4_y0?p)fJ>hTMrkGkq)eYi?~=u) zwNz0Ob+EGtAazCGWmN)~Qs!GHM?$3eg@Nk90BNto9=j<3sr8QVx*j4;9(zqQ1t9qa z=LH;vNVj8ZI=29%otx^|)d0zJO|#ZM0dyD3@w_HD4;(lf8Ks#Dx@#LV&c7LU7d$y% zR}8w#Do9`-0o|o+;Uyo14je8|qznTNyx&8yUks26M><{BLZs_m?V1??DSQ&$w;Lk; z5OhSh6(Hrd9blgVNS=E*b9y0?$e(t*`f|i%lPT`u6D4g8=&t-f48h|xZ+sH`XQW&S zD%R}+-R-d@GlHhGjKhhT;yjNOEbM*+%JSHjXhSG)!2Z{82k|k}vb6br;0vfS7e`9R0hjLnR?m+EF2yzuRcZ}q#Kzr-W0QQ?Hq91*RJ6pr50b}$@p`$u z3nXRU*7?%$pu4i;?kw6?&{W&+J3qA~gCzn+<FZ=gdn_>8&zcX2mog8Oo^~dgJ7d+ zO}_UbSOKdjsTqO|vlE`LZUv>D<`Z9{`U!w-NUHXdP6A+y&v#f;YJXa%GloQ%zh$<7 zl)>pwArae%N@tT7B6Y=L9|lb-2LZ@uKo7aN~)etiW|YaN|=-nm|1b zfcgB=LuoVjTbtjpf9z8ivd_y?Ad zegR;&=A|iXxqkxwkN$xT@_g9ZKnKSgA}EUwKr$_q`8qhtMQxC6C!3R04P^=k$3)Rh zD63(g)pA!IEPIu580YW1UAW=q3i{cRYTdc5rJpr z9Z>ekK{Q*?v()s!QNiPE^yPm9>DfNYWu{f+;m6^K z_+iIQ4+D`_ZwvMEq^R0wz%Q^Y8t|Usza5(9 z=PbOehy1HUWRKLrvX@Q8zqTN>jtv>PgK@4=?c(V z-5aq&Ejamt>@{Fr+Vxp&<`4;&!3?H_pB{i!*z#chk4$w8Jsay zc=PgSU~=W|QB? zC8kNQILs?b>4jk~^%VYr-34xZo-8hPt%v*-TCq9@@aIjCL}{#sn_gr{n_J z;7O7y8W+fVenk8OzXMD0P_qcT=o4V-&S5e}>{tQ#`}N}`i(i6j^dBs|k`MXU#L4m{ zX8`}6Dy@tHtFbgzqR{*ejs1!IiZuj)RmGVNbclywKQr@uYarP4enlhs)1mArbDZx9 zC|lN#H%AHi-wyuQXbPJmt8qOG`1kKqa@FgBv87Xy|8~IGwnG^iEI+{CHQy|Yqp=4v z-ftNh>~b*ZQWhfr=L7!OE@qP*YXod!-g#6TiJ()@t!8KJnt&UvffjlGB`ZPEF0(BP=3j!cQ5Jc= zS}4o6<)ucx2DLq8s4!7f31y|Wyu^4Y3mv+8j;I>QJWksdB_%^yPh77KRW%L#9`K+ITtZEQ_Ba1c#4 z53&veu-s_+9=rJvY&)mP_a+1jak8DGhhV#dyc+W%*z~3Gz4B%#`#ng0z8cEzE{!j6 zh1X7BKCNa@eg*tN*A%&$?*PC1A%h$16yUF#lbz(S2JqWl=d2Sczc($&ir<}zQy6bS zrL76}Y8LzjjGeqZzF2V+7<=Wf>S)UE0POuO#UjmO09Jm=P{(=*!Pd~vTV^g9j{X=G z{|N9~5;b+wH}s6-{iP;XC&>2{WHZGba1rC;%j(QJ{R_bMaYcN!3Yxa(Rdt~BG+--x zpit4)0=Ay>h6MH(z!tSLdmxLJ4`gwd4RvhSnWl>q^YZKmEZSxut7$QiX@&;S>A^0A zt6Fs*_?GpiI$qicWC>3dBy}y6-Fj0UX@D~8=cI3GMWEC28-_5JCt#~Ok!@xdcgl2z zu~}_t!DkHtvXs-=5BTvwR+wvf-n(WsC=b3%@vO9WpgclGdo^^w0x7t(IzET=5QN$I zu6n-o0toZTYY97Ckq=vYG`dnHWcdO%&xg3Zr6AJ!*J?UVdJ#0(@H8P0J65v1~Pjj=+yj6c9MNMFr<}XJwD(WFvO$3dvQt!3}IxX*VX3Nz>tRg z_=?&`z>t%!2NDgJA-^-=+mFwK<568GY{{0|^g zFC)D!iT?&*y_@3?>Yf3xo$dz`)z<)6K~zGN<`4jDE37B8lOfp9+%xtq(6Q;(be~EH zcGBH;PCNwL6XkeL55eLK1CQ#S1F(x8i$c^l09ea}yMdbD02uGb`YWt72sSEL&A$u5 zzPG0PH9)Wr?wkcB5bRTw<4y5f;8(zzSl@Vrj<#SWiW`{rb8z z*jn0_KuQ3=8?v3Yp3P-SZ-WL0f15EtEqMX@%^IdlH9*<*8F$-hr$E2%r|MnVKLA5K ze=rv@)U~j+Jt9@0;ST6DPZ6f0HG|e_44DNi9cZm;y?F$ib_K|K&Sv&qT6=CXA80@3 zwCP0DDzssY$X{bxw-w)b@a73Wfx0~$Exas$53;akn=Dch2xVQ-!kbDcd$>)u&-D#3 z?TxRFt9}B)3`z;}%u+zv89!Y~ogTKftW?%3PllZ)P4K$h0c9Pf@!C$<+H?N{JL<3x zAcW}c@p^dP{$o6RZoN^a3}6R)(oG-Jl?OuQMmJ@4_%2nGa-X zUIJO%-KZ6qbdzY+0^$D1^MXoEaYlgD#s%3GCG}zk6cwu8V zl%1_c*FWL8-eHAKrgi~t95awRX}!RWp6sm2?3d7ueiml-_hFb`woFgfYapxYZ}GtH zF_ew89p}>qOss{< z;O*^$|5`?NB^`*9eg-8#5 zYJgxLr+WP?>VYzwp~b1)Fif9mUTq!lagkLu@im=aKyBz!4kS|;_NI>vm9`>&F5tia z)0qOcYqIJ3*7F++s$F=q>C_#&&vu;udM&8!8AFTa3nT+fA5wZSO}I}~1ZB&I7ER$t z!`4pO<_%#D0-dHLT0H1SNYoKZUhVka5L4N<~$lDW8<}$1(o-c>3+4s-$VtGSv zH(Cs|yA8%&tV@5U|50#_s3LY4ukZ5@2c`?o3Dm%}#lNE?6b-nsVTn#gVS`GW`v^Zm zLD{V(y1ol1W*0II-omJ9FH6QZ-eN0xV zg7+r2EYs!JYN71ASG?@S#Sch19k^SDwl?&f?aY!+!in(m&Eos|oq?ECM~ELsFx zn>?I1TLfjlekVAW23uQjQnr`G25w}1uMl_VG_Wo^H6)gaa z^rBa2q&x$+Fj5{`WU**YK-Ts;D}gR`0G$SX2#cYO05aa&Gw5U-%IFH^tnI@YH})aGX8sAy@bCt7>&O1eqb9$$vrE+~QCdM0~a6K8`= zB{#?C=s3XJPuc_VQg}6WvUGPWEg16Wopoa`2bC6OyCKQ08r>X+xIX zD+bEX3Y~}|1f4P`?XJ#p<*~KIwI<`!w%dM+X|EIH z(a^g#@DK68&(&7(0tG*UA~bF@K4+EUcvO^MMnZqcj(>=Unm+mEf6E_ts!Gw7 zq0KuhCYm$iJ!{jaOJotV1jcOy-Y;_neb)f<|6ov3;v>M!@OG~7ralkUTiDe=^x&C= z+}IfLbdYY}BK$cwy>S!qbkM4)1Mr8Ll}23RGF|2&O$=kybPWAPHTn>dHqO~VMvuc0 zk17B2I9$8E8G0a)Wcom0jX(1{?zAhWve+B;wBd~X$r$y2t)(nr|EslI_Vm83o%Uy- zhvLWrVn^d+V`cNa&_i5irVnvV`!jyEBn_H&be^!j8@f^dr>sG)gr+^4C;WrE4w&}r zPuV_+EhutTwJzS^1?p|GLfS~11_o)kK@-M43{_i&3+8R^t`+w%b^8?X;bB}eHdeJ zGRveIyZ+p;$F2>?3XeG`1nj4vwUh^_wRR}G=rBH@2DnjCJ%XE%2Hi+mD7@AU-FSFg zc9i4{+<0?R_py$<379tVjx0w4WoJ(5q7Cql_Vpj6+cYbI8*!gC1?(Qc-}MPq;}gIi z``Ljpq8;*cLwNI!LjEBugjbaiY;LzKT+sk!p(}(B% z0JihKD$NiHz*aS?gJ=Z+%&$1Rj6E>L^fan!sAZ}{bPE_wDb7r1)*vAB46qz%CxfyD z&i^{2c@@G-j)eR#RtnE+A^)q_4JC?!fWPrETHNZPY(k4A-~yDb9aWs9g<*Pr z?{!TEpRZ2-yCh%d0m9t*{6L%`8m{GT%nGAz2mEoz&egHIK>e66vz*Oc&|>;Tx6KRZ zb$rI?8K!?m(Y1Qh8M`#VU-;2^yw82WU-5Yqy4nEwg{!?TRu_UYo88-dL^TNTAAX6J ze3O9xb@yg1qU{3weof~R*rCAx#x0xn*y{mU>@b%|-^@Lx{#T@p<|T8-gZh8ET6kGh z48WeeliigIpzI5h$)IfVds*L`ZWnuW(dwyy|4ElLMso=8r(exZU?&59&tELh*xv23MU7 zOly*aFVb8AZun_($n0{!U&XeHaMZK_S$cMkHBFrYT4P2~Q#7qWR+N{6{vHanmSSsV zW*-T|9PZW>$f^ReE=Q|@_Hj@a;@051uL6wp)#1Ek`2;Z12jmK`HkX1*n`RwTR_hPk zxaFRaW|#-~-$#X4(b^$@an5A+0RWaV%<2q}b`8kdw&qx~cf)IUepXp_vmyU{w>y3z}Wpm z%e*Knfw6nP4L_iH1&rtC8S=k#YYHfb z{Jjyp(fl?j`|QRXu@B0u$MELKVVJ|$qx%05)X!o*s{c_S%njaUT*LPu%(=6|U1_}_ z%=B{&uUIbue^k+CbgAkckhL{6^u6|LzIAhw!$Zg)IH19|8S*b3!%MD&{BPC^ugP}- z{?B$XnVq8n{~o_GN6H$&Uz!pgrTGZKTG9Befdg}&RfK&H0E?YIpvmVM1UosVD6s>A z?b+aUt{H;K9i|r4h61qX0SEg&ZR@iz(N!&h*H_PsIOu0s3;6FYOuRzl`kUSqNWa_A z!g8H!y3&q1i~DZ{WNr5tb?gB^R&~K@pj~8}>CvQh`v9g-Q6(5AA!CaciekVp*}YMC zF0BmsKg}s-FDU|qc`K+)S(^`KbxtwG5-8grToz);17Yr69zIpG2n>^+7Y$^#7vPV2 zuz8@vGWbyU#Q_#RHGtovdMr0F4e}>%Lbv}Q*nQ`ieWWpf|K+H%d;@nk2s7Fx=0^#X z)s8L`8`cBWUzz}GQ<}KkjL)m;JD~Gb%(M9uR zv0$V;+UE60v=7KU-bLFc$)W7iHm~c=&<&a2zudT(d{Cs`4%~QkC2^`|1PHUJqH!@R z4TPCHu`tW-EEp-RyF4sL)I+duCfF{>hhT?Gy>5zr0%_9wPd%!d2uf)Gyn|fnP5^fB z&%{Pr5EufygN+AS%OF@%VN#zrB(z@iu<+J{nbzaL1az`|A5O?OJk|x=g#0Ha*e2;A z|L*Nx=kp=|^bu1xN+tpR2Mf?l`y=3YyOX$51CMk)ry70Os{w!1+QKaR_n87CeY)#|nY1{b&>6unLA5IVjIZ3tQVVkvESI zpZfOSDf~kZ{~B~nP)vh7@*6NrQg(XX)Iv8N2T6WZd;{EgxwI^h@-uM5=Q%o{PXTUF zZ{)hMe*yeazuBCz{|{J**~i6LKK`;2(vJf}cS) zlS5+i6;lBJyA@^YYsFC39D>}agsm<9QFv7jWxXLW1)Z?9ZL7+1>Xc9>9~G1D`XA6~ z*Q&BO^)J9Qx3`I#H8X%|J%2U!U7khVDU7gdhe>Z7v@W0q)^^FH;<+7=KX{kdwPpx* zVf564wGiyg4+rB7Fq?NjP)BNJ0l82dn1)=?{mt&NG1ukep%C=2^0=8{|wpGx|9 zuTUZCg`H0Oh8M#B4A@$K9XyWD63jDQz9@xn z<`}NoV;ioG?(iS`G;qvnlAcuxV|-ZN*W zW!EkRc>C{7-f!R@2YBMe+pa1~W&rnme@A$25U*zX-lhCBfEPP+*wrA`F@Tp6&>toD zHozqy?l<`6P*Tl3CmG(t0CUQ<7jAf zK)g>lUJt-)wHS`@J_5Yl^~gQi7l2oO?tBf0!f-Gh8gn0@+H=hWc-vkV>^BJN0N&@7 zXlMu&z`YSC(aLWrX$z=4suUz0r0|J znthv1(f~ZwJ2W%|27ve1YE*k#h`09?s=aoIH*+S!OM`ePal9ai_W;LphIoG?_tcgE zZ|{da)3QnH0bbQ-RC|K60B`l$M&#Zs;NIKQk;uIRz&&1KBr?xe>&g2k^`- zx6O6Z1OU9Yy!A&o1_yu_G**LZZzI5aK41x|y>kFBvEaZ}MJ2>bZcKkFx(V@G5>f5F z0(gZBe9*}K9^#F*L+*_Rc!_1KBOJ90zq#LCU+WR| z2Td0|9xk(a3HcB#`GW9jH$1_-U$Tu!+5uiTw#8?+yTQvL3O&t*4ur<%zLI8F(WU{g z^79w!Scd^v)sAg>{Q1za(Y_XbHvw2h!R&gyeHxIpPW830WBm?Vi~40-mVG*q#m@9y z=gB$_WafvrlpUm;%)fu-d5|xmzq93A}AtGA4?)1cE(T zpTK?u!T#80X5ag}X*I_F;=9gQ3&9r8DV`Mx!CqWKR}~;w&(5hE6*~dgmXJeSN-zM+ zSUFpwSq8vrUSD{{`U`?R+h%5W8#oqw)Azi$9)g{kW1E}OsYi z0PM}^L(zs^U>O;PL8=l$9tnEm|Xl%o(VwB4&! z3BlT`r&hS`0$_hA4$0J`fn($|vvryupksL#!`L4onC*6SxeS5@2B7C`A=t9{wsU(S z*xPomHmn6W7Jd+2E-MFMhZAED8w4$9O`m10Kd7sh^HXM-KFhl7n&5KxCeYf)gE6Hl z*qUzk?s#bw2(#egn7(gDt>3<(@7qEeLmaaDygbcjbwHk9NeviEpXT$H^Cw<6Eo__I z0Hy;=m})xdHAXl@I827JjR6+UtieE*61_dkZVHeUZVwpmR}DI?2uUp#@uvZqO;x~o zA!`_Dt?QfZ5%%8!S>Z1M=RH{>Agh{=WC=iKb0T0}Km+Xbht%R2{%jyCYz%1hI|1KW zv^BN3?-iS%8(z)gR*|urFD9@@fm<+L%eN=l zEr4L}1J?O}gikTOPyN@MFhAe$YUTEMEx^&KHKd!eT@>H1?YX1#^1Gg4wv{rdQwB`L6k0#gwFPP?((Dom_HA zCY=PpS{|Wy?(YI%aV=;Fy8|%uitSl!4V2ZiB4h7?OFE7FwkO)@0e|baBeqc6;ByXecZh5$#ic7!2VN3;BJo7_Yi5YScoo=#z>a ziv0krag}-~CrygxCWKc4-jo9Rj-#!QL(9Cp1H_&rd}+ zsv%fhyW)uIHwad3NR}>yV6(Cp(e6O7vz&XZ(-3TvQ-!@Af_Vn756Jut)Y#Nz{3Px| zSYyvbH$=CgW7iZrR3{+VAw!^aB?L>!R?uEUuojM#W`MGmlx$Zu=_F`v+uUMl;eTE_zHg^!YH?*Lf+?Mo7x0m@1jBL4S4R(|Kw71kTT?^(ZdmfbVJZ<7~1 z*7qjl@4uY0Ko9u?{&GB*e+Q&#)lJD>$!Wm9<#)BCVGZD)yX2=7+Ghy%i1Ui|34lel zIl1@w6Q07o!R@Eni`L-m#wjP98dr~bhb7vn_WehoZX-^S>x$C)gcBb%P{=3l4cLWY|Gx1$?{*oGTsd^ zuFCqkQ0?af{??(R8NN3Gf5ptzTpxZKl#LvXZnQz!^3^q|%`i;QcWH^DXHa%<^)ItK zpltO!!Hwp7Ae)h|CEfCFDBJf=(AEuQ$*(1qqzk~bmk-r4X$dgR?eb4Lnm2HRx63k& zJqu*hGt?#1z5#?8n==|EJqgMpT&OIXFKlhMWd_}_4RqRcg+5YEx(L{^y40Dq`42&) zEj^M736!1bQb!v~VQa1QZL|Q`>0V18_7|{d_x#2soPQmLun#5l={kd zz<}y}@3%~(2QrW4KX8+BpzQDWf+|r1l&$?C-8oo$)v7x$0pIpNSGybFtA|Q&&}-GC%Ru)0xtcHi5wvE1i*Bx#K-vDk)M*AN zE4?*`wO0jY*IuZ((p{jnS9j`Ku=!=B1k)hWEilA)mntb%OLm(@R3T^P&0cBg)l#b-eZt;nK z#~4#8(Z8P4Ix)1N?-}|5ywk~`wbp5&Z0}0g+KDyXg!rYPkhGr!_4+5E!et*6-I5hc z!IhbsPlEHs`Vf<^ulM zywC>q52Ed<$Eos-IO!1U7?3qy!Yh0RkllY|S;sm7Wo<5* zcB=qe;m@HAKI;^eUBz3Q30r$=*~038vYRgV?do7_$3q+X{u$u+Yx5Ji%R#0-e-^Zg z{sJk8{w%3b!56sw{;{?13lFcqqmQI524H@FTV}8x0I-zj2Neolxn}xFPeL#$ z!&O}iWu2~>AqFTTM=+++Rzv-U z`UG2Zc11_MwV>0sO_|7Hl6xn$A>leWS#&?FU{npa#wGOXUq za0#@QHzTK3t%9;Q!|EfYmw{~DOyQI4+GlKm$x66uc)Gvg8j$5F8dlM2KnUq)^WU&i zK&GlT>3+6rgP9sCwei_^64dPyjn8cP_n>YCY{mKJzd@$b?CXkap942){fj=SyZ=7> z_2m%6BS4cK##NI30&0;oRVJfYXD##1=%HuB@j$x>D?;+0NhyNJZ`e063UV+hu)M! zS%>qqiq5|Q|MO8b0_i$%m(AygNbg)p|4pVRQ?;XOk`2S0O>Yff{~>v#TGfA(J9@AR z6&vy9kZqwgiIh>GwY;^-jha>9N%;CN&6C+DSD4NTUDVxs>{q`ub)%3qCffhwUDGsq zxU4Uki=6{$n#=dT%H25D+GMal6D91EI0CTTg!*_xAmCqoCg%WcafsQ52MA243u-#ULtTzxW zdVq)BGYGZ=rSc{O3*AsMR}aDV+I#@%h!if9v2ktJ)ACBpBzvwZK@^y}fT zIq!2_&-d&7zLxvGuSKl>iQjiL0s9Af#jurm_Pj9&_L_i&;G4i20`?kSH5BF%u&=Od zAUcA86`^ANcf>7Dz)*Vk6PG)vDQ4-qQE7mo42iK+;khVt-r0@{t25XU${O+Cg=7hM zQz7ExKX{hP_kggbO*aSdN1?Ef4wB`;d%-N`?X)AbC7QiDI7lZ162tN7-_DchrK{Md zWEg%p_-r6`#*!jKFZt7BPIs^Wdh-Fj97;3%_J^O&3n;CWp482x`Vr)R|CrwXifhm? zy$1UY5x;mWW}nJ6Jtj9=5d0QS@E9?v+>SoKie|lKP3|}7`9P`$*s`LgFYl=e=*PYn zufycRQDIz5khkiv``$c_eV47;-1>ehm$T#5sjeC~-1NTx)^;k_Bg3IZqJ7W`Y8`vZ zVgyBR*{>R+BPMkd?|H&@HmToEb3dya;B4@aF-GD&Pub2UIqr<}vbqUoCx?hjBM(5O z>t?vBFG4$(nrE-dg$zG4E3A&{HHJMPnr7ar=xMXPAA3Dj)9f(yLmCfd_sph8g|PcH zyJdrh^`rWY>DhrJC5n6x{n?%?d)n*(d2cN=937_o8{{p{Ao4aI1bJ^cpPA~)DFt~G zjKoD6N#LpT?4G<`f`Vp{cl6{UlgI|PyasDyFT@H;z|3*#WZL);m?dS#=I#4ee!?iFTgD6^e%yaZ7C$u`r&><#Szcg z`DSo$7inC!@7Rqi`pe`hJNhtq+VI<-a&7x}Y)?zOPjw|1QKmpHJyVg!r9T6s{~%9K zmI8g(r~I(VVTm(fM*8w$o~0}m%tjS9_=M@t1hd_b@;qf}U>0@Ft5iN4*gp-lm%V3us<~xqgvpB+kZ-;B3fya}K;99f#HEd& zU>bjAnX5wb6wLxhiOD`1EN$%GIFVo-R+=)k$TSUKLC@J6=Ovm9mDVzq;#tABm%B!C zePNWTBR%6yjcjOH%T_cgBpP?2wBXUZtq0R?AV}fLKgkFP>lLFvO)U~fz63!&@4c!J zTm=_OyZ=Kjj`4uf40rr#(s@%I;(ck#)8pNNn9g~^WQZSxesA-}p|ZPR_NgJPN}dBT z&8jFZrvsr?emYl*%fr*-adgx918MyjQECC4(L|D+I35!KgiqiAy2B5 zpqbN}PuC^6Sen;Zagh|wo~?1+!W|29l}(?>D+N6~bz#n0*LeK^sPxgNJdx}^s4?V2 zn3w!KsG;>*^DVsw)JU%R(?IRxrsLIrdWoA+js5%Md>fJ9dmKqN)pG#5HO*W7s6D5oGWDbOx=c-Ochug#>D|QVma~O5a6GJGqVeer3>m4@i_~Am z&p%B1GzqvFeR_J4aUO)pVAWxPSEQQ$lf>$0pE||5)=T2h%zU!=iKqliJ8?M9^C+76 zPd03~x9;3w)7=`rA7E1PV!E9Uor95Dnfyp65M5}Qer-5?8q5sWC2!KA?m^u1E|yKF zRIeZkqg=eLWuYsf6&H$5#VAY8Lb8R#&GB$;L@zw;hnk98!P%sdNwM()1>*I0r2Eo! zfM>VUa3Y_219sBh9b zsA=;JytuV0{P)eu_29+sG5JT8jfhvj&vk_>rw(#p-9O?*qK%D^1La2q(*+Ygvb*%? zmyWcM{$mY$(q-3b_*lml%|1KQhV&pb`$o*{(X7i%dIstH7v8u1EAd$g7#o_l^{o=63Fd6}-Yk_5!_pDhj%l_B2wG{Fdg zFXDO4jOa&OAfEaE4EU5T;{Dglv6D@A#JdsR5@x*_@fPPx^D_`{LYC`&NiE_HnNT*4>fHBh*wV9qjd!0dFSUTMFptdDc1^# z-b2XbS98Rp#4&Fmlh+=LTPP?(yuz79!|BC{=fS9Fig+h`*=X7b5$|qzmCSk@;`x#8 zA_MUzVML8Uyo$y#w);5DSD zPV7xN0N#WHbVgK>f03YX6v1Rw>zXf?NSEfd7SsY z!9AuTSPs*Cy;w1yv!bmV%|dTWo8MN z2#OGI-kfbC=qHFboWWZLczN+NNy{Atcvq*SlHA)1c)O33M<_E8?{TU3br%WZ>3N$S z6=fk_?^E$h1=WbReNM5(IW#jl6+c=~3uc;o=WOdszX2}{osP+SQLDg<`jnXmDU~I7 zac4%Vp)7PCc#)V|POh=I0U|#u_x>o!KraUPkp8C{@phdeEvOOkZZJ8}f_Q$%CibA# z0-k%$%u-F&Silp`PyJUGx*zbA=>)F?@j@!Si(DEJ@0pL;YEdiVeLh7})anzv|IzF+ zm*DBIWzXUa<;Td__b=ept9noGsglmp@#sk_(XZN(%}}UXH`Yi6E#4J9`iNx z6zyqdr>MdF?092=1K^d8Wbh0DFKpj2G6&uXcv`n+KJ2cV1b9JS4BlbDdzn@KR9S*} zC3n1=C4q>y+|MjTbPn-uW(&s%B#7rTcUwPNjCeUraCZY<%>9`MJE`meFEb$ZrYtlG z@V4a=Jcm+HPg3n2MFfP^SSeCTfHPHFoCzvjq=5hk_3ZxDPz;By7RTGxoL zCm@)^C)a&0IRJLEIp2sE0AL-SZ`GG2qS=Xe`GaL>cIo-n+436TpKzy7G`|-4vxh$& zN@-1CAEwdqejgj!a0`3L4m&^GK-)>fj(pE2|Jv5cYpz>pZ~N>w#TZi!DX##APKLY}w1Sf?HjWDu4TTAZz_tVoSb*s@nkeTbBcGwy zu=fOPB!ayhZlJRa!R`~V7YKIiVw`U+f@Q217nUGc@HYb13BkVQJF9vi*te}qC=r5f z5Jb~12=<$}K$wSM-Cga?BlIDZ#(8n>dNvTsz%68@iX0WwaEnsX2sWU=S*49&e?=5h zrUq?uYAy^avlOUKVj3|a+!9Cs5lzapmRN$o2L9odY$Lcv7HAsRl!71Ll&_rh{3>96>347)uKflSKu;L+A6%HNtq$0La)o`2vx^ z0nI+T+6(ApENv|*%?ZuEx{~eNSX$2lfrsQT$bV6U_-aWwL^D|6rjP`pnP&v~aDNU< z8%0W!qFF+OI8S3Ml;*7M7H{1fLQrR1;Hfe~(H2LL@fXdMCIwQZ1D5uYl%_05ivMH@<+bgVG8MNNIUsRvPCv#U$bnNRJVhg&ul; zLqOMVH@oVv9YWyL*GC}{p;^v$GZ)bwEG>wXW`$;Nwwo14Vri{?ed4V9LO_pMRt#2+ z0?{t5O5@5x(QN0KijB$=EUmtuPn;6XzKp3bRgH$yT-TC&d4nMYF`u0e(r-|-))S3T40jv|$QgVMtOWJ-$! zvzS;?seTxHB2+kxG5Z(HOye0(ZK2W)#iY_GFf03yR5}Psvm3*d77b?0_Rn5Q{|RPc z6HY$XcIe6O039Pdip>uVgbeRrEcA1*gADhHH@lh<1sUFG>a#C&5ai@e?+Qzs$-o~~ zo;I7>1z^pov&k_9Xy#g(HjRn{vzX(vmr^$NP?~WSDQ!2HnVy`jqD{cfF1{xx>Ug4? zcRh-=X)`dh3pi;&Q~yC}%g)T!BO9PNHa~BvL9g8}K}>i;O!I*z%WGOt6^) zr8PY#rJaJ(vhI+8`alS}v05A*7C#BV5Y16Z`{Mk2Aj%HdPs&3J1P>t6o9|=AIe`&*F za)cD}SKT02FuWeXej+=+e`ugM(!iL#cDngS)S|&tAk*ILA9_O)4{m-OH#fG<6x`gK zkZsBH1~;Ru{Z7csz|At5Fq=*R{^ahb$U)P1CsfDq_-uYEnA!C?wMpAq6S}^U-q*~t z3?S&iWm$fK$Uh``=(R@V_ntmCj%yD5p@(C|Hom}rb@I?UstWiA#^1TbKM7#TW~YAB z_5?6ZfA4OlWdN4+rYv@}z!%J-S9@PGZN(QCt!1%`a*=;v%FsK3c!kFTr@0ErmM;*^ zQ7MDSmB;z)D~}7DCdYCuz|9lM+4eU6;N}@eKDT4vVeBRP%}4HRpwEDtb~A{ZD}dke znD;f4MsU+0u)MebQ{;c1GE{wa){7Z)_bCx+atQwe;BN>xHAtrb_@keBPd1PIlbt_FcglOKA81yaI<(ATAAnWNB4Cyv zY}N5>2h}P7>+0fXM>PXj-laQH{00P*n~|qo04o*v*qf&zm_TEZ4#fmcvL^i7d?9-xc*3<_8%epR<(XSC~pBbfHi(s|{EDynURS3Kz|A8K3^f7U@ zXg?@+eU4jh=vYv!_*8+f%~}NW*%q}`Iqu)Y?^`I^b`%z87wD?iqnY0}eM;jm_8XzB z`@(3xemHxE)^Op}Mzu?SG`IMWb0Y_UnOFX)LA3mLD9!!hov5z7FsQWaQokx$;skKv z#OZ8X8JeA0>Swp94$Z>OWIOZ1p)~L1ej{c2e?e(=XROqJf}fG*BvM8ND*xM z!nx`v)ZM(0EmCa-H$ScQtD^*bS+ZSlWqPak2Cu=pVAg?YboLCG@lnx#DY$ zv9NCc*%G%{ZVz0QU0+~ovmMm%F5EU!X8kt={ZV~vpzI}V!|8d=PhZ{_L@SHE+e9CS zvt+vr&sj8#>IY_~@psjaz9}@z*`&Sf4*QdYqrd-T^JY-Pps706tr69DeR}AXMpUDD z>D*YZJ@D^*TA*PQ2X2PnB+XL{U}Xn&Wc)+(*v->$ip68?0u0k$|00t{SXG|na8Dr} z*3tMc_Iqiqbe)6zMUXdycXvba`SlQqvzB4u3 z^yPS8nCT@QH@*+J*|3R-b{oOE2Sk`>8A3}jxgX~j=m<@C={a$*NU;j|$K4k!3dZ}Y zQqPI+L_YqD{g&Q;mD`p&>EIf*$f@Tb+CaoXnhcLnoR(GoP)0!y%&o1LU_4 zpv6~^fB${K;yC2@IZs-837Va~FYr5xW(UuUZ%B@S{tH&SWz|gu{a?N>aOUj;{!y>D z70U5q7tegbZP|dB?#trL3}p@!S1hdo8VH5W~(oV zixmZ+|J1c^nW5dGZz=v1`$$%DOL0)s`kKU`~fZ7R#D@inRI-6 zS5UpF5lef#&Mj7nrG5EQV9GlRqRsg-lzuwC^9*KnNPwzkM}cfM(`b z#FwqmEHBb6Ezt=gbz1+jrz{yNy=Ak#O6~|QxQFZV_^r^r*!3Riq3zI%J=jGL4{{Cc zGd^VidoyDPyY2ea3@9xxN>|oLl>(JsB4)DC8Nl}Mpv#^%sbIEY@^;dSp%vuq(mlyf zhgRIhY$SOj0e!NjUl2W)K8|LV#Dy~GtTa~#^_$;013D{muhnBg0hmQ^3$iyk2Tv9T z;zx0dI6g3e^uO9}FIaPoTekj8aC7&N%Njh~w-PmDy9+fNM5|BLRnZTjvD?ibNgn5W zftmYp-RMrLG!U)l?Cn+595AcTB&D4KHS89j7Uyu7OPn|oBFWd6cfj@lF_9gOpphnp>U2>)t^6w=nv;xxGam>=#i zN_%NpsVhUX@vGCV<-MU#aQZN>lzxtpY9^7o4IwCfzO>jl>woMJ7~Fp%6bY)q%<j z&1_HjWGT@s-?h?Lbsj`(%1^JN)_}HI+vlI;hj_B*30?Z1m1|qwgn61B;jc&j-7n%7 zl_3APDznQO2zEQuCnj_u@IP8qIoReRfEgE)Xe!aH*n{w+S%(|MjOz}iomyP!YjXuk zyTzDUquE|hQra3Ajt|^q%qGC7y~(T6NQI>Zm8QE;Q7GDx`8>*|5GoyCp6*3OgPBw6 zd=>rYR<^cw^Ugk|sTeS8PM>c>*<6Lv9#p2^q;`T?Oy>N9{MX*>(h5CDq-OSJkF%w> zS4=TUz|kl7rO>@I_K<7un%yYDsg6^QPi$y5H1>P`l}5a405+f|-Af(|U|JXFFQsI@ z@cOi=CcTc@1!h^7<}am(gBo2npM9(?0e(mAl~YXejG*0(d=;<$?76<$><$MvS2~~e ziPu+qz6&D!{UGSZPts@0bKq&+^ajI^Pm3KI(z!DI_n^k9WtEnyZJ@@j29iRF6Cok@ zF0VA@VQB}Rr_ZKzKn<-s^BwsK7|l~>3$)!qjZ*)We6!|c_IPK|{3_nP^CNgDes|BT zTyzrpjS1&`5<)!y?0j&gvrRGZKX{YAo5EvNVjj;o;lG2Y-NNfIqJ9#eXLx~FzU*eO=^#!ovgi3dt+n|33o8kJ@2}q0>`TZvP9L(jyx}P7UJ@pLe-#?_A zNyJcSCNr9Qdq2gm45ywBy=`?Bo@f*|=SGDh*s+5-zBW|=mic!;7Ugl9dczF+o49!&`Qt+(Oce+= z>Yc!A3xXv)GgIHroHX;Du-%UA^bkk==0Gw1{nab8iZ5x!yC~mCEbaZXp?MkjQfPd| z+$a}+aPvf3r(WZG^ih2;tL+}K2eW$&+1PKGoZI$W+i5U)+4nE;O`-p3@ISvu=P9@u z{WPST_{u?cGf%2`*W2qTg5^FRdRLMI`WIA^SCj~L`uMI!r4-FxRnAS&4*>qKjGQ&H z`;d*^E&*LOxu98HMvf(~2F!$R0s8U_khJv$_YctPAR7&LoIkAn72MP`T)ov?I*i?# zl4iY+H4%*O!ya3shpq0Sw(&n{$@`uo1rxwbbM)#8lL#oy;NSPXMFQ80>?Z6udG$5% z#w51327BK3c0FnX({i_$Ln}0%KohRMGdC`D8Ho1i)Go121E>+@7f>a41~tm=-Z${l3?9lrK0$bj5Fq^aX zANoMza?tJ6#T+9Unq6AogT5pQo)2D(_&9WpNC93XiCcTl6u5#HnmX(LGrxjnj;-X< zD-SS>Hd=R0KxaW(CifZVr{fJ~rDN8SFD7J4M%pd;XT@AvWH)eJ4_bZ~ob4D}bAZkT zGq0f+MUnDqFw2W4W@o^x!JIL>2WA`h@6YCwJGj}EPQ3V+Fa+2fcdRQPN7rs;AKh;^ zb)0w$x$O1djjTn*H=pGkx+J;)ox{3!Iy@J>g`n_&&;N4!(d0fLR=tJ37dP>#w}7XW zQzPiCYJtcexEG+kiMtje`{mWjcBh-Z_}~_&k7i+wmur;?h&S)!^B5O2JND-CVBTk_ z^vuK8qh*O`R@HQQkFpj^%WENDF@n+ASFMB8$K_Wo8_M5(8pyuw)L_@QcBe9q`X=@jk$cI>LVfb@`&#{z-^hzW z7ib7U-^3MCd|BQ4)h*KnuSZY*dfAGHC&y-f*+D*QZUi;LzFoGJb^e3Bq(A7}4t<#m znl*g89HF$j1R=23pvh9+Ndg!F=?&ba^ePafu#-|6MrlrDe-S<;mna6Sx~0?`3c9unpdLZLerxL^ZUlW!6MEy7eOolOZrnSuXF z6uvyn&!#CNNkk&noBXFhv{-Z->;2r3_gFB#ls$`x-a_i7RD5tGXqrgCb5WqwOS)1; z+Vn^uO#VkHb=hRS8C*U*L=X`wdVy81_>D*D*q&xrt$ASsH=4GD0>j*u(tqXsz~zo7 zB?{6jsvx_9d(&6-`ca~Z>>~=b&PWs+l^O+LIj0X@U?s={wKZEeaR1=DVb$xER`h|; z2=JvvBuKNiq&*@Ak|y_a3^m-TlqSnf0MhB2L}6-E1pP+W#Ue=xcN-LV%0wW#!NF&} zChay~%)poWQc1~8nMOr{Ra-~#{g}%4LR#SG>;~=q2%n-&GsNsBkW@wSDB&G&ximn= zeMtL*%Ue7NmTd>~Y-Kiq-9SG{}+lfbMH{&P5-7@YU z^ir(%x>9KOu>&!tZ)>mWw1;BuBB{obHspNfta)CoSnjn*0m&_pFR*@_iw( z@2nI_vbZ}SB6}?bqC`tDaF5_x;RrQAg@2nL`8YP@X5aK62D0|b5#vpY|8{sr0{3cPz$zX z7gwfVN<&|k(>%GhGZK!GlaXREyjb=csFJRt?hj*+6wOgCiq1CwgL>~2iaZk%@tm~8 zMFP`XwW!Q9V>;eMumI|f_LN)yL1%!!4Q8qYGBU=3BX2werV`N=bflS>AE=T#$m)dF`gZ2L2L$-;gKEour?14*$uWTe_ z{-rk}MQk1Vt6U}Uy(7hXXO5v`J#Eq7?0(c_lX?tCU=P_MZC_}ZnrAn2v*~A$S7G%k zNuvBV_ApH@842XX67YA~SUPUe7F_<}(VwDCGSJ`CJ$R3`{h{9In$5~``X$tx{GPNp z_0?sY)(b@HE&a|oI&PYv8Up9|bu-t5QjG=yhgge`ZsG2OglR|+47{mv0~{%Epko(B zqJaK`scY&h?ku%rziD4N3-dR_a3$GSZVB~<{3Uii5UN)10fAAG2)nGS)96_BC47y8 zDNW-t5HRUqE!iXOS`=_{xN-pf9t1S}GhaGeZVGutj*(OZ%8KDle)wduB+B|ae3yB5 zSRg74L|LXg(gN>B{N{DakUVSDB3`2wiEkO;Ij#=p^7vn%!#5n4FFhg8hP-k*;HuED z84K!#PZLWbt@lIJ-W?@rkb!u&oM?eZEkCEsAe#&7ZI~sNq=X&=_1>fkMC!{p4Pr>WI<1hUn#JMV zQu-T2t&4BI)QgIQ-Y+lPRUxvm1z9f56-(l*4}mQIrVB*wq6kyy)^7LW8EB8kr;OL( zWFj$e8~eek%i4UsF0w={F#ou~s8n(bTF1v(WcV12mm~aXL~S+RgY|0nmMs!G2-#CC z#~xdiPMychqj_zbw!M7ovOQnYL2bFd=~dSZcV1uk$QZOp>>SI*1xt@I1xD8+5%0=u zI&HCo7xea@jHqtpPEYVR`B1(@eQ8t2QdfngY(EU>54^;Z@h%c9&~qq7tKDgCaHcm; zF1QbAuj#p!`<7k-qg&Xie5sO}4r#yfuB*byW-`QgK!8}HkR)Jt+BlRd5^urx!(V&z zJk)Mx*9_lEo+5{VzhMRWQuS4=9Ur?Y)bCq#T`HESuav7h%{&gA!}w0`!;=do5MRx- ztz2@B0oGfYFHNR2;6vfYSFQ?s)i`KJ2UdzD3D!xF&!Oi8qH<9wq@VKwn(Ri$aEusE zMVOT#US=O&fzTK6s<(1Y`0HU=UD#`;le`7Xt2TaO(!dMS;J{iUi`o{U(2L}`Rf=n( zZZD(-KDM}F#Q${%)IjupxLwpoNwCAR%IUg6b|z0}Zm1nExCWy1FhOI;G* zAaulVd+6W%FYrOrPWQ52D76mqDr>u2hK6h^eA>AbTCuQE^i+quzvcfc#0cv)IV z?SZj!V3M1{*=9E4m5L=tm1=km1WyCM2-`0wV`b+V@YN}E6h*6j>M~f^muE|N+&_%H z8oWN;O%bTVdT&*VB}sJ`VU*eZLLjP^RzT};UqK7pZGE8k8#|h!jgOkapm3@$85HpI zcl5pOWDxWLS?rcwmWEQ<5ViUYBI+{7o9sPxhPeDWrjB{~gK=YHRo#VlGRxHzlS+`V}?_j4C9RpmWG7Qg1HS z`_z)!+LsOn0loHJmR8Bnfq>07+)6kby2CStYXg(^$D!W3W`XE>2G)BegpPB+?FD%i zIEJKsBlv4@p&ze6`xE->y@L!2>i{n-`?3NjInoDvJ9Hu~IoEB{YbMoqK+2VW5LihQ zRKGF382Rhik@F&M(i&P=BB<`mWnDEJ9kGK9eBLnd6<#JyOuq7O_M3`BkKGjRymJux z%(tXowe=@qpU5j{wKdrD*3tt1TztSkGnOhcZG}w@221<%l7t>G--|xCL)oG8sCjMQ z41RnBOs=_X71l}r{_oN@*S_EWwzriGeBvvk*=;9jcYiXn+<^j1Z|rC{zx8^_v>oh_ zmwj+k=&I0P;TN%Fd+2=#{rRr~QH8^6NVyg3NslL(1)+a3j(Pul0Va@MUoR(UZwq}5 z>xx75vl5@X^93<#c}H4)z2x zxqG1`nYsz_?HKN!;iP&B@tyORv2#jjGx%FIK-;LC9AL=CyYw%?6Ricj7q%3+L~JY@ z&tT0!G7oV8JWabOG7m`xye zA$S>x=R1kuRU@9|Ac7Z&c*zXjX~dh!;N3&KR0i)A;>}|4J|N!zv_)klh-Vc`@EQ@% zXfl~pw<6x2K_s{e#H)(p{v}jd8nAagT$*cq)ZXprUD&vBY%tjPvRQ~ z_p&7|Fd*@r3OA8Cj*2Gn9SnHM`$&A{F@UFai^Nxkx9oX)k@&jcWqglJ37!J+uErBQ zPsCd?h2Z5P-USA40pfWxc&%{JVRANuhxZ|B-DmK|!Rh_p0R*oOZ&!R|LGYw_3FD+a z1n@3EoqAA;th!wQgX zC$B=h?TZuxc`p&~vauv8aRuVJX^RRaXHmUOGKI@UJn?LTSBrT27`!0Fn-fdaJA-(` zt`YU_AznPA-fP4wX4G4Wcpi*;hM$`;spZjrQ4rOngfOrdrk_Vhyh}@5!K6Oau4yu^N4!2h}UlzQLhQ{gu6)7_=I@dnWpgt@vbf+9g7fV z1>TRCZW&h*JPOhlRaxzTr@5=A={Vn`e?zzYW*#*~K(|7@h5N51blH@+9{fGFOxtv| z=p#5{uxFUefR=v)LZ^yFCAPfIf3k=BsOQF>3Q6ZW$gB19DLy$}VGp~j4?A@&VTt_r zsqFbf%-uy9Uc4?);DOi1o=J6hv-YN7ZPPmrmmnhZ&e6g}BCL1x0*Y_CCoqcD+zd>I z%L;@JBcQ9_yUUtvndu7k_Izh-TV(b0c?V{IA%AU8;;9R$F5;tD;GE&ILA~U?z>((X zi!%0HQXpa3dAhfoClbC}KwUG*#R4OT^PZT>-%Mpc+SfNN%J8(=&3cojD4NCX$l-FT z#hcb@8zqY(SAv__gi1@^1XRmDEXs&bO74Sh6E4!dM+&Zw20@-PDf)CTJ6?t#u1R;x zFT%Y)PG3p?qr#7g;opoU>NkqMTdyrDio|-SmyoXv4zD3k%sk1*#58auNn|RsQ-85D zVY7$AleZe;)!{D_NlfB-$mA0Tv_)5IvEIO&WR*)W)>}{NHC8~q2EnFG#{#lwj*BO< zG=VH#1{F&aWD_zaxPW+vnJK|FcpcYxi*zh;xP#`97wPwIBi?NW z?-k+&#FKvSBjSxIChrPb5pTbT!a=qU@urzbj=Ee#yrax?v<9*zu#8Noo}zm0-bB5R zh&RHFOsKvh-hM_sy?yMY>N2C4OsF*eVRr%(Qauy{Wm^z$7E#Y75Ajk7p49`uYb+<~ z4SoYjHPDBs7Z)7G?gZi(ys4J#oY%a;;0;DRKY~Zi83uScL_M2u#G6m>tn(2sojj~% zAYNc4QBQ(+^*-cbEer8JnvsXKd5HHdo=iuFBi^QB=?O}J>ZwTX*+d|on+f?YS%7#a zh)^3mfBIeh4)IPgcp}8ROLEU94)FpQyduQQAyWd; zV^r@h$vwTdn0x*NFJ@H~JNE<@B=?FCZ^wTm_ZA~wF@tA{cuyF-c*I-I;1wg@8G@IA zc!Bo_o&@pg{Yh}M5HHw*s8@}67ylz2O90|MVsdW;;=N^py9e=Bn@G~EuOr@hCikA8 zdiM!l0^%JCU~&)fZd;HE)eFRX&8W8$@xCzXSt8yyM!kKAr)1Q-fq1oydWaX;NXNU^ zBHp54YKn0);*GSFB?(&rueAR@>u7pC;DzoUMA zeyD9)D0&9!Sv3(ny?2m%Lst>Jn2;!T?(Mad8ED&&VfTBbvl+Z2h&PPEa{@fA_{Ako zHYtD?RLtO&1K!KW1TO>eO5PGY3F5tD@Ujr^_b~)-9^!3f@Qx$i-wd8J;Kd{{>ZJi* zW+{VL0eIVfHytZ6CBvD@3nBz1q*T&?f=$zO1FTnUx`4uW_;h;S0puw%^)~{{iueZX}$b)&QQ? z69(@B;5EHv@M-|>*e6Ck#0&hwjAI$3!`2WsAu(!sHfKgxp!jq6g&6sG3wcmg?_Jv!TWPRdpa8S zl?iSP;Aw5}BzRW=FUZ=I;5`DomwH0eiVVan(clYxB#5_s3&G1mylE2%-aN$n-vN?) z!x68~O`={L;KgkBEOE9e0=&$>8NA1Uw{0N76TJoXBs~dU0^*GcV{#AiPE8<#nlIwb zKR{Zp1>%|BB)PW-@U;G8@U8=1(-a2p3E&<3lTi=x8Z`-CE#eIdr>2-SBcAqOOuvVC zI~crih&P2%F9YymjxfQ!4S2>gOi9yt0eHnjgr;Sp_n@Al7hmYD_Zf2UC4(2UHj15l zYyTqZ6(L^X0c#unV#M>fNpdd>@U*fS_3i*(&|F5nmw@+jsF1W=#B=CF@Fa+LYAcg_ zi1+3%l6%#N_xXS|j~{?|>u)B6Qn`Q^bIG&B-KHAwGF=$;UIE@VF~Jjk0QG7GOzt7x z+6X515O2mr65JPvH}oJ0?n=bl!vyyn;A!1p)VmLOO^X@4*MN7-lu-}y0)<4qTEttl zjUwkQAl~VT%zO{=79J$QU5|LDnBbNGUd&x4_nrctae%4kQR`;FE4C2Y9@URn$37w{ zspsD^xwh>%c83-nanSlCeHiL(xO_9=CRGac<~{aQB+5mf3fX7GIrQcC^ce94lKI4T zYLePg_N4iL%Qgudu-?-Ll^yse7O*=~!}~WS>TC1zUVCQP+B^e)N3AlAi?n_R{x(<& zjczomz0d5&&j=RG9B0>=wK%Hgpz;#MdkzJTUu)`oN#co)oZLZeHO*ZY#cq`~#1ZWU z;E3a=gIx7}m&spmN|#W#K|rkyUhTj5C`}~^`tQM!M-rjvy546<`>P^8IlvI{mc)@| zCnbQFG}fMHpyQ2rLz2iIt89pGa_>^I$LcQPZTC`);JpG_yf2$d_UL~=JU4=ufOwOP z3EpkQ6Yr)XOd1hypFLR>6M}ei7`zLJH>^}TO;(5XZt@Ur3^kRmhj6?h1!~C~!IAoX zUXn4gkKo9Fo2F#bmf#yCswkc;PL9L^`%U3dw7dxl+?eF0h`S{D3K4l~$|pORu7fX{ zN0Yd+PP|W0wQISlq+Vi+Rp-W2b1Z2I?BKIoP%72lWc>xyZt)Q=dn1yHqcm8be)diw zE14^x>e8wtviFns8LE!IOTy=}5eod`Cv^IzckaBHWHs~0oXcTwX9`bF%in|79WQtV zn#r)hGc~4?Ep7?MO)QB(+j6qnF?@l?VCzBb4}7irD7qhQfCWA(C2z1bvB0-pib$p2 ze)y=Q7|R!^pUdaFpQ;+yIUs<2(n4}`sp8FM{oi)#vy!2Bop9i-1SAX|$M0<}meyUKMiyCS=$sXy-`+zT6GVhGRJQ@moU~Q&wa{Fk# zh`nZb*-@%;erL&1_IbZvy~?fB7uA<-_0DjR^@l~*!Ba7&L=y?P)~9vnlP?soE_pmn6%@kT6b}-WgUr6mY|AGv_^t7~hv^LZd1T zJp8<9W_tmHQrio7aRwPcn*cBRSqd3ILm<9|E6Vk(sb0g`jlKD-x8CUjjjdhT^S1}H z__^&SNZnFHwewUNpX|o7x`oHi{8+z)88CpZOQX7(l)-L@B&V6OK|1c!pgS6xsvOTh z34{&1$|Z@^91!r(b?*#ko1u^iDT~dV)fd5rW(fyY2R?xBU(@ICd;4en1sQ01jO;e8 zM!fwqW#l*)Zl9eSSuHLsTWF+yqr{xKd~&}DZnnxL1sZR`+X~*yB%252^T3h%`y>-& z!@!ZN0cOrIE`6Y-|C=i`auGEiU^n5UKC{SngAfp~bbBgUP8sCK?#~;F%B3#ULa5jD z32DNr;ZX0VrDo*(2VJQ5*cqYduEuugVf^RwRqYu|S!R!d*5G9O$M8v$9dkydW}w#-As*G@1A+Q$F%$c`Wx$`(3LF&e>Yq+BU3@F z_st`rsG1WG{yHq>$C1N(!QZUY6m7933H)s&^=eOagmA1*CkJ92LVw3G;kbo(2YeK! zGB3otX(riTX9}{sc`6iLks@BnGJf1*Tf|#-hN8ts5zk>h*<3ag@lw;dDmo4EW>u2i zOcjWi&Zy^uc$H>kb6GIf+j@p9V^CndG2~EIZC9+fIGt=-%*1+qE2VYvDyTOv+ecx^ z^MiUX-8GZsCYpmR|Gpwoll%u!ldR+m$hAQbwR305nI5%>*F2wRAPhphFC`4sMlmr z2n~Sypj$o&Me4`TI<4W?CkU&t-u=gwx=yOq;BUwWGf5P8EC~4Wvru%6QvuHcQ`hld zs2Av1b6nY1y}$$CNP+rTV5puB*@Utm1ayuh0y@lsX~~Eyl&eM$-moEESlj(>*_hkr zx?q9Z2Iv@_5SO6Tv)pBmX!$45FlMW-B)LFz;3|9WbpKy|%2^FtCm53KGP$nm=M}ix znM>98QoR|dL#7;fFUIvK{(*IZY9W{G<0F4kW-FiOf=uNBIso31d6`y8lrk=E7(Z>G zV^o^(7}O4mCUY3)rLdf@zL4r>8grDL)kz=RWrMWso!EVE^twzkH47(Hkwrn8 zGuX4rfd_rb2BL6ChNfxe?Ur&S8|sj6_xRNCB8D&U)Wb>sfve=LQ4G$>XD#9xXirDH z^h~mWdPoX;=r5ed;NdM!1CRSEoK1Z@*!7~jda>Q)cD4d8Ifcfv`yD*RE=GBgZFyk%8n|E~bmJL{{^vxz|U=9^0nSx-c~;X1(*Q4!XwU)#>vu8Ym3?rtU1e$#9F?fVkPH$_yWFFiViy`{_WP!%U?Tj<}tq~8tOUhm|a z>R7etH6QK3x+O3v!$Y=FXASrgJ?Eq{i9Zf}NzSUO^`=DV%U$2VxX_YH*b`UqU;F3f zSH+Zu`iXYmJa|XcPDIh%dQy3S?*jEU6fpIQq2Bt(z6pM+IEdZ&<>t=uTzt1vJW9u? zz$yuPtu=f3X^RItLTWW%r@D#blA&R)Ure4xucItiPbybZym+X0(rWW9>L;Q!jL|W2 z7nR|WBexdI{!+WXLG#5)vRTG$A-gGgePEgr9xlD?t1nr!Sp}~z;@6u?()3@#7R4{) zbjYqr+$=mZgG_ooakH?+Z8FTATg%=ooFw)ov#bYrjJ8fTd9kT>k>wqgxg=753bc{E zt~%~T38=H;1V3YuGwS^DHgh5h=xh+>%k$N~13GK|lg$k4|AEfqubE4->agCMi*!VH zIY%JARwwz!9$T>9(^b?p-_AkMK*B8VlEd`o!>;F!`~4J$HCQ-_u(mg)?=!%2Z;cy^lKdzxVU4EFG|tnF}h`i1ztMCk2M!e!UE^!D0}jgpumRoyAu6Pby#573LT@%QY>)JS$=O< z+ZoUu<=!JFAskI%cSi{xh#E%?NavSRH`p(=rQ{NW^JQ1Q}RH&B? z5%E9IkM$MI1%DshCocmdj{)8af~S2I@h;?$vkN=`FRcD9=`BwJUdOk7WQ)xmzkFiir0rhfDzc5wG>GG*q60c;EaK zR=jG&`({pF_WC1Uf{v(4F9+1~EaAub#vz{MDf2B7@ywTzZ;{UsuiqJ>-U`Iix<}MI zi+Ef8$*l4|;{9bo@B$F;Ai+yOyr(z$0{7d9r`JGEU}!|V*k$C&`V-k!ZA z9{Fx^5%G5UEA)6z5pS{u8IqPEUXqUJiryJiuaw{k=0on)GI){c?A$YW&)`j(1x;fe zgO`MO6BxWw#5>5~Jwv={4Bm3YOD1>;i1)ON;5j2+!ZU)Gfp{~Q6TCTym(Jj&Bi=j) zuM+W&Gk7l$Zx(~M0`bxq_0FPt6$CF1@g&a)UJ2r5FDGx$ybEVZ{R#Au=+k(Zu@MZxXq99xQ+FCy`Zj{H?r$Jbhyt`@&QlL*U{*#brgRP zo=daqo?fUt*qr^;W_sN}BhcnGgdk|Kg>$ZQC4}J7NgewfapdtRGFK-<-}jHju`6VU zG!&=VhebP1Icq(=bL~71>s+bABll{#8!P%z-=AjnnDe{JD*PiQJVTg6X8Kq-leud* z$#=Kgo)I=>>kK4!PyZ(RC56N31qzN8hqKZ?<0UoOH0C(Fu_WDFA?v8IEEi@+tIjG1 zbdt4zk0AjTQmjib{Y#FH!|CrY3fgMpT5)Vrv{&*xEu?K9MSoyPY|S3~bKX##AD=84 zLAZ4C<7)nZ`yAyT_8j8qC_4llr_#DCanI74s%;_MQe)F7;)kOmN{V9wDfTx)Madc!}^%#phMFl>X|Iq8DZy&p&P41X-x5fTA0>Xz$(t4lwLA{>GlSZ4((e1;%0F`Q z{4*WhHw5zMk0gC zzrfwlkHazjVb})QRB0i7OoX6*{MZIL>@#&Eg!8L?wn3&Wu1QEFkOO}hwuL+SrH=hO z_11l1tt{Mv@#6bmTet_E4UpU>IjQ;M$F`gd{J@X7&*>of0m)%n_s)+OltKNiI1axI zNyG83u@F7rb(a42^GBxPy!}ks`>R1dTVJEs!sq--{Wi$NMjgxZYB`yrvyS%%3HQ;T zB{E8us{$GispsVFk9>_*lKMa5(57Usz8AT-NEZY-`QV{NaJz<++DiQuqTae=YdBYX z=y8Vqs+;6w=vy7VcifIr$jN2vWE01!DLLatfZj`@aBrsUL5e3~e!_*EiNa>nF~ z$|dSb9%!&g_()p!Px7{Kdw!uD)RpXdyhhSM!manC$TlUnz1IFIy*j zJWj2jTy!^}R@zyu;avI5->$*!pvMk(dB{cOLG{*s>$Sy*XQZF(^wS+C-1=XsOt&lr!wLLl$TXbC0T~fQ$zH#HWExH@ zzc-^K8*;|Ji%MhCPdfcFBsn?YorSG!$Icv*ZQuVG$YWorn08%Ib&X^i=_k#9*tIEn z;tB?$?cHvt8ZY2 z#iEPKcAfc|77LM;I^>vd)L%qNhhHu-!{Un?g)_-X=qD4u=+FZ?U{0o-TF+Av$XYgJ zuMYvzN9tqu^l$v5)f^nVXS}|sY$6Tk$IHp@o%#507E*_foF7+B{TRDHexrU5SMSV! ztJ53*JLks%%S^i<;cn2=wH@3+ZCEtlC@UPRrsTWLft*L`WA}pJyC3+>>5%ZN*)d9v zxWxT;fYq;_u5DNx@b`$LWn{$pDOy{@Y3bbQKLYtPtG;*U26eTwf7jz!{t}2lZX2X) zYt*5m;#Wp9;XbpGH))L8u(&fmFd>;VoS%kmBTj*4_kF$98qUr&mqH(^Lw1-p!kL+1 z{QSSkC@y#UU)N5BTRGf>pX5x#37=S}s3pVV&u*Y?SZo-qD-e-z{~QW9%!nh}B>Q8c zl*9QY5Tp5CLtV>rBzu3l$Yk%3(VKWO^(K~oB+y|G$zEt;<9l`AE+EYdfRKHWt^u9Vy1yN}Ygv8m-!=uI89`I76x5xL$S)kgV0=uS@RGtX!8y4v=TVqIVJ z4jkUk83vw$sqNE7=hT3ceg((Z1qqYi1WQtnir9#8TaF=9f;&Qh}K z@TWg=r$BzE>FSV^vg#D=AnVL^o!Tk+UM_n`5~Jj2iA-npS52U_9i+2vcTo*T8v3hd zCfvJKq3yzbYw3uLc1}58#Z?mSAF=t~54;?$>-$V?lppfnW?s8+AATQb zb&Rx-pY5Sd$<}_|)5wE{3qZb9aR-t4($7ZHHeVXQegyNNA^qugTR+g+qmx#E+Ek<~ z^-waM44{yc+gx;=MiA_ub+7GK>6DMwb|^m8zV}V5uBgXx;Dox zgq?bB;c%>esL|E|4w>>WL8$I{i)~hmsCt(D~_i zTi@~~Pvqj{)SD4U+bL<;uYKQgwfJHCzUAK#T}itK#sxcM*Zxu)8O>fViF`+T zX_ud3w6&es9kOKg{`}qBB@XQ#EuW6 ze;=SWO%+Za8Q0F86^5P2lk%^L=Jymbd-VS(yY_gfwzofwF*OO5>2}c6uf!0JbQ78p zU4)P+LeWW~o8uZqgOqerk`gs3)O2&Y2?^;+BGN?(l|)IQRFe1EduFRytAF14yr1{{ z?AG4T5{+JO>?l%`=PoQ$nDE@Gons51Y8`fx3IgBmugUR~}lJPqNPV&A(V(y?BwybGYOkn+K#QN3B| z@3F7HD$T2JB!NEaul`P&}^&?94hzb;nJnut2bHKn*^vtBpNumYkd zO4?`yoNk+dTQ=^EM&8^Z9NN7;f=J-4&tw5ot?#=Cz*~H)(Ia#ar!NOX0`JHibybu_ zT%#oVOG_j{5%b31{s*vVW#1zSW=>9uwngznOpAXZW&`iID^F$1$tEh5%TvH>*8uj&;^3{31pd}R32}3QumPGfqr2z*eKXP@dzx!uh1tdld zB*oHisdDo3U!Z`5E`o2Rk;ea{LAWUSk%l^V(=o=#x zV|nS8smyt(2N!EL@rodYCj&EjUa3!AgTjpcDfAfNB$fY>$az8l9vwXQS3ZlG0-yUh z@UAJFhNGsoY0MNfmEmjEgnRIqW;{CJPEUvUuNUwSHtqqYBTGK=TZ^SQuP`AghP)#bmWj184WXx}Ro4PYLvNsj?;FF32 zJg}rk<$64hs2)`wi9x%##%YCE*w}2!JamXw=pnV!q*0AK-c)!6wHPNm{}9_AK1@H2 z@?7vZz!2lP{RZXZQ{;q2Qcp&zSmN69B8BlZL!OkCq>A~rO*>JKTK+NSOczwed~Y}L zI?$?0^*8m^?+};Abv{DJ1jFk?K-Nw)?`jdD9QTBpn7Q1oV8AO~BWjeBrtmuOmvtF6Uc6CB!2pUZSWS0`>lvk0s-q7hmeHmGgk z)*O#MVN3JiNQHp3ErP>=hL-@^QI?Xl(jOC)(Hq0`#Qe&Oc%qaqYrzd?R>F>@= z)Zk#849%dAMg85S^1%4hXnJH$vhsl+2q)P#RYdAuHa+s)$HW_QII={pwq@F`{WWb; zak%H23;#xuL+WG=!%%sekOJr=C!c1}wNYF*=|y1uJv6L-c}Q7X6Tx+YZ9wFBpq%0w z$#d@%Wz9hd=C3|b6?p*+;AWYTFJYt^T%of3Q*Nb|RfC zZf*8pfsYv6cM+1bk>(nPT`&^XQt~4}@}o?$fM`fvBT_Dj-GMa4UO7NO(jUq8ADMKc zJ1}jjlaM6YK6_}y^3kPiQF&JgHc%E{eO{*F2X?hk=9wE$N9&{V=9Lg+uZVRB@ASrK&*+Hu5sDE_IR@O(;s)DbN_!mGWWh}6NorwpAlfSz%cYxiXrbrT5viY3| z3RSY}Smvjp*9IJ?m`=zBchp(B7OIlzxBfunmn+KqQFNE6^SCG-wZJWnChIHF#NB&0 z=600GmcxG_a!;VfRMY}<4+4>>2sKs(Wo3cp(xs~?vB0^?dne1u^Qem?(r|lBbREbV zH*Tv*J!ae*+?grs5H}$%cvpypMP=(XoWTOiYJ~AQqBTMm%(I(DQ$=;KjNrgsIY zMuJRI)`jHc!UE+KR2c;y9!D0VDrVAaV*dneASG4uM7;cIDRVo@$++HkLSKliO{DXd zATbe6q*(nTT@mes5o`%o{f37B?<fZu8C|1H?ds$8q!cZT21%HWHQ^Esd$1W zCj#pt{ec~5v6?=o9>j;zT5>vXyqOGaGV-_R0O4%H>7>N-za{K=G%kfAi?l4_=4|U=uzD(N_FlFhIkrt!H zrj;fSL@G;JL3*g#lN#En#Sq(HqR&Qi6raVx6` zWn{CS741jO+Q@&V3o!=~u$t*9LPw@~O?P&K3Y|=@sbDpcDConBB+so=TRrBX(@DIj zu{jc8KTk>#IkMz*tH&o4tlqq&p@&)_?zPL%9q~(iNv9K36U@P^kpDAfbxj2JSBE|; zYKQ5lO5aV2(B5^^=R86y(cNp9v7iwiGP*PJ-|2o>hUD+HOgnTPTW+@&j$qS+GBFx)P3S}mtf)O{NO@t?W-e`EB3NC(rl|B#UVU97~5a`iS0j> zM=p>PddfswlU{`wrn1n&-^2p?D|2CAY!AlEW6sStA%2+Go7JOy9_=Y*pR2=DwZ2`` z@k|A06Vnb&r<64Qfkl^kG>lKk(|D9Ak=W|CHX#-nJ^iVncM=V9KNdvKL0L4eH>AE3 zZTaA-s&E8gh-6sAh+a=S11wr2BS?lf=sp6Phc^Hd@<&>jyQ4KNPeB$75E=O+>GW0m zRPPC<^@;SN#I&A|WjdXr71k?Cuabt{Xtt@yjX_f!AiYSMj_Hfm>#SOlpMRZM=FC)3%<2b*VXN zsvQ0sh@=2GIi19g_4S1yLY@>w5-qz;9|yuFTkN=LrpY^xzP;jh^h#7L8QtqY-oTz& zcRTtmjP#JPFhw&oov+B#qJK}~afjTabIlPcN{IAZeSr~^ilgw(HK1jR!meGyadTfve&)Ad!84Un|g#Xkp9xHgG_5wDY%v$LM-O0_SVz` z+*tVgigOLi=$NQ8GDBgr0McId#aQJ4+NV){@(q!?luhPeuQrALQUo`?N@flM7fI;^ zXsBLG>~Ha;Pd+S^F|s1sbzuW3I&JH@F|qtu-b3@V8LB zAocOhA*LN#a*d1VsE4GSY#ZTDKh3F-0GUbMP3q3@`_WraA{&cCvreGWTRBx_IEotu z8clLo^vY^9^}z7hnH1(u6ysSZb?`m`0>4KQ1cqjd)9VywNjPL7q;gK$z>?IC!l)rg zK(QxK6YJC!AG}ZBhE7NDC^QReBdj-3$w1S0)!t1-pLBV&^?d|EK;hVGI;Rj&0cBQ6 zo?l31x?nud@9=qkLIF8ets2NfeFS}Qxy>^z3fv>cm;WImnq&& z*L9fbjuH8$LpTKWJ4NA|-kzv)tS+ZdfCe6plot}`_%pO3W&o1bu&`G#`4=s@sy2Jd}o^B4Fj7_{J{>eKZ~$ULr>E*_0aU4*zY0z?tB_ehR8{~!#-ltYw4)6>t8Td zGT1V4ZHCuPu?rn43q!>f-^KQLiE4qLY(~`io!l77}?~ z_O2E=EJHqKftfd!GW}P~ya$-pUP=#X*2MEabBv%#0~{gwBN26uSkn@T>lj{2|{3^5;)WX#ak2KRxF`Xk2BCSI{3juh`s#wlBO*g2; z^Q45+NV7Kh5#0xZ4oYcB=?y9lBertTD9b`}@`baC9@?-f(0NBBpJk=D#LFxeGixoU znF~>~#yb94h*f((UDV`Fkf#;?P9*p8BRaHo$>L8&O&ATUn|rvb9RG|gcjEeYd}tDu zP2(r8GZU7eNdA9kaU!|5KNI1bEGMgTG;LtNi7b&$k8vVzz6%p!n+M;!tDHwOSzQtzVAJ80Z<`t$&F5m%x zLgbGedH$xE2NsyTyu!3c1;bjit9~)?TxL4yuQd%(cjB)!n!2VohI&b_{ z(l7_%^8rT=;xe;X9699R?ba>kT{uuoeXD7TB1Y=n?Gve`%R|2AV3RfNM@ee2Y8f?&CC6-kSl^MXDX0wUq>L<(v)@N&Ro43%CaiS*x~q926d0rti={$+in z1Fa-X^eAir#rsKHob@VuQn#Y~riER9^fq>l9 z6G7y_%l`~lf!;ithjgHjumgg7ZG_^;%H-f~Gw%rCB&D<@C)X7)cWy&`Q(RjY4XcCi z`KdV;-F+{9R2O~B9c{sS@Ke(;1l{ZRv5u}g1x8A#gk|!WqqWIC*Hz0*Y1RgPy3xkiNo9F29H7d@EvEG z8)75b>g|yWxHOux^mbA#+h>}4Tcei$)E#Cil)@?bC0D#;=r<0=%$_l$3_rj+Xh|hL^x<|2Ikx?Na0Jd5s@>(71PFeJmQ-uHUO7M!l`TtzB+E$|7r9b0QoQO6ifL z7O&hTvOP%5X!cEnMc*;nqlgVtbZU7BE#v;x7|pUm?A4`=jRbCy-8VEVQ6&Sl{E27U zBjNZ6Spi- z#MNlR_fuSYvyp?fG<;7{Ne+e0s=vY?FfZvX8#&k}we_hg8K_27=XLNg4=x{Sj{6@LJ2)<(}!hUn^u z9p4ktlPr;!wuj>z17G~7f;XJZ_(A{@Sp|=}YfiXP+3nlQp5mCFWzdZWCJ$DOa>M#A zKEIFlMWZK1S~v$QCN96IauyBo1j%3cO%USAaMGxnBvMEjJJO9_slhuu#ctg~jFUH4 zjpCt|eQ|s%9+(I&glA!OrNYZ9`#X{4uCDpQPe5(U^=IbJl_)2VJ;OQ44e9Pbv=g!Uy^aP%#Pvl0=Ss9Bv49fU-dn)MTBfG6pTyB(CWy!t8)` zn|VBzcId8U4u`Y@B^RVw^S#wgb45eEGoho1%pOmMNV7J2EDDm-Tf%9LKsFV*k=h-Y zucC)GaGAu>mSH^{h(r4xNxG7vW21-+wk*&0bka*;IuwIQ!SG6m zz^8M+QUyCWNZ|IJzXFwBN81@!u=b3GX50>xnDyWm^;703yk~yI=RcVJj0h3b0w@Ma zr1!}~6|7t?IQgBA@w{Cy<15yG)ziW}0tpI=K_t)PR`zf{4f(|&l9P#NMiKd_nbbPS z5xDN!XS~rxkQae>vORySav04^3wpm7WulyX={e&oX7)F{XWAS>q_<^X52pbHgCiwK zvfSrKSz<{uzc10pmm;N~^!pKiC|EpI8Tk=87L0A(jc*02^qFCg*@5M)Oa{7nkb9lzR%RS@_;^s`h{~xry9W;<4rY(y zLD*PG4J22m`wJaAYRu|o1P99!tbVSNY>uk!fo?g>DJKWa@WVobqaT>_Q7p}R)KlmT zBE*prM6S-$+);WzkvgN;uPge^Qpj=9e;=8XH_8}IdWgfjqWdogrI#Ifl~nMVG8510 zBI;q*1k~Q-Kq2`lu9=@p5ao+$2;itvAiMgNfysugoPV>SihR z@=DPXRdd5A4-|ECU4BICq2-cGyEfsiO_uE{*WzLCgLK{!BAtKAX&E7*K}qS1tXYb* zElScU$`itN?i+LQ6-2?gX1$yNka?giAh|l*-i}(2Z7(wHAx^rGg{k8*H*p|MD(jx+ zd?r$M2q(|{#G^~!$1^Ih_+@-I6FY^;cV%z=d8h)*5P7$C)be_8^dPL{PmX9usqP^v zlCsNPowq6eDdccueCYcw6~j*;LDHK^P9_fMja;FN;5v&}Gh%PSty6y=DbVcYV}YAv z;|vkjJ$UU0GZE|GINV!^ol243IchZ~80UXRZv#1}=FK6}BSDWhspf;Xm6?uxw@Sud zr1D<9wl{LQ(Jxy`0)F4N8L@V-Vv~QLPU5EC$aGyAO?LZ?_Yak^F2G%R$xsQ44)#Wl zg^@hz?c_7Bcg%?O19GGTB_90bPi8ziaqi>Z`n`~g<4Et880zj(_RVlBH6LOfxqEw~ ztBY_HQvxjvv4}f)ZJ>nm-y0pe!eQCTJ7AorO}uX{6ddW5g)UMmWhR5P4vy=-3Qb z8;Z)LKq=Y++XvL{X-|{`gw$)u#JBBnq-s2Z zbr?+wS?kaA#2~??721Bl^O-U{?^I&^jWy_=@zxe%?ZLjbGv)C1;8P=6i_vPM*llLf zaDbqYw3hy$+IVJ_HqpPqqb?CE&fPSS(I0X+l+PnA8{@)JV!yMj0N!`CVLVkC#I7|6(~qylg0aw?rQ!X7b+wYJxYBKT<67{j`^VLW6o^WyVevHH|Ad z%2C7;fuE-zPu zwHO6~ao1+@=};0?mX0K+le1oXIkw^xRTze_XH&L#ni{6{+LU&75*KD;&)I@U5@;&w<%vxR?#lpHeSv@n4V$SjNCT#+`@F-@GBBZVs1DRx5 z=u*8UEek7D**mCVz?*FlC!d6-0k6+?z=_n;VU>ai*-PI|icpJ|6=Bk4{Z4xNALRU+ z8Uu?CZYHO3Fd{cDz==%UND?V482%0pSr{jmb6Hhj3Mf}EA=1u@zZfb6U>eCEDH!Qu zZDMCrq4XM!G`~yOF>_H5&N!FmhlMb93)RNJmU*G{Zc-W9_v5a20w-nq6BfHV2x|au z0qP=u@Gz zZwDd<@WFX)wO4Yo(-FH3jj^yqj+|{QP2=5w^DsjsOoRVVn96^LGG4*R6MYu}qQ~4% zi+_k7JM+>-O$0mmj!FlTt0S1Romd^&v#Qd397K1}Zc^_FtRXo_%d77>tD>ockm0g%mxcGCmrL0}`tjX+kV^`|7H89L*#rZr>iY53?8n4nzm9kXl<(g#7eb4ya$| zKD3g zgQAo}B+M8b?r;T5x#SqI2Cqj>i1qEUYQXkcHy3EnLDiN!RGoqCX^n|K_Hi?G?11i( zKM4r*BW#Oob8NNdE_^z1HysLr=dyK>=Bcd1Xx6S}>}EY=Dk9s zSG-t*u>utg_Ss{274J=u8nnF9Jf!rHDwcScXe)-hF59?_1oz9wvp^>$-N4Efx zl(3Li`rrp`8#I$Fey+h-i4qxfjU zV2poFSR2J>@9M+UvYyjuoZmUg_T4RyRg}_N z9f(||tW4&cv8+)$&~kNl5oUWYb!mHJ-6KOr#TdYujNT{}dcF>*$`*SI^1D6?&xJGy!kX%2a7et z*<%?cAd?h>NN_$W`8W@21zek;Hf9)d1_(QB@AX?~%5J2C;{j}^!(?j~*2o%XJNGDP zw`{Bt!`1P??4;W`#u~I>+C>+5HpbvEy#iJRNyh z^lfUx8jyoTZ7n2wqCReO!obh_*baw)Y1d z{v(~XkSri_6QcIQ*-A2KR_x`-nT4K5kz>Q!wh1|D+&X1$q#sJ;!HGI>wx@!SPO+Cr zBd^zrc?oE?p1MZ1rIjDI{{c-(kmZv6i0O#KwPK3AgtR%-MPg)Q`Ee039jJgyf6$g@ zpR5-D1A%{R8<-9%7?nPb+P9!#1~S%?A7QL!*s`q9gVWh^-x4M zwv3z4vb%@uGV^^iw`k7@^mGEx`K&=G{ImWrx8ZMe6G4o*j&UOhIs6~_Bjx<@_?YD@ zkOQTIx{u?hq(&T3gN^^PwpY-dAb%aa*l_6+0WlgL7jJUJzd-bJK5Gw(2U-~OJR87b zDD~Y97Ngli#}GwU+=+TI7-$h}O|RI2R`V_YQ`77~EQUaDzXddJ^u0y`q;ETVV_vMy z8MnRSvGe4x4(ICSI%>vr1tG;rGQvvLW5hz5T_~LmDZT0Y(`nT(zoF8LB(mx}ua?~Y zYoNqp`0Tf+8joPqv@%COtmXBk3u{gaJWl#Jn^&X?5th32H4rincPv_|qm89I zdh}wh!*ZYK8whsb^O5wzd!WWLL@vBYs2H-`yY|bcp`2t@IXYu$_SK77^AG%*4N0W$ z{CRw=!#UAchu8|oqv#=xmCFP|#bk3b?6c{jC$N8(!bT(~A6-%#?gEUEm)tJlWd8oB zWvHuVJ$2-*Rip_id@N5GD;-x>G?c32L5QS3kltla9X+tp##C3<)+0zovSsDGqlI9l zO{kj*p6^+s;|6H9n7T$zCw~G%+lEHtNH3CtaVa-li0y7(k*&5DL$huBEfi3A<6Gw# zUkGTHE`209onBWw4CHQ^cND7yeDl*$M-wArBYlPvnyjn7onB9Tyapmc=?@&l!W=bC zG%=E>pJXvaA33afbSRau{uZ$gt4AkMEg2COVA2Z7o0g8gEKS=NO zTs2V&A{YXA+7zl4&s110Yq@y5aocNXk6l?93|m*kk+GwpPabSH%B2>)SkSQg&iuwZJiehC;Z5I z#_Dh#LpThLE;T|lQqC(37`MPPa(oqYQaim_dr#94j4{@>r~%yfTj?Vut7GiLvMWbdXYjlQc%CQJhXn^u z$(A8nCfV{GRgl0xCR2xqsf(%i5Ua!eW*jpfc4P>p7fE4br~P5#%O0wYMJHZ;AlU+I zBuHDZ;6NZG01c&&l$hU>$x(2EjjXqA5iBUg(pH~+S)@S2 z7bh{W{X{X@8AN9+jV>jK^bt;v)eO<;Bz{f4{u*G|a_K-)Bg9J=_(cE=1L+`tlIiq2 z6!i)n8Rxm60-MgN)r9WIPN!tI?NMxX%FgQ;q8ShI(#bIs(A7yV&k%kEBrjtMENj$8 zqSL9KcSs)N`N&lZVlg5E*RbxC(fU59L;B^obGD80=$GK^E4?>J!RxK+DS32J??{{^HOcN*A11@-0rALRppQ z*>2p)^YP5p&L$mu^xztCw`t6r)o3f=(YHEo7>h=k;VkmX`~!;|KmUP6XAeichEw1u zUXu38_wgSl{=W_Q#N$@XAB}x=C9ze9*s(H`Vg{+;d1f(p7a|@!F*lR8Z6LbEruNUM4371L*_>;YiIdWZ8G-E@*`2O*G#r>klelC zE0$V3zlr4mM;ghF+}pe04mMIZmbDBU={wU2ADI!$T8@o$ob5CfpSw+3)NSs-cKu;w+5)F~Y(`metPx-kCVgyX*ir@$XJbp5sBtU`n|PF$(_3shtvgui z*mTkzBC+WtPT~sX(2?Sc4h`7IJyW==(dmeLXT=!RV=S7+U5}3BI?TqqTyDPm!^Ar^ z*hZ)fSKm8kfyqYHhCj&L$=&!mTK{l}RKi%Kb$~Stn>cg9=z-YCj01m=c8l9iAF+{I z2U!~EGkx_I$l-54c98WKI8G3 zRxc>R7Cmt-cLz3-6~2IvbIB-$rHRgnwQGSV_RKT>xFB%@>~Ia5RCyBDi|ZzALsUEj zOETq$!KQUednIta)#=W42)krL-4Cg(!;lL#lsXX!zP-61auu4|JsQf5jYK_*b@hTs zB}eq&!4HR7kI`p}UoYTu|3aWq?M80A+(snm^KAq1!2DX?5mqAlOxDi@qc5P{Sk$|+_Z2`dYZ{~S_vZ+r3*x&N49`5a19Eg5>IlM`_PdS z-ew3Gr(oh7>D}bStxkz)irDt;FhR@&)M9@=|A&#{Y(dN_l$l<+VtedkF~N)2$Ndo3 zFX$FWrGx9|Nhu;FbEK!>L?AGe0!Jj0nR=R)R6{E)q_8VFGVCA0lZEK^2k~iE^;245 zyfpkFWw<3ta1;aW4=!+>S3!OQ3QgpX9BG{{_=7p}J;QQC1A&r@f+DQRb5Azc25rF= zcQ0gc-4M24dMU;~{&nAtjrAo8PMnIu`Vwn`1Ya?w_n3o*y=RpvQ!Qs0dL8YMRM4uY7V~V&H)iBq?kcQ7Afuw?(AQ| zHmSKcFQ4MUvFEbs8eRxngieS3{;WJSGs^;3`8q*7BdieGR#e>20U{a2&pueJQ467 zyUT*(s${c>zLQ-Vu(Z;)@w%pHT1otMdCVQOJ~A%tv=B>*2JU0S_p%`YBKeWIuf&w| zc>m-W!NPcq$jc>o2O8JSMGpHM$xU5dOKfZQ9xsMBZ4h0`=_llzVRY}koU z^Z1=ecI|oj;aH=HcM`j>5M3Rsg3}^wySLi`_C<7c*ds4o$MR{p|12b$7-d)I+&z{H zx;m^>7ddQ0N2IYX(VWARl1_>cH)RE*3|pPYr#&zt?GLfJ=)?u!gu>x`RxeM~} zQAHY+93-t!a>&91m^aZXC-xx7me^SDU5c=N_@`#NQ&DB)R<2}V=Oi$?{~$tzN7!%# zK_7!8a^7el~$y_+O5s%Rm;?_=2$yh2f;>`G*x`YLRs#W=G}*Am;mvt%^`lA?&5 z?> z6}rwGh?XdOL;B^ft7G81t~8lY;!@ffKR~}Uy7X?6$Qu{gC)80+re3~|^Ssq?2JMznoV2EeSy)>*x0WS96{jWBbu`vk+YqGd&4qK!WS0Bs zT87?Q==PzO7Fadh@nneZ9PGfTpKBS|R!6H>XX3G~jx|@=*nUj*$!rTP)L6BAUP$ak z5=!SS0m)xpu+&oEij+!82-E0Vgmt$@hU=Qb-8@QC$&oFsu6#I;u8)_boX14y+F-V~ zW?f7v8s%O3dBz@dI=l)te&*P~T)fMD@ytbpS(BYk#9Njl$hl1Zfi={<0l-zCAs~rN zJ*Ml8edv=r*1bU+MoPsO?ts-fdR$jsn~tE7q(H`TD@1LB63$lK1AU@oh*aAs1&1OR+buV0CRiq(bR|fQXrH%eD%QoF-pslMpT4aJV<7!Ohsf-Hr8kqJUcEjys!|I!T2iwl>8z<@?+pNlNp(z;sKD#USCP{Dv5d}*WLZ-Nz_d|J*CSDqALg~ zvkWT$dl-Sp8OWx;#`9-Iuc7hAr|*%($dn+)<|)W#AI9ag@vwJ^(jS;VwCGemV(%ip z(bIP~vFOipuM^+sq4Wn>Wq3T-b&)pqrLc|fSpCrH#09!HWI^prz3-7AnP<-G4oA_Q z_(>2$0hP?eytDNO0PiuRcauckf6R`54n#^dpGK5ltGjcrV|}xgOBZ>+1(s2OQJ&!W z`1iyHD>=WuyNMd{7WX3lAY`9W0%F z^vSa*hLOvEe`fNUMRPENd9{@V->>h(LnMnzuDbKFrnRDM-LYQq?HlP6B`o?8%uw_~ z%%I@qS>bcg2+9(WL@s{L9zF~?)ljf2Prhml!Xj?KqB(Cs*yN?}A%$)22iCT5gvgfr z?xX)h6+ALmR~rMXf)ECrn*n3E?TjS{&x zWD$O_|IZJsxfn2b?T#M>aQCV%b{Zb{NC@nU{H0^0`Az@w2Vr~pf~~k1$d)olA{e!K zQF1^eWm8EJs@$+>>UEf+jM^S;W5M^oXw)i_%gy@i-p~(%299*vq}R*8rmGeX-c?6> zksKNK#a#}AwV$r(jtv5qQLL0B8WP$=7&j~tqgws*Z2VWyPnjOP_jPRLsdDm#l%4>+ zyk*h61~oMWp&l_G;?OuF%>z?M46=#e(O+x!Erpqbd6PU&Dzh$>`hQnnzG7>6fc*g* z{RDpcpu@D`aw0kVJ6ZCyF&-m4MyJjFJ~~d+kL#fzRI=B5eWU~XpZ>n;taF+=FA zOLZTNdnT-lx!rlu%(lEr{`+Rh|H{7pPuTa?48@22VJ2a^rWu*7K4FK|oh^rG9kb1ovoJiW|vg4aWzFr8z)_eRJ$@29D%CG(<(I*2TM zY?QU-M{cv5UU_Xk`)%QbopyFB+#s+2cWd9Qo#Z&puG<;T-%jTkf zv~ePZX|*dJ$mKq)eSLnTc|>WcUI}mD-_u){T(~1=_1bHLi@Cvte)47&K1Mn3SL~t3 z9dGsw4l`ZpKySI%+}@dMGrP3z^TcGUktZx89^ZWLf9iu)Qe(#_*Ci_+D309u&Oi8? zAS9u*{oB_G1{dbg6Ys1u$+uZs-S@79PD2hF{%6ayS6r5PW88g>!OqAY}G0yR`M)&&?8ygopHpm$VcfTmJ z`2NnS{50m}JsJHRVw+>tOQw3$ciw5sJ>dT9==HDXB}evRl^r zyO@tEX!P2NkoUT9jGdL`fJ#*-UVnS0c0FzBP}a17t6|%E#?L=Eq(FWO&P=U?%) zH8=^BzFR4+fS*3CpCCC?%{WrgK%TGr{i|EX*5<%zchv1JlrGmeVZ5jUgs!eN_=&CJ zgSvI9-L2-j+6wvi8jSO7;DRXhsjZ^qpBKh67O$SyaW+cTKHZ7?sw&Xl=PajRr*>k= zS7Ud++KH?NM~2D1H>@$dgWon>)vw|=PlNd?K0I35;nOw3I3lmM@$XcEBf)v4|Csc> ze>^;*%>8}WdRvyZm0d#Zc$2qo8PQMLK8@VW-Ls%mIJs$x#*K*Gk2y};QqmZmo&~p8 z#ZN2KkFE@W_m}^*BsiL+^--jCz%t(GiQQ&PeqC718%17t^ZC;iH?5?*W3Tt4^%srI zu~FImz{{wg*ZzWMqR>$D`31l{Q!8aXBh?`s^&7nZd5?%M?ff|0T`T(fS|jgd(=n&) zRZH|XW%E1QHy)12A3@AeWfE^ti0L0Fzj|@*(o4Y%FhZ z1{w~c_ZQV%)yqz56d9S@8YJ+8LPn?<>~8ilnm&KTX};SXOC^|L$NA?=_D2I7^KHO7 zpUivwp{sV_-lXD=>_dZ{(>^auP_>V7+bWrs7Gq!XvC`F(PZ+O^yww&w{k>MSb%2<+ zb)k>l(A7m-mbeUNa4!OkH1gUQdQb6Su}|dPD1^D0J~st-*nVx84=K z>HIojS;E6HgN*0DD^-YE_|kC1!xYVe1!fZ6HNFW7q8i{v_Ef2s^x@Evr#-)_1@@&CFm}&quu|261Vvs=faO#>2ekt-!>N%~x0Y9)fYYI?5a@dI+Ns;`ZH z{`vA1z445FxusQ|MkkJ+i+;O~)E(>PdwG9L7yFd)+zAm|?=@W{S162k=Cp7`fZAYAzvjGixEgbWYMvivoyN{crN{TL9>6d(Ruedx(v9_)~s3v^v zo~rit13&jS<%!m8S5Dj7*kqJH$)LQcIXiD2^X*HpTaDjLdxFb#7-i8C9vue*kSfy7+U<~hDjXyDIMP}*RuvJSA zmshO|S+zqsuiVRMuILG24&Hi&PH$Ddz<=YH?5;)F&k3UP1F8CX&1Vc#H8qcwF8AjR z`nSe*?U~Y0@Q^egMR4BP&rcp}nZvjgy{2?RTh!$VTyOXL*>64n&U?;S<7yY*ZEFz1 zf9J1h9FhIZbIOQ|153+42S2qv5(4O}<-?`!@Q~<7jaQYOk{8I&v)nb&L2;GoAP3Gc zGm&l1z|1E8tB^d6;Dr8if*bAr>uaO7)_RqA?BtB0HI7zr8a;ETN%q>a$KH7}7%^+M zE49Mg|99ud{_NsTeeY-f(I0%Kd<$QfQ{3u5?Bbd-e!#aY43)f6V7C=>PgCb3vsSHw zHg^{P+{Hs~x1z0=+aH)z077wj>5ZtcS6SVb%x#U0A4dkxuX-TLK9tJLuk}(j zeXkEdG3H%o$aI_eyItGQPk*it;4`+k!(X>mE9uk2sLMs(Gss2jey5yW8eZ$YX@1__ zw(cp!zlJ~dRskaFh8<)9{AZ8Uj5D`3c1r&m zs$r>8TJ9A#Kr=Wg4~*qM!PE5C9jyxZ?s|B<^5j87)1p7L8|N#9J#PMJqG7oynlu-g{f+Ha6~g@HWsMlw14hlifbTguUoT{9vscAN zJ%glL0N(#}f+l3YZTCMo(*E{|>B&L&GwsYX-+fpd#&`96W@6IVk#~7O&E*}O4%ZjT zRWPSgC8Nxzo#(H@#lxa+u6FD48())uz2$^CN9b3%e#{~Ss=0A;ibjTHGUO{H6ww3! zZnd7luDy;@E~TxWd85g^tD9&r3YB z=hNo%hwMh2{+n?4V9pxS2o)3=NB=Ck%-#~rf3|Rt@$96h?;m}wUAwjRHSi@l`mN`; z9Gi7zr5&N)TR#AMOky?nA1Up8MA{a2U~g!+vO(V6Go&NA8)-GxIxKdDDgbzN=osDz z|1jm1TRYAKKXuPk*zXa$WegAr3n5lMSNbkiu_tEDDkZ7mB<&+Xqw8%f@iH+hm`zt+<=iErf4_?7ra|( ztgScW@iVU};dbLsBnCe#es4VDp?=;w5iIe#q}tADwpm5F{M^VKxvO&X2E3hVSKjd6 z?^?Bfc~e8cLC%wZc*j@D8CviXKRPFEt_qr!n(A9&52`))3L&Gnq@w;$aPIpIpl|=6 za>m##HA;eMow|I+Af z%H^b5%jloigD)N--B3@^)@O|o!;EX{s@Ar5|Fq4!>$P#|6zN~YznKp(K3m%8HAO=K ztd!`1CRmOFpD8&z+M*Y8ocf>Cox~sKe`@U7#CDzYyzP}&7bREGYvQW{rcO^;S5*9= zJw@GlIWfnqt$Gy}Hjf?z1x8;lx;&0pbE8|0}l3#I>%){H;FpyG(f8VN580@luonYF+VhLxtCJ!w)CEmz z5dHQ0>mZ}B#vuFFx-WV9;|E;SuKtv6GEQW9(n(w;mwTXUt^d2j!3lLC=RLN|`zV3} z|MPZVRglw!yP_3YYX+wJiwV>AyB;wv6?gufJ1MiY>chlF(Q(6?j&HdSB2MU*b)SB4 zxcu?XFKbf8#*6-&)lH@)3O@MdJ#V`(tNXH@Ao-N@F*D%6re+@#xY*S_HafY;yS(Y$ ztnQ;{jei@|Lwd8NAy?c#bafj??f>JT-=8!WJof+d<^AQ&B(F_Si2EbW3;KoiUEi?& ziTlsWs=(l!y73wh)n;ul2RTz&>hJFJV&%>+8?UXsxUS%JZe_}(--IvX$fTNVV#xiG ztqq=CnkN zJB?Eb<{XczkuvAYytBGxF2{an-Jfr{5vg^o=Ogi`@V&hM9$f3$`_4Mxk<_g})>xa= z9S$&}?>gb&ml8Int6SmvLive57?nz!22HzXFlg`Qsb#-iSU0*X%9u4GE2U6rQ>1b6 zQcLBId7H3Gm6TV)JNU&Qr zs1!7A^w6C}+=TCI6w^z`?6DenV!;i?tqiZ0chT~m+u9ae&fyMx5Ugf$i39gd(?F5=Qz4nXYbO_}o&pB8Hajl(7RVicz z%%XU^!@J#&Bz0dDntzybqUUURsl%0H{^ccUp4lhD_yQ?rZ*$0 z`E_wW+Gk;uyWcR8aM){x_FKjVIo3x0Qeo86kHdD*Dpb5v+`Sjoqz9jIUp?%zP~Jmz zxQH`cNl{x>F-DHHrN~n#zbt;ZNHkneQQJ^)ryOfn(LX}@<+KqZ)e)A8+H(~5%CQoP zmh*U=&A}(#S0z3B99-o7Z_@KgArIVxl4^rO8r(yNJ+tC_FM>1)iBBLDhM7;kwXE7DW$1)j@$~#25)79-BoW)`+<+(zde7|M%~*Hp5~SFV?yST zhvbMmDG=aG0{cL0easp~>6>A9xbe0bJnkYLGX%l=U9z_h)t9WUp|7j4y)@G#JFM_!`3)oxH7|eFiM? z8#Bj~FeyN6;3vFa1QgVI$@5QvjOAX~kZuAoXYGbUM-Vlz>-*lARHW7tBiv!^TjjPy z>-1cGkgUM1UC-Br9E8*jJg{>4#&ech^80kkf<(q6>WJYryko=z$s{s}A0%P>|L4h( zs2g*$anI07y*bBz3^mdyAT(>u@O~0yl^bnaU^!>-OXGqVo7-Rs>YW3l7Q^eD#8i~W z@0=2=Up}Ott5m)F?zmB;b*A~&CUL4}s%RldcxqiB5tc+-r#otF=9VouUg#*XIx{Ng z+~NIDsZdpj)a;&SrkB|Ta(Q)M+RaA6h>~oBR}Db*OZ+3L%exuN)Mmpm97sv zqE+Ex)$hdlt)-=3I`hoi5*Ul$H?LcNg!{zPUlXJv|Eq0g!Lx9P!wL^-ZFTsk93uR1 z2nS=dwLntxiCk~@@}i-GmZ=XJEh;(ub4&IUuZj8dm9;H46}!Gaf6$Kk_IzeR!-UZ9 zJ2JYq(QV(ZTR-ox`LSlOBpW^*vfGqR40@4C4;)m`+!>O06CMw_ap^y`caE@a8zNT{ zTNn5}uXb-{xwi>lbo-j}y8NWQZ1-dm9^O>s&8b6FBe=cz@mAftOCpK@zae^MFpEmt z|9xt!a-{Uf(7%YB7?BTQmNmX2kRO54H7pNH!oP9<3sk!0*|kmCv7lKenHM9I8eg41 zq-mZ6HUuOHvPWP6O)PGD=ovsDORAGJISQD2gyp6Jen;?uGA-4Mq@w5FRBoyZ3X^6} z{uSLdDO*7X@p?}z`1>1=vI6^61%df`w(tsq1=Hz)E}0M=k@+^rH3oz^+d*XHzrh8P zkfUvR#)ITaPFJlCmgHxq0PI{p=dpuA@*39$&);GhNg^nu|K>9aE55RqyF_e@AA7?m z;^i0x6JAnKa@ktazQQAqa!Qvu^b3RAArecIMq=bYzDQ?YJel{@rzxw4+`->YO(ff8?#WQzBNpuIM(KEBD zbN`jKlam?)pnzhM?ICg15S}{6Z{a8#6AXEjn{s3UW4hj63)Q!S224L{BHk5iKjq2gWu7ZxRr!3s z(5ET4vfl)T)`Szm((g&M$Bi44G%L2Gf)+@0xC!c;+s7Ib;`J*;)F7kP=jlYq)9M+V zth6|(!^GYP!c;4j?N7bzeU!%(lm>wEK=~oSL?D_uPq|V~L4FTo@xC_`xUo=51z+t7 zi8^qGgT(`m^+>{ZgXw0OB&TN7^hzwrrl-x*dj49GSsXC5-=vz|WclOgc}OZvxo5Yv zsYmUU%E;E+WOkh#>3U>qd87H7tUdLHN)<}IQFE&5XiEH%r^ilJq8k?%a4I|L1LWuE z_E#>Zm3=gbHSXD`FkAt^rOy(m*=!ba-*=|GfV5vDx#VWxx*BpEWc8qXsR$N7%`q~?*Bb}<_p78jg+jzn%y)|IhuvRh5Rusy zC~@WAlRpY|?V2Ta|9wB!qe6uGul*0e#XF6L({8p@4apsOtmmpJgiQ|zmQTF8e2>aV52xv3dlE|6*f z0k3QSu_z@osVO{u>U@LpJSzX-FXiGCqVDcBv>#ius_Kh>T=l5dO~i}FL3LngKP&yM zcXbvXk!p$rbT)yn+-_-q!ga?N$ptdDejGWgTLNwCNLF@i+3mnE6g( zU^m@{dc+c~t_8<>){zPGt}eYzj~l#<25dGdtqYnO3p7a0NqKvS#tWcG`l6NJ@{|n{ zTu2F!n8u%5hp+QqPxXC!nu6)A6D4jMT;$TN4>0ed6J41rjC zDIBb84?aN1dY~kFI3uCnJ!~BHix8@PjzqacGt_mv{P;q5Gcp96O{ z`)oMKupk;I@>7<5p3AD<`XEBWF)~2TeejdWnRHP?PSHjL&r}3Har#D3s}s_Z2H^h7 zyE!1NhckK4q!%fzkUY#FHwAEGk3Lwhm>%T>SJI^r@r1qsC z(R&Trik$%F4sM}lPV3gbD>tmq*7kn`7Q!^~K}gJ!)kw&_7#r+M4(ttZ@IIrM;hHMG zTEd=$@5Z?P3yE0waM7Lyz|WVl!}bQr7e}z;WAusebvEbYGiKpf8ubqTSv*GH$Wjn17Q(nydi! zQH#}LMg8xrC`iDIjz%dx#w?IRn-m$5aAhx9FC5l^KNL~?6VV#50xi7Mvy8bOB|1p* z+(EfeIb4oZxuQAp$9qG>-(c5>0bL_Is)V9?bF*ixDj!yXi9o67cpfHs?NURFRE)a>I6$mbGW&_rQd!aOjpxqZ1zIPx}V4bLxp{VZ4`>%wgP zamuxFlNf1Gc$F^zSw!=&VfdEqny`KD17;$d?o(xB7+(WYY9v*jrenb^oo@bXg7D*V zYA)o-*AI6`nsO(tvz1y12G@<2r({c(Sl~B2_$rDl4KzJtCr-MpH?l%BGy8 zN_mPWQ`z$yMMQ=Ck^Nc{M@VP|1*~5^goJvKpALGzt#}7pjAwkKm7lqz`~5R4P;l z9iwtEyA%?7H7WBR0rei0@(_$ac`}pOf2^&L_@PU4g+d8JQc{z=B!8(Pp3G6vAp%qm zU>h|4mZ>LeAo=EeNyb5K_SuDZ^|dN)tT83frB9y=dzo<5NJ6GAL3+GL`iTem^3vxo zdZb?UkabMi1k<4r51Bp>sk?PDV;>G=E2n)qcgMLqZ0+ zQCqJ`bN`q9VK$H_-&h^Glq0%1$Dldk&PVHoCWM75zdI-jJx{Vp%d%lA+O1`rrkdE( z<>WdDXBax7_9m-LGZltSMj1COm=;#=P0Um>t@Sd=GFglLljPQ}^p<&1N9Oi0m<*XL zg<*pAbAk=?K3nE9jgw>}n<=N2Dep;;qsz%(IuDbe_>E@^RQ><||KGrXik$qsOnJaC zHIv6n`hWhPAos7yrD3zLnyD}^Q^68}1V0fyKs5`z2mqFQ;zdl**}U2#g(s|?{`JsZ z&p4{7UW)(RbPMijkP6<8V4ic@_KQ%)%-KS4r~i1PK(jIFemLl{b%wHJer;k~+E{N- z`t$SUmk;8)&xvTP3|Q#Owm z1hF%*n>2fzfR?%aQtm?OTn^%Us}NIR+V0py+E;2;gEkQ0o?OEw^Y-CQoN2X%?+Y#pnr z0aGCQ=L%~L<;rHWg|}s{HI-T^)8A6iHxbEfy}SXY)iKjQNzX!~1{jftwj zn&V{%UJN4axm-3~wd_*IeGijbwSsaf<&O%a{JPfn;m8={UZSC9pO&WK(MOBjmfQKO z1a7@II9)Faw;B+x;kW4M6~bo*fL~pmn%WwU89^ZlIha*U=3JyBVS76!ygN3tIxxQa zO`tglvsM*G)eiWVc!&Zow zZ`YAYv02m1#zLX`=I5kyVr>5bnc$;(pWMdBAQ=fFX+%YHo%cuVy_^hGlr z8Iy?|6WYQI(XGT}mKiklTzJzUBzpj^01QP-xeXPB$5QZBW0zgGpE!lzITVO{84NkO zCv>n+(R`iepiwZd=t<-T%m_tIp=0&%l@~yx%Vd>{aa$;K^P46ZQA4sT;0aUiy`Cui z6U@5Yz-GJ57S43J6qS~aR@R^q(!1jSzZp60&X{0WDuEqF*00zw80ufwTu_vo8GpDl(=h$BSwE{2Dx8`3<4Udg#R5 z*2jRVY|_c*;f49rF58B11BIpTdHMR%QZTKE&8<@rR#_#Kcqv&3e*NU}c=0N$zQQk_ zFx#Y};!f~_Z3Z)2?+ghCfx-S3cfKH2c0^82{-~TXP_Kof_sZex`rC8cAJ3REqjMvA z{vC!sK{1`xrIC60|7O%#$z)EePJFk3Iclc@wtS8n}0Uxl%BBt7;%%f1Wtg zVfzUVCpsG2Tv+zncCkXg$ABGuTW`< z92t%>9*dL@pDe8iDo1x#sr*(>cj6ZCHg2ndE+dG3`6>EA||+ zS!R1zIZ}&&5SHO`D(U!z*`Q6hW*9b2rj8lcAPeEBT^Jaq3)tLqX11(8pIEn1a9WvT zs>*(eUf^but5*aFMlHu=STqIx z6oN6T5g-^$9mG1NOP@r7p+ToI{54J8#@C8yun*PzQi^X+Aoll9+odg`*ojH+{v`&1 z|W_1k?t>MM^l=8v@7EE=?IOS zrA({m*M4z~T7MAjfVz&`Q*t@u&%U}vPv3ZOyU6Q>r0Q)(pu+*(S#W*7&u%qmr6KC6 zH{!(dYlg1>T0&s=Hrtrf>}lmcc>!Flo)l_w8^HkU38?Ja;*K?glZZ1z@vaZp%=Q4d zHCK%W2Y-9e%vTwKYD0d3C>R=eUV2zQ+jLy|T6rk+pN=nqs+XWHf^F<2Iw__Z!OB{$ zmO+MS%_F8aU*hWtjP0n(UfLp{*8HNba{=^zmcUGZm)1@l_T*BwYnHYQo8~EV{kEU2 zx*xoE%g-oeHV4)(jMa?wAc8IIk8mrB;x2rC?cvyT13bRojSg#5>ctDr2-u4147mhz zhGQ~p44hN%jF=)Z75He4c*a;6_~v32;Vc~wePKiTltwIi2`A-JhkpvDzDujM_m5pJ zAoFd->Hdq!HO>(@m@!NhZ<)$BJ|H|>p0p+MEv5m@=QRIy#ZqQQ(uil&O%Tz5&}x;F zT3KHl{sJ#{n+rGw%sx|h0yhm1`N=N;&#UCagNv=f7WZ|u{<02_&Kc^DLiX(2UOP>7 zhM5bq7Z)OTjjel+yBS9Z5DpLc#Nxz`_lC`rD`Hyy`lbP$d8b?e^H1{=-5;i73p=mh zCH@(T{3n7yEp_wd9Fk&Q?y%wb_nT*>+Qf^`0Gb~%7lEYPF91oa1ZHyrjsWV3O=E;_ z2Zc>+i-#3}L5CP&Gv>Uv*HSwIOoyaP!7%}se1_K!vn$jUbDB9Z@B(CT5|#a+(~!x} zAs6lv&-(Wr(uC_ue%l}{AGe2(7UjVaGjYRb=`PdK)ZtGttM-9f6Mwg; zbg%>QCzdv=FFx8Du=u7yRcZ&AMNO-PWT)s zMiq=iFsnsm;s8u|q~%5YB7=ACC$M7bZJ@kxTBbCTASb`3LU@hRNROiE+6ueB zxY*8?fx1TsFz1$yZm;Q%UVK;6x1BH7G+SQ#uKaT6iJaQ5w_vObCxylldo!gu?1mVp z_Q$d_#5$kFOk;5b`ULJXbVR@|&-aAjU*pg&4@92-g>k0Zp9DTwA(p@_zDpylc|D3; z5?i8yK|?3mPLOoIueR1DDQA+KymXe85VM%;hONM6E@;&Xw8;ogd))39S&&k|@L%=5 zSQ~cB>tL^QBLVllH3p75@Qob1vFW!;ns3xs>v#3<=j_|GoT#@DeHk|SNDKO;cQdF6 z>leyv7Pm%zUUHc2QxPQk$Z^lU;QyrOx7aFh)25eNPVDE4-eWmnkh&Ks-ZhT+fNx{r z+XxNNa90EsA=3oG)-4c_-s(lR!f+zzo$CIgJn>`uBe=>xjL-n*iEEM5Zi6_ZJ8A?< z)_@CORioEZH79)2;V0Wf^;xdtx1tH??c4enIQ50d1M z1`Ui!I~rgswX&6e6oC8NlS=9_dz~R2%{O;_iaN@c>2_HCL0;M3At9}l8nkM)QNiOC zWtbiE|BgwVrUNkdKk@884)G~Aj>1eX0zDH@sWvz8KMX6jgaTnv{rkbK<^B6VkS7sr z>tw`YTG7id-JqP!MTfeSX)2(~73g9GA^Wy(tm~iooQ?o|Gl~X7lW#Use0Jf0xA3E7 zU}iM;VI*P(9fsgu?d^pz8~@!*1r9XS8b9rU2wdxS1kjPz#mnvrPHj0|LZ;BnAC`H;U7b7*{pEi3Vm-@ZZ+xHG9$W=5NY2aJbaCu*g=M(!o?? z%B-%sd5@JprgvN1%kH!oS^AhhaHT*h5$8EbxF+%}-+&J@&l`DPC^&b-%hp970);N@ zf$PO~G1nxR5y1ZB`I@Jh#DhUwJ)_|uUJJfFw~$2vu$68Pf$6={`Vnjv#K0p6?BKv^ z-U>9dz_o)HQn`sG`!3v{s~&`ank`wBs<5GA*}dzqS#~NP>&_qB`qaoDypOtk%r#DW znK&1Bd72MtI@V+7~ko z>FcSj({Rb@1TDS zL@m!Lq**ogYi=yw?mmK`8(%f~%qdKAV9+=m9<48KIjg%I6k{&~{NT&!`YN zmN%c4x7OD^r)`;No6s2+$B^pl>U%{@`)Yz=XkM>Kma30~?*^MJF>;+y>K)IuLOzaXeo2@!w6Zb{*9htHfjC@)g1puX{Ik*HT4ea z$%8<7mTSL@8ZPa<`HZVMEsy0(QEp!r(9Ks58{pBf5IPRMbZ=5f(6nTvMgyZ$Y+GCOf?ICUoYhX0NhTdjZoQPLn~P8 z>$R~10WP!8HAfWyx8=$__vPVz`a+*cc6^+O)9n%p42c-vClTQC!Z_eGq8uyOTn+)A zcjhwyo=n66ACpTU-pF&ru=A`F24QPslg%Rd&Gp5Qp=Wonr=VOst0Sb*vwW!wO%+-v zh(HUZA=wVT6Dt<6Mi@re@ zTro7!yQtdg55(@e1|a~vmHPpJP<1}$f-*ek`Be$~H~=YRBg_T!F?XGwa;NZv7zUB+ zQbcCLIOalq-LXDjsZWYMbPc8D+4xbOp+0*S@Ta_qyMW<0i{SGa;3UZcoDcYYnk;)@ zQq&@a^*IO42315b8~i@C_K81rP4g&%8P0hPeP&SbKJSJlP(1wZBRDf%k0UsDqdr|| z3%F`&W~7I#C@~GDZ*50Z4*Kjs5~51cERk}SV-#B>!tW(&7~_|Z8bIKFJ#%L#>oi#-2Q;kRT=lyI5pfjQ3&^abh zsmJ|@B0irBGF?x@AcUm%KG^!1aXT^L#3FHw{)*5bO6ZGWkZs~BiLp6a7_DSaz#xv| z_#h%$4Dpe?WNeU)uaoX3)3nO`l<}_5LDxw;`N%Az?|grvT&xi-%{8cN3cqWAado?W z&$KrC!TLFax;`#W$??GmDcuzjl6X2(`+=XXh>t_@e%IeopBZ(Y*xo|3%kU_cmdJAT zYxKN|`jjW&;L@bz2yx~MFr4@ZtyQzAkix+&F+DFe;o3~g`{7I3D8c~B(&OXgq=(*n zzcdkSPiaFqIn77>k=v(witT4$>&MkLjVYxxt!u4UrZ@iCA=Mysvpa&iLe@asp94?> z34BH!Ug0D8;q6Kq+g=jL%E7nG7NBmwor~=xE|Sj@St*7X)CYKgiBL&=yDBjZloa1m zg{_B;KVc?mM))9Uf0!8Q`S%053o~86qd{u;sCj++dL8?!B(@WNK!bb`N%hG?~POHbEP29)^E^KK>IIcuT3gXvDV`VZeWaDUScNd!eTO z{`2rvD1lbtL;jaoEPGgY@+}Mk8}B?chz);|-%F|Hqz){^204Q!nIes&Yn_>jG*#^h zMw2-N7=*fLpQ{&|lQ!8!Y5wa8KuMXdGBC)pj`u$4=-}{PmSSI$2OIBx2VXiGWIHE! z4%(warQMR!KQChXa#Zs~g<+61Y4@Dt*kQCEr_SfH=4}5R1fQIeOjlV1cs-xuiOcFM zN;IZnCykFC6>{pbLpc^q-*MGEd#q0~4!FFP_h#c4Lx?)PbHo5}6H7jI_E9Yx{IdXX zAf}lx2xov#oq0(ECa1#4SskGcz5xjEV*VfzO=FU$4nvC*B5ha7fAEBqVPwF0)kagGV7cRwYo^)(HM{tR&yhK6wbwcalB`oz{|} zzu4XAnT^1Gz@JP#nPyJLGi&HG@3@Z$fV)`+$BCVdi;Vq?Pxvl|`lRvq*tAd+3MJr< zFt%^!BHI7TC(A!MUouV~kO9COJx|iWn*}r=iaEt^JLRi8=eG>Ag22pp7L5sNPyH<( zvskKezr_gAzp?I?ft(w+3$40660yfgybQe5@fVnG2GhlXknR&WEFvp&V1y*}gkO!) zfOTbSq^U5Ga_Rlebw#50zpVW9q)>dbgGWknm|pr!!9`PN<(ZyI)t@cfzsUtS5*A4^1*8|7)9P0ckvl4W< znp|I(#Cz}O9G7y3Um(W#Yw>rt+}ziod#M)@p8?L`z4&>oLcN{bc%3;tS*58#NbK=yA+3s)vRaJ`BviP9hLKbSy6gzc zOsRrOFl0NgNOAaUm8qGU`_Yq+_uTi8u6L#Amq?gbEdFD0-Qv58xr?8tCo09p9=Nsr zWYwmjcS^DQ4lH#)*}iEgdgl%USz($iQBIafkR>i7>d@qgav4MdH+h+uPQ9!!of{9% zBD6_fG4HE0Hy$ieK)W%kXQtCD!{EPcX_FJ5-t=9pstx8%@FW{JJ?)&HK2FbDPS0mf z504|%(B9MD-qY9K^R~U`b9)c3U8vzrPy3smzBfH@-}HQb)5Cis)WGX$=k@gQdfxJS zKJ$9OIEF~C{c6uOc9I`IR7L#p${Ze@xyH1~&xhP=f4u4osonFv(>R#-`4F%6he!jb z_Uotj#!gEo4^_$VUVVl~-g{%(z8{C&-FdJ2+M)6%cVfdEs61isbSo~i>LOHzN8SYV9G~gVgUURp%!8ie!SukLNTj<17@Gha*;T~- z{pRrK%-sao$ab&Y-`^MF4q$8oY-ICl_lq`g+yRVDfQ{@bnfU(C@W^|=39ymv?jGOY z*AA6GZ31j$^W5V_8{RmC z0E~FRMlsOFpgBAOSpqhSfi?#FLU;g1JYb_3XoJ+i;Q<)&fQ@3Hjls|G$a^0T*eC|t z80>3@%Aeu^8^u5yq=q+8c_JRLQ4F*(_!%B~6VNlS7-(a#j|Y``&@(Iq9*-ny@0hZ} zw5MJ{=7EKesD*bu{a3eG>K&Ci+hPVJwq5D9D-3($(WJ3>q}op=gSd=w=8oFQd!}pl zO^hg9aoJ&ip(DJvd9nNICBdrCPjeiq-d@*wWF7f(?>h~7Ejp1(^GIOV^$2OvJy|E~ zdxaC=AB$dx{iMM!7M%vaSakSTkNu?AYq3$Orw|J({h!pKLM4_K_S4e?s{Xfrs89@b z{{HFd;nDN2v9z?bPO{*~zkYhczup7{6~KcP|IdD+nx4J&-v}Hu zFf~wZK=>?y>9Y?~ZQTS@e%xsJMeD~a$K8J7w#%f$pE2o8e9OrDm_K!u+vaEEK|+wa zlkdy}Vdjt{9fVst=YmWA7Wvi=`p8ze=u#r)XTJ`PdU4a}7%me6vCfwpQX)C8!NK#) z6I}UZl80V^o7I_hT`f*E?LN4!^2^5KtHr=g9UO(%;i{;d8zW$d>J1%}vImf<%sH3n z%GS}yJlvT0<{aZ1&RbJeqQO&;g@6UaIlg`EA`pKJnyNDN(R&b`F!ga+5#P`jq#vWZ z^T2JEej0f;VyMKW>3FP?WBm7G`q?Y-_k-mNtVWjR-os$v4}vS4`6x*Pn-Oqp1j`aJ zwWNBFP%jUy`hc@{UHS3kVm;LHN9}`!Y06xZX3ir#+751ayH3Li;$2J^M-QQRTsNN- zsxZ^GnWw%9j6DQKrLChTC}h*3uH(q2$}ju5_r~p9h>a^@Vy{<@^TM7)#=*aeSma;=??&gQgu zVUyJSv;-fletbeohM?^uN~%^$?Pj4Q@y!FY)A!OV-0e&gHJ{^u$J153U*Lb**3Grk zCT@&LNco!SOTDl`6S-0XeB|f-;5%t64#D>9JhDmtY4LVv4^YYGs3Mw|L>pAon@xy9 zZ-hPV^b^%K4?>gW`KkGFrFv;eYoNkUQjEBl$4S(jn$Vkz47Fc*9K#=3_z->xj#^?{ zJc{9Ev9R_5mALfd{I=k*8t##aDu-+0Fxc7wvhWcJe)*IX_%;}kbT(e=U^?C#{2i_t z>rnu$W*z@24!FaiBAvAjJ$ug+?>VkfRb1O657h}kf4}fJ1%JEWR_jeG6uXy3KNa(* zjRRQ4;RY)GmH`z{2xbk&ax@)Et(m>!4qzy)Y0D;ClMN9K*xscn4Kclrtw_p7CY|9a||!xZDFvr@1@86qO#c$`=eJ# zn+8T&;IJyM?dSS4%|y2J+qprlk|G_g@SOf%#R*~g@nHtq+9El^Iq7L?9@=rGC#B6r z_z<1uBe0)d!ctE><{YTg^!O^uFM+vSD?TEOQH{m( zhJy)%P#s=|X*baF5h{qRvQogCb*mvCuNGsU*6rm3?f?AVTapn~F6wB~iH_@^#jdbjgwRXpzRhBJz@@ zR3g{znJuJ9n(^~Rtpf_p1Ac4-t%@0cG37r%GzN4-AkUHGT_vFxJCf`4A>2Ykh~;Cv zhOr|WND*v1Tb;MbaHST_W4owAz=(Sg=MRhaavhX^$Heq8mml)VNA&S8>J4!nO1lLsiGnHl3(&l7T6&b ztwAPy`Lv{^hU{OzxkVqNpW5$E(yw+wZoeOEM&~9uoLTUcwIwCn(`R!pBjvzG@6DBr zEt&A7x)FQ%k^#TYDRrY?mI~O*$AlNhyCWB?n&}^g`_?w~n3(N;5V{blFG2B~K%>fv z6Gd1w@I60ubk!nbB#z$$k%)+(ouxw9w};l5ODCm9_O^pHlJ`e#`;ny@jVPYcaLVti6?eJv^ zoLDHzp_9eXv$$ie0}-weIh77kh>+DATOMhX(nXZM?o(PlS1Hy;$<9V;pN-NU8#tU} zEDdIzLIIPA^6kUaFY3t47>r{-hHnO~z0;X*66ggoqXce1y|(jx1&UBX|J&jh8Kr_F z|6kGSnmNd~IL*zRj}sIfr8{WPW-zoIpd#mYfDmb?CCqvPdO8!dgk98YyZX!^mTl5N z%wn5gNZI{kRbaq~@YWcz*m4buwK$GmfO)~xi}e9xN>L6pwx;Ld4Q#z5W8pc}`iJ|zFz?2VaijRsh$q3*y42KRVJ!5&E? zPM}5RC?6aCpdA@|U~C_ln!N43LDHS!!hP$=I)f3DJ7w@276c#@!nooV9}rb@@ivln z_G{3-qVsv&_{hgebPmq}`z}m@NcO7j4$b((iBt`dKe51=;6a9Qn|NEGzq)lr=FiJQ zwZ)GAyc2c;Vh7kkC=I0Vl>PoA1+2rY?*72zV!%Qs0GUxgf0u@J3(TmmiZE3^;#EPE z^(=jRk=^#XPeYc7d|JtIP=d?ETtVwN6ki?CJ7X;d7lpfVQzkgk&j z^q}Ce<8T(s1kOhB7Pp>GtTN$t zvdi7%wS+hLi1v5QZ6tqK3D_!@z4{B#iUF~Q;iP4#3GA9^ojy?-m zABc=}cpTin<;1sQ{m6(btdpxnV6M=q+c~W!g6;{pjWg5(y)jtKgddLs{R0ZI1>g*E zlnfHU!5k~KB`{_zn7kvR(okoIbwYyKfJd;ZnCkOx@(*|ebAr8Db=S@eOf4imWC@ZO zB(*|Mu>J|1SpT)u!*)^v;Ef$m$#VV%{;|X^ya}p<2X~PN1$uhR1>?1`?yFSK*T?wP z#DZM$ckvX%ITeg~mkq-zR?NHn)*VX4&#yZe`2C``$~CC)qCIwgKdWhH{gx}r7w+s5 z-rAsix@j{}h$x~_u?o9|EF*4)07PyOrxA?Y!8DNXCjonWo9KaIuxpPiQD{SE@>e=F zeM|3wNyj52bbhTUhx+-gA4g2Ft=MoD`UM9uijRZE0)> z4*3dz5PaavA4?%*Y`J`1C>MoM>ht_k4KZ22K~QoVxXH5D-Q4gSx^)g%WmvO;!c4+Oj15f>6=LZE4qT1n@S!}UB@ zUr<9zpWnf_``(s#auNbzgQ(OYSqk~R&I+#?1pWDaw&+e@VoPI}5Plem%UHd-E_>oWU>dR*ylg z=gh;4Wp8C;#aaB~zY4HoAAT|ORuNWwoL@Ys9*bI^;TLDzI)fD#@{8XTV8#9XV(zVS zteDL&ey6?{8(W`0cI{QH7(t$xK!Z>FSb$Z)U>6r>9Oz-z-o&aP=z5%Pkt!=@ops&EI@YMHDeFs)Ww(cobKptn=NGa*_^h4T&oAcQ*1(GE_{GMQL{vP-fIs`3IaqN6zj$FGR_wzsW^xR% z;=BCf#grt}`V7A~gR=-Le!wqYQiv7z^NYD08?2biFSey5V`Cfg$8NC4ire_b%L=h# zAAT{jVGUONoL{`0a^QncZ^rEn2tD%)4`aE6edg4+{&?1CtYk9u`wl z;UR+)i5`{|q6aQ#KYFmGq@gwq2hhW^LiE6FIE)^aQ_|}_Gqs-2cwX?i@n%d&Pr+A* zTX`Wv1rv?8szcrvOghwdgnTXd*;xB6M5s_`d7Wygc%evBon@$OA#r)VYp6=0SW|sW zD0Q2-?(M^&I@=`tZWo2>70zh7T^(vtD7Bo^5o%FLZsL3kr4`C9Z%_?$+$LYzU>LS~ zo5Em&O&D{VqVAnFVJ_R0{O-7cl~Vxw30R(k>8H8641_HI2vOB_%Y5KMHs)brynuPb6!Mn1PL1+Kmz==?ytSLNZZ$t{7`78JT4YBA6GxC=St#TlA! zb$xL0j_>?}Z&#lO`k2)!7nEa_vpY~_Q&f2)R{5b9RPM|}m6u?Z{mg8^iq?1j$N85! z9!{==o@?a`3|lTX`0hflo=t*Yv!HxqYKwUp$9I04XQjsLiVk@IDak7Egq?=@qm$$U z-LRt5EEg+ERIeGZ4@Y9|Xnsp?DCA*JzkK|3NM& zEtt!tT@|jS*Rq^t{3|=gR(^6jcWeIBRXZS*eap2KB4tszrNf9108arQ=Djlzem4XO z&s((|Z>X$anrI;_8Z8eKL}8E z-FoB%cF*%hasR>i*;qls>hC_7sxr>a&ED%g=ADiy8!nbjN#l!#K|cwcy)Rp2MhYaz zIQFKmtVA(shMt-oG2MCe*r|i-r1aT=;&M86)l4JK!3AXr;aZH0o(c!c-}E>oA}dj& ztoi+AB~piG=oOAZnMFSnFFR%{wBT8&MlHFWkYM{>+61^V}#kaHf z_Mb12l9XtEV2TP>5|y0ESqlA*mg|kOxAt$b+-#I{YFS3vg3~2Z&5cx&BJxCBAFvPP zrFKZl$offQ#3rn;NE1GQ47PDI>me7lVi5C*ulSnotF5iiz5(F38EhNXzYgGw%zuOc zaSP7nVBba~Kq(}!G2+~YQh8~;b|_AFCm+X)Jy3D7rKb_+J`^97rZO_918J7$_3p4m z4w|DcIKFV80z+9R>eri`*IW?+I15D$vn+kc^H)N{C#a#v!0~FST}{w%F>08%d%*NO z1#sPs8u~-Ln~#v`x0~)(n4X_S zNT1CyzF(0crE}w#^Lm^K(+u&2faO&WXo=jf2kT1g2LN(-ak14{d-0!z%Q_?RUXY!eD;*8;-Ceh0OzAmXI+6_*tv$MqOnP4oGjr=FLtX z;s9%U$dmQi2L5uCh-xiD(J7IYNy_!~+}WmWmip|M@cMbRcG80qkr_vn>+6f=nXF<2@QzG{*Py=|s zZ?PA#I3l=c*WjO)dz?<38XT?O7hL>i@Mm>GFnj(GFl!rg#0|sQymV43A2e>hhs`YzHoeZ>N)6hg7bojGjC+G}r3TXbD0)*npsw zuA85p_LH7bc4!^jg2^5FxyXtrp*I^qDUs4S{R@DSZ<@h21^cnz@6&GIM}#pyNoBLY z?CDtnbG5zFgoWoO0xjnLK4fa3n?$Lusjfaa>r0(bp}2X$lB={KS^mqDIl;$ zm3I%dp(UN}RI>gMd^-S*eUMy)wI$OjYyFV2Rmz2vvxl{>AANYbW(X0b>}DSrae7!cCek7josG&M*h zO5|KPvwPUf(u$aFfWGvK6sQj98F6;<38}COdnz&z?r3&->j!?8C=w)mQNt5b&@e9; zVh?#)f{GLJ+;l^3BXCO3C^MT0S7)u3Wovj;M_z)XjEMwEtKwjfnfx8uS~Gr;?c>#q z@#PGH2{Ei9ovMW%8EMp$zP;g_9v^2V8x3;L*?Wu0%W5!6l`~Zx9V6t6wlI9D^v4?_ zHp%6&hy`cvm)p-1TaJ$}v0QU#%|k1urV zy;=2HJ{{x-j(2}GQ;=KGkRYT$hw+*>M5sQ?qaW#cb&nNZLYe1x|4jH_g==TF`Ru+# z(MTlbBXMzn7=RBjdYL&fWVId3T$S8FVyso~doEmc<3V~lds^d_UF&jN?u5goE-@Km zvX&@mkq2u0a9&V%vE z@VOqje&SIU+n{^BRL-JYzX+%lfGVj(**oaLh|vfsUYoqdBV1_ds6a0&R?G?tVo<@3 zP2N4b0kNpS0$M<~im^0_$J!P&c=CopVrl1~Y;}~qn9uS|swy*bW7meaKFV1^0lPH^MvP^Z#`Z>VR}~@K8-$eJxiA9Q+WomoiGDNAxdXr zYJYDO7McLUJrqHzlhK6-*fXsSWU89Sk#^t>ZTEHSw@ZQlx!L0x^M~8n+4R{K#xIcD!p#eL`4$`@>epzpUk16-tOtl9V5lNgEeB7CI@n zj2@W!588`wm~>8dsbg@l;KC4p;x%ifx2cCE+Bs+H^v#kT7M|PtbCHVW9w3Ds0!y$%AgZd%&;U+tlS&8v zArRYt4R|AYI=-#88C_lf7BAD{baL0xuM~{YO8Lc3IhZtGk zT+h$%b)Pf&doqOKLgJ?BBO9r1@Hd1*r=O_thb5}K!U$-KB8 zxgl1Nc8RdcD{OjzJ25HvajUA&2jYdC<#Uy`uLz2f;KjKDuyFCSy1^EgeizK+e_}6n+t9u8M|V;7R0I*z;>y3PhyamfB3i6ZVXu zgi5 z`k_dDt2Z-!&0L6Emld+0%mrx;xzARQLWU?=>oucbl%b4bpTGIIJ^kgGg)Y)Jp*oyQz~fBAOq33rsy}_uMfXMF=}cS-rYbkZF)f8-9|BQYGLi} zqgXXPtlvFOS=#hSID)8Q*TkhqC~7z~J!VDdXsm2{QXgTa;nW0YFGFKpQyV?fMPp+V z_$qj7Y-xH{9~q&sy{TO|Dp|v;={Y?rOT)LRgB5jJV`tNg`lu@!!A+gQ(G42mO)u%u zZ5mNcU99Lnjo79?>!Zgt;+ndJ_YgG`n|kPb6g5+tdRcpPG!Hhts^4R#d8Fwt;TVSI z(WX9njEiPYQ$H)lTQk3Dpgtx-^F-62aBQ+>Nz)KLHcRtt(=aRcwB~P3uj^y4XkKV~ zBfPgk^D^lwJBaF3bB~>)5RsqLCWd)}%Yb*eF1KP11ON^WmozdiXx%eG8>XSi z?}oZVI{U$u)->%11b6W>OFLqe1VI*J;zXpkhGa~xfgt*Ln7d)gn*_)!C3dxt-Fjtd zYA)VAKj1!Q-GrLNg6A}p_2Fq_7|GXJ7H{V!ZE@lTYyp?|2+UdjdGBP6lP&8kawrVX z{Q#MeP@Dpn#705g6?(?0?I@}w%Ft(W*X7t77YyC1_z;}uaD^i`BxVaQs+AKM^^>U28VH5(wRjl6HoNt6R!Y7CkHDRl z^irSv7C}}6Ooa)WWEv!Bgp5I3UtRuYXq>bq^f3x-joHYN4qvd9)#rtmGT48|mo^(R zPJ_7pW&Ok=_E@yK6DbceC}MVSY%Hr5goeKH!06XuUASt9;JFYXe!x5PLh{af6ggH# zzNL9&?6?5Bk|d|=>xOl-mDjjn%~`u zlB!^V)XPM56_@PIbzl&OBuhf-uE7>oYP3@cxpIBAK@?84c zFNNfzxlLFa9mvXt2ZhpQN-~Tpn*~9qZZp;jAZXjy*-W*%F2#=mfKAm8VmLoZVO0-? z*>rF;t;Pebl-ZMtR-QSQX1aEhfKKI_KVGsnG=f}e){gL9t)m|$B4UeZc);kbq2Fqx zOOv+j`U+yRqUXbwH&M_9_QnSi^4TlrJWjvMT`cHl4Vn%zPAtSFEDv@}o||SXZta+~ zCBjYSY>41<^K&}-7x34HUX;ik+DFqG>$7}fxjJ-x`|57NE?{N|iFB#%y71=dxbzgoq0hi~1yY9-Ro#DDKn=FCTYKfO zx`5`-qHrt_wg*yKkgpff7URT@?`d?y>ldP1|0`mXm#{+r1F@z59kJ0O{r`bjrzyk| zvmpzZ73922y3OA+bTi0!s=aDalp)OO3_C_JVLNZV^?_V~C8wIHf7}Rku6?sRN>dSq zQpWObI8#T-4G@F`#XCBy(k3H7$1;>>E$KFO&mJdZJc11=4_2_AlvnBCxI!68?Ns-> znCdxLgpIN@h$#@Xd;pvk91c|2*_~=0eN-4Cp(ZF2I&9i@b|0pwg8`}5Od;eH3Qwhh zNf=GiAR4qYRonlUxZ1&fe8XqwppYd~gxZTTMWXmNmP2l(N%ucrMjP`%K3cJ;HA!3S z*U{fjjdHVec!ycqPqD|3eXyu0{GH+WKX-<}>-65KCf>Q6aCFdJ<%~rli<7Q?g)#}8 z%1~ew_QqolTvGu=N)W4#Vg||8*pOUpDeD^hgZhb(tKEI3N+IBt%t(e@;f zf9OE6M*(083s91-7{Qj`i6vhg@7ynPhTb<$c}O1I`gUv|Bv}Yh=od6;#a1oa?)XmW zevsu6Pq>2}Ud6OPG(G%aI`U>y+j`rVZxB6jXvmbGNC)CW7t@09C5MPs?COjE;0e&= zA(wdmwtiO{@dS8m9LT@<&pk&_7lp=lW-rEcKC=FmZ~Rr z2u8^->5hgbzO_wn6w=6QQ(69|F=Dbm;=qpE1VddkmLlmkH7XXEt5NoXi619&w?@QN zOYIDJ*O1;gMNWAT11=&$b^5Mi?GJtWV<}@a8nsjd}s2g+Ds-hvisR{XFLO~eA^0pxs6CyHz*%+cR zKsj^s3h-5zLP5QB_mS@IMgKiXd=-^oWL#dByox4s1H;rl8BLoWo~1uo!6?)2k%X zH~fuRtb;akX_w*n))UVl!jp-51B$aYA<-7t!auUH+X(3@Cm>q#M^5Rdki|9+=0Y;O ze|^c@&=*~hn0b8M;(-_z+AU6G(N;75#)f&j(5F>7t7tZLHn(D|3YwD>5R#9I)pch3 z{?6xwup~8BSeZ*w%G4soZcBpQ4qx6_aH-qD%;Ro3ty9rf{lK{Fr0kOScb24rogyXRzHmNTp_V{)@?jd=noP^?FO3*wyd8L4uUo9uD{Az@4m&~OLl*8>|vxYbY)I@9@Qkkuqw60IARfB|nA z8>4jLTt(Y&iC!kJ7&`>>Ct$fRmktI%;13WN3MdhCD5Cd$>Dn)HwT~Te=qsdzo*siU zX$ylXb#{ud|2Oa;8Hg=wOE~w+9fJZed+snWe)Jg6b4oXyt0#79MTD||99ke|2wLiU zV^2UdD(ariPNbVHXcNQPakN~3;hIBQv-JsNr-9ATHzwu?o{yEha|Ot-4wT#wpy_DN zppTV5#_VL+*f>K57+GtB(xg9q(Y)gft7&b=$d~4zC<|x?v5GNb!^ZI9sip&HnE#u_R%Rg`}rW@PTcCD}xfBl+`QgAOHI(Q z1|aJjehWMXVeatdExq&Bn~$bzHJ3Iehgen{Oh0aaU*T8AKlA?XcRj50V*WlYxXbPJ zPCkNvX)ssG&8RZ{UCrK=ATivHZsUBWPVR~nPV-3@hQjmQ4mb~c#_lKc*+G6drjnth z_>|zo>B$shpRuxlZaDiU$?EXux6%8z|4ixnb`g?7esN~6e<8I~b=W4upPx(TM-aFU z-V)bQtL^=^@%tL!f7Zx3ni)fq;Ydqc($)MDg(1YNqeRGJSMzm`+I_;ehQ&h%jdD9S zSeOB=KJjHXJHBH%K^{@a@mT8_{d1RZ>Z2df^6!3hx$}a=uKqHv>Bvv9^Y-Vp?!It$ zB1kr{NJ@|Byq zH^$A_xt3n?*!+Q0ao0`AmX@1a^N-X#_EhdY*G3?uW8aA{9=!{gP!a5V;a}*wW!P;G zE?`7k*5_&Qs7P0P_H&1cRx6rEW4CV0DW>TTNmm7x% zXO%>$ts|K8CFBpE)y{C79^02M6j?hf!iweea7@F@5aq7_PP78&fSXeZE=H43Sp=kI zLY&q0V%lE8RpzGiX}!18ryZ!*52v!b!C zhaW_%d(P}1lbR`iOEWf{mjR-~awlCwx53Gx++l-_zuVqS?PdF-B%i=wP9ofU?!n_E zE***xDar{jhp+d9&ZgvO?~400%cEvRU;@N%M5}5T0Z-VayzM8%He_#<*HLq` zr)FY4rh;=+8Rbl7U{h|{9L?meHik{V^#}1qP4gE%CN};dV};5x$okjs>2il-Mc#Jt zvweJ7nq3k%8$`fVP4F+`boB1~-7Tt}{{Lr!{{Ma^@=5}9F=4!V+di=Jdi8zu1RWS< zJ$x$~GQ%=V-$LnVyDOIP7FBWvmkN@MVH;x{57s0mSi^5Le|Ang5Iz!L9K$nYUu_<> zDzksb+VXX7S$0U`78lrFr7K(gqC>Vtwf6Uq`lD3Gcsel1+k__z54W8o0$b*fi`eMj zw>tT*Y4-f4B5iuBpZ)mS=v=t`e%QKw^vLI%n@0P?t0S;|{Lk+2@ZzUH;+z~wL#lLo=ZQs4oGw0a%^FJjb)UJ)e zuC^V^dlyIEd5K=G4BJUlOr&Kr7 z&fW3>m@|d$=r2-gkiS?Ut-4%8-uZYhTltp6&i(?nvXYKk5NBk(qe~r<564t5!L#VS zotygsB~-(*_T|5HPN$(=dy2MPTQO(BUqUSXuaran`EUCsbKtz*|1NtkL{Y})^M8=` zCGb=?-@}r9xgjY+_EffR5|Uh@$a0g4lu`)wL_$$X$dbw$S<*$8c2P+xmG(=KHkG6< zQIh0IA-!k5%e|KSfBx_Ld4Heh^UFQobI#11nK^Uj%*;9H#rmdyLHm}d!ktlZbVWA3#sw~=X zr=tGr7fr0v-KJqoW>fu*zDL*B=%k+`CwCVbwm!T6r(rvar|x_h=ZNPW+e#*yfg6sS z4TNOip`7KP`R-%SYJ`bqHCQLg%{>=~z81zbGG=5SLu+?0w1E=>lrGvNcVZWs%uh67{b zZ+r8!#cmSRVW*ru7T;_k7(3moqE(hEAxa!HT?A1Ln?e&fI~~JF)$uZCT^= zI^kWsUtjtdRH730)WN<9V)OS22PWs3?FzvLKR%&ejGRy&E1x$}m@m(OIRT@$2$?9@ zfd*dBN@Raj;o&a&`zqIJpdc0*D}ug&qipFwSor`VPuCGg-pR;u{mp58;_JQwC;$-86ipZC;Ie zjK6CO{@>_V7EIc~Xz&8h16N`FuK9J>ATRG~=g&LPm-H?*;f1gQ5kabIhJEzBs`(853t2aHzo|Xf7n93k$gvX0+@h6d1Z?0xR zX#M+sXmaWg;|}R;#>_!JKQZ>KQ6@T>5FOp9VoHzz^cDtyv`e&fY3p~NW z&<`E3g&4Nuzqp5eQ1khh_>=P2egU%jTkKj|w#lO18AC=!P3L$+*9+|UxuZM_f{bIE z+<0Sh*C+1kP7Fsp$)Vr&cnDVfP)Gsy*%p&Zxvpd`y4yf4-p_xix@%j8oq;C46ShHSfDO&vKvOKJ7^ zE`L}v;%G3A#eCi22w?Y68p@x3>=E5yO#L^J^*_3n!gR&t2_evZX>Z0bJj-SXE6q&U z1eaIbwXbA)MCRdp^=IT+mG`Rv*wDk#`|XH(LB9vJ{gS{t{E*>=xmIL?$hjTIcqUL1K-%$e=$Mm6=}MGh5CnrpTVLvIpNX?{EW^(*7-5$Dxwk zTtoMb&=3_zf)iR>A&V5adh;Alsu?F~UY#&nx|=DZ4(+QQit*?C;LST`yl?fx2Har9 zfK}K9K=2$i;5w=9ntWP9z4i~+Fj#HRUfiXni?Y2O6~~XrJ?OZPWcct2Cd4lRzW#FX zYh^jn=a1>59b_M&L5jJw;Tiu~xLF_<)AW&=HJ0zBPmr^VJx(yBEp+`+e20&7K1iLe z-80ZtsL+eMRq_s#_OljIc;eM}(QpZEmy4-xikR=HVF~BH#Edy{uDs=Jw^4R5`;rKI z>?)~xkKFwWEX;lOuYtT8CE;aXNp?2u_lY6C7k(^ zO%5L1#OW!87|-bs#nz6Rd5O~GRMt)CaPP}lyS2Xg)0|4%rNug!lYqmpc+^0fG8pCf z@{K>7b`w>xhxH#Huu4JK#r^7=wYTlOb|a?MBN3iD#@VMHc!ayh*%RRbWI!5z1LVLh z2Th=a3obp-vQg}CAkkc%_L-w<_jqLOw0{W)g*7xQ1;1X);lucmHMA8nxKfuuAS{dN zuW3(4O=1?Qglf@ts!8N{wa+|=RX=LZ9bnI1_r5DN8Y`qHWA-j*NCei6^b?4MnVdP}n3g=V?JX2o`_l02|=tddNTy*g?% zG6=JL2WFPD*NBWeb@-teX98mGP0}yOac{m=AXM>^HKs*PXR-S$5D%l3ablFHNN4Bd zCe{?>?IYD5XlpzrO#j!d`@vK;>{Lu|yciKNYJd#$6LLu&Y4>UXWN74N+M5}`#qY$zeiMm74nAORBeRv=& zew<0nUZtJC)@7;$%Wg(3(^IdB>Be-NoLGD$ zmC%(&_)_LGW0bncJS#g=*)oL}=CV9@8reD=Gds%?3&e~FCVqL#dMWO=W?K)>w$zWh z_GSM|SREzg3H{9HtL{UrclNmATP-qb6@|mYk%}+iwu5GfEZjd?KAk?xW&AO0ngm2x z6gXN3J{>bBT@6O+m$Zpt<`0?O0Y`IS{k5KodCuVqsTu^I%S$1yp|EvsapTpIcit{# zcTcpz@)A80erEHIP~q9QF1m=HqjGw;R%YbYr{dPAdUV zvy1uC)4z7?*z?XerekB^>pffJT3aByWD$9BYnVLKNK=}n^ReSBD3h&6nmpK-d)XsS zf6H7~FVfOLr#vXW-Lc@~t{XyjUejsl5ZFIzU8k2lC#wzayrB4@tp(s=$Wkl>>y?{e zACh|FtA0j}PWda?Umd06_pUg4ZLaGGd+f76`|cOJqR+N8k(`imkLfuGw^V)`4r=6s z6PR0O(msyTKY_lNe@-Vm48QFYBC41c^Q1>l-cH*azX`~(L+oo|%ShPx*!5$0adN!X z-7s@!-DneTE*vTnE0vIfS5`~Q_KFoT%SB(0UJt#n6KHZ|>AeyApUu5$IQ1q9$Cr;4 zFx}yH5#l-cezV|CCX*Ilu?n8?;OrX zXw_+OuLs{#k2J)`SoWCcjzF3jY`ctIacVkMEzEypqy|8JG4t_#_noAI(f5LFA$zZG zQ)f7KD9$i3VcTeTTDQM$BB$@zA+EhkE>Ptdsg2>F`(Fc0X^im!pb;uVnu}}wsv$xu zwi6LQJ90%w^$i`hG`*kx4BIg(!PaY-8ISL1+R6tN(^817>KGdr>cc@2oPWca8z+;pxKwSJH6<&p>L!`%lEo#(}i`v|=tJba_liKd|Kld{)Es3^AZ02^NFmDpNrzv^4fU{wj&BBI{BcN0FCiDfKjMDKkMNx_ zYL|qNY{+$Jx7OaWM($oCv^2macg#;onh|52nb6;N_=rA@YYyzMY}x?+Z@aNw;!AeP zYac3ja8T8bxr!~Jj}jcyP|`p$u$Blo_@Dp)r1j{54^zl00Ga|O{OxqGAX zs@R8Um=hybkV`d7$!g-8c~s3thWFTNt|F?5U1vgh>ulA%@ylauD-ilEaWc7Jf`3fA zzw$_M3UVgqKoHH*9u%~;NRbOMIc(wF?9Aq|g?kP!94!5c6~QSFxh+;yA_oWYcIeUu z*hj(oM#I-7&g@@;7QNw%mE;(&HCjwbYdyDNd%tTAc+dQ~NYI>Y1nxM#!1TIWIM!G> z$+p0;JwLKM$@^!+br)kUu`I*8EU*z*D%g|v&xVUxVk#kKctZEdFJx(sX@1A4Q3f>B zpPTFKD`V4G`NC^8?0l*&>oDYBhB-cFn*r(&f_LDm(;M3}_*(85xdTV5Zu`iE=Pbt` z30V%u`b%Mij_3r*&tn_mL0VN0nHxi2?eR)??L`kF8YrP-aRW(Qc>56g1+F`AwZM$O zI*^_m{5{YQ8FIT4OUEBBjp&l)+_yI5^OF&{QiO~iti9LZ`c-ewL3jbAeZj=UExm*N zNQ2z>qdAQ^^Tys)jEc(}JOBUR9Dk6Ed~8S8!sS7YN7bM5vg9M9o5*QZ$K6NIZDYfj zb#;x`s+N&AD@oVmCUH1EY1{Zat9I-27X9d)u}xT8-%8Db=H_yB-#wOteFttlt5kj4 z%D%Tg+^&oLcJ=65#nOh4L8Ba{m2Arre>hjw>cPdX%X`$|9~|<)KH=qTZ+Kb2xeLTz z>xp~xU@XK51&vkfQuf1++VJTY4_8^as<(jA-axeN;48EO}l1!aEA?@Olp zLg;?$aXu=qgkw>xeCb4u+nWU-yM05hT7(kuZ+J-<==6NO@56JzZiU#ZdZQ0w0CHXXCy_xr5H{ z>3R!g45c3@2vGQY^Y<-M{^R|=I6hfv6`j7Ydx7+e1i`~sHI)MR`G0O~&eyS7CLuu& zUqj3N)81Dc{}izN7Y;4>oVVq{B0OsYWhR9(whjp19D|P`WLFLgDXM-M=Vz z$hn1HvT(JbbXUS;3jd&L^djZIM_cH13w;fxeqEZIfr&(Icpm;Lj_={)6sar ze$F$41S|YdD@x+wgsYm%2r@p_MNMFUwP zL1vJc2V|ZE8HLpjWU@qQmkVWXqSQPCP8MOcn-+65oFS=FF+*4(gdx6EPx>ErpW-A z5 z^vn%_%#0vAocI{X>IpJ6)(;@lCrT3*{sV0jC;H9Y3draLSz6*#AbU=bX|Q^MY%Won zur-hc5M=)5D}ii1L6(#F0>~N(GELUMKxROcCK3l^r36``xfhW66J&*nuYs(IAe+hh z31st#(nKBtSr0*0Vjc`+;RM;a#CJf}LXc^(`hd)kC{0v&2--#=`prBV$Px*%%ZVR= ztd$_sVf_L!Bce1>Yak0C$hytbfQ&(q-AHT$vJQewkM$eKjEU03;()A_Ad^^B2xKJ$ z*}cTiK=zd&qq6#eY(7z%*h3)eA;|O=T?Vq71li-nE+G3(km<7qfXsv_O> zZ;S2$Ssg+4BC!X^{w2r^Sc5>efGADe8pr|&GXF&{fb2a%_Ac=!ko_je3|W7G%#b=JCJyZtP2VKkJv+jmQZtOMgk< z*q_j{`Ir2Sm4hmRkBnV2RzuvCBBnx;CmZv4H*^r%By{_icO z*$$sR{@!iMaA;TUKWKWwp<`ozwrR1$=luRNre_?!eC)qwTH?^DI#6SJ(c$aHfw!ht z9J=xcI!&)ReET>sXnND3TXj%u;T?zX8wceVK5*#CAJke{AO8+66E3#HZkfKFOARWnx8nM zYJA2|W3AlN3J;{4_u2kXc;E#8d{KDt?A<_r@TU#`ITMPNxI7%P8mgcfb=?-S`#iponTae#<2;^XPZc(w z&$V#^DtQ7gkgW-9JEgrL4U{ro;yo|0HPvuK6DolHM5ZT1SR00LViM$TGJnMc^R!+5 z^o2&SR!^#mgs;}%@OhW*t)#+kNZW{pY#rGU?B|GvV33gw$>P$GF4PdnvxFM*wg`$~ z;Ej4)gtY=vC?Vr`4<$$!-PX}=p0_{Ps6JHX+*WzVj-%HeH~G4 zj!ejEe?ryH3qqZ*!+X$}UoK*b^8?gNDmRN!FU3haqZX4tPpTb=!(~81d@Lb}m&8xh zxT`{XnB+dk@-oumIDFys;1waC z?#x^?NO569+pl@y5+jDW%1uBZdpmjkY@+g;qp`7rS|qi8?nod$?S?ZPUE-}#C6-`K z8&={iE+qLAF0mDJ& zl^}5HkU#B?6c$WB{8KdI1S1Z{;QL6Ww8t0ZP*G??wntqW2EoSyn@JkG)A*gVLa_~NttOlP63G`<2-NFwg%N8n&OE27poMnopURf2YsqZx;B z!}KqxW0Kol)FOO@Msh=H8stp=#N-A|Bk}JJYuX4LqSsyvg^0AqV<|!3F%xR&s=Z=O?~I& zz?eQ8|GLXakPJtKb*FatjN60!idcXYi3JmMzbx{5`TgwEYb!RStnKW}(0Ik8#OLH* z^@K6+TBlCR3iQ`(2mzLYat*qN9z6>Q?od=#dG8Grh%ksU*a=>oaiP&;m9Up8#M9+h z&t2zZ`Z}4}=6}rYTZGjcz4?2B`&b}{ca}%mWE8a(L?n zg+1_1atQ+8HwPv66eWtMhaYBy6~qJLQ7l94**@fuH2o-@lqN@@|s5 z_28q8N%)3ax2Dv?S9z)yfK*&ciUq&j+U-A$CD_5Uwh)~a2%rEEl8l-_bTo@OnwJY~ z_BT_N5N%;hg(Si3s6C#E19pOk>LKltZJ|UjBpc>L&k@73|Jqu&3qsmpc)2f@SMO#Evl7Il6@Yw_rSj5VOs0E)qV)OnFP>DP6)KVN;ADZN zl%@dU(WAhEG{q3dH|lE4C&p6~OAc?y?Z?1V2P-|x&VkTR1tABt>hcciCeR>_(oIK< zQYrN6+O)_=J9n;j(|{C+`@i(=m~ZQlfF~m^ukj0+ZwqnzeY1sUluW}ihgNTshUBT$ z+fvt|q-wC#&@jANcw6jK@CDCdYeDx?!HF|vV7L6Hmvm;bfJHI1u{2>}mUC}{@ z2G^h+N9`vh)O%7T83%taIQPUAG^yS3S&{hF1W$X2Z5eKW$9uz?IDK^@-EQT?7i!fi z;!b(#tzR$Bui1M2t7nCYoz9b!GIIq@u50<74sB0SO%|x^i0)A=e|6}t$C@dfg;|exz5Q^RFX6}o#+9wBySBx< z%4$A_+X}6vt_9VO4`sAgPkhOmyU&iQ_1Y}Id$*fkx@&iLw%b;eKUJGCp<)Z=Wn=FP z>?wptsM*wjM)`AP9cPWM)_A4xyLR__euSpDI?sB!qNTiK<+;<)0G0GlfxqWBpQ@}5 z4BdH9C&g#{p$DGu*VgMz+5sW<=~X{0!l}eF;@-eY7%qfh?%J0(1gs zPn)GfITLU@`*t?r7ldpnnzzFeUNX|A+ADeE{aZ0Nto)7pyo$L+pBg=%nyG)UnC=yG ze{T}t>N0WD3iT?M=P z9iOu`U3lDzHqX%boWe5Zc906ZyUi===j>!x-Qc!#TcN=X0p z6D)1@P;{fG(VlljCf#&9=ag3#1{rqVDPr-8bzWE`=(OM3elZ<^qLfQ<|0KIF8~?cm zMRR%Q`0`WlMI(ocO53vDYgAZATMD*Qi()$d4cWZ*@skc2`M{JWwd%a_ff*1Vxc}N+ zovaSX+4H9Uq9}+ulMRD={Cf)XLDX#!cFNQbX)mn75V?Ch3O-Z*{u?AP3#$Z%J5%1l zK;uot8DdZCZd>kgzxWr6Ofxj8=*g$j>`MwnTKF3%o7>RczQt$ihjM~bn)|-J*^-mq z(Y(7#bi==v`Fk8>8qh=cbR?`jlEqQaj$|^VDpp99+k~jliXZ{b`6sSD5QPb<)HO%J zP7YQ<)Hv)0!daASuR%aA?#cDCYiokbYCh#0RZu)1H|ZW!uvlX7o%w}^=Lx={A@-_CA2 zl`{m@_Y)87FAltcU~^}*udlto!zF(KL}uE1Kd9nbXW`!a--73NYV-{dk3(4jM{8g) zcMnK^UL>y14ixD6ao)h%^oip|4mE!Jeia3-!&|LwIH++GdRyN6DS|<)9f&cG;+d@6 zX^SfM-PIm$R%{Q=S*sx^J^T2sO(7MXV1?}ij5I?N-SVdp6xczo7$w;yaNEkSDHJwL zpD99A2#fJoX61@s5L&x(FA?y^PUqu5zBWFwb(Y{S3yJQlkBIWUoz<%$EAtOS5}H~L z`IsxT{AxQwf+0onVz;ee1HO3EH1lIaU@3q6dkaHZ`&by^V)QO-XuQZ)EPVOtEDBLq z)baa8cFv}B$iRz*9snL_utSi*P7MB#r*$|S59s?2?tFaJI|i%n6!oC|FW!GE(Yo>n z#S+^7!h0`TR0dwwP>z4vBU9{P*dC0nGMll<_2P<7dU{hYUgo%h;k7jkXCu9VMl>o6#gWCB#_=6v172J+IbPJ< zWdw;UUqNIW*UsK-JV5Fm`>Eb|bp{kP%I^e~RcO7`+yWUNw2?}#Wd?w`FIS9Xn3xo$ z<1e-$R(=%H*8C3DSdcN0lW&X}Jk(EOEXOH(OwJN3H%v7VRM=+4%S3fZR`{K8JiH;;(ikgvCW6KCx)W}W z)vA`+n|5WZL3%4Bt|kF18~<^Dl=JX}wn*R^){xDR38C&=AM8IcVZckdccImg%Q?%Q zJ_||btWp0SzavdQFAjd)3ehh>?cs%SY!FgvFHp?Ocm9waItMfY*5VaA;_)E_Vm#Q` zQJVEmCB36%_Ep{@fY{9TZ-QHjttJBw#LqAN?M>(Ebp zVF7~ccXcYC1O~2~hpBdSy9E@?ptxTWzO^}gxvLyYa7vPE&tFi~_YQ(6qL>Q#f3TUS z9kj>ZA?wGVE^j6b>jm&E%?||=c6rx&=rS6hDMe4bLrd6(kW|PH)sCt zt}?3uy2HHJ%_#EqJAAoThi}*#(C2~+WMGesHy(fs%EK1NHSin~sT@S!?CnSGu-aw1 zj^HvRp3vd5D>LVBW@F3t<8yJ=L&u65J^QYp&@P|C02mW`l~}I1=;Q${+=}~SDyl!C zW|L5iYyAbyDC;dm8Tz(kvFpw~hqsd5_|vHglP)1oY`y7Q?D}ge4B6Ti zfg=gv8+0QQkEKplb&$dJ=1u$lr(tt?;p@LvyHc#lj++FF9~OkqC4WzG(Nx^P8oe<7 zkDW7Y*yR85yErc+Fn_`E^8}Z_(f4~VF0gxoLY-7Rkt1xk#|@pOyVeY$fl>v)MGKnn zMRXUwW@45`L+@^U2+QCWLD+GAf}E(C2tM4f)e@pM^;PC;Uo%}?PImFGQzO=XT-NXu z`W@wePy%Q&@2aGcy5P?@Y+3eev_tir6Hg3iVy?{9t*-9T`=k90%&fBmwV)XoY%d7~ zZ}v-Y1Q6S zy^5Z6y}Qy`hywg5o|^h~FA8~s&Bu(nuOBggmhN`zD(%OuL~QgnAI8GNTrYYU7&vVq z78GgnT6+jj8n)x2IzDOm|D6#zmoG0vB|_^}#Cjf@ipa`h2{@X(2|1M4?|z;7L z0vRQ$kdKO>OwyF~EiAjg_PnXpL(hcg0@#IeJ;zjUy5ZqFd-an%o;Jr6EmkK^9^<_~+BHIE(UhjF) zNnoIRa$WNjqy;Lz{Iku)UP^N;K5{=u zK(3;hjMR?lXs|2a`Wb7A;d!Wfv6i6bPTF1t!I8l{kHnYR$QnPRV*OQT^aU%L1L?1! z%vK1UkKy-aQ=L^A2O?rM$En-=a0GWGN^r$l9VSiPP-w-| zm$VNi*G(KCOIK=}l9NwP-h@=}Mq)8lkk9FkMp2*=M4o`K7mTOb{FxAOoT}iIS!U+{ zJ8MX>s*xd;5mDFmRRA)FKb3dN{ASj9@yZs^eaPc9vvxV`!wZaJ|AbZ3z-G{z&YL=; zme$!fm4b|QN3)Z95SBlk89*0??4=KsoP=}o1fC_OzkxW}e7ewmQrY@+VZ5fr*nXK> zY*9Gz8BRixig`%ZOezB+acDvoto0`$a4^IS%MgPg)yP5Jybq7!jQODzUumeQsi}sE z`Uu=t5s*e{vw#3b6vAAmslvBjvY7v9>^gI5L^NHG;D`I9Yxv1A)xg6c zVfxsu{P~Xg*SmhE@Wor3TS(MSlY}Jlea-~|;hQX|6) zj3H3Q^BGasIn~(N#Ut#0w8lDT^+=IFsnv6Dj*&uNYXBg(X*^#0s7 z=aFnF$wD5!!Ie?AcXSPz=0Xj+!bxRXcOpWed-bs^#~ETEJI#>a*+}1op61HxuDP|K zcSB!Tk^-g8(d1-ebsPPhD%l9Tm12nXHUV`2$8;tJ$k4JC|hC*bPFuze-qtEc-? zLMuD`u!O{S%@>Y>JUJE&7$V8WjEd^j5z**k~>1%Y=iBI_yC% zHc%sH-OZh~@(z7*;e|?3yqweT2h*S%TNuJKK)OoWmFf>P> z?js+3yq(d1O)NBt`E&BI9N4051K+w{EbJ2-x`6A?UG{?bE$^APU;upH8q!FlOL2;b zq^nbxxWR4@EM*gH09ZIl*6V5s)!SB?udm|KTFN6Na*VOE(&Tu|6HmGi#hm1{9Qxl2 zk~rWY(noWu=k34qr8QKR71ls&HOS5>n)nQ5a|v~>fmyp<;?W-z20Y+^8hy*!$C2&s z5Ji1vElm>~>jIz$LJusd^TAUp&7Xh=&iHEDAhcSbZAX)xKtU5D$Y?@d%-v4NHYk`2 zOWqPJ%EQHhY!!)%)T%FAshVE}&N4$J7HD~aIx(_jWWbq6Msv_S+0*AHNz(-Hh#*qq3;4~CJeUz`mi6Mpsc+&AHZ=A%K=%Q#EiQ?K&h#>`CQ;`qRTQniH9Xgq$)D=(! z2_6%LRwp$F&8~b40{u9bz*sx$s)_ifbk~i+q1VX5U??O)TrHAERGpqT1SX~8vG^s> zSr4u|BkAY})B$pEqnLEEn0}~xgQ-B2y&Hxw2Ja2Va$Z2-pwCK}gAIHwDA1f3^cSNS z7S)t-k7_YrF08UBkq-pgQc8sgYmqiA>0=DsaRSB@1rBtG&(aZYNbv(l$o38K=bAQ2 zENIeUT8BSZQ#lpeK3OKpyKtSM5bd|BIjnW|*o;J~+yZ>tkg23A7$`QFKg6^&8*HSl zn?ftzwbLy#67zm&6fGIfZy~m{=BZ@HNzr*>)PXUCDPhn{tkMdtbg~j1d}ywt<%re; zE)&!k7&#^!Z)@o$*{1PB>CrdghXxc;;1N(JFrmF)=C$b2;SXyyUI$%k>7aBWd{X= zH)=u4>Ly4Fiu{#3umn#@+e39xyn&rVx@At}3k}D%fG@{mUScC7hR~A1GzcPFp~5J? zuC*!V2d;?KbW>Ve=EIAR^wu7#Y}Cw-FDQM0LlUpeL#9W_FA8>+2l*G79iG&G7|SpP zgx~?`OcphRkA4=^BFnSXWVhh{hb*eB6JeT77k5fd$CAomor8J-{AO?lTx_%;tl+MX zqbna;lxHwf4Q&PH7Tx!g%sQcQY%x-j;B|_t_MmSM9dwIiZkQyJ2?+q;G-BIPF<<+H z<{70AJR;h_RssWVZ4t!1dx5;WG@pP*JMeihf_Nh*AiWrVj~rA@B8%VAGwTMAElk-T8>PNdB|w%{bfhM9pj&Bc-x~P z0B>8cq()$TYFcXT&yv)~$SfI+qsbK9;-EDDI=hjj%`cEj zu}4DtVt^;5;}cYmvz$KHrzWh(X~R=tFy@5+j4H;mXzq+X#xyJx-ExW7q++HKqH4}- z$V@do#;tAhJv8F&XX;yHT?cEj-sm!8YCP(#_iMy4q_S*`TCH;%Oh!r<@SL%Hl0X7DAgotRP9~ z4U-re`P*{baz^3*3Y5X{mAqGs#8;_m@`TL*I{c_=+D>`ayZ{gD!>$9=a^x!lhp9Aup=|a}#*=_SwVnV&)qzcYMY-3^? z0uqg~At_5>xDKcwacWFMCpAN{E?Qovym>4B$s)oYouK}G#Pr#bNx?Cw&Wlv?4#c+e zU3wJo+m#{*2lJt?_aL>6c2WSI3#%JE*mWpyJc+hUz0?dipx5_1@)?c{;b@=883hLZk^*B~rJ#LSHh)0X zH;|XitHtOHK6BcX=!GgGa2Yi&QSFY;Q0)5b1HV-B7()74*r~TTEc~pVY@NNI(1uUn zp`LeONtBwh{f`Mz`j!+c&0_f)eDz6!U5yWgaJ>i~d9|hVG+$W~u`mPd(TeKYDiKyY|>Wif~jf zgQa%z2~|Xk6HEs?4c@dQ#hbp^E)FgvVaGABCH-RKQHNb)z>b)}aeV?};VL?*KzbYc z9yi!F%2j>YQaWG(+SP-|HY1gxQnzLBT-n2}i3<8@>5%FaU&HBfwnArA7KA?^oKPpB z7VZoCf3S{%)Jspp4zI(4%$76f#@NcBxa_DKY=TI=%MT{K{1-kzM}IPyWCIPw=jE<_vs=%vb)-=V4u)bhT_( zS9zt_)oS+zeQ(xkNCiUW86gQyr@-=~XCC}^sqWT}n*%slJ zO5UwtZn9H|d7GxCGq;MESAuKcUQvfJWU8B%4$TnNw*oI2wPKaZa(?4p>~h)DEBZxB z7pG!51f3$v%rI{^bX};+RtOrZPF=<@k3VO=*_CfHsdl+NdXTgD%u$$9* z1pm12eLt;V@Ndgr9wlC(aT~&wlthHae+V~Ik`m(Iuy4JRoRHv$ec?(fLc$v&7)mpR zL_b8_1c#UShRF9y#zGT5MDi$`3rTK>Qc|`Nn)o5gOxaOr(uV!(l~)T*{;)q>d4rJb zhG>Seuh7&F(KnR?gcLT!yjKntn)V@vM}?{dXFuO7!L9^j^&}WCZE&HWyI;NucUjxR zQOe$G;#>p#aB`byC*ri~BA|D6xk?{4vxeU5EX{xrV69(DvxVqZ$lG`p1zl%?S59s^ zuN=H4c$SD9kqJt#^0$Ta&z5^+b_nxPKH$}^fzZ~ArHlQ$;F45o8}fY4s-25nmN~ZW z6r@g1ZR;r+SkrZ+4gSKeOC4#uvrnU-!l>4(&t`jsS;Et|yWuPNi#}{WuU}+ZC(&dz zudcR+T4t#AnLlA=ea(jwLoG^t^@oxN>5@F~ltH=+-Y9IXl4<8z`>4w==<_MZL)!8* z#{Ie#Xs;<}eoN`=<(NhvYOK+qK!&Xh{6jhE;w{;m7I~ERDG5}b&D_iWsW+vz4tz&3 zZ!1A-oO0SID!8HQzI(82)CNk`B43%+w)^e`84D>~Mmvsw7)e{sOiiveHdsFS_~*|n zDvwa<`RKx$NWgl@$fG%NGX&s4Me@L_XaPh_Bvh@PtaXs`9oSvf>>c0FpRtq0>@Nj@i8`ZFHXv?P zxQ50DWw0cvs0{dsm>(v}$XNW~j4l!{lrgKi|0VF6Rc#)vs64F7U+^+SGeV=PG4Aoe zpfd?ByW!ju#{>H=ya|SQ6OIz>Z!Nx7MzG(lR&6XZ2V-wF4Vr)#OFgp(HQ{ZNn5b+R zVvjYAU>~p;RbC9Z_e*}W#fJiO+QX7Og8T2qH?(G>%7-HW$z4F{cj+A@AYN1)yYk_8 z=1+uC1@NB5)H54#(RlDlQI_J2XH}Oj9=e1}UUrEg&KRT;uLP3Es$HnmQi3u5078w# zB_GKr8x>U}g);_moFSy*Atgm+GvHcAD})?2WE0ee$tH6NDVy9Sm)T7?twPG?o=PL9_VFZR*@N6<^EpolDo>S~JxoAP zi7u^Qa)&MXS=F}%@oIaiDwlC&Lv$%Ng~s*s%N{0be|qh(LGNKaq65gmBB_rzF46N#+2vi0zuB_~p$8pxX*=`a@O03S42 zC%{}y87_3KUBrN-OOYdemiogIvf9h6uaQDOqQ;q~>YUy@lST*~xQl>L(nkno55e6n z`768b5!NL4I5u~!49+a|(%^8{%H(j@gt})A=dKk_aNoj}dxbS;z=%#KMXoWOBN?q@ zRUrAW#{ z*5-lM?!%-~B=t(PrgGT>f-&e7Ov8$aX5>Xxvl$;uCTn~+`TapsuRJQbLX2*j&9ymH zT-%;t3mT?>G^`RcewPCGFHB5piEhA#AoOJ&4~V;f#e_0QB@jo5`>516qKwlsI8xbW zbD1nd>p$hV|s;@N|MbDEv)jGwk1cn*G#P5qqME; zDUbQ8q_|I!QklsZ{5t`r{uz@0Vbl_me}#=9&L4E6=q&a)nf3iKA@z&N9BqDf82|Mo ze~&9%yR!qjlaTtbHSXT5#>d@8#5#JEJxht<^}@n0n>{n{nx|aZ~X?jOk2tk1(VHKLz}}`i(O;cOT!q4vl+kO z%GiDBa8ZyWyHIq$wm`ufoC5ii% z2G5&4%Mhm088N0Jh(c=@*eV)2jZJsXygvw22>?hGooJ!2;L5m-E8|?Qj0?FluH?$N zi!0+>Tp4TVa;@=ou8e8<;qxwD`R)Aj0?FlzR#7hB3H)yxH8tDa;@=0u8cLfGS217 zxR5(zCRfHfTp8cu%2;C#*BaMyWo*EeaSK<*h1?lG;mX*QE8}r?T*t9K*BaMzWo*Tj zu`*Z2h1?l8aAj=Il`)MgV~x37YP^{*Jp5M9uSxswx+gj7%Ou_PSmv@uCd+cucb6y` zaIq(?J|lDX?q*5X8ktLX|GD7WD|5?o+qN}olbM#=zpt^F{QPcE(%Qhu&6Yc7yQNP4 zWEpzF?b_t;cXuya$C^A~x%c}zu_^rb_9d;?nj(HLQqtXa%A|YyliasVQMeZ~dqeh= z8TSs$dWSggltgBV}ch4x< zjaC`kyiUk&w#xeMbw_r))v;}xShBmUj(^|8Cl_gzyUkloF5W8tySIg0idDfj9}l@K ztD^5dQF8fKC%5^YkUMR4`n&HPxiYJ>+cvZ0Dy`0c-^@3)+Uml#EoxJlR%PF}SWIoO zy0q;dkE!5%a7zlh6d-ce zy|Re{A&Sq!sn(OqwfqVtOE+Kr-kj+({oK{mHr>$5!+u9zd6b&PPrfd`cNveT~2VL?Br8UGco0Lt(1#H4UW>N2`7)Hl!Xttjf|fay*=-+E#27a5zV`UDG)E za6x`YtnsPCXY#)Y&3|B33H0M8-%{+yMeIkEjRb#+P~N!7@PCq%F{U^9Trh+)2%(P89{sSxN~pt0 z?dtF^>)=bw()PQ6cIA#6h8B*#T;apN^rA0yd=A)`MEu8E>_-XqBWel!SZsrRIbq>~ zDsq0D6jp~5e9lFwO`%8UM*EFE2Wk*iC^Vs3X)t8;Hw zKJ(Y?)tM(Ra$_ka=JvPJ>Rg^{z5befx(nq+ZZDOHx!p~@lWTTOdYh)S?qYe7drJjk zZhtSml^cF7&|gzccbdG&BLwOJ&`ku=N1(^daWS`lB;U;Cxi0UoX`w4DFYaAR}>rVcfPP&ujgO-&>goj6jn?V&{i1Jvkl|HMa#86U_sED}zuZo%DL5y4p$X|={TCYvb$H;|%{AV7J^UuJ@&CfAz zUe^P1Ym7W1ah7JFE(OR_+2rp;`GCBDP2Q(MgVNdLJU8e-?!zXJ(v<=7Y&Q7^Q2`(? zVw3;M19JYEWa(x%{DC}oqn2kbpK2h>0$njzC9>) zbJ^s(coRXuW>s}iNC;L467Vx!11N-n6@vQbrziyqDaHyx{qrYpk>g}bypE`Us=9$Z zgH6uTH3jlwHhI6O1dyL%lMks_I8MIHCcjxFk@U>6f=%A5YX#(Z_pXQ1heV}-9Pi#K zQ2O6IASb%l>KudTrXG+J-3yiH)3XP1yn7Kjub4ED#YQGyn7M3fS3%BV$GaDii-=7Da=d#HIj^b} zyL*BB=FLPPC%PBN_4T}f9PeI4P7#v>a=d#H`S^Sw=NE#(Wd<$3RRYAqyf80dSX=0A zRTGh_`8WDDU&?jK+3lk5H~!KzJ)FSW_}kkwC!u{~f3fMggwBlv?WQ*px;GALE_|HO zyYY|r!gmS3HVzdp>`EBi__uxGP{KGCkBgaNqA-iM(abbalEvpjb4!$E2{h8e5|vp( zF6KFjGgu-I%`YeFutbFy-Akmh#9S7=OEh9p8W#;E(pVBM7K%yMEU88d)1+lAX%|bk zBo~%Uqh(lp>9aN4lUk>WoO}BlkQjhuJ}m=~EHweCd+|9x&F<}Ar;4m; z8ibqj#+HsDLB3j~y~wgJBQfZ|1bdjnG0BMReN zm91{gFYUti8@{e7j!+L18DMFrsC02xuJvzzdv~ zA)u1YVRp+R1fT{y+Y8t&W1yDZemjHRGH+Da>~tG;%Mgq3nzO*d9TN`5LUa3BV3CQ{ z7h_TLb{4R}=LKRBF=z5p$H}d@a1aZg+FD?-kHccg_DgD$!0KU77gV*k$yb0cKH1-+ zss$a>ff0|-_MNC|wEMu9nC@smFkb!!zScNjB;W3!o4^8}@ED7*V|u^>?>CIa`o*@6 zo*s;4}&+{WSSw4Dij@h-ynzFaeh-9;D+_dZ}j zbP+aIUs-2lW}h5?VJd;(w( z07E!DPo#VXU@rjiKEp6eQoaK47XafpnAcLe0oV_~**FmO!h@6_(5k~&tLjjzPOVu0 z(!yI6h&poC4hP3^{4=3Fi4GKh7`4l0Yj&pa%TJ;w^8)@K*0>mRlk}U*#;MOjZKmr0 z&NxwEEtDz_*2tUjF}ynIw{q8C`^R5X!fzVTtpPG2Pr=2cf<^NtLZ^rhooz+JkU)7C zH3H0%4MWwry-0YO<2X+?3>(81MgZH-hM`V2xAa*CQv;ueQ=wwv*W6Q`%;H4olPz%z z1x-%IvaP9_CEKT}2Q9nE>DaF9#UKLQu0dr+EE05tj>XBaIZ_{&`pmK(lVSvt;*vl$ zHj5G@Md@SKFgEbD6VpK^F~Fh#uMQd;^!k&);v}adN?f#n#VO8AU2$wFn+4XQ1%k`j zEU*?me+Vs-g%<7Ss2j88F94{_0iweEmwy1@3=U8MwS9RP0B3W6sAYA_`vGXg0iyZA z<0Npz$&AJUqSE!8qyV@KfR>!n*E=Z!(1im;r6lh% z*uep!()Ct71>koM5S6}u)jI(G<^WOYiK{*XP*@a}MNa8ASN#N_BnOB}?_R~51|x(6 zM5QY^Qvj&U0ix3B&T;^p!2zPu!<{t%IGY1RrI$EU0Z0QNVdrKvcS!%Sr&caDb?Ef0qpabmst3=?s^x0QBJiQR#Iqp#U@jpgO1Dc~(aQa2wJ& z2h(!ZC(+;WKC^ttQGBUsg#did0ir3(NIMC@4{Trr((z}~&H#|b0V2#RY3Bjh#s=O- zn0L}j)ny|!XD@!56vR@#|LIi{sf_q3^Syqv1*X=}9nb*hoN!|&xHM=aGHE1ZmvEK^?*vcmVsT6Jfmm6=C; z)LnnCd~_s8-K}C(|B-#_?jg=I(+;V77`d!Y%TV9++vPyoiB_MJt1qXOv~IChZbvuo zz669(M3_uQ@(qglku|464&aX<-n$zuQ1C*xvx`}d=uRcN$27RLy3sRK_M*-w8hQdS z^U$j;Cc=!>aCbGS;m0<}5ev7xu{QxWss>XXCbgG@s06(-IRqDLmnayx=2NmZImgs4 zKU3Xi^uqmz+Lw~X=%80y?!xDd@R{nuxa&1FKIGD?EgPxlWwQR+()N5q*`fMttG8Uf zkhv>&$bP57|{IL}Fz%KCcf#2v4A)fpEWUn9_5DZCluux2n&GX$QYW`v`X z<>;sx;Jj$J8Kx|ovQ(%EhJ)fDSExNNrm7lbi|S4uymAx8#!>d{5bp%6F8 z;YM+B^3u5u`{K?q3YxfLs6`WZM_jDm`S{&un6Q)w2v%O+fONaynMJQ@= zzl>h(NzN4b+PgakZk59$ysn&=4ZS5tA(9faC-}937xHV$GTs_?n%2|WE@p{gac|xX z3M5tcmOy|DxcUFAX>;E|m%x$Mp7QL=W-ZJfce>Eyuqo0JbCd-3>&}X$wJ@bN(0`Ri zPm#W%r2?SS2t?gLmnb`oKxzmp4nU3wD-D4(5EcRjAW#khX(Frx07^!nLIj$Lun?#e zfzBb27Q%`L&{G7uj6gaF3xRqN=mrAmA*_P{lG+HMdk92DSO`Q#pvMTLkFX8_$Ps~F zAdmsVLZAQydWS%U2Jf?kd!BYtPsc%VIdF|f$R~;31J-pkRt-E zM4*)j3xNU<$PIy<5mp+2k`c%YfmS0d1S&k-yb07-cPC>nt_AS?u;BG6$3@<3P_0CGg2Gz9WOSO^q=KsgBHjj%ESl#D=y2;_^f z5U3P^&LPkigp~!LrwDWzfwm$n1nNPc8wli&u(AOpwFyA?5GVj)ArKXT9wSg7!a4>Z zM+AC-K*0zLfdUZd9Rlq{SUCVnMxZtX3KiJ@{tN<@B2X6s?M7I~0rV7sej-p9;)Osx z2sDI1;RuTXASrJE3CIB`0%0K#6@e%S6os&I0py54GIB7HqY+jvjaCzYK#B+y3zg8y z%iWl0AYUUm@%BMI^%~)n+h_E&YeXkj*XYfy5l^Y^)LT$9Vd5RJ*_JhuDR3jou4dxI zySB4e)J#gbyJhy;n#mLI9h~i1Bb##X%QKO(k8s@JUD@Od%LR z5YPlgh(=`wQ6Pb!h++Z+1r-Ga#BL^0a75-oMFkPWMkUVLt=%}|%%q}#jRK0I4JatI zvoa_k-d%M9_WOSCcklhz`qsbxpQTBqPMsQeJ+=3)UAw9cb8f#ekE)&y zR{yr@vFtl@EOM)jbMAy$?5j3m-_5i*Qq9Y`d(z@m^+a}6wZ-}BNjX(-EUr~gVOOhJ z-mEsyspebOR9muZ=2$jVTj$h-Sw5?_W#7xRY_Fc0bMK_(+v;iTKdUXfs~vLwd}H~o z+KFAOW<{?N=G5}7)N5SW_vct?*SO}~53@3?naO^TX=Pk9E9b#Ut4TGp*>%-c)-@hE zb#JU3YQ*e%HEY)z&zyR`wMUINyJ3#CPmNDbLzuOH&3yL5OzYqpznq6Bt;1^;vL97j z$JF@eJbGgtSF?oOsAiK|6PVM;x7k*+jQx0yO>Rwa&f_qfeKpJ3Pcm(e)U3#Pa?<8h z&Cl$nYMb*l;WWteo(pXk;RJ93w5~35^y7+L( zSy;0sqT&LxuKcC5yWJkl#?_C%z!9*I1&1arz?seFd2rGdIH{(&f4*ALdug_csn5X% zaA>$l$+@QU6C9a?LkjM>p)qil_)((d-TH-#@{aw>n~Y#E0_TBMxH8||RZFN7=1FW7 zNvN}lq;V|z#87jeA{P#88m+=vCydL{HVWtRX{>Or)!Yh+;?InG&qX6Vi>M<{mCTZs zGLy94awHVvq7(t$+NUU4pbj>*RO@QK?F~v-TS^zO`pj(i%w4Didm*6sS#PA#X0H>){QN0t4P~;ZA}#(#u(p z`)!3c2@ECUBASr_yhc4Ep-w3;3m8+Xc0GJpqYoeS z;o1NhxZg$z4A)FKu-f2y%7c|(N4Veagouma?#&cxg_5lCf+Ww@K@t;4vJaB1`5PiG zO*z1-DN1?1&(NLkW}CW(PdT8~ zeGMYMK*TGEIE5mvL&N|?^r8X-y`jKV4~UP2gpEBT+yk2-VjGHpgpGX=@g5>-P=pv2 zVT+1*3Pr4hB5sC5d@sED6pC00Mch1vBH+!ZP{c}HL?SAJJ{RKGLc$g(A`yz9Z$}Z3 zumy@pgd*toPy{YwDk`E4ipWN-h=BO7@Maqnk&RmMJBole+n|VST*Lv~in$QK9ujsy z5eJ%4>rTIyX$>&l@1w`upLRk&bAS2^eLP1WFVV-}=;Pf&Q*w~ERH895f-%Z~F*1t& zI$}#DjFAx@ql~C}pazu(YO_t-AEC_JA3f+*GfGti^y z@~0^2@~4n=`BO-`{3#?|{uGiffBFtm-NmUo`%tRRK1kKs2dO&yAXR4{r0VQLsoYag zUcWV>RKGPss^1zR)o+cE>bFKn^;;uKwWR>jPsI8u2a0*uQ=T7%>K6e0L|kUmC+0s; zx#yz&hNaoSoLH<$pD1DgeWzFft!pYU9_VO}m1w|OkP6e0K-{yl=nLH{Xf*Vp1-^|& zn7htkz2Rzl2hr%kMT)cM)Ehx{+-8WTaJg)tey(`}C!A|e?S|N*%(Hy1`Q7s=6>d!M z09Ylda#eb?7FbS4ZCG!>n96yE2ntDX72!AUKq` z``8`i#X{);wQtuyBj7M0oc4*_;5S*EQw2v&!1N!Ek954Xzux_O-9lrV$2T_>!V#A0 zWw!g|hn~hsP69BwugdC=gCnzF;JE*UhL3PSnB^P%OA$WvY0A{velvcXujCI%`1j{? z{c5AqTLV}AvhV1zs#S30Ly4a5O&-Ml^-nlTavT}+b3QL*sxXg@OI%v;c8X$hX(Rr+ zLw?mX!XY9Y@tBNgXlzR`!V&jtX^Epj!m_z?=?=x!rm0X(@z81Q$6@j2x|z3*s?|4! z#a}R3xUHsVdDQ`&V2PUI*#l&Pu(WwWXTRMHFw+)YcaW(Jisgxm_`}`ToqRsx~d;=og)Vhl8XdMRfSzAVuYD zd%M|G4LHBYD-&LXdS0$-?)vc2RzZCWfC2aC4J6T zuUNMSJkiNdLc!T3x!Zvgi80Wxsj0-lc;TodhU6$FPYE25%Z9W6@F*R8XDEd-?1iVG z1!c({?`_@oI-V6Av9DB`&>(-C9;Qw{JEz**S`Ckp@Oz#z{@GPC#Px{{YmW5&E;VUAL4~u%AP`rEEd2God-qg0)DHvjtS-!^W3ooMFc4gHfNz47 z@`$>WZ&dABbGw`bE(6lDtess8H9xRu>#J{nihlgeNEMV8%P(EfDVQ|r(Rh`4#p})p zw$@w_MZn3OunR}N{(fO%b`zZ11)3Q5+hYNC^q5>7XtU5@^dG=>?A4Woo}E;)=8XU5 zs}r-=7)KXG)uMyPhi7s_2SRSVhI5bAAzRB|oCi@EkgsKWxEWQjiL){xE#kn!ju|6N z=b9@Pi7<66O-40F^=JJov|Ce|x@#`v1U%&d&^!8U4;07f3r?6J!MB*Ox z{LQZ3xJ>s%_aGp#U#B^MpGnz>%v-m>(a1*!kE4e?dB8@2-&5q{X5DY!#_#S_^GUwH zc#&;E)u;Dx2(=gct5G^IW5eaSWTfw6aFN-z3Dj6BqxaWUk=_V}lgvA$6ZXNu3JsZW zRQ}JLS~XRr%QL`4JL>q)A4>7z8)6Gx=}H>4rs()q=L5b`#Xs|FQG7j$zpAKEQxsMC zGaQP6s0tKyEd)h1{@ev`?-Guu<_b(|Rl2A(0uzb)E`@!9X_8G@5v7TLbpAXr3Ve^l zZF@kSild-PoS(jIoSbta$#6jlhtVZV`%}g#@L-xcs}~CIUAzLmW?lH;eb*vmlw)C4 z5O`Tq4$LqfmB7u*%F2`}tR@}qAt#;ZGRw-ao5YCPP$%pOxc@aA;frJabZ!hfIrnXY zIH$A2ag+Sl*2&1H6mp%_c^MzNzJZQLit9dq(@KhyBPZchcjFc+2 zD{a;pH%kBZ%hQQrp$VDFrEiC9S_kuT^4~Ie0#O8|UQNd#RO3l z={R!>8FGNoP5d4thPXa>isH!7GD-kwi69EWA_zfEKw`@H18$)s zwxldQko-<&kE$aNY4jy~QT=E%f<_C{gw!lZeLC6Zz+9AOr)9?nnWHIdREo+07gNmz zDWeX|JU-%bip2r3X|Qa@=2H``g|JkgxReyKlfGbA)@838yV{EVlbaX5wY@aQUn}$w z1-T{&NgbhVf1sl?c8}WnN1Z(I{vMzEw?7=b3kRP<4OhT>CAiEPH|5XQVSUr-Px31N z@VYje+mSkIO$n-O@uVIBKgn30tc@?_}O5#@}d-~Z*;m_ziQ?2J^_ z_=**q4(bj5JZ7^mBM=T#oBYyx8}3pWx0IWL&L6YJA2!k%u~(^|K4ItHj*ELkechr) zzZrSlEn1G@Ap>czP#?f0*PVL&2z_kf@5SRsks&FMA5Dhl@%XFBkS~uPi$Z;87V!9M z$+$&4{(3UBn8)9!4+k@z7X|S6o5;{o9zUS~AHE9W@sr3<2#=pahC+G#G&0>!Jbnfl z3ghv&kf8`3Ka(siipSqhmJ!Y4XOVHMdHkJZD3-_HMTXY$_<3Y#J&&JX0A~XG&TQoI ze<9;G@%VdD2#&$=`1{GYBpzQzhEjO^gJdX;$3IMlGI;!>WG-8H{NrROlgIy+e7c>- zKS{=A@%X=!p`AQ_5&3i%kADV*o)_iu_~*#Dd>;P-8Ty6CFD65KdHl;{Xg`mCl?=&v z{Oe@sAdg={h7R-iWhnH#=qQh0LB<{D@o$lFzw-E%WZX#}|1KH&oyV^xLq$CPJu=-H z9>121JICWcAmc9Z`1NF5F^~U{jJwR^H6?;u0fJpSJ()OY3{kN<{@tL5?Ek#P@rNs2C9bsv{U z5}R}CF)qy#J1b_c%PWcfIp%qn_mb&W8VxSJ6325I-7eoH0xOobNXgUr9Lrjy;VH6$ z!~G*YXPncF5smS5vl@{rGVydjH{!f#isu|Fc7w>)bM85Ix5&v;Vx^_+I@8nZoR+n# z*i&kyZOrJ(-(CL6{4)4r(gMB@T=^~z*?qgKtI5NzL+4*2o~c~9b82Oy!{oEbBS`DV z%dYXr1@mJM4dg>_l59uuM!4JJv&EI^N5Q?Gy3!!T<1Zvou3(HkE${ z54Qf`>N9f9#5dzFf&#y|8hrNZJ!=1a@v7^l=4Wsv0eQJE+&O+l8|wF>Xv3lqxK||e z^{1~3{{pYDtKlZMmHv+LRoJz+3Db&v*(V)cKJu*XVbfD|$Nh6b&gX(be389_Ox?cP zro8-BG`g@C{MFP3UeFuu2<~iqpZ)0CPQrgEKE}>k#*q{+oMY7JRdcE0H4^4o6Dn-$NkHHrNM0pUmf@+6A!^{_mfEf z*C6Noy(*YKTz7&J z^E7z+HM&Ms`SNwT+sD(SD|dhFdT20u^lteh>-6;7?eiXcfcGr?=-VU{*vBZA-z|>r zNw=$Q^ME@~PMs+@sSL*57om#_5I6PjU7<{MXlY$_$tN9L7nQaLZ|L(c{I}Z7Qpj!j zbjAU8g5XM(=^OLXTSI>m7|QP_$CZM6NQP4MUferJ4eVKWbO!c96Yn>_vb+MUpT+PU z%HS&KCBBC{yLrtIvVeB%+0hV}8dY~Dt=AKq7_2V9v&)#d;}Klt{?z>nu+>-I98G@=-m^bP`#R2$ zj}ti0slj=ZcfLP8xclR3@LogaNRH0J6}`TT!Mk#oS-~jD^2N-m+Z}mV!=_Zd3bq&Q z#^j9V+R3V`)suI0p6XvX7w7^U+()l}9gYVS9DVE^OuP6pICk9}aD4(oZkO#GI4>6>g_Vdt^=puoNB3Xf$d+q(Pkf&*SR!XModAPyb9LG<=xLhN7U+co4cJ?<|h?8@J9%-eX=HKt)^ujeMKG2JsM4>nqH z+LhoUgXw!Ulq$H4E+Y5u%MT1-=a>SHuHb4K{%Ka(xwJJ70!vWzWL2Jl>pJ)#`jI^U znE=(pdKp`7YD4$HJuE{GP`+x2)J)IKIr~_Ky^9Ku^l6CHkDrAIDHxpP6 zB-gQMW%Gt3RnG98D4?a4i9nA7?m)pWhyRIpaK}Su?#s(w&wRj{*f{m^VIB+XW`6aI z*W%;`2K(yijE`3jD0j2=+Fn0a9+B;l7Bef*YtOFn@`$}2Y3;M(ykyceZTHPyhqT7i zwWAq^PtiN$T;dG)^KGI!4KY>4{5~U@(vJ~VJhe$2WzX# z7T_+NUD2gbmLkPY#u&%FU~e04(2*Lk6;%D)EbShCmpu5me0zB2Cn5nLjWE|vx>tufyIW`2`N_KVYj8o!#ub% zoX`OGYk-P^;rr{b8@Y-SXI!T#+pWHV2OFyz20`xI|L~HA6;`v7b8&xw8_+M<6Wnt_ z;F5ty8I)AWu=1PYrK+{|$B_u0a{eFbjE)wrR7`TKJpsJ{OOIha65)}bI&Z4`araf) zD~fieS|u+-CEpMc*-^EMqrlamg{cGfc6&+v*sIOT#>pf}Lm!DI|JnIz&Gk8o2i$|Q zu7*vns(QC_-F~=7WI`^Gwf%IZA-xh@fP#F~N%N|jqd~a?oq?PT^%N|62tHn?UYox( z2UedCZ;`vm*Mhz?1M0}#*$C%yqM3R2@%z(EEx2Iig_#4GO1SsgyX`%;`xWxFGwOKC zm~^<4#aHQp+_hvKbG_o1mH9QBcErd~X6c} zx8sujHIL1V7|3Hfs`g6cKly)G58x0!th&5+Q93eRfZ4xk?(QphVv3QagTj-R@>Rvt z-ySVMil1>3HK#S@?JI1bom4no6_KT}3vMW>;pDm1Di6n_>wWfoyUw;Y4U3Ftsx;}# zlFNE@I%Kuilp6MS*F6*7wA^UJm&)#%nWI9u&RsUeJ^Ow918S6UF-ZV3E zD^sOi|4?$-*M}Xltm{+lO;1MdV5+>;Kb&0FuhS`G-I!%>8WfeoRM9s$lI*NBzf<<1 z)X(13AZj;LMcLqJva`bOPFYdO3VTzvC~yExH#p|vzl-IWoV4IcCm0Nh>SZN)>+Ma6 z%tB_2rQfPZ7J1-jbHyF0L*2~OxZ?Ol9Tup1!`Xh%R*&;}`hIhinUrQH~ zEnWc0jAzu#igy2EZ%W&G3{r$ZicP#v$B1cR>`N4z?v?z!`h%J$NLs zGhjjf=%brEmp;jNJeqYP$bQefqq}(_zwCKH(;wKCI0_W$y{W&RUUw^Yi79MwzWkc% zrT7yVEj_dS_0~(hrnp1MDCw20yWVjyoQhp?VpPHMu-;rRs(aY}CA?tStq}dDxMM$s z?LYl&jXN+Z>oy(3+WC_g`un=Uvg+cqM}OQ7(Jy~{eUk%NK1K9)zXmg^fGdA2*#QPt zO>y7Whg~@H_}%MA%g*NBk6q#<&oLQSVg7NPeLDWJoBWZDe>{R83*l|}aRExW6*7_h zarW6GG2{4|$9E&HypOQ?{F^*9Zz!}~aX6$i92!oyea3Lyk2gYw0CjC;t*6Q{ZiW;S$owmXb zZkp_^G?p;cnigxQEfLjIRBkcXZYevhu>XOz+uCEzE7nff?}eTBN}gSdz41PxR(~#X zEd30H+;k^R}A!c-(ELp!=!J*Q{ zAydJjdTr+FD5VVyrFCxUQBg|kqZDG-rblto^{O?QZ?c%JW*QM@8ZSODKS-FCtO~=w zxCV_}!?M89A!eJWT}_@=>oWD6!t|@j(^C|tRe#Wm4N%$;s$?6Q9u1!f=}}qfQ2|P^ zrb@A2=#cH2g!Cnh^p(2l(fR4?@)P;*J}}?4FuO~bZ_E^yRvs{DJ77?aKc5B~+~pcn zBpTigRD77_GPTlWYCirfF1Op|Vwa&XZCCjeD0CocTD`)wqH?v{E7GHU)1#x3SBEOC z4M<u6NH{;~k;#Ny2Q)V!jY)v~rklpcNcb!>6UA%Y>sJa1EX&j(*x=(AH}B zH)V8)uBTm*i~Zi@Y1NW(@`ePYuUV_KHs5njSC$6qfzdyWz8h%J!8QD=)Nm7JG^#My z@I#=YG&R|-x_nxZivx7XK-u&*muVUBvpn;r3bZtR4b+FBwBA%HIzMsI3l{TD3A0_o z{A@P1^nq}6TkFWiR>Qxb0&aTKijp19CF`e@+hw{;tuCKlTspO~9NIX&+U?v*h7#0j zC3K)~x?a;Q=9>VGw=IevI2!F{8toj79tkso#e8ALgrA>V6gyj(Z4%}ev$4UjRc=@7Vh`k04Lzpj z#?^KX91T^yS8C{$s1;(jJb~HHVt&B=_TG&7Ig8mPVG_hT4nah~9Ecw6#&O9|(^HPN zaN~?k%*@WdFOsoLgQlBXIB(D59?IZsptRMxx$iVkCzgc;Ml9#V21l=25gEZTx0!4< z*@j~px_WigD*Gu@makYH8nblrvdHi$VPUc4$E2v}$e)6jt>)M+TN+{>Xkk6o+}gry znT6F<^T0q$YfHM5Y9ZZ3{mjXnB|;V5h0O7F>98E z21YMgwPJm+WR?qOPH=2+m}HhK8Hic4I&f)Na7c7uc<`jC$Q2Q*gQJPDjGKSyk7cC3 z9|a$FBgZmaJ0Ns(3WVrW;UjhGNK0C&nv0RCrCL=o7z zRT_;=RCZ6@R`Yv}@wSuI+ah-DTD$+%y8jpcSu9<4_UBbAHjMpk*~C@m%T%Wo=(i^r ztvEPAl^{+4hMBbx6-!OQ$0|BcO`laJAjS~_`zV)|K3W`etl}+R z0!KGLeU^@J(ui_JnkK7+FBH&-pkl5p&PXjpk7mSCAReUZCp|VuPe zIwzI=HK|T5)-l-4(M&D-6x=;q#D^mAUm%AdCPIi!D;;jL>&L2_ro(NP*Ry4to-NdK zDMK-VK~!c46ID12#jC;>GX$=b7u3LX^^CE)gfqbzs|eTQa&$l3+NMu2re~_A7}{|1 z0*FvvKp2ZjBQ&5asEIGC$tAJ!+|>mA{v6GaPu|JwXHaY3G{;~mg7@ah2w!71v))TH9EURb?N@v)-+kqX0!ZYMoK_qf+Va^H^DDy^9aIiOavpM zu;X?j6&jql5;gc^=_gm>#@#5FsAd=4Y73T&S(sq@6|q_gzf{B|4r|!bu8QCMU8|&< z^q0x{LK%#Em_S6KRFBZoq6pITlRlc11>}_qsJ{>#|6(pH{`o6q6@p_}%;m(FIVq{A za7KpNhY8fs8wR^5g3D1Z343Tncem!Isu7KItH&5GfC! zx=%T@K(neMGs-D=rfN&;6W1FFg_O3Wt0u9H3A$7&$CgOQ)YUppBn4#Ycly)L($q?! zsEQIhI*XS47b9lu@xb6>E>VgK-a9_uI3tvar~*%zx9?`-ku_ z45A?@p>2gBSSy2RU^E?S+mc4mRm}}eO%oOg`YM?EEEfS$4=-vakJT2i)HWV!*hXaL zj+qytZ1hQia2pxHSWx8adQiiRHrcm00NNAOn7~R+AVQRP!t~NwK#r>0frQgSI~EZI zG?OQ%!^dL79Jbv(FMUp~CqIGPdSO;DqPokPUV1u+I5$i0(hTDhMGwvuieN5^t;#)` zOd3$q$6d<0ZmlpE4@+mBCengl>A3q4H35%qCvZ~5RxbMrpN^ZZ&$#inNg??<>5(E zTCLh8Z7(icG@!oHVtz$u4_)w)MRU0>&$XxNQ3rKK)9)6oT`nd zzC$q7rbuM9DsmagerdOq88E{E&c4Juk5on&_Qv5fz%2kw4MGN)03pNEsP{(s#!<(A zfI(N<3H?&=ho>%7)&a~R97+L1*TV8=ZZ?-fD-}4j+&CU+%=s@^fNDF@7i#M=jt;f$ zCP8eH@7_)U0;>8Upz=gOWpDz3szv`y1kLeeSCPeRv-_q5f>lm3osVEOzjUdhDu&ex z9*t%;I}4!k#D~5LqI!gMmkK>oy)2Pf4|Mk5VZ{u$U|*4?YrZiM?dk#gh*@MXxU+OI;p`8ecuf!I~_xeEQX#gWyB*Dg@)kYejd2JdNi+ ziq)x~^S{?~5h~R1Od)lmWq@_~9%*XH^zMip>1L7Ji04-4{~aju-0_664S(&(`-&#U%#RDJ3F!NZwXR0!M7*z9Hba;O=U7-+xSLB7&}q%3hiR z%eHxLsdHE#Z7Zz(OA--G)Nl=O3v>symU3&7thTIHBKeQqS-_mA&b9n-Q4SF=blfpk zZ4F;ID76sYUc$+?@^>Mzrly&Mud?tap0)*ohMtH_X-diTZ$7%3=ANF*@}wyO*N1wD zgMs#^x#f~r)d^gJs6tBFdQ+^2p=mpYU+JS^WVrwg(8z2ODn2XD0#KGTA@*W^0$IJr z@pvQ}uKg!eL71ZVKZYs3|4%VRKw^pl@E2;LVgBO(Uzk$zKaMGF|JRt3sQSOfl!X65 zOqqJJ<^L8_YX5sop?K-tr0R}{NRg(Y70}NpS3XbP_P8G*r`@ySOI}>WjKnsZ1mKCA z?PUlr?c6uUm1Ifwjgj*j5l5x;TD1!iutf!Ofq%ibdXCwSuVO=dZ^7Oqa&ewlmxq~= z_cpU~F*D-*+Quoy?#~pvZ9#9nT@f#H0?(<{b^l~OhEU{UsaRcLxtA=_CXU5G=+^jU z7Ktsr4`&(MWuFi$KV15oG==@FThjnDNd+8jij_-5s<4{mF^pq0iOX-)GFrc zJm9+>a$AE0oUz-YlxN|UUm;#q+3QQ4(8@Yuz#G8fV(Jh>GR%hj;7nrWXmd?}tTxw7 z9M6V4KrFf#rwuHKv_9Whn=8qVQ3Rd>IIn!JmoZu7>`;r60X-A)L$~OX5Sf z!#G^W#*3%K^arl;A6JE5+5*e^3wy-$huU)S>H^8j#6)&`rx5%qb?6FcTRkit1lJsF z0pVMf!6jlh_zD;lS<^rH7g+N^mZ_X0@*IdZACftTr5I0;VlvB$DCW8}00Rb{QcDn> zW$MB=?8#yY1WVLQ->{ACA$ULm#LR%bAZ7|T9^S~M>1h!lEsRhjKn?@``la%ah!YjD zABi~0dDL4`E|SkQj5GobB87wb=#7Pq>yoI1n^FX$q_7ADE2EM%6NHNNiXuuPUBPU2 zl*Fe*H-aI^CSd(9W0)!=WGSLbQTo`y@=7K4u>(+0FTyOztWuVsYs0DFpi-9sTdvS+ zq8O0Z!Z9}`r9y(Rfj*G)cF9d&weAyYfiFS$&F_;wAk$ybp@KmzlF5!p#7m4GCRWMoJhx!RTroX&3-JPXFsFI} zB-yeQJ9TIn`~`9d;wF5vX_9~NsZ%L(4a4wg|BK8j7ifVcadn2Fq$RRSfDR030y>t> z&WS6g1A~S{xC>%ghX6!4);}fHR929LfR|^P5mq~t5F_VHrREzmLMaJqwzL++@Fjns z)dN2i?ed{NMFj7U#{^JO_=OyG1x-k!U``W(C>re&Fj(;iQ%g%QIbfZ0x_(lZ3COaE zrb&L(^ddw^MT3Zt3}y%xP?i;Q?KV(B0A!AnF^LDc`boVetD|-0jNNqiV#d7ed}Bf7 z!~m$sM{xr1atDF)WP;Foc%m)svpAnZ$0B0A)9D@>onW~uAR1&rLSRu-6baS>h{!0- zMlyLA_0QDWGIz7twOOMG!ExYIyMQ^J{FL>@sr5Sz#C%N!5t0}i5AWYv5u~D8eQ_gffT3 zAy9)Ep5Ip=I0>{F_YFyKsPCSNSR=Qwi{t{;zJmT;p4<_1z9N#9lAE}IOFJTZyi;1N za=(hX7?z)2a7x86yiC7uSL<~4b1U0g{@k`H>1`uRj5PDGkTr&iCA{--bj(Zo4kBEi z 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

    k`GXG)?C-Eje;6n|6oHryBA3J(eKBh+ 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

    *?#8^sr#Gv-yWhnvgU;XCV$v>3r-+ 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

    DEM|S8 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�jKH-=nz{+w^JEfEfHy=s&_U8GL zKRBp^hB`Dzq6v-Y$^=jSMK0M&%L`NP`5F~Q!Y=4bRhC?Tj(~4H`Xl*AD_8^J$_~-8 z#cNY2NX-(KEmj2N37ou*l)x#4PzG9@LN_S z?c55qhEzCE))Nb|(43fQ`Cz8Kc5cvBC{3CDYfL?@t7?hL_)9nFWT15XncCu0Au*mz zv5_EIRrQN!2<3nN&`OC&99n?}QxSj^2>Fh4eqXa3Q!_(TWi<;yJJq%Yc-i4tBuU=& z;6ghm3FER@3N)?%@H&ri03W0Xb)$>Dg=ikt8>-I7@!C-$L&`lD%n_3`JN|2kk^$dt z1_pJ@EXug&SPUs2!a>CsMC4Gt;%Z45%TF;VRd7w$TBe_VRi}BC&TQ2K1Z5GkG0j;E zU}1rSe?`sRa(OfF7yKC+8m52Q$u(k++nTE#=9Th|a8H3c?&cEU5!iT<1?}16+@q6M z3O-r!2dF6>)Wg`&PrL#-H2k%cUh0hB-@@Ao^$%UX9SVn=yP%aOzYw%i^o|bf(s3yN zqk0>J$Ga(vRciqir-CeH6a9Nuavg`?Ee9d;p}g~ob%c$-E1SoN&x%%~ZGBes^h>He zlVT1_2ko8GmzgP~y@UKXZ?{zFkwdM`*a>__Qyls2?vKJm8$1e=DUNqVfR965py0}2 zpOK6!!E~&i+!u4WQ=iJ^FH+Yp@n}y~iQvQ`Zfl{~Dn4Fv7yWvUDWg**Oc6%+sGT24 z`?p|CGhGi$O|zKdV?Kifec`Mf%KRh6>(y<}sCwq3whIvx)f@k5W@A<>^Pl>hTV=sj zb({4}Om{}C2vY*;zv?o}2^9KJPF_was|+fHVkH)B6x{flw4u&fJbkBuw{mET|yi*?JopcHE{XFl4=`IfraQobvCDa9&8E+qXA|Pz2K(35x zZDm=CjNn>bM&Ng5`b`;J-kqfY*!;c?oQS3LZx+Tt9nie53J~`U6=y|^$Ls%#9^Ai8 zWtGo=JEisZ^P)63`(CeouDZJ6zh`oBCtJwoBM-KhWR1jgsHiyFma_LhLEqfKf0ilU zPW!@}LZD35>v9o35x=n1Qw59b)3-V=DN(wz$tO`N4rmspRa^cUP(K1($=s|d4e^{n zZ}AGG3Vh>(vryQvVFWCnUkLLSYKzHSc4WUVCSH#?;?jtICrlx0CY>}bTnWbn4d#-j z@>d>b!bg%QDLE>gAf_+)97)6Ng5XmX!W(WS=Oz$K*lx8({E{zP8Zy@Zb?=}C2a`FC^=H<0?mD=y zjn9I?=z--r*$%s|V7s<-!LHN3!mhOjv%T_Pbndz>-Xim_>(SoH`g_{-ceLwhw(GC| zgk3Mlf8e*ZbJrIK+W34lcqQ~XF4<$(ZEV-Jv}^H?*tNsDd;dDD$6;wq zulPbe&wh2EXce0EK4P+ytViuHHcKoF#%P<;ep+RbvD*f9+s9`v=G94-neWbZZ7$nx zP8R59vm7^VTCeyMnn|b&Cn!dBgP?`8FbiSu`>p@#u ztd#aQkYX#fLq{AERPQsgnr)7c>Ja+E)wR;CtzxVwS9yje2^vdS`#oGP@5I8L-Zny} z=H8LstCE0v?*e%w^-)`dt@)q57yhlI>W(fC3vFsY>$$KhhYN57*;J zzW0%P(?zfIYZQh`Wa2ss2?{>UHA7R)Pd?P8olah|M4_v!G|#fnvyJ>PVvAFdUf3$h zIsF6U8ued=G$i?{KBeAmUx?q4S`n>^7r(0S?a0#x7Q{&0Af=NVBXQsC6s@-v@>q!4 zCLL0gA)eCJW=~qwQt9o$Oj;}xN)0*%bndJPTr+rL3(G}LKSXCZA}K@DDDDz$(Xcj$ zw?$@<^*p6m$<{aCI?XLn>irdN)nV4xvQN2>>J9U%c)PO1o3hgpSS07uUJXXdvNVCb zm)|s($GY1Q=knWn3_+lSLNs`_f&X4&T~jyLr0DUyew=OM1=lS8Ft z>CxB$?s}3-%X(pW)q!`b2WD%gvk%f2x}2un0lhbH0J~`e&(DPTl?dgjv{5!FPpJ%( z<)OhW&dFb+|AA0vE?g7Po0=+<3Ks5k()rUS5L5yF5LI&XxkisQi4u|T7*;Jq-^0H| zcP{XI=9`GqkR?J6s5$!N03oc2X8TvK4VX{+2l_h2h1xfoJyR$SvwD)MpYbRc%rFey z8#c@P-t$p?$g6SQHp`=_8V41*Ae*K1a@SGzCAFh*EzkbIaE{iNus5}i#*G5}YH$pa z#Tk7c`>2xnnU1%)H;(oMFwJR)3H;qI@S(&T{|0M9emhHb=HL(E;G!({;o+PSYB>1gxO-18D7$%DRz%_?ico=Q8T zk6_4e#36q+Xe_%~6TmQ3dE4d>$ux!U#>@(XurWjN+d%4DMFLX;jQ?%(Rb&j;$f_-JhC zW-wP9<-8|*xNu@smaE_#8jN%GgEJUvjJi=3w-fg0-+p}fKn92dr8Py7cQXH!JKm^vf+#aL?% zC?3L+m6BjL@k-Yn4ZE%gy>X%Biqqr@o)*YIf)KE$DH}r7De9+yXAJa?4`I-}DmXJ} za@d$#!I=tpxeHN1c&Uk7g*;unGoN5>|HvK3KFeh##UnD4%5Q}54LKxDab1EP;2^_3t{C?>kC*n2B609S zY@m-zoJ4lO7RBZ|1R6n$9)R&227iMGFUDvHg$zq8EKo2o8B5+22SSoi$iz)p$WGpP zcG8%)g%q5|xm)415Ch;Rj&E{+#(XIX1sO{qA1;6?s<}(CSAO>$LNE~#fP5A=741kj zzXBNeYP%IyY+N2Kh-%@YCMVHn?{>!~v^)AD&{%mnbN(7kcw6N06&bseEMV-iP5u!o z77(_rb1-$%r)~;=`ojbm$&nLq>exe+57%WrUh81eClq}A&b3>@yU4ZCcx|P94ZU^> zUK?jJBvdSX=h}$yVRG%~#v6NExON3k9GW3AG5uTBy4YJBeaRJKP}cknXWh z?guf1Gvu?o1*`;}vXnnGd%W-Y>T$iX)8f9wS;L!P3T&GDIp2Y`v9mr-OPt2xX76~&x5U4>@vY| zS^D=_NVShGDg+60Hm=zG?+WJXd4C_MaDPz~$qP%Rtb+V_a?^ z5d9sWTRHK?C#Rrd=W#UFOqi=zbBUb4yw=*Vu{cs-x6F>5zuDn7WimaH4!k)=sL zOt0oL4BJ3ldjDv8VP#-i{Hr14on)zDbv1I0EQ$ZAI{@gV%$kpBI zoJFt5psxIv(d;#Jj|FzLS@>3%PM~|hj#fMaRwr<{^TT z#{+P)oG9h)C{)~sx7@Qd4phFTZWFZuYJMiWWY@p0r=ejn1bf;K^es1x*cgHa$1RLC znaQ%c6-wr48CEt(f1zH@Z8DA`u_BLWMw<$`7QE?y}K^71SbNmm5h*6F^^-8*Rb2r}D|~1?y8U z(I$ZXCmVO@Unh}q_9G6B9%nyJ)rYvkvqG_JyY}UBH%UNN2tH$s(%m7N*+H%mY{X{?QuE=O zRUyz`_(&-E9c-@%BZ(eQNjm;GnRgbynkvfKa$XZlbW4Ik529!xPcfdFz=O#+KLA?A zY0Y^T%N3&cI3KZir}=1sY$X=R*5ti-jSXINZA~s*6Y<_fj=~`t$|U7RVU;wC6{+%n zkgAT?vjx|oaEFO(h=V5%LD@e?NG%h!`mGD3=)s-z2s^3ObS`$1;vsG1E!wY{P71?E zC9J*cBFdw&!$(Gfm9Y~nJnI?3Tzqbp>bHqmh^(e54Xq*CmpZBww5c*WRBbuQ~T zJs)8w1xc~ta#JsJZ|wv@qK{d;_-wTsjMHD>_{B{D2eyW0(u@{UT*r&ia-_mfRh;p{Z!lj1rod4A@HzQb z_6PcV9PXlJ+A77h>-?ej*cm)lVh^?e5j|sP<+chN3jnot=7zb$dXKS&mNr~1wT0kc zN{-$LG0X10Db#1zafAMS>2?4_cu$0S2U`@D2h227(OyNxOrXgHwnW1YoO;F5!;~4V zsa%rdom5y?EN!Lv@m-gad<-A1Zn+$Y6lzW7(p2$So(s!{rzZD*mI0~1&Hc}oT}K3u zx{%cvhzgtlORZW5`Dv=h^-Gg{khdwV4fzBBb&#N3N|_|``u8%Qbo;FF_FIvr3|mEM z406^-$RF5Uadw^X#OlTh;Bp7Tv(Xz4NG^zVm_j@zqzu5+(N*d~^a`U+<}9Ip^pgSR zgd`9XC?E%80JGTP!WVsuGZu=RhF4t->RYZVxu29jBCcpOAALrt^gHiF@3xXWA3dM6 z_NW!37Xob+p~!k()(gSB**+Q%QI8g~<2%Y72!J*!V58MNaeJSJrX>IqUK@B;1wQW^ z{r&L+O2YiOv2!4e{_e%#%jt)I*B_s6mkj9i`0k+g2XDEmk|8S_qE>SA1}HE+zLMd}#}W<*^hr8QzARQjR}1VPh2Y>t-3(_H(nGD%M-N@{O1 z4_21;t}}cX-*%}o!0_R==a=r2m*IW$nA*wO+LR5R|KJ;&OgtABj20rkZ zEr3dG>o2el0HQRV;%feB?*yx>BJS%CU2N`|tRzV?)@fP8;`zbji5S%@nj~qnDuXLF z(5tR%v01Fj+`ez9X{7?ID9c>P9s2_V3dsXoE}eDP)9>TmRB4W0@?2x>I!!0Bb+K1y z`^a_CXillKTlc>q%Tw5COx}9a&X^A!C{@UzV*;2_19@YUzy=LaW5dloOL(Gfg;sGX5(VF8cR6wI+KQjH}m~#fU*S z6kW%rX)CKHFT?j42DQlWU%ho1e$)C9Svgxn&t=t)F(l;Gbq=w4AZxk+mL5oF>X-iG zyQFPpba>Xs^_U!5TYB9K8Aq*~`O*xwl~Z=hL>MfvScKFTKqk$2J>k6wF|C?S`TF&w z*=+-}7I|0N9d&N})SC=p>zI~Rv_pOhSWIr)Fc?U+h#ReA?C8&X)7Hb#Mc8a$e^9B7vw}2BUi_PthYWoui9W3RToyt~+PE_&l)fpBp-gMQ0wo&{U)jbw z&`%bGAMoCbgskoTS{AFGf&wuPD%tgYVj7sR!h_extfiAX7;RatP=7pQ)0d*LHOA#3ZF<4LaQJU|2y>wY`Ec%q0A|+ zZy96!=48MCi*M_nL~EK*JGe`ej@Z^6GACN4!XI+Jq=O=@b16(f#Kt`@-xV+eDWkTv zy(*=Zdfqpiyz%HR$^!zM?z$b4Uny~G(}3&%n-sb!Iy_CRQKJ(nqvE)Ad%`=#$RT+l zXEUvBNpse8Zy4hj_~B%bwwHgpe$uUo#~(|7!0unMDrb|N6h?PlgD+E<&SFZ)G$| zBr;mAWp@`-2(Fuw7VLR32z!Y>Z0x&FtKWG!ZXHfiyJ|)XJW^UohWmw18$U2Xyc#Y+ zULyS9@>Y7Cgg+M>|8%Wpw71_c85=cxP?~T?gu4E z4O<>`Q|>&5lOmz|`AyZJZyQ*IMnQE@gXZE4&`C$oo6&M_oH0xMu|mqrvk3un?@w9f zbd4$gjo+JL>fz~ZrTw|E~KuR*!_>8!w&pg;4Ro#>sdfvHXhJ`>7R*~?xGJ>0$Bnd7L`%^+Xq1qKB2UsN);}uez&KX_ zLAeP>l&rs)dD`=^K+-M?V+~2WG>u$P4cC6jUp}zcKfLhVhuo`naFV7u?1>OaE-nxF z-8*>E&REJrb+xu%)zNK**Gaqf#vEl@qWC~gHl454?GJb3!&;+aqG_wxv?%*wK~(># z^QNYS=)(bEM+SUr)PaB(q(54EHZp5RcWL%|Sn6AcC4Js7L5n2oK|KOP+9mf0ckM53 z%5OeH%euBS7~A1_;a{W}eKF_QZp9M%~XC*_)Q<^m}0jU33KZop4%`~dF9G{tgNKP zb~2p~_n!AN)8St2O+wn2u#O)A*SKG3^L?iQY}RL;f=>^owa*07bKv}zNl*F0Q|y`p z!pYUOwv*oJ-{N)3i{wH5M8rO%t@kh0qVA7J%ooV#xulXw)d}UsU*BUmR@J4L-YJC?_^#!~4y zENgVLvJeX;>pwS{rme}mVB&X`Ex?gp_jzpQJ0pE-=c{^6(Wv#nIoTifDJ8~UMRMFA z9r1z}(g|C;@q5TzdtQ9sYsLe%bCpL!{}?T1)7>LIO^e@DdY06uNb)5Xx+o@#(5zRt zJR?O_mhB=%9f~m{^QUXXP<4w%vRkTok)vd22csqVSfhc!fD)`xcEgS3_K??JE zZ1%e?(tkOdwEM1bATEriM_(m~mi%z;WI>{AY3U4wl|LzboEqn0MYU4R}f4MaL*DX(~+FD2LzWN>a6Q zNjyHa|76xbScj9HONbkx^Kv)2kl?M~J(+5crlqyO0Uc=y?ga#+Yr-vy;R*a$dKU{&vWib!78hDrbaRv3Cm$bJ zPxEZ5b%pa-KoJA@nlD7gtgXjI9JLB9eJ-2(0zSik!2%X*3%u%cZv7wdWutg=W0F!& z$=zP)L#T*X1AgCABuVRY9;BCAa$YW~>K75v6$og8(~dKZ0?ZSSlFYA82jlqPuJNAs zr?;pB9#$2XRR2B=6YFD0qD>rklbSqTjKVM-i?~iTpBu;XO#WG@Pzi+HoiO<#khOvH z=+;S;!O;d>x#3)b% zq&FkEP$qWjVb8p-!}EfllWZ#h;Tq;r0=`E;;C5offRKgnm#Ks@A*Sm(?f4t!W9gq> zl(^+JCbMG2;9szS#geeG-+~EuHGV7>2{ZKJ_5XpH`ZqWf$k2>MJQILtozcTb6eDX6 zzWHFc=VO-{01$L^UO~B$-R~2 z)g$o%;$0Il#rPYNV$9M3CnH79vedtLd$*fz6WN~RZt063tL_FWa&Hs%p%8uqPBj+k zy^2V#F-ylxebmD^ZD32mV!f{r9UTO@uS8b!H$vAiZHy~H7$SsL0Yj;Ycb6m@x=sKL zHIO{U4eM`&ft&a8=IDW^6<&FYw?zROAXgtB6?;MeE9rT70ur@&fqVuFSyGdC&H2$?X4X2J0eHjS^dgc&gDR=3*_uHUCXn>Xe#P*KJ22r$n8@|!~q$;%;)ETQ2U z&E-V)rPbj-;NiqBmf2!#W7LTbMH3ZfsV>h#nvGBB`7up7r(W>5grvtC3%y}y3e3?Y zd+x6AcCWp}s~bff8<&IxZ&`L9U!L{{nnBhmWO6Q`ylRo*MflWG=@;UCS!f`;wXcNOHJ9&`` zLb~q=Y4I8{Qw|**8z2vM$5>jNsF*1ER49;7Od#{%|TCXCWEjgz)s zyxVh(8Hx3<`o}cQ0u1!pihmNv0oSf2tB!xP@)nXCAc0>n3@lYJAtA1N zngpqgW3P@!Tv%WUkgGl+EH_69wT=8Wr%@k}3qVcx>02BL`xivC@(kF!ut-FF_2Jjk zQ{`95lBzZ^tA<%`F|8U9Wa+VvRO?f>as+>A$z^A&l9?)yyd|-YF2=*No?vPW6I*i# zzq`W$B693ENTndsft8r8HEkIrX|XLRivZ21(9N}h2$thG%yCs{tbxR*2q#v&3#>w$ zmWZ|i(RM`923)ISBVH_{w-a_$M+&tqMul9Gt7Uwwlm5szo_t^y{MiQX>UcJjJ_ z(?joGvf)ss>h2MTfRZ0lx>>17V-S0A-h?IKOc>4niLP3d>cH)oPR42Obj6hiCi zqXZqunwVP3KnlwVI5AVBZUQxvHf#ksP{I;4u;FnkAdPs3DLC_L9&ZKRYXx7Dn*>eP zzJfOasxHOkR1*X{daR-&;DClPV2ogb0rtF7{}1H+WLw;wut}_s7;(`QjHG%bSO`vz zBHwEGQYq&H1e*SZKvVU84UQ2h(B+Ur$r?}~uso_lUjFK262yI)mwpow87C+zv)8YJ zfiD7KA5vFE986+RnQAcvx7ZCc>9mFDD8_=<2#RRwO|+G&(wn5ln8Q-zv6lRtb=YMS zlb2LYpJ3|WGm{x%)BOj6ac*}}FzONW*STO<#K$3Gu3U5*C ^e^B2br~u3%hw$&q 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

    cSiL!s*8|*wlmw=AK_T!&d`D!=NvtW-%G9K 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%0D|ndJmgv0?wPPA284e1()} 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

    CFBXs5|^{$5IJYm%5QF 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%0Da>Fv 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

    5xdyISFz{Su5JV8@2UtU7L}R(ipj;XG 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�J@bKbzlbfqi}<^ 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